@knocklabs/client 0.10.13 → 0.11.0-rc-1.0

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 (61) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/api.js +1 -1
  3. package/dist/cjs/api.js.map +1 -1
  4. package/dist/cjs/clients/in-app-messages/channel-client.js +2 -0
  5. package/dist/cjs/clients/in-app-messages/channel-client.js.map +1 -0
  6. package/dist/cjs/clients/in-app-messages/message-client.js +2 -0
  7. package/dist/cjs/clients/in-app-messages/message-client.js.map +1 -0
  8. package/dist/cjs/clients/in-app-messages/socket-manager.js +2 -0
  9. package/dist/cjs/clients/in-app-messages/socket-manager.js.map +1 -0
  10. package/dist/cjs/clients/in-app-messages/store.js +2 -0
  11. package/dist/cjs/clients/in-app-messages/store.js.map +1 -0
  12. package/dist/cjs/clients/users/index.js +1 -1
  13. package/dist/cjs/clients/users/index.js.map +1 -1
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/esm/api.mjs +14 -9
  16. package/dist/esm/api.mjs.map +1 -1
  17. package/dist/esm/clients/in-app-messages/channel-client.mjs +80 -0
  18. package/dist/esm/clients/in-app-messages/channel-client.mjs.map +1 -0
  19. package/dist/esm/clients/in-app-messages/message-client.mjs +157 -0
  20. package/dist/esm/clients/in-app-messages/message-client.mjs.map +1 -0
  21. package/dist/esm/clients/in-app-messages/socket-manager.mjs +83 -0
  22. package/dist/esm/clients/in-app-messages/socket-manager.mjs.map +1 -0
  23. package/dist/esm/clients/in-app-messages/store.mjs +11 -0
  24. package/dist/esm/clients/in-app-messages/store.mjs.map +1 -0
  25. package/dist/esm/clients/users/index.mjs +28 -20
  26. package/dist/esm/clients/users/index.mjs.map +1 -1
  27. package/dist/esm/index.mjs +11 -7
  28. package/dist/esm/index.mjs.map +1 -1
  29. package/dist/types/api.d.ts.map +1 -1
  30. package/dist/types/clients/in-app-messages/channel-client.d.ts +23 -0
  31. package/dist/types/clients/in-app-messages/channel-client.d.ts.map +1 -0
  32. package/dist/types/clients/in-app-messages/index.d.ts +4 -0
  33. package/dist/types/clients/in-app-messages/index.d.ts.map +1 -0
  34. package/dist/types/clients/in-app-messages/message-client.d.ts +52 -0
  35. package/dist/types/clients/in-app-messages/message-client.d.ts.map +1 -0
  36. package/dist/types/clients/in-app-messages/socket-manager.d.ts +27 -0
  37. package/dist/types/clients/in-app-messages/socket-manager.d.ts.map +1 -0
  38. package/dist/types/clients/in-app-messages/store.d.ts +6 -0
  39. package/dist/types/clients/in-app-messages/store.d.ts.map +1 -0
  40. package/dist/types/clients/in-app-messages/types.d.ts +52 -0
  41. package/dist/types/clients/in-app-messages/types.d.ts.map +1 -0
  42. package/dist/types/clients/preferences/interfaces.d.ts +1 -1
  43. package/dist/types/clients/preferences/interfaces.d.ts.map +1 -1
  44. package/dist/types/clients/users/index.d.ts +3 -1
  45. package/dist/types/clients/users/index.d.ts.map +1 -1
  46. package/dist/types/clients/users/interfaces.d.ts +8 -0
  47. package/dist/types/clients/users/interfaces.d.ts.map +1 -1
  48. package/dist/types/index.d.ts +1 -0
  49. package/dist/types/index.d.ts.map +1 -1
  50. package/package.json +12 -10
  51. package/src/api.ts +9 -2
  52. package/src/clients/in-app-messages/channel-client.ts +129 -0
  53. package/src/clients/in-app-messages/index.ts +3 -0
  54. package/src/clients/in-app-messages/message-client.ts +275 -0
  55. package/src/clients/in-app-messages/socket-manager.ts +187 -0
  56. package/src/clients/in-app-messages/store.ts +15 -0
  57. package/src/clients/in-app-messages/types.ts +77 -0
  58. package/src/clients/preferences/interfaces.ts +1 -1
  59. package/src/clients/users/index.ts +19 -1
  60. package/src/clients/users/interfaces.ts +10 -0
  61. package/src/index.ts +1 -0
@@ -0,0 +1,77 @@
1
+ import { GenericData, PageInfo, Tenant } from "@knocklabs/types";
2
+
3
+ import { NetworkStatus } from "../../networkStatus";
4
+ import { NotificationSource } from "../messages/interfaces";
5
+
6
+ export interface InAppMessage<
7
+ TContent extends GenericData = GenericData,
8
+ TData extends GenericData = GenericData,
9
+ TTenantProperties = GenericData,
10
+ > {
11
+ __cursor: string;
12
+ id: string;
13
+ message_type: string;
14
+ schema_variant: string;
15
+ schema_version: string;
16
+ content: TContent;
17
+ data: TData | null;
18
+ inserted_at: string;
19
+ updated_at: string;
20
+ seen_at: string | null;
21
+ read_at: string | null;
22
+ interacted_at: string | null;
23
+ archived_at: string | null;
24
+ link_clicked_at: string | null;
25
+ source: NotificationSource;
26
+ tenant: Tenant<TTenantProperties>;
27
+ }
28
+
29
+ export interface InAppMessagesResponse<
30
+ TContent extends GenericData = GenericData,
31
+ TData extends GenericData = GenericData,
32
+ > {
33
+ entries: InAppMessage<TContent, TData>[];
34
+ pageInfo: PageInfo;
35
+ }
36
+
37
+ export interface InAppMessagesQueryInfo {
38
+ networkStatus: NetworkStatus;
39
+ loading: boolean;
40
+ data?: {
41
+ messageIds: string[];
42
+ pageInfo: PageInfo;
43
+ };
44
+ }
45
+
46
+ export interface InAppMessagesStoreState {
47
+ messages: Record<string, InAppMessage>;
48
+ queries: Record<string, InAppMessagesQueryInfo>;
49
+ }
50
+
51
+ export type InAppMessageEngagementStatus =
52
+ | "read"
53
+ | "unread"
54
+ | "seen"
55
+ | "unseen"
56
+ | "link_clicked"
57
+ | "link_unclicked"
58
+ | "interacted"
59
+ | "uninteracted";
60
+
61
+ export interface InAppMessagesClientOptions {
62
+ order?: "asc" | "desc";
63
+ before?: string;
64
+ after?: string;
65
+ page_size?: number;
66
+ engagement_status?: InAppMessageEngagementStatus[];
67
+ // Optionally scope all requests to a particular tenant or tenants
68
+ tenant_id?: string | string[];
69
+ // Optionally scope to notifications from the given workflow or workflows
70
+ workflow_key?: string | string[];
71
+ // Optionally scope to notifications with any of the categories provided
72
+ workflow_categories?: string[];
73
+ // Optionally scope to a given archived status (defaults to `exclude`)
74
+ archived?: "include" | "exclude" | "only";
75
+ // Optionally scope all notifications that contain this argument as part of their trigger payload
76
+ trigger_data?: GenericData;
77
+ }
@@ -1,7 +1,7 @@
1
1
  import { ChannelType } from "@knocklabs/types";
2
2
 
3
3
  export type ChannelTypePreferences = {
4
- [K in ChannelType]?: boolean;
4
+ [_K in ChannelType]?: boolean;
5
5
  };
6
6
 
7
7
  export type WorkflowPreferenceSetting =
@@ -3,6 +3,7 @@ import { GenericData } from "@knocklabs/types";
3
3
  import { ApiResponse } from "../../api";
4
4
  import { ChannelData, User } from "../../interfaces";
5
5
  import Knock from "../../knock";
6
+ import { InAppMessagesResponse } from "../in-app-messages";
6
7
  import {
7
8
  GetPreferencesOptions,
8
9
  PreferenceOptions,
@@ -10,7 +11,11 @@ import {
10
11
  SetPreferencesProperties,
11
12
  } from "../preferences/interfaces";
12
13
 
13
- import { GetChannelDataInput, SetChannelDataInput } from "./interfaces";
14
+ import {
15
+ GetChannelDataInput,
16
+ GetInAppMessagesInput,
17
+ SetChannelDataInput,
18
+ } from "./interfaces";
14
19
 
15
20
  const DEFAULT_PREFERENCE_SET_ID = "default";
16
21
 
@@ -100,6 +105,19 @@ class UserClient {
100
105
  return this.handleResponse<ChannelData<T>>(result);
101
106
  }
102
107
 
108
+ async getInAppMessages<
109
+ TContent extends GenericData = GenericData,
110
+ TData extends GenericData = GenericData,
111
+ >({ channelId, messageType, params }: GetInAppMessagesInput) {
112
+ const result = await this.instance.client().makeRequest({
113
+ method: "GET",
114
+ url: `/v1/users/${this.instance.userId}/in-app-messages/${channelId}/${messageType}`,
115
+ params,
116
+ });
117
+
118
+ return this.handleResponse<InAppMessagesResponse<TContent, TData>>(result);
119
+ }
120
+
103
121
  private handleResponse<T>(response: ApiResponse) {
104
122
  if (response.statusCode === "error") {
105
123
  throw new Error(response.error || response.body);
@@ -1,5 +1,7 @@
1
1
  import { GenericData } from "@knocklabs/types";
2
2
 
3
+ import { InAppMessagesClientOptions } from "../in-app-messages/types";
4
+
3
5
  export interface SetChannelDataInput {
4
6
  channelId: string;
5
7
  channelData: GenericData;
@@ -8,3 +10,11 @@ export interface SetChannelDataInput {
8
10
  export interface GetChannelDataInput {
9
11
  channelId: string;
10
12
  }
13
+
14
+ export interface GetInAppMessagesInput {
15
+ channelId: string;
16
+ messageType: string;
17
+ params: Omit<InAppMessagesClientOptions, "trigger_data"> & {
18
+ trigger_data: string;
19
+ };
20
+ }
package/src/index.ts CHANGED
@@ -12,6 +12,7 @@ export * from "./clients/slack/interfaces";
12
12
  export * from "./clients/users";
13
13
  export * from "./clients/users/interfaces";
14
14
  export * from "./clients/messages";
15
+ export * from "./clients/in-app-messages";
15
16
  export * from "./clients/messages/interfaces";
16
17
  export * from "./networkStatus";
17
18