@knocklabs/react-core 0.6.13 → 0.6.14-canary.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/package.json +5 -6
  2. package/src/modules/feed/context/KnockFeedProvider.tsx +2 -7
  3. package/src/modules/feed/hooks/useNotificationStore.ts +15 -13
  4. package/src/modules/feed/hooks/useNotifications.ts +0 -4
  5. package/CHANGELOG.md +0 -477
  6. package/dist/cjs/index.js +0 -2
  7. package/dist/cjs/index.js.map +0 -1
  8. package/dist/cjs/modules/core/constants.js +0 -2
  9. package/dist/cjs/modules/core/constants.js.map +0 -1
  10. package/dist/cjs/modules/core/context/KnockProvider.js +0 -2
  11. package/dist/cjs/modules/core/context/KnockProvider.js.map +0 -1
  12. package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js +0 -2
  13. package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js.map +0 -1
  14. package/dist/cjs/modules/core/hooks/useStableOptions.js +0 -2
  15. package/dist/cjs/modules/core/hooks/useStableOptions.js.map +0 -1
  16. package/dist/cjs/modules/core/utils.js +0 -2
  17. package/dist/cjs/modules/core/utils.js.map +0 -1
  18. package/dist/cjs/modules/feed/context/KnockFeedProvider.js +0 -2
  19. package/dist/cjs/modules/feed/context/KnockFeedProvider.js.map +0 -1
  20. package/dist/cjs/modules/feed/hooks/useFeedSettings.js +0 -2
  21. package/dist/cjs/modules/feed/hooks/useFeedSettings.js.map +0 -1
  22. package/dist/cjs/modules/feed/hooks/useNotificationStore.js +0 -2
  23. package/dist/cjs/modules/feed/hooks/useNotificationStore.js.map +0 -1
  24. package/dist/cjs/modules/feed/hooks/useNotifications.js +0 -2
  25. package/dist/cjs/modules/feed/hooks/useNotifications.js.map +0 -1
  26. package/dist/cjs/modules/guide/context/KnockGuideProvider.js +0 -2
  27. package/dist/cjs/modules/guide/context/KnockGuideProvider.js.map +0 -1
  28. package/dist/cjs/modules/guide/hooks/useGuide.js +0 -2
  29. package/dist/cjs/modules/guide/hooks/useGuide.js.map +0 -1
  30. package/dist/cjs/modules/guide/hooks/useGuideContext.js +0 -2
  31. package/dist/cjs/modules/guide/hooks/useGuideContext.js.map +0 -1
  32. package/dist/cjs/modules/i18n/context/KnockI18nProvider.js +0 -2
  33. package/dist/cjs/modules/i18n/context/KnockI18nProvider.js.map +0 -1
  34. package/dist/cjs/modules/i18n/hooks/useTranslations.js +0 -2
  35. package/dist/cjs/modules/i18n/hooks/useTranslations.js.map +0 -1
  36. package/dist/cjs/modules/i18n/languages/de.js +0 -2
  37. package/dist/cjs/modules/i18n/languages/de.js.map +0 -1
  38. package/dist/cjs/modules/i18n/languages/en.js +0 -2
  39. package/dist/cjs/modules/i18n/languages/en.js.map +0 -1
  40. package/dist/cjs/modules/i18n/languages/index.js +0 -2
  41. package/dist/cjs/modules/i18n/languages/index.js.map +0 -1
  42. package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +0 -2
  43. package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js.map +0 -1
  44. package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js +0 -2
  45. package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js.map +0 -1
  46. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js +0 -2
  47. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js.map +0 -1
  48. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js +0 -2
  49. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js.map +0 -1
  50. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js +0 -2
  51. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js.map +0 -1
  52. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js +0 -2
  53. package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js.map +0 -1
  54. package/dist/cjs/modules/slack/context/KnockSlackProvider.js +0 -2
  55. package/dist/cjs/modules/slack/context/KnockSlackProvider.js.map +0 -1
  56. package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js +0 -2
  57. package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js.map +0 -1
  58. package/dist/cjs/modules/slack/hooks/useSlackAuth.js +0 -2
  59. package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +0 -1
  60. package/dist/cjs/modules/slack/hooks/useSlackChannels.js +0 -2
  61. package/dist/cjs/modules/slack/hooks/useSlackChannels.js.map +0 -1
  62. package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js +0 -2
  63. package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js.map +0 -1
  64. package/dist/esm/index.mjs +0 -66
  65. package/dist/esm/index.mjs.map +0 -1
  66. package/dist/esm/modules/core/constants.mjs +0 -5
  67. package/dist/esm/modules/core/constants.mjs.map +0 -1
  68. package/dist/esm/modules/core/context/KnockProvider.mjs +0 -35
  69. package/dist/esm/modules/core/context/KnockProvider.mjs.map +0 -1
  70. package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs +0 -29
  71. package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs.map +0 -1
  72. package/dist/esm/modules/core/hooks/useStableOptions.mjs +0 -13
  73. package/dist/esm/modules/core/hooks/useStableOptions.mjs.map +0 -1
  74. package/dist/esm/modules/core/utils.mjs +0 -49
  75. package/dist/esm/modules/core/utils.mjs.map +0 -1
  76. package/dist/esm/modules/feed/context/KnockFeedProvider.mjs +0 -37
  77. package/dist/esm/modules/feed/context/KnockFeedProvider.mjs.map +0 -1
  78. package/dist/esm/modules/feed/hooks/useFeedSettings.mjs +0 -23
  79. package/dist/esm/modules/feed/hooks/useFeedSettings.mjs.map +0 -1
  80. package/dist/esm/modules/feed/hooks/useNotificationStore.mjs +0 -12
  81. package/dist/esm/modules/feed/hooks/useNotificationStore.mjs.map +0 -1
  82. package/dist/esm/modules/feed/hooks/useNotifications.mjs +0 -34
  83. package/dist/esm/modules/feed/hooks/useNotifications.mjs.map +0 -1
  84. package/dist/esm/modules/guide/context/KnockGuideProvider.mjs +0 -33
  85. package/dist/esm/modules/guide/context/KnockGuideProvider.mjs.map +0 -1
  86. package/dist/esm/modules/guide/hooks/useGuide.mjs +0 -21
  87. package/dist/esm/modules/guide/hooks/useGuide.mjs.map +0 -1
  88. package/dist/esm/modules/guide/hooks/useGuideContext.mjs +0 -12
  89. package/dist/esm/modules/guide/hooks/useGuideContext.mjs.map +0 -1
  90. package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs +0 -11
  91. package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs.map +0 -1
  92. package/dist/esm/modules/i18n/hooks/useTranslations.mjs +0 -17
  93. package/dist/esm/modules/i18n/hooks/useTranslations.mjs.map +0 -1
  94. package/dist/esm/modules/i18n/languages/de.mjs +0 -39
  95. package/dist/esm/modules/i18n/languages/de.mjs.map +0 -1
  96. package/dist/esm/modules/i18n/languages/en.mjs +0 -51
  97. package/dist/esm/modules/i18n/languages/en.mjs.map +0 -1
  98. package/dist/esm/modules/i18n/languages/index.mjs +0 -10
  99. package/dist/esm/modules/i18n/languages/index.mjs.map +0 -1
  100. package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +0 -48
  101. package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs.map +0 -1
  102. package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs +0 -78
  103. package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs.map +0 -1
  104. package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs +0 -53
  105. package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs.map +0 -1
  106. package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs +0 -41
  107. package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs.map +0 -1
  108. package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs +0 -38
  109. package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs.map +0 -1
  110. package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs +0 -51
  111. package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs.map +0 -1
  112. package/dist/esm/modules/slack/context/KnockSlackProvider.mjs +0 -49
  113. package/dist/esm/modules/slack/context/KnockSlackProvider.mjs.map +0 -1
  114. package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +0 -78
  115. package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs.map +0 -1
  116. package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +0 -68
  117. package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +0 -1
  118. package/dist/esm/modules/slack/hooks/useSlackChannels.mjs +0 -52
  119. package/dist/esm/modules/slack/hooks/useSlackChannels.mjs.map +0 -1
  120. package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs +0 -47
  121. package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs.map +0 -1
  122. package/dist/types/index.d.ts +0 -8
  123. package/dist/types/index.d.ts.map +0 -1
  124. package/dist/types/interfaces.d.ts +0 -5
  125. package/dist/types/interfaces.d.ts.map +0 -1
  126. package/dist/types/modules/core/constants.d.ts +0 -8
  127. package/dist/types/modules/core/constants.d.ts.map +0 -1
  128. package/dist/types/modules/core/context/KnockProvider.d.ts +0 -20
  129. package/dist/types/modules/core/context/KnockProvider.d.ts.map +0 -1
  130. package/dist/types/modules/core/context/index.d.ts +0 -2
  131. package/dist/types/modules/core/context/index.d.ts.map +0 -1
  132. package/dist/types/modules/core/hooks/index.d.ts +0 -3
  133. package/dist/types/modules/core/hooks/index.d.ts.map +0 -1
  134. package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts +0 -5
  135. package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts.map +0 -1
  136. package/dist/types/modules/core/hooks/useStableOptions.d.ts +0 -2
  137. package/dist/types/modules/core/hooks/useStableOptions.d.ts.map +0 -1
  138. package/dist/types/modules/core/index.d.ts +0 -5
  139. package/dist/types/modules/core/index.d.ts.map +0 -1
  140. package/dist/types/modules/core/utils.d.ts +0 -24
  141. package/dist/types/modules/core/utils.d.ts.map +0 -1
  142. package/dist/types/modules/feed/context/KnockFeedProvider.d.ts +0 -19
  143. package/dist/types/modules/feed/context/KnockFeedProvider.d.ts.map +0 -1
  144. package/dist/types/modules/feed/context/index.d.ts +0 -2
  145. package/dist/types/modules/feed/context/index.d.ts.map +0 -1
  146. package/dist/types/modules/feed/hooks/index.d.ts +0 -4
  147. package/dist/types/modules/feed/hooks/index.d.ts.map +0 -1
  148. package/dist/types/modules/feed/hooks/useFeedSettings.d.ts +0 -12
  149. package/dist/types/modules/feed/hooks/useFeedSettings.d.ts.map +0 -1
  150. package/dist/types/modules/feed/hooks/useNotificationStore.d.ts +0 -35
  151. package/dist/types/modules/feed/hooks/useNotificationStore.d.ts.map +0 -1
  152. package/dist/types/modules/feed/hooks/useNotifications.d.ts +0 -4
  153. package/dist/types/modules/feed/hooks/useNotifications.d.ts.map +0 -1
  154. package/dist/types/modules/feed/index.d.ts +0 -3
  155. package/dist/types/modules/feed/index.d.ts.map +0 -1
  156. package/dist/types/modules/guide/context/KnockGuideProvider.d.ts +0 -19
  157. package/dist/types/modules/guide/context/KnockGuideProvider.d.ts.map +0 -1
  158. package/dist/types/modules/guide/context/index.d.ts +0 -2
  159. package/dist/types/modules/guide/context/index.d.ts.map +0 -1
  160. package/dist/types/modules/guide/hooks/index.d.ts +0 -2
  161. package/dist/types/modules/guide/hooks/index.d.ts.map +0 -1
  162. package/dist/types/modules/guide/hooks/useGuide.d.ts +0 -9
  163. package/dist/types/modules/guide/hooks/useGuide.d.ts.map +0 -1
  164. package/dist/types/modules/guide/hooks/useGuideContext.d.ts +0 -7
  165. package/dist/types/modules/guide/hooks/useGuideContext.d.ts.map +0 -1
  166. package/dist/types/modules/guide/index.d.ts +0 -3
  167. package/dist/types/modules/guide/index.d.ts.map +0 -1
  168. package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts +0 -8
  169. package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts.map +0 -1
  170. package/dist/types/modules/i18n/context/index.d.ts +0 -2
  171. package/dist/types/modules/i18n/context/index.d.ts.map +0 -1
  172. package/dist/types/modules/i18n/hooks/index.d.ts +0 -2
  173. package/dist/types/modules/i18n/hooks/index.d.ts.map +0 -1
  174. package/dist/types/modules/i18n/hooks/useTranslations.d.ts +0 -5
  175. package/dist/types/modules/i18n/hooks/useTranslations.d.ts.map +0 -1
  176. package/dist/types/modules/i18n/index.d.ts +0 -4
  177. package/dist/types/modules/i18n/index.d.ts.map +0 -1
  178. package/dist/types/modules/i18n/languages/de.d.ts +0 -4
  179. package/dist/types/modules/i18n/languages/de.d.ts.map +0 -1
  180. package/dist/types/modules/i18n/languages/en.d.ts +0 -4
  181. package/dist/types/modules/i18n/languages/en.d.ts.map +0 -1
  182. package/dist/types/modules/i18n/languages/index.d.ts +0 -54
  183. package/dist/types/modules/i18n/languages/index.d.ts.map +0 -1
  184. package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts +0 -20
  185. package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts.map +0 -1
  186. package/dist/types/modules/ms-teams/context/index.d.ts +0 -2
  187. package/dist/types/modules/ms-teams/context/index.d.ts.map +0 -1
  188. package/dist/types/modules/ms-teams/hooks/index.d.ts +0 -6
  189. package/dist/types/modules/ms-teams/hooks/index.d.ts.map +0 -1
  190. package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts +0 -15
  191. package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts.map +0 -1
  192. package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts +0 -7
  193. package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts.map +0 -1
  194. package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts +0 -14
  195. package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts.map +0 -1
  196. package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts +0 -13
  197. package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts.map +0 -1
  198. package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts +0 -13
  199. package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts.map +0 -1
  200. package/dist/types/modules/ms-teams/index.d.ts +0 -4
  201. package/dist/types/modules/ms-teams/index.d.ts.map +0 -1
  202. package/dist/types/modules/ms-teams/interfaces.d.ts +0 -11
  203. package/dist/types/modules/ms-teams/interfaces.d.ts.map +0 -1
  204. package/dist/types/modules/slack/context/KnockSlackProvider.d.ts +0 -30
  205. package/dist/types/modules/slack/context/KnockSlackProvider.d.ts.map +0 -1
  206. package/dist/types/modules/slack/context/index.d.ts +0 -2
  207. package/dist/types/modules/slack/context/index.d.ts.map +0 -1
  208. package/dist/types/modules/slack/hooks/index.d.ts +0 -5
  209. package/dist/types/modules/slack/hooks/index.d.ts.map +0 -1
  210. package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +0 -15
  211. package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts.map +0 -1
  212. package/dist/types/modules/slack/hooks/useSlackAuth.d.ts +0 -11
  213. package/dist/types/modules/slack/hooks/useSlackAuth.d.ts.map +0 -1
  214. package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +0 -13
  215. package/dist/types/modules/slack/hooks/useSlackChannels.d.ts.map +0 -1
  216. package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +0 -13
  217. package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts.map +0 -1
  218. package/dist/types/modules/slack/index.d.ts +0 -4
  219. package/dist/types/modules/slack/index.d.ts.map +0 -1
  220. package/dist/types/modules/slack/interfaces.d.ts +0 -10
  221. package/dist/types/modules/slack/interfaces.d.ts.map +0 -1
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@knocklabs/react-core",
3
3
  "description": "A set of React components to build notification experiences powered by Knock",
4
4
  "author": "@knocklabs",
5
- "version": "0.6.13",
5
+ "version": "0.6.14-canary.2",
6
6
  "license": "MIT",
7
7
  "main": "dist/cjs/index.js",
8
8
  "module": "dist/esm/index.mjs",
@@ -47,12 +47,11 @@
47
47
  "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
48
48
  },
49
49
  "dependencies": {
50
- "@knocklabs/client": "^0.14.9",
51
- "@tanstack/react-store": "0.6.1",
50
+ "@knocklabs/client": "workspace:^",
51
+ "@tanstack/react-store": "^0.7.1",
52
52
  "date-fns": "^4.0.0",
53
53
  "fast-deep-equal": "^3.1.3",
54
- "swr": "^2.3.3",
55
- "zustand": "^4.5.6"
54
+ "swr": "^2.3.3"
56
55
  },
57
56
  "devDependencies": {
58
57
  "@testing-library/dom": "^10.4.0",
@@ -76,4 +75,4 @@
76
75
  "vite-plugin-no-bundle": "^4.0.0",
77
76
  "vitest": "^3.1.1"
78
77
  }
79
- }
78
+ }
@@ -1,11 +1,6 @@
1
- import Knock, {
2
- Feed,
3
- FeedClientOptions,
4
- FeedStoreState,
5
- } from "@knocklabs/client";
1
+ import Knock, { Feed, FeedClientOptions } from "@knocklabs/client";
6
2
  import * as React from "react";
7
3
  import { PropsWithChildren } from "react";
8
- import type { StoreApi, UseBoundStore } from "zustand";
9
4
 
10
5
  import { useKnockClient } from "../../core";
11
6
  import { ColorMode } from "../../core/constants";
@@ -16,7 +11,7 @@ import useNotifications from "../hooks/useNotifications";
16
11
  export interface KnockFeedProviderState {
17
12
  knock: Knock;
18
13
  feedClient: Feed;
19
- useFeedStore: UseBoundStore<StoreApi<FeedStoreState>>;
14
+ useFeedStore: ReturnType<typeof useCreateNotificationStore>;
20
15
  colorMode: ColorMode;
21
16
  }
22
17
 
@@ -1,22 +1,24 @@
1
1
  import { Feed, type FeedStoreState } from "@knocklabs/client";
2
- import { type StoreApi, type UseBoundStore, useStore } from "zustand";
2
+ import { useStore } from "@tanstack/react-store";
3
3
 
4
4
  export type Selector<T> = (state: FeedStoreState) => T;
5
5
 
6
6
  /**
7
- * Access a Bounded Store instance by converting our vanilla store to a UseBoundStore
8
- * https://zustand.docs.pmnd.rs/guides/typescript#bounded-usestore-hook-for-vanilla-stores
9
- * Allow passing a selector down from useCreateNotificationStore OR useNotificationStore
10
- * We'll favor the the one passed later outside of useCreateNotificationStore instantiation
7
+ * Create a hook factory that provides access to the TanStack Store with optional selector support.
8
+ * This pattern allows for flexible store access with or without selectors while maintaining
9
+ * type safety. The selector can be passed either to useCreateNotificationStore or
10
+ * useNotificationStore, with the latter taking precedence.
11
11
  */
12
- function useCreateNotificationStore<T>(
13
- feedClient: Feed,
14
- ): UseBoundStore<StoreApi<FeedStoreState>> {
15
- // Keep selector optional for external use
16
- // useStore requires a selector so we'll pass in a default one when not provided
17
- const useBoundedStore = (selector?: Selector<T>) =>
18
- useStore(feedClient.store, selector ?? ((state) => state as T));
19
- return useBoundedStore as UseBoundStore<StoreApi<FeedStoreState>>;
12
+ function useCreateNotificationStore(feedClient: Feed) {
13
+ return <T = FeedStoreState>(selector?: Selector<T>) => {
14
+ // Keep selector optional for external use
15
+ // useStore requires a selector so we'll pass in a default one when not provided
16
+ // eslint-disable-next-line
17
+ return useStore(
18
+ feedClient.store.store,
19
+ selector ?? ((state) => state as T),
20
+ );
21
+ };
20
22
  }
21
23
 
22
24
  /**
@@ -17,10 +17,6 @@ function useNotifications(
17
17
  (feedChannelId: string, options: FeedClientOptions) => {
18
18
  const feedClient = knock.feeds.initialize(feedChannelId, options);
19
19
 
20
- // In development, we need to introduce this extra set state to force a render
21
- // for Zustand as otherwise the state doesn't get reflected correctly
22
- feedClient.store.subscribe((t) => feedClient.store.setState(t));
23
-
24
20
  feedClient.listenForUpdates();
25
21
 
26
22
  return feedClient;
package/CHANGELOG.md DELETED
@@ -1,477 +0,0 @@
1
- # Changelog
2
-
3
- ## 0.6.13
4
-
5
- ### Patch Changes
6
-
7
- - bea5604: update @knocklabs/react & @knocklabs/react-core to use named exports instead of barrel exports
8
-
9
- ## 0.6.12
10
-
11
- ### Patch Changes
12
-
13
- - Updated dependencies [4e73f12]
14
- - @knocklabs/client@0.14.9
15
-
16
- ## 0.6.11
17
-
18
- ### Patch Changes
19
-
20
- - dbbbaf7: Dispose of feed on unmount in `useNotifications` hook
21
-
22
- Previously, the `useNotifications` hook did not clean up old instances of `Feed`
23
- on unmount. This has been fixed.
24
-
25
- ## 0.6.10
26
-
27
- ### Patch Changes
28
-
29
- - 337bade: feat: introduce ability to override slack scopes
30
-
31
- ## 0.6.9
32
-
33
- ### Patch Changes
34
-
35
- - 329ee05: downgrade tanstack store deps to 0.6.x to work in older TS version
36
- - Updated dependencies [329ee05]
37
- - @knocklabs/client@0.14.8
38
-
39
- ## 0.6.8
40
-
41
- ### Patch Changes
42
-
43
- - Updated dependencies [efd1005]
44
- - @knocklabs/client@0.14.7
45
-
46
- ## 0.6.7
47
-
48
- ### Patch Changes
49
-
50
- - Updated dependencies [a5c615e]
51
- - @knocklabs/client@0.14.6
52
-
53
- ## 0.6.6
54
-
55
- ### Patch Changes
56
-
57
- - 8f00623: activation location rules support for guides
58
- - Updated dependencies [8f00623]
59
- - @knocklabs/client@0.14.5
60
-
61
- ## 0.6.5
62
-
63
- ### Patch Changes
64
-
65
- - e800896: feat: typescript fixes + quality of life improvements
66
- - Updated dependencies [e800896]
67
- - @knocklabs/client@0.14.4
68
-
69
- ## 0.6.4
70
-
71
- ### Patch Changes
72
-
73
- - 96d70bc: fixes memory leak when unmounting the useNotifications hook
74
-
75
- ## 0.6.3
76
-
77
- ### Patch Changes
78
-
79
- - c97a1d9: Update TanStack Store
80
- - Updated dependencies [c97a1d9]
81
- - @knocklabs/client@0.14.3
82
-
83
- ## 0.6.2
84
-
85
- ### Patch Changes
86
-
87
- - Updated dependencies [00439a2]
88
- - @knocklabs/client@0.14.2
89
-
90
- ## 0.6.1
91
-
92
- ### Patch Changes
93
-
94
- - Updated dependencies [4c41841]
95
- - @knocklabs/client@0.14.1
96
-
97
- ## 0.6.0
98
-
99
- ### Minor Changes
100
-
101
- - 711948c: feat: add guide client, hooks, provider, and components
102
-
103
- ### Patch Changes
104
-
105
- - Updated dependencies [711948c]
106
- - @knocklabs/client@0.14.0
107
-
108
- ## 0.5.2
109
-
110
- ### Patch Changes
111
-
112
- - Updated dependencies [187abc1]
113
- - @knocklabs/client@0.13.1
114
-
115
- ## 0.5.1
116
-
117
- ### Patch Changes
118
-
119
- - Updated dependencies [4cd1b1e]
120
- - @knocklabs/client@0.13.0
121
-
122
- ## 0.5.0
123
-
124
- ### Minor Changes
125
-
126
- - 8ba5dcb: [JS] Support React 19 in React SDKs
127
-
128
- ### Patch Changes
129
-
130
- - Updated dependencies [8ba5dcb]
131
- - @knocklabs/client@0.12.0
132
-
133
- ## 0.4.2
134
-
135
- ### Patch Changes
136
-
137
- - 226e319: Fix unnecessary refetches of first page by `useSlackChannels` and `useMsTeamsTeams` hooks
138
-
139
- Previously, both the `useSlackChannels` and `useMsTeamsTeams` hooks would unnecessarily refetch the first page of data whenever multiple pages of data were loaded. This has been fixed.
140
-
141
- ## 0.4.1
142
-
143
- ### Patch Changes
144
-
145
- - 1b86a0c: fix: correct pagination logic in useSlackChannels hook (KNO-7995)
146
-
147
- ## 0.4.0
148
-
149
- ### Minor Changes
150
-
151
- - 7904b65: Remove `slackSearchbarMultipleChannels` from translations strings
152
-
153
- ## 0.3.4
154
-
155
- ### Patch Changes
156
-
157
- - Updated dependencies [8ea25f4]
158
- - @knocklabs/client@0.11.4
159
-
160
- ## 0.3.3
161
-
162
- ### Patch Changes
163
-
164
- - 12bc993: Use SWR in `useConnectedSlackChannels` hook
165
-
166
- `useConnectedSlackChannels` now uses [SWR](https://swr.vercel.app/) under the hood. The returned array of connections (`data`) will now update optimistically when `updateConnectedChannels` is called.
167
-
168
- - Updated dependencies [4f76cd6]
169
- - @knocklabs/client@0.11.3
170
-
171
- ## 0.3.2
172
-
173
- ### Patch Changes
174
-
175
- - 85418a0: rename constants.ts to interfaces.ts
176
- - 8cc9338: Fix types in useConnectedSlackChannels.ts
177
- - da84a75: deprecate tenant in favor of tenantId in KnockSlackProvider and useKnockSlackClient
178
- - 2161d3f: Use SWR for data fetching in useConnectedMsTeamsChannels hook
179
- - 1ba1393: add TeamsKit hooks for teams and channels
180
- - Updated dependencies [2161d3f]
181
- - Updated dependencies [2161d3f]
182
- - Updated dependencies [1ba1393]
183
- - Updated dependencies [b4b5c02]
184
- - @knocklabs/client@0.11.2
185
-
186
- ## 0.3.1
187
-
188
- ### Patch Changes
189
-
190
- - b9f6712: fix: types for userId should handle undefined and null
191
- - Updated dependencies [b9f6712]
192
- - @knocklabs/client@0.11.1
193
-
194
- ## 0.3.0
195
-
196
- ### Minor Changes
197
-
198
- - 013ad8d: feat: add MsTeamsAuthButton
199
-
200
- ### Patch Changes
201
-
202
- - Updated dependencies [013ad8d]
203
- - @knocklabs/client@0.11.0
204
-
205
- ## 0.2.29
206
-
207
- ### Patch Changes
208
-
209
- - Updated dependencies [26db496]
210
- - Updated dependencies [988aaf9]
211
- - @knocklabs/client@0.10.17
212
-
213
- ## 0.2.28
214
-
215
- ### Patch Changes
216
-
217
- - Updated dependencies [bc99374]
218
- - @knocklabs/client@0.10.16
219
-
220
- ## 0.2.27
221
-
222
- ### Patch Changes
223
-
224
- - Updated dependencies [26166e3]
225
- - @knocklabs/client@0.10.15
226
-
227
- ## 0.2.26
228
-
229
- ### Patch Changes
230
-
231
- - Updated dependencies [7510909]
232
- - @knocklabs/client@0.10.14
233
-
234
- ## 0.2.25
235
-
236
- ### Patch Changes
237
-
238
- - 47a88da: feature: allow passing additional OAuth scope to SlackAuthButton
239
-
240
- ## 0.2.24
241
-
242
- ### Patch Changes
243
-
244
- - 1d440f7: feat: add prebuilt In App Feed Components for React Native
245
- - Updated dependencies [1d440f7]
246
- - @knocklabs/client@0.10.13
247
-
248
- ## 0.2.23
249
-
250
- ### Patch Changes
251
-
252
- - Updated dependencies [5545f9e]
253
- - @knocklabs/client@0.10.12
254
-
255
- ## 0.2.22
256
-
257
- ### Patch Changes
258
-
259
- - Updated dependencies [395f0ca]
260
- - @knocklabs/client@0.10.11
261
-
262
- ## 0.2.21
263
-
264
- ### Patch Changes
265
-
266
- - a4d520c: chore: update generic types
267
- - Updated dependencies [a4d520c]
268
- - @knocklabs/client@0.10.10
269
-
270
- ## 0.2.20
271
-
272
- ### Patch Changes
273
-
274
- - Updated dependencies [d0adb14]
275
- - @knocklabs/client@0.10.9
276
-
277
- ## 0.2.19
278
-
279
- ### Patch Changes
280
-
281
- - 1e60c19: fix: re-introduce subscribe/setstate call for useNotifications
282
-
283
- ## 0.2.18
284
-
285
- ### Patch Changes
286
-
287
- - 29e3942: fix: introduce new useNotificationStore hook to prevent issues that prevent state updates
288
- - Updated dependencies [29e3942]
289
- - @knocklabs/client@0.10.8
290
-
291
- ## 0.2.17
292
-
293
- ### Patch Changes
294
-
295
- - f25b112: fix: ensure feed store reference re-renders after changes to user
296
- - Updated dependencies [f25b112]
297
- - @knocklabs/client@0.10.7
298
-
299
- ## 0.2.16
300
-
301
- ### Patch Changes
302
-
303
- - 5d2ddab: fix: ensure options are memoized in useAuthenticatedKnockClient
304
-
305
- ## 0.2.15
306
-
307
- ### Patch Changes
308
-
309
- - b29a47a: Add KnockExpoPushNotificationProvider to react-native sdk
310
- - Updated dependencies [b29a47a]
311
- - @knocklabs/client@0.10.6
312
-
313
- ## 0.2.14
314
-
315
- ### Patch Changes
316
-
317
- - 5fe3063: Fixes issue where notification data was not updating in react strict mode
318
-
319
- ## 0.2.13
320
-
321
- ### Patch Changes
322
-
323
- - Updated dependencies [044eb0f]
324
- - @knocklabs/client@0.10.5
325
-
326
- ## 0.2.12
327
-
328
- ### Patch Changes
329
-
330
- - Updated dependencies [5a7c56e]
331
- - @knocklabs/client@0.10.4
332
-
333
- ## 0.2.11
334
-
335
- ### Patch Changes
336
-
337
- - Updated dependencies [a71ce51]
338
- - @knocklabs/client@0.10.3
339
-
340
- ## 0.2.10
341
-
342
- ### Patch Changes
343
-
344
- - 42ba22c: fix: improve typing for react < 18
345
- - Updated dependencies [42ba22c]
346
- - @knocklabs/client@0.10.2
347
-
348
- ## 0.2.9
349
-
350
- ### Patch Changes
351
-
352
- - 354dd1a: fix: move away from jsx runtime to support react 16 + 17
353
-
354
- ## 0.2.8
355
-
356
- ### Patch Changes
357
-
358
- - 3c277cb: fix: remove react-query and replace with swr for react 16+ support
359
- - Updated dependencies [3c277cb]
360
- - Updated dependencies [567e24f]
361
- - @knocklabs/client@0.10.1
362
-
363
- ## 0.2.7
364
-
365
- ### Patch Changes
366
-
367
- - Updated dependencies [8bdc75b]
368
- - @knocklabs/client@0.10.0
369
-
370
- ## 0.2.6
371
-
372
- ### Patch Changes
373
-
374
- - Updated dependencies [f58371c]
375
- - @knocklabs/client@0.9.4
376
-
377
- ## 0.2.5
378
-
379
- ### Patch Changes
380
-
381
- - 10b5646: Include src files for react-core
382
-
383
- ## 0.2.4
384
-
385
- ### Patch Changes
386
-
387
- - bc69618: Add react-native to package.json files to fix a bug in our React Native SDK
388
- - Updated dependencies [bc69618]
389
- - @knocklabs/client@0.9.3
390
-
391
- ## 0.2.3
392
-
393
- ### Patch Changes
394
-
395
- - Updated dependencies [fed0f8c]
396
- - @knocklabs/client@0.9.2
397
-
398
- ## 0.2.2
399
-
400
- ### Patch Changes
401
-
402
- - 282d005: Handle auth disconnected status.
403
-
404
- ## 0.2.1
405
-
406
- ### Patch Changes
407
-
408
- - Updated dependencies [f37d680]
409
- - @knocklabs/client@0.9.1
410
-
411
- ## 0.2.0
412
-
413
- ### Minor Changes
414
-
415
- - 627e643: Add SlackKit components, hooks, client JS functions, and example apps.
416
-
417
- ### Patch Changes
418
-
419
- - e076109: Fix hover state for connect button.
420
- - Updated dependencies [627e643]
421
- - @knocklabs/client@0.9.0
422
-
423
- ## 0.1.6
424
-
425
- ### Patch Changes
426
-
427
- - c9faba5: fix esm build issues with mjs files
428
- - Updated dependencies [c9faba5]
429
- - @knocklabs/client@0.8.21
430
-
431
- ## 0.1.5
432
-
433
- ### Patch Changes
434
-
435
- - Re-releasing packages
436
- - Updated dependencies
437
- - @knocklabs/client@0.8.20
438
-
439
- ## 0.1.4
440
-
441
- ### Patch Changes
442
-
443
- - 7786ec5: chore: upgrade to yarn modern and update local package references
444
- - 9dd0d15: feat: add onUserTokenExpiring callback option to client
445
- - Updated dependencies [7786ec5]
446
- - Updated dependencies [9dd0d15]
447
- - @knocklabs/client@0.8.19
448
-
449
- ## 0.1.3
450
-
451
- ### Patch Changes
452
-
453
- - 1050660: feat: switch timestamp formatting to date-fns intlFormatDistance
454
- - Updated dependencies [e53c200]
455
- - Updated dependencies [d4ba1f2]
456
- - @knocklabs/client@0.8.18
457
-
458
- ## 0.1.2
459
-
460
- ### Patch Changes
461
-
462
- - 8988230: Fix esm exports and date-fns/locale imports
463
- - 8315372: Fix cjs build output for React components
464
-
465
- ## 0.1.1
466
-
467
- ### Patch Changes
468
-
469
- - d8a216e: fix: react-core build process
470
- fix: remove headless prop from KnockFeedProvider
471
- fix: move KnockFeedContainer from react-core to react and rename to NotificationFeedContainer
472
-
473
- ## 0.1.0
474
-
475
- ### Patch Changes
476
-
477
- - bcdbc86: Initialize monorepo
package/dist/cjs/index.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./modules/core/context/KnockProvider.js"),c=require("./modules/core/hooks/useAuthenticatedKnockClient.js"),a=require("./modules/core/hooks/useStableOptions.js"),d=require("./modules/core/constants.js"),e=require("./modules/core/utils.js"),n=require("./modules/feed/context/KnockFeedProvider.js"),l=require("./modules/feed/hooks/useNotifications.js"),k=require("./modules/feed/hooks/useFeedSettings.js"),o=require("./modules/feed/hooks/useNotificationStore.js"),t=require("./modules/guide/context/KnockGuideProvider.js"),K=require("./modules/guide/hooks/useGuide.js"),r=require("./modules/ms-teams/context/KnockMsTeamsProvider.js"),C=require("./modules/ms-teams/hooks/useMsTeamsConnectionStatus.js"),S=require("./modules/ms-teams/hooks/useMsTeamsAuth.js"),m=require("./modules/ms-teams/hooks/useMsTeamsTeams.js"),q=require("./modules/ms-teams/hooks/useMsTeamsChannels.js"),v=require("./modules/ms-teams/hooks/useConnectedMsTeamsChannels.js"),i=require("./modules/slack/context/KnockSlackProvider.js"),P=require("./modules/slack/hooks/useSlackConnectionStatus.js"),T=require("./modules/slack/hooks/useSlackChannels.js"),M=require("./modules/slack/hooks/useConnectedSlackChannels.js"),f=require("./modules/slack/hooks/useSlackAuth.js"),u=require("./modules/i18n/context/KnockI18nProvider.js"),h=require("./modules/i18n/hooks/useTranslations.js"),F=require("./modules/i18n/languages/index.js");exports.KnockProvider=s.KnockProvider;exports.useKnockClient=s.useKnockClient;exports.useAuthenticatedKnockClient=c;exports.useStableOptions=a;exports.FilterStatus=d.FilterStatus;exports.feedProviderKey=e.feedProviderKey;exports.formatBadgeCount=e.formatBadgeCount;exports.formatTimestamp=e.formatTimestamp;exports.msTeamsProviderKey=e.msTeamsProviderKey;exports.renderNodeOrFallback=e.renderNodeOrFallback;exports.slackProviderKey=e.slackProviderKey;exports.toSentenceCase=e.toSentenceCase;exports.KnockFeedProvider=n.KnockFeedProvider;exports.useKnockFeed=n.useKnockFeed;exports.useNotifications=l;exports.useFeedSettings=k;exports.useCreateNotificationStore=o.useCreateNotificationStore;exports.useNotificationStore=o.default;exports.KnockGuideContext=t.KnockGuideContext;exports.KnockGuideProvider=t.KnockGuideProvider;exports.useGuide=K.useGuide;exports.KnockMsTeamsProvider=r.KnockMsTeamsProvider;exports.useKnockMsTeamsClient=r.useKnockMsTeamsClient;exports.useMsTeamsConnectionStatus=C;exports.useMsTeamsAuth=S;exports.useMsTeamsTeams=m;exports.useMsTeamsChannels=q;exports.useConnectedMsTeamsChannels=v;exports.KnockSlackProvider=i.KnockSlackProvider;exports.useKnockSlackClient=i.useKnockSlackClient;exports.useSlackConnectionStatus=P;exports.useSlackChannels=T;exports.useConnectedSlackChannels=M;exports.useSlackAuth=f;exports.I18nContext=u.I18nContext;exports.KnockI18nProvider=u.KnockI18nProvider;exports.useTranslations=h.useTranslations;exports.locales=F.locales;
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var n=(e=>(e.All="all",e.Read="read",e.Unseen="unseen",e.Unread="unread",e))(n||{});exports.FilterStatus=n;
2
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/modules/core/constants.ts"],"sourcesContent":["export enum FilterStatus {\n All = \"all\",\n Read = \"read\",\n Unseen = \"unseen\",\n Unread = \"unread\",\n}\n\nexport type ColorMode = \"light\" | \"dark\";\n"],"names":["FilterStatus","All","Read","Unseen","Unread"],"mappings":"gFAAYA,IAAAA,GAAAA,IACVC,EAAAA,IAAM,MACNC,EAAAA,KAAO,OACPC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SAJCJ,IAAAA,GAAAA,CAAAA,CAAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),b=require("../../i18n/context/KnockI18nProvider.js"),K=require("../hooks/useAuthenticatedKnockClient.js");require("fast-deep-equal");function m(e){if(e&&typeof e=="object"&&"default"in e)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const o=m(f),i=o.createContext(null),P=({apiKey:e,host:n,logLevel:t,userId:r,userToken:s,onUserTokenExpiring:c,timeBeforeExpirationInMs:u,children:a,i18n:l})=>{const d=o.useMemo(()=>({host:n,onUserTokenExpiring:c,timeBeforeExpirationInMs:u,logLevel:t}),[n,c,u,t]),k=K(e??"",r,s,d);return o.createElement(i.Provider,{value:{knock:k}},o.createElement(b.KnockI18nProvider,{i18n:l},a))},p=()=>{const e=o.useContext(i);if(!e)throw new Error("useKnockClient must be used within a KnockProvider");return e.knock};exports.KnockProvider=P;exports.useKnockClient=p;
2
- //# sourceMappingURL=KnockProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnockProvider.js","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"sourcesContent":["import Knock, { AuthenticateOptions, LogLevel } from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { I18nContent, KnockI18nProvider } from \"../../i18n\";\nimport { useAuthenticatedKnockClient } from \"../hooks\";\n\nexport interface KnockProviderState {\n knock: Knock;\n}\n\nconst KnockContext = React.createContext<KnockProviderState | null>(null);\n\nexport interface KnockProviderProps {\n // Knock client props\n apiKey: string | undefined;\n host?: string;\n // Authentication props\n userId: Knock[\"userId\"];\n userToken?: Knock[\"userToken\"];\n onUserTokenExpiring?: AuthenticateOptions[\"onUserTokenExpiring\"];\n timeBeforeExpirationInMs?: AuthenticateOptions[\"timeBeforeExpirationInMs\"];\n // i18n translations\n i18n?: I18nContent;\n logLevel?: LogLevel;\n}\n\nexport const KnockProvider: React.FC<PropsWithChildren<KnockProviderProps>> = ({\n apiKey,\n host,\n logLevel,\n userId,\n userToken,\n onUserTokenExpiring,\n timeBeforeExpirationInMs,\n children,\n i18n,\n}) => {\n // We memoize the options here so that we don't create a new object on every re-render\n const authenticateOptions = React.useMemo(\n () => ({\n host,\n onUserTokenExpiring,\n timeBeforeExpirationInMs,\n logLevel,\n }),\n [host, onUserTokenExpiring, timeBeforeExpirationInMs, logLevel],\n );\n\n const knock = useAuthenticatedKnockClient(\n apiKey ?? \"\",\n userId,\n userToken,\n authenticateOptions,\n );\n\n return (\n <KnockContext.Provider value={{ knock }}>\n <KnockI18nProvider i18n={i18n}>{children}</KnockI18nProvider>\n </KnockContext.Provider>\n );\n};\n\nexport const useKnockClient = (): Knock => {\n const context = React.useContext(KnockContext);\n if (!context) {\n throw new Error(\"useKnockClient must be used within a KnockProvider\");\n }\n return context.knock;\n};\n"],"names":["KnockContext","React","createContext","KnockProvider","apiKey","host","logLevel","userId","userToken","onUserTokenExpiring","timeBeforeExpirationInMs","children","i18n","authenticateOptions","useMemo","knock","useAuthenticatedKnockClient","KnockI18nProvider","useKnockClient","context","useContext","Error"],"mappings":"yjBAWMA,EAAeC,EAAMC,cAAyC,IAAI,EAgB3DC,EAAiEA,CAAC,CAC7EC,OAAAA,EACAC,KAAAA,EACAC,SAAAA,EACAC,OAAAA,EACAC,UAAAA,EACAC,oBAAAA,EACAC,yBAAAA,EACAC,SAAAA,EACAC,KAAAA,CACF,IAAM,CAEEC,MAAAA,EAAsBZ,EAAMa,QAChC,KAAO,CACLT,KAAAA,EACAI,oBAAAA,EACAC,yBAAAA,EACAJ,SAAAA,IAEF,CAACD,EAAMI,EAAqBC,EAA0BJ,CAAQ,CAChE,EAEMS,EAAQC,EACZZ,GAAU,GACVG,EACAC,EACAK,CACF,EAEA,OACGZ,EAAA,cAAAD,EAAa,SAAb,CAAsB,MAAO,CAAEe,MAAAA,CAAAA,CAC9B,EAAAd,EAAA,cAACgB,EAAAA,kBAAkB,CAAA,KAAAL,CAAA,EAAaD,CAAS,CAC3C,CAEJ,EAEaO,EAAiBA,IAAa,CACnCC,MAAAA,EAAUlB,EAAMmB,WAAWpB,CAAY,EAC7C,GAAI,CAACmB,EACG,MAAA,IAAIE,MAAM,oDAAoD,EAEtE,OAAOF,EAAQJ,KACjB"}
@@ -1,2 +0,0 @@
1
- "use strict";const s=require("@knocklabs/client"),d=require("react");require("../context/KnockProvider.js");const k=require("./useStableOptions.js");require("date-fns");const l=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},h=l(s),o=l(d);function f(e,r,c,t={}){e.authenticate(r,c,{onUserTokenExpiring:t==null?void 0:t.onUserTokenExpiring,timeBeforeExpirationInMs:t==null?void 0:t.timeBeforeExpirationInMs})}function q(e,r,c,t={}){const a=o.default.useRef(),u=k(t);return o.default.useMemo(()=>{const n=a.current;if(n&&n.isAuthenticated()&&(n.userId!==r||n.userToken!==c))return f(n,r,c,u),n;n&&n.teardown();const i=new h.default(e,{host:u.host,logLevel:u.logLevel});return f(i,r,c,u),a.current=i,i},[e,r,c,u])}module.exports=q;
2
- //# sourceMappingURL=useAuthenticatedKnockClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuthenticatedKnockClient.js","sources":["../../../../../src/modules/core/hooks/useAuthenticatedKnockClient.ts"],"sourcesContent":["import Knock, { AuthenticateOptions, KnockOptions } from \"@knocklabs/client\";\nimport React from \"react\";\n\nimport { useStableOptions } from \"../../core\";\n\nfunction authenticateWithOptions(\n knock: Knock,\n userId: Knock[\"userId\"],\n userToken?: Knock[\"userToken\"],\n options: AuthenticateOptions = {},\n) {\n knock.authenticate(userId, userToken, {\n onUserTokenExpiring: options?.onUserTokenExpiring,\n timeBeforeExpirationInMs: options?.timeBeforeExpirationInMs,\n });\n}\n\nexport type AuthenticatedKnockClientOptions = KnockOptions &\n AuthenticateOptions;\n\nfunction useAuthenticatedKnockClient(\n apiKey: string,\n userId: Knock[\"userId\"],\n userToken?: Knock[\"userToken\"],\n options: AuthenticatedKnockClientOptions = {},\n) {\n const knockRef = React.useRef<Knock | undefined>();\n const stableOptions = useStableOptions(options);\n\n return React.useMemo(() => {\n const currentKnock = knockRef.current;\n\n // If the userId and the userToken changes then just reauth\n if (\n currentKnock &&\n currentKnock.isAuthenticated() &&\n (currentKnock.userId !== userId || currentKnock.userToken !== userToken)\n ) {\n authenticateWithOptions(currentKnock, userId, userToken, stableOptions);\n return currentKnock;\n }\n\n if (currentKnock) {\n currentKnock.teardown();\n }\n\n // Otherwise instantiate a new Knock client\n const knock = new Knock(apiKey, {\n host: stableOptions.host,\n logLevel: stableOptions.logLevel,\n });\n\n authenticateWithOptions(knock, userId, userToken, stableOptions);\n knockRef.current = knock;\n\n return knock;\n }, [apiKey, userId, userToken, stableOptions]);\n}\n\nexport default useAuthenticatedKnockClient;\n"],"names":["authenticateWithOptions","knock","userId","userToken","options","authenticate","onUserTokenExpiring","timeBeforeExpirationInMs","useAuthenticatedKnockClient","apiKey","knockRef","React","useRef","stableOptions","useStableOptions","useMemo","currentKnock","current","isAuthenticated","teardown","Knock","host","logLevel"],"mappings":"qPAKA,SAASA,EACPC,EACAC,EACAC,EACAC,EAA+B,CAAA,EAC/B,CACMC,EAAAA,aAAaH,EAAQC,EAAW,CACpCG,oBAAqBF,GAAAA,YAAAA,EAASE,oBAC9BC,yBAA0BH,GAAAA,YAAAA,EAASG,wBAAAA,CACpC,CACH,CAKA,SAASC,EACPC,EACAP,EACAC,EACAC,EAA2C,CAAA,EAC3C,CACMM,MAAAA,EAAWC,UAAMC,OAA0B,EAC3CC,EAAgBC,EAAiBV,CAAO,EAEvCO,OAAAA,EAAAA,QAAMI,QAAQ,IAAM,CACzB,MAAMC,EAAeN,EAASO,QAI5BD,GAAAA,GACAA,EAAaE,gBAAgB,IAC5BF,EAAad,SAAWA,GAAUc,EAAab,YAAcA,GAEtCa,OAAAA,EAAAA,EAAcd,EAAQC,EAAWU,CAAa,EAC/DG,EAGLA,GACFA,EAAaG,SAAS,EAIlBlB,MAAAA,EAAQ,IAAImB,EAAAA,QAAMX,EAAQ,CAC9BY,KAAMR,EAAcQ,KACpBC,SAAUT,EAAcS,QAAAA,CACzB,EAEuBrB,OAAAA,EAAAA,EAAOC,EAAQC,EAAWU,CAAa,EAC/DH,EAASO,QAAUhB,EAEZA,GACN,CAACQ,EAAQP,EAAQC,EAAWU,CAAa,CAAC,CAC/C"}
@@ -1,2 +0,0 @@
1
- "use strict";const n=require("fast-deep-equal"),r=require("react"),s=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},c=s(n);function a(t){const u=r.useRef();return r.useMemo(()=>{const e=u.current;return e&&c.default(t,e)?e:(u.current=t,t)},[t])}module.exports=a;
2
- //# sourceMappingURL=useStableOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStableOptions.js","sources":["../../../../../src/modules/core/hooks/useStableOptions.ts"],"sourcesContent":["import fastDeepEqual from \"fast-deep-equal\";\nimport { useMemo, useRef } from \"react\";\n\nexport default function useStableOptions<T>(options: T): T {\n const optionsRef = useRef<T>();\n\n return useMemo(() => {\n const currentOptions = optionsRef.current;\n\n if (currentOptions && fastDeepEqual(options, currentOptions)) {\n return currentOptions;\n }\n\n optionsRef.current = options;\n return options;\n }, [options]);\n}\n"],"names":["useStableOptions","options","optionsRef","useRef","useMemo","currentOptions","current","fastDeepEqual"],"mappings":"kIAGA,SAAwBA,EAAoBC,EAAe,CACzD,MAAMC,EAAaC,EAAAA,OAAU,EAE7B,OAAOC,UAAQ,IAAM,CACnB,MAAMC,EAAiBH,EAAWI,QAElC,OAAID,GAAkBE,EAAAA,QAAcN,EAASI,CAAc,EAClDA,GAGTH,EAAWI,QAAUL,EACdA,EAAAA,EACN,CAACA,CAAO,CAAC,CACd"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("date-fns");function i(e){return e>9?"9+":e}function c(e,t={}){try{const r=o.parseISO(e);return o.intlFormatDistance(r,new Date,{locale:t.locale})}catch{return e}}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}function l(e,t){return e!==void 0?e:t}function u(e,t,r={}){return[e,t,r.source,r.tenant,r.has_tenant,r.archived].filter(n=>n!=null).join("-")}function s({knockSlackChannelId:e,tenantId:t,connectionStatus:r,errorLabel:n}){return[e,t,r,n].filter(a=>a!=null).join("-")}function f({knockMsTeamsChannelId:e,tenantId:t,connectionStatus:r,errorLabel:n}){return[e,t,r,n].filter(a=>a!=null).join("-")}exports.feedProviderKey=u;exports.formatBadgeCount=i;exports.formatTimestamp=c;exports.msTeamsProviderKey=f;exports.renderNodeOrFallback=l;exports.slackProviderKey=s;exports.toSentenceCase=d;
2
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/modules/core/utils.ts"],"sourcesContent":["import Knock, { FeedClientOptions } from \"@knocklabs/client\";\nimport { intlFormatDistance, parseISO } from \"date-fns\";\nimport { ReactNode } from \"react\";\n\nexport function formatBadgeCount(count: number): string | number {\n return count > 9 ? \"9+\" : count;\n}\n\ntype FormatTimestampOptions = {\n locale?: string | string[];\n};\n\nexport function formatTimestamp(\n ts: string,\n options: FormatTimestampOptions = {},\n) {\n try {\n const parsedTs = parseISO(ts);\n const formatted = intlFormatDistance(parsedTs, new Date(), {\n locale: options.locale,\n });\n\n return formatted;\n } catch (_e) {\n return ts;\n }\n}\n\nexport function toSentenceCase(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function renderNodeOrFallback(node: ReactNode, fallback: ReactNode) {\n return node !== undefined ? node : fallback;\n}\n\n/*\n Used to build a consistent key for the KnockFeedProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function feedProviderKey(\n userId: Knock[\"userId\"],\n feedId: string,\n options: FeedClientOptions = {},\n) {\n return [\n userId,\n feedId,\n options.source,\n options.tenant,\n options.has_tenant,\n options.archived,\n ]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockSlackProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function slackProviderKey({\n knockSlackChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n}: {\n knockSlackChannelId: string;\n tenantId: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockSlackChannelId, tenantId, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockMsTeamsProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function msTeamsProviderKey({\n knockMsTeamsChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n}: {\n knockMsTeamsChannelId: string;\n tenantId: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockMsTeamsChannelId, tenantId, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n"],"names":["formatBadgeCount","count","formatTimestamp","ts","options","parsedTs","parseISO","formatted","intlFormatDistance","Date","locale","toSentenceCase","string","charAt","toUpperCase","slice","renderNodeOrFallback","node","fallback","undefined","feedProviderKey","userId","feedId","source","tenant","has_tenant","archived","filter","f","join","slackProviderKey","knockSlackChannelId","tenantId","connectionStatus","errorLabel","msTeamsProviderKey","knockMsTeamsChannelId"],"mappings":"4GAIO,SAASA,EAAiBC,EAAgC,CACxDA,OAAAA,EAAQ,EAAI,KAAOA,CAC5B,CAMO,SAASC,EACdC,EACAC,EAAkC,GAClC,CACI,GAAA,CACIC,MAAAA,EAAWC,WAASH,CAAE,EAKrBI,OAJWC,EAAAA,mBAAmBH,EAAU,IAAII,KAAQ,CACzDC,OAAQN,EAAQM,MAAAA,CACjB,OAGU,CACJP,OAAAA,CAAAA,CAEX,CAEO,SAASQ,EAAeC,EAAwB,CAC9CA,OAAAA,EAAOC,OAAO,CAAC,EAAEC,cAAgBF,EAAOG,MAAM,CAAC,CACxD,CAEgBC,SAAAA,EAAqBC,EAAiBC,EAAqB,CAClED,OAAAA,IAASE,OAAYF,EAAOC,CACrC,CAMO,SAASE,EACdC,EACAC,EACAlB,EAA6B,CAAA,EAC7B,CACO,MAAA,CACLiB,EACAC,EACAlB,EAAQmB,OACRnB,EAAQoB,OACRpB,EAAQqB,WACRrB,EAAQsB,QAAQ,EAEfC,UAAcC,GAAM,IAAuB,EAC3CC,KAAK,GAAG,CACb,CAMO,SAASC,EAAiB,CAC/BC,oBAAAA,EACAC,SAAAA,EACAC,iBAAAA,EACAC,WAAAA,CAMF,EAAG,CACD,MAAO,CAACH,EAAqBC,EAAUC,EAAkBC,CAAU,EAChEP,OAAcC,GAAAA,GAAM,IAAuB,EAC3CC,KAAK,GAAG,CACb,CAMO,SAASM,EAAmB,CACjCC,sBAAAA,EACAJ,SAAAA,EACAC,iBAAAA,EACAC,WAAAA,CAMF,EAAG,CACD,MAAO,CAACE,EAAuBJ,EAAUC,EAAkBC,CAAU,EAClEP,OAAcC,GAAAA,GAAM,IAAuB,EAC3CC,KAAK,GAAG,CACb"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),a=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");const l=require("../../core/utils.js"),f=require("../hooks/useNotifications.js"),k=require("../hooks/useNotificationStore.js");function v(e){if(e&&typeof e=="object"&&"default"in e)return e;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const c=v(d),u=c.createContext(void 0),K=({feedId:e,children:r,defaultFeedOptions:t={},colorMode:o="light"})=>{let n;try{n=a.useKnockClient()}catch{throw new Error("KnockFeedProvider must be used within a KnockProvider.")}const i=f(n,e??"",t),s=k.useCreateNotificationStore(i);return c.createElement(u.Provider,{key:l.feedProviderKey(n.userId,e??"",t),value:{knock:n,feedClient:i,useFeedStore:s,colorMode:o}},r)},b=()=>{const e=c.useContext(u);if(!e)throw new Error("useKnockFeed must be used within a KnockFeedProvider");return e};exports.KnockFeedProvider=K;exports.useKnockFeed=b;
2
- //# sourceMappingURL=KnockFeedProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnockFeedProvider.js","sources":["../../../../../src/modules/feed/context/KnockFeedProvider.tsx"],"sourcesContent":["import Knock, {\n Feed,\n FeedClientOptions,\n FeedStoreState,\n} from \"@knocklabs/client\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\n\nimport { useKnockClient } from \"../../core\";\nimport { ColorMode } from \"../../core/constants\";\nimport { feedProviderKey } from \"../../core/utils\";\nimport { useCreateNotificationStore } from \"../hooks\";\nimport useNotifications from \"../hooks/useNotifications\";\n\nexport interface KnockFeedProviderState {\n knock: Knock;\n feedClient: Feed;\n useFeedStore: UseBoundStore<StoreApi<FeedStoreState>>;\n colorMode: ColorMode;\n}\n\nconst KnockFeedContext = React.createContext<\n KnockFeedProviderState | undefined\n>(undefined);\n\nexport interface KnockFeedProviderProps {\n // Feed props\n feedId: string | undefined;\n\n // Extra options\n colorMode?: ColorMode;\n\n // Feed client options\n defaultFeedOptions?: FeedClientOptions;\n}\n\nexport const KnockFeedProvider: React.FC<\n PropsWithChildren<KnockFeedProviderProps>\n> = ({ feedId, children, defaultFeedOptions = {}, colorMode = \"light\" }) => {\n let knock: Knock;\n try {\n knock = useKnockClient();\n } catch (_) {\n throw new Error(\"KnockFeedProvider must be used within a KnockProvider.\");\n }\n\n const feedClient = useNotifications(knock, feedId ?? \"\", defaultFeedOptions);\n const useFeedStore = useCreateNotificationStore(feedClient);\n\n return (\n <KnockFeedContext.Provider\n key={feedProviderKey(knock.userId, feedId ?? \"\", defaultFeedOptions)}\n value={{\n knock,\n feedClient,\n useFeedStore,\n colorMode,\n }}\n >\n {children}\n </KnockFeedContext.Provider>\n );\n};\n\nexport const useKnockFeed = (): KnockFeedProviderState => {\n const context = React.useContext(KnockFeedContext);\n if (!context) {\n throw new Error(\"useKnockFeed must be used within a KnockFeedProvider\");\n }\n\n return context;\n};\n"],"names":["KnockFeedContext","React","createContext","undefined","KnockFeedProvider","feedId","children","defaultFeedOptions","colorMode","knock","useKnockClient","Error","feedClient","useNotifications","useFeedStore","useCreateNotificationStore","feedProviderKey","userId","useKnockFeed","context","useContext"],"mappings":"4pBAsBMA,EAAmBC,EAAMC,cAE7BC,MAAS,EAaEC,EAETA,CAAC,CAAEC,OAAAA,EAAQC,SAAAA,EAAUC,mBAAAA,EAAqB,CAAC,EAAGC,UAAAA,EAAY,OAAQ,IAAM,CACtEC,IAAAA,EACA,GAAA,CACFA,EAAQC,EAAAA,eAAe,OACb,CACJ,MAAA,IAAIC,MAAM,wDAAwD,CAAA,CAG1E,MAAMC,EAAaC,EAAiBJ,EAAOJ,GAAU,GAAIE,CAAkB,EACrEO,EAAeC,6BAA2BH,CAAU,EAE1D,OACGX,EAAA,cAAAD,EAAiB,SAAjB,CACC,IAAKgB,EAAAA,gBAAgBP,EAAMQ,OAAQZ,GAAU,GAAIE,CAAkB,EACnE,MAAO,CACLE,MAAAA,EACAG,WAAAA,EACAE,aAAAA,EACAN,UAAAA,IAGDF,CACH,CAEJ,EAEaY,EAAeA,IAA8B,CAClDC,MAAAA,EAAUlB,EAAMmB,WAAWpB,CAAgB,EACjD,GAAI,CAACmB,EACG,MAAA,IAAIR,MAAM,sDAAsD,EAGjEQ,OAAAA,CACT"}