@knocklabs/client 0.14.10 → 0.14.11

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 (128) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/api.js +2 -0
  3. package/dist/cjs/api.js.map +1 -0
  4. package/dist/cjs/clients/feed/feed.js +2 -0
  5. package/dist/cjs/clients/feed/feed.js.map +1 -0
  6. package/dist/cjs/clients/feed/index.js +2 -0
  7. package/dist/cjs/clients/feed/index.js.map +1 -0
  8. package/dist/cjs/clients/feed/socket-manager.js +2 -0
  9. package/dist/cjs/clients/feed/socket-manager.js.map +1 -0
  10. package/dist/cjs/clients/feed/store.js +2 -0
  11. package/dist/cjs/clients/feed/store.js.map +1 -0
  12. package/dist/cjs/clients/feed/utils.js +2 -0
  13. package/dist/cjs/clients/feed/utils.js.map +1 -0
  14. package/dist/cjs/clients/guide/client.js +2 -0
  15. package/dist/cjs/clients/guide/client.js.map +1 -0
  16. package/dist/cjs/clients/messages/index.js +2 -0
  17. package/dist/cjs/clients/messages/index.js.map +1 -0
  18. package/dist/cjs/clients/ms-teams/index.js +2 -0
  19. package/dist/cjs/clients/ms-teams/index.js.map +1 -0
  20. package/dist/cjs/clients/objects/constants.js +2 -0
  21. package/dist/cjs/clients/objects/constants.js.map +1 -0
  22. package/dist/cjs/clients/objects/index.js +2 -0
  23. package/dist/cjs/clients/objects/index.js.map +1 -0
  24. package/dist/cjs/clients/preferences/index.js +2 -0
  25. package/dist/cjs/clients/preferences/index.js.map +1 -0
  26. package/dist/cjs/clients/slack/index.js +2 -0
  27. package/dist/cjs/clients/slack/index.js.map +1 -0
  28. package/dist/cjs/clients/users/index.js +2 -0
  29. package/dist/cjs/clients/users/index.js.map +1 -0
  30. package/dist/cjs/helpers.js +2 -0
  31. package/dist/cjs/helpers.js.map +1 -0
  32. package/dist/cjs/index.js +2 -0
  33. package/dist/cjs/index.js.map +1 -0
  34. package/dist/cjs/knock.js +2 -0
  35. package/dist/cjs/knock.js.map +1 -0
  36. package/dist/cjs/networkStatus.js +2 -0
  37. package/dist/cjs/networkStatus.js.map +1 -0
  38. package/dist/esm/api.mjs +58 -0
  39. package/dist/esm/api.mjs.map +1 -0
  40. package/dist/esm/clients/feed/feed.mjs +422 -0
  41. package/dist/esm/clients/feed/feed.mjs.map +1 -0
  42. package/dist/esm/clients/feed/index.mjs +47 -0
  43. package/dist/esm/clients/feed/index.mjs.map +1 -0
  44. package/dist/esm/clients/feed/socket-manager.mjs +81 -0
  45. package/dist/esm/clients/feed/socket-manager.mjs.map +1 -0
  46. package/dist/esm/clients/feed/store.mjs +104 -0
  47. package/dist/esm/clients/feed/store.mjs.map +1 -0
  48. package/dist/esm/clients/feed/utils.mjs +35 -0
  49. package/dist/esm/clients/feed/utils.mjs.map +1 -0
  50. package/dist/esm/clients/guide/client.mjs +284 -0
  51. package/dist/esm/clients/guide/client.mjs.map +1 -0
  52. package/dist/esm/clients/messages/index.mjs +64 -0
  53. package/dist/esm/clients/messages/index.mjs.map +1 -0
  54. package/dist/esm/clients/ms-teams/index.mjs +91 -0
  55. package/dist/esm/clients/ms-teams/index.mjs.map +1 -0
  56. package/dist/esm/clients/objects/constants.mjs +5 -0
  57. package/dist/esm/clients/objects/constants.mjs.map +1 -0
  58. package/dist/esm/clients/objects/index.mjs +42 -0
  59. package/dist/esm/clients/objects/index.mjs.map +1 -0
  60. package/dist/esm/clients/preferences/index.mjs +128 -0
  61. package/dist/esm/clients/preferences/index.mjs.map +1 -0
  62. package/dist/esm/clients/slack/index.mjs +72 -0
  63. package/dist/esm/clients/slack/index.mjs.map +1 -0
  64. package/dist/esm/clients/users/index.mjs +99 -0
  65. package/dist/esm/clients/users/index.mjs.map +1 -0
  66. package/dist/esm/helpers.mjs +8 -0
  67. package/dist/esm/helpers.mjs.map +1 -0
  68. package/dist/esm/index.mjs +16 -0
  69. package/dist/esm/index.mjs.map +1 -0
  70. package/dist/esm/knock.mjs +95 -0
  71. package/dist/esm/knock.mjs.map +1 -0
  72. package/dist/esm/networkStatus.mjs +15 -0
  73. package/dist/esm/networkStatus.mjs.map +1 -0
  74. package/dist/types/api.d.ts +25 -0
  75. package/dist/types/api.d.ts.map +1 -0
  76. package/dist/types/clients/feed/feed.d.ts +75 -0
  77. package/dist/types/clients/feed/feed.d.ts.map +1 -0
  78. package/dist/types/clients/feed/index.d.ts +17 -0
  79. package/dist/types/clients/feed/index.d.ts.map +1 -0
  80. package/dist/types/clients/feed/interfaces.d.ts +99 -0
  81. package/dist/types/clients/feed/interfaces.d.ts.map +1 -0
  82. package/dist/types/clients/feed/socket-manager.d.ts +31 -0
  83. package/dist/types/clients/feed/socket-manager.d.ts.map +1 -0
  84. package/dist/types/clients/feed/store.d.ts +20 -0
  85. package/dist/types/clients/feed/store.d.ts.map +1 -0
  86. package/dist/types/clients/feed/types.d.ts +35 -0
  87. package/dist/types/clients/feed/types.d.ts.map +1 -0
  88. package/dist/types/clients/feed/utils.d.ts +20 -0
  89. package/dist/types/clients/feed/utils.d.ts.map +1 -0
  90. package/dist/types/clients/guide/client.d.ts +124 -0
  91. package/dist/types/clients/guide/client.d.ts.map +1 -0
  92. package/dist/types/clients/guide/index.d.ts +3 -0
  93. package/dist/types/clients/guide/index.d.ts.map +1 -0
  94. package/dist/types/clients/messages/index.d.ts +15 -0
  95. package/dist/types/clients/messages/index.d.ts.map +1 -0
  96. package/dist/types/clients/messages/interfaces.d.ts +46 -0
  97. package/dist/types/clients/messages/interfaces.d.ts.map +1 -0
  98. package/dist/types/clients/ms-teams/index.d.ts +14 -0
  99. package/dist/types/clients/ms-teams/index.d.ts.map +1 -0
  100. package/dist/types/clients/ms-teams/interfaces.d.ts +49 -0
  101. package/dist/types/clients/ms-teams/interfaces.d.ts.map +1 -0
  102. package/dist/types/clients/objects/constants.d.ts +2 -0
  103. package/dist/types/clients/objects/constants.d.ts.map +1 -0
  104. package/dist/types/clients/objects/index.d.ts +23 -0
  105. package/dist/types/clients/objects/index.d.ts.map +1 -0
  106. package/dist/types/clients/preferences/index.d.ts +46 -0
  107. package/dist/types/clients/preferences/index.d.ts.map +1 -0
  108. package/dist/types/clients/preferences/interfaces.d.ts +29 -0
  109. package/dist/types/clients/preferences/interfaces.d.ts.map +1 -0
  110. package/dist/types/clients/slack/index.d.ts +13 -0
  111. package/dist/types/clients/slack/index.d.ts.map +1 -0
  112. package/dist/types/clients/slack/interfaces.d.ts +29 -0
  113. package/dist/types/clients/slack/interfaces.d.ts.map +1 -0
  114. package/dist/types/clients/users/index.d.ts +22 -0
  115. package/dist/types/clients/users/index.d.ts.map +1 -0
  116. package/dist/types/clients/users/interfaces.d.ts +9 -0
  117. package/dist/types/clients/users/interfaces.d.ts.map +1 -0
  118. package/dist/types/helpers.d.ts +2 -0
  119. package/dist/types/helpers.d.ts.map +1 -0
  120. package/dist/types/index.d.ts +21 -0
  121. package/dist/types/index.d.ts.map +1 -0
  122. package/dist/types/interfaces.d.ts +66 -0
  123. package/dist/types/interfaces.d.ts.map +1 -0
  124. package/dist/types/knock.d.ts +39 -0
  125. package/dist/types/knock.d.ts.map +1 -0
  126. package/dist/types/networkStatus.d.ts +8 -0
  127. package/dist/types/networkStatus.d.ts.map +1 -0
  128. package/package.json +1 -1
@@ -0,0 +1,95 @@
1
+ var l = Object.defineProperty;
2
+ var c = (n, e, t) => e in n ? l(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
+ var i = (n, e, t) => c(n, typeof e != "symbol" ? e + "" : e, t);
4
+ import { jwtDecode as u } from "jwt-decode";
5
+ import p from "./api.mjs";
6
+ import f from "./clients/feed/index.mjs";
7
+ import k from "./clients/messages/index.mjs";
8
+ import m from "./clients/ms-teams/index.mjs";
9
+ import d from "./clients/objects/index.mjs";
10
+ import T from "./clients/preferences/index.mjs";
11
+ import C from "./clients/slack/index.mjs";
12
+ import w from "./clients/users/index.mjs";
13
+ const g = "https://api.knock.app";
14
+ class v {
15
+ constructor(e, t = {}) {
16
+ i(this, "host");
17
+ i(this, "apiClient", null);
18
+ i(this, "userId");
19
+ i(this, "userToken");
20
+ i(this, "logLevel");
21
+ i(this, "tokenExpirationTimer", null);
22
+ i(this, "feeds", new f(this));
23
+ i(this, "objects", new d(this));
24
+ i(this, "preferences", new T(this));
25
+ i(this, "slack", new C(this));
26
+ i(this, "msTeams", new m(this));
27
+ i(this, "user", new w(this));
28
+ i(this, "messages", new k(this));
29
+ if (this.apiKey = e, this.host = t.host || g, this.logLevel = t.logLevel, this.log("Initialized Knock instance"), this.apiKey && this.apiKey.startsWith("sk_"))
30
+ throw new Error(
31
+ "[Knock] You are using your secret API key on the client. Please use the public key."
32
+ );
33
+ }
34
+ client() {
35
+ return this.apiClient || (this.apiClient = this.createApiClient()), this.apiClient;
36
+ }
37
+ /*
38
+ Authenticates the current user. In non-sandbox environments
39
+ the userToken must be specified.
40
+ */
41
+ authenticate(e, t, s) {
42
+ let r = !1;
43
+ this.apiClient && (this.userId !== e || this.userToken !== t) && (this.log("userId or userToken changed; reinitializing connections"), this.feeds.teardownInstances(), this.teardown(), r = !0), this.userId = e, this.userToken = t, this.log(`Authenticated with userId ${e}`), this.userToken && (s == null ? void 0 : s.onUserTokenExpiring) instanceof Function && this.maybeScheduleUserTokenExpiration(
44
+ s.onUserTokenExpiring,
45
+ s.timeBeforeExpirationInMs
46
+ ), r && (this.apiClient = this.createApiClient(), this.feeds.reinitializeInstances(), this.log("Reinitialized real-time connections"));
47
+ }
48
+ failIfNotAuthenticated() {
49
+ if (!this.isAuthenticated())
50
+ throw new Error("Not authenticated. Please call `authenticate` first.");
51
+ }
52
+ /*
53
+ Returns whether or this Knock instance is authenticated. Passing `true` will check the presence
54
+ of the userToken as well.
55
+ */
56
+ isAuthenticated(e = !1) {
57
+ return e ? !!(this.userId && this.userToken) : !!this.userId;
58
+ }
59
+ // Used to teardown any connected instances
60
+ teardown() {
61
+ var e;
62
+ this.tokenExpirationTimer && clearTimeout(this.tokenExpirationTimer), (e = this.apiClient) != null && e.socket && this.apiClient.socket.isConnected() && this.apiClient.socket.disconnect();
63
+ }
64
+ log(e, t = !1) {
65
+ (this.logLevel === "debug" || t) && console.log(`[Knock] ${e}`);
66
+ }
67
+ /**
68
+ * Initiates an API client
69
+ */
70
+ createApiClient() {
71
+ return new p({
72
+ apiKey: this.apiKey,
73
+ host: this.host,
74
+ userToken: this.userToken
75
+ });
76
+ }
77
+ async maybeScheduleUserTokenExpiration(e, t = 3e4) {
78
+ if (!this.userToken) return;
79
+ const s = u(this.userToken), r = (s.exp ?? 0) * 1e3, o = Date.now();
80
+ if (r && r > o) {
81
+ const h = r - t - o;
82
+ this.tokenExpirationTimer = setTimeout(async () => {
83
+ const a = await e(this.userToken, s);
84
+ typeof a == "string" && this.authenticate(this.userId, a, {
85
+ onUserTokenExpiring: e,
86
+ timeBeforeExpirationInMs: t
87
+ });
88
+ }, h);
89
+ }
90
+ }
91
+ }
92
+ export {
93
+ v as default
94
+ };
95
+ //# sourceMappingURL=knock.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knock.mjs","sources":["../../src/knock.ts"],"sourcesContent":["import { jwtDecode } from \"jwt-decode\";\n\nimport ApiClient from \"./api\";\nimport FeedClient from \"./clients/feed\";\nimport MessageClient from \"./clients/messages\";\nimport MsTeamsClient from \"./clients/ms-teams\";\nimport ObjectClient from \"./clients/objects\";\nimport Preferences from \"./clients/preferences\";\nimport SlackClient from \"./clients/slack\";\nimport UserClient from \"./clients/users\";\nimport {\n AuthenticateOptions,\n KnockOptions,\n LogLevel,\n UserTokenExpiringCallback,\n} from \"./interfaces\";\n\nconst DEFAULT_HOST = \"https://api.knock.app\";\n\nclass Knock {\n public host: string;\n private apiClient: ApiClient | null = null;\n public userId: string | undefined | null;\n public userToken?: string;\n public logLevel?: LogLevel;\n private tokenExpirationTimer: ReturnType<typeof setTimeout> | null = null;\n readonly feeds = new FeedClient(this);\n readonly objects = new ObjectClient(this);\n readonly preferences = new Preferences(this);\n readonly slack = new SlackClient(this);\n readonly msTeams = new MsTeamsClient(this);\n readonly user = new UserClient(this);\n readonly messages = new MessageClient(this);\n\n constructor(\n readonly apiKey: string,\n options: KnockOptions = {},\n ) {\n this.host = options.host || DEFAULT_HOST;\n this.logLevel = options.logLevel;\n\n this.log(\"Initialized Knock instance\");\n\n // Fail loudly if we're using the wrong API key\n if (this.apiKey && this.apiKey.startsWith(\"sk_\")) {\n throw new Error(\n \"[Knock] You are using your secret API key on the client. Please use the public key.\",\n );\n }\n }\n\n client() {\n // Initiate a new API client if we don't have one yet\n if (!this.apiClient) {\n this.apiClient = this.createApiClient();\n }\n\n return this.apiClient;\n }\n\n /*\n Authenticates the current user. In non-sandbox environments\n the userToken must be specified.\n */\n authenticate(\n userId: Knock[\"userId\"],\n userToken?: Knock[\"userToken\"],\n options?: AuthenticateOptions,\n ) {\n let reinitializeApi = false;\n const currentApiClient = this.apiClient;\n\n // If we've previously been initialized and the values have now changed, then we\n // need to reinitialize any stateful connections we have\n if (\n currentApiClient &&\n (this.userId !== userId || this.userToken !== userToken)\n ) {\n this.log(\"userId or userToken changed; reinitializing connections\");\n this.feeds.teardownInstances();\n this.teardown();\n reinitializeApi = true;\n }\n\n this.userId = userId;\n this.userToken = userToken;\n\n this.log(`Authenticated with userId ${userId}`);\n\n if (this.userToken && options?.onUserTokenExpiring instanceof Function) {\n this.maybeScheduleUserTokenExpiration(\n options.onUserTokenExpiring,\n options.timeBeforeExpirationInMs,\n );\n }\n\n // If we get the signal to reinitialize the api client, then we want to create a new client\n // and the reinitialize any existing feed real-time connections we have so everything continues\n // to work with the new credentials we've been given\n if (reinitializeApi) {\n this.apiClient = this.createApiClient();\n this.feeds.reinitializeInstances();\n this.log(\"Reinitialized real-time connections\");\n }\n\n return;\n }\n\n failIfNotAuthenticated() {\n if (!this.isAuthenticated()) {\n throw new Error(\"Not authenticated. Please call `authenticate` first.\");\n }\n }\n\n /*\n Returns whether or this Knock instance is authenticated. Passing `true` will check the presence\n of the userToken as well.\n */\n isAuthenticated(checkUserToken = false) {\n return checkUserToken ? !!(this.userId && this.userToken) : !!this.userId;\n }\n\n // Used to teardown any connected instances\n teardown() {\n if (this.tokenExpirationTimer) {\n clearTimeout(this.tokenExpirationTimer);\n }\n if (this.apiClient?.socket && this.apiClient.socket.isConnected()) {\n this.apiClient.socket.disconnect();\n }\n }\n\n log(message: string, force = false) {\n if (this.logLevel === \"debug\" || force) {\n console.log(`[Knock] ${message}`);\n }\n }\n\n /**\n * Initiates an API client\n */\n private createApiClient() {\n return new ApiClient({\n apiKey: this.apiKey,\n host: this.host,\n userToken: this.userToken,\n });\n }\n\n private async maybeScheduleUserTokenExpiration(\n callbackFn: UserTokenExpiringCallback,\n timeBeforeExpirationInMs: number = 30_000,\n ) {\n if (!this.userToken) return;\n\n const decoded = jwtDecode(this.userToken);\n const expiresAtMs = (decoded.exp ?? 0) * 1000;\n const nowMs = Date.now();\n\n // Expiration is in the future\n if (expiresAtMs && expiresAtMs > nowMs) {\n // Check how long until the token should be regenerated\n // | ----------------- | ----------------------- |\n // ^ now ^ expiration offset ^ expires at\n const msInFuture = expiresAtMs - timeBeforeExpirationInMs - nowMs;\n\n this.tokenExpirationTimer = setTimeout(async () => {\n const newToken = await callbackFn(this.userToken as string, decoded);\n\n // Reauthenticate which will handle reinitializing sockets\n if (typeof newToken === \"string\") {\n this.authenticate(this.userId!, newToken, {\n onUserTokenExpiring: callbackFn,\n timeBeforeExpirationInMs: timeBeforeExpirationInMs,\n });\n }\n }, msInFuture);\n }\n }\n}\n\nexport default Knock;\n"],"names":["DEFAULT_HOST","Knock","apiKey","options","__publicField","FeedClient","ObjectClient","Preferences","SlackClient","MsTeamsClient","UserClient","MessageClient","userId","userToken","reinitializeApi","checkUserToken","_a","message","force","ApiClient","callbackFn","timeBeforeExpirationInMs","decoded","jwtDecode","expiresAtMs","nowMs","msInFuture","newToken"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ var e = /* @__PURE__ */ ((r) => (r.loading = "loading", r.fetchMore = "fetchMore", r.ready = "ready", r.error = "error", r))(e || {});
2
+ function n(r) {
3
+ return [
4
+ "loading",
5
+ "fetchMore"
6
+ /* fetchMore */
7
+ ].includes(
8
+ r
9
+ );
10
+ }
11
+ export {
12
+ e as NetworkStatus,
13
+ n as isRequestInFlight
14
+ };
15
+ //# sourceMappingURL=networkStatus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStatus.mjs","sources":["../../src/networkStatus.ts"],"sourcesContent":["export enum NetworkStatus {\n // Performing a top level loading operation\n loading = \"loading\",\n\n // Performing a fetch more on some already loaded data\n fetchMore = \"fetchMore\",\n\n // No operation is currently in progress\n ready = \"ready\",\n\n // The last operation failed with an error\n error = \"error\",\n}\n\nexport function isRequestInFlight(networkStatus: NetworkStatus): boolean {\n return [NetworkStatus.loading, NetworkStatus.fetchMore].includes(\n networkStatus,\n );\n}\n"],"names":["NetworkStatus","isRequestInFlight","networkStatus"],"mappings":"AAAY,IAAAA,sBAAAA,OAEVA,EAAA,UAAU,WAGVA,EAAA,YAAY,aAGZA,EAAA,QAAQ,SAGRA,EAAA,QAAQ,SAXEA,IAAAA,KAAA,CAAA,CAAA;AAcL,SAASC,EAAkBC,GAAuC;AAChE,SAAA;AAAA,IAAC;AAAA,IAAuB;AAAA;AAAA,EAAA,EAAyB;AAAA,IACtDA;AAAA,EACF;AACF;"}
@@ -0,0 +1,25 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { Socket } from 'phoenix';
3
+ type ApiClientOptions = {
4
+ host: string;
5
+ apiKey: string;
6
+ userToken: string | undefined;
7
+ };
8
+ export interface ApiResponse {
9
+ error?: any;
10
+ body?: any;
11
+ statusCode: "ok" | "error";
12
+ status: number;
13
+ }
14
+ declare class ApiClient {
15
+ private host;
16
+ private apiKey;
17
+ private userToken;
18
+ private axiosClient;
19
+ socket: Socket | undefined;
20
+ constructor(options: ApiClientOptions);
21
+ makeRequest(req: AxiosRequestConfig): Promise<ApiResponse>;
22
+ private canRetryRequest;
23
+ }
24
+ export default ApiClient;
25
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAA6B,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,WAAW;IAE1B,KAAK,CAAC,EAAE,GAAG,CAAC;IAEZ,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,SAAS;IACb,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAgB;IAE5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,OAAO,EAAE,gBAAgB;IAgC/B,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBhE,OAAO,CAAC,eAAe;CAuBxB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { default as Knock } from '../../knock';
3
+ import { FeedClientOptions, FetchFeedOptions } from './interfaces';
4
+ import { FeedSocketManager, SocketEventPayload } from './socket-manager';
5
+ import { FeedStore } from './store';
6
+ import { BindableFeedEvent, FeedEventCallback, FeedItemOrItems, FeedRealTimeCallback } from './types';
7
+ declare class Feed {
8
+ readonly knock: Knock;
9
+ readonly feedId: string;
10
+ readonly defaultOptions: FeedClientOptions;
11
+ readonly referenceId: string;
12
+ unsubscribeFromSocketEvents: (() => void) | undefined;
13
+ private socketManager;
14
+ private userFeedId;
15
+ private broadcaster;
16
+ private broadcastChannel;
17
+ private disconnectTimer;
18
+ private hasSubscribedToRealTimeUpdates;
19
+ private visibilityChangeHandler;
20
+ private visibilityChangeListenerConnected;
21
+ store: FeedStore;
22
+ constructor(knock: Knock, feedId: string, options: FeedClientOptions, socketManager: FeedSocketManager | undefined);
23
+ /**
24
+ * Used to reinitialize a current feed instance, which is useful when reauthenticating users
25
+ */
26
+ reinitialize(socketManager?: FeedSocketManager): void;
27
+ /**
28
+ * Cleans up a feed instance by destroying the store and disconnecting
29
+ * an open socket connection.
30
+ */
31
+ teardown(): void;
32
+ /** Tears down an instance and removes it entirely from the feed manager */
33
+ dispose(): void;
34
+ listenForUpdates(): void;
35
+ on(eventName: BindableFeedEvent, callback: FeedEventCallback | FeedRealTimeCallback): void;
36
+ off(eventName: BindableFeedEvent, callback: FeedEventCallback | FeedRealTimeCallback): void;
37
+ getState(): import('./types').FeedStoreState;
38
+ markAsSeen(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
39
+ markAllAsSeen(): Promise<import('../..').BulkOperation>;
40
+ markAsUnseen(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
41
+ markAsRead(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
42
+ markAllAsRead(): Promise<import('../..').BulkOperation>;
43
+ markAsUnread(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
44
+ markAsInteracted(itemOrItems: FeedItemOrItems, metadata?: Record<string, string>): Promise<import('../messages/interfaces').Message<GenericData>[]>;
45
+ markAsArchived(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
46
+ markAllAsArchived(): Promise<import('../..').BulkOperation>;
47
+ markAllReadAsArchived(): Promise<import('../..').BulkOperation>;
48
+ markAsUnarchived(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
49
+ fetch(options?: FetchFeedOptions): Promise<{
50
+ status: "ok" | "error";
51
+ data: any;
52
+ } | undefined>;
53
+ fetchNextPage(options?: FetchFeedOptions): Promise<void>;
54
+ get socketChannelTopic(): string;
55
+ private broadcast;
56
+ private onNewMessageReceived;
57
+ private buildUserFeedId;
58
+ private optimisticallyPerformStatusUpdate;
59
+ private makeStatusUpdate;
60
+ private makeBulkStatusUpdate;
61
+ private setupBroadcastChannel;
62
+ private broadcastOverChannel;
63
+ private initializeRealtimeConnection;
64
+ handleSocketEvent(payload: SocketEventPayload): Promise<void>;
65
+ /**
66
+ * Listen for changes to document visibility and automatically disconnect
67
+ * or reconnect the socket after a delay
68
+ */
69
+ private setUpVisibilityListeners;
70
+ private tearDownVisibilityListeners;
71
+ private emitEvent;
72
+ private handleVisibilityChange;
73
+ }
74
+ export default Feed;
75
+ //# sourceMappingURL=feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,OAAO,EACL,iBAAiB,EAIjB,gBAAgB,EAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,EAEjB,eAAe,EAEf,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAYjB,cAAM,IAAI;IAiBN,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAjBzB,SAAgB,cAAc,EAAE,iBAAiB,CAAC;IAClD,SAAgB,WAAW,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAa;IACzE,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,8BAA8B,CAAkB;IACxD,OAAO,CAAC,uBAAuB,CAAwB;IACvD,OAAO,CAAC,iCAAiC,CAAkB;IAGpD,KAAK,EAAE,SAAS,CAAC;gBAGb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,iBAAiB,GAAG,SAAS;IA2B9C;;OAEG;IACH,YAAY,CAAC,aAAa,CAAC,EAAE,iBAAiB;IAa9C;;;OAGG;IACH,QAAQ;IAiBR,2EAA2E;IAC3E,OAAO;IAWP,gBAAgB;IAiBhB,EAAE,CACA,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB;IAKpD,GAAG,CACD,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB;IAKpD,QAAQ;IAIF,UAAU,CAAC,WAAW,EAAE,eAAe;IAYvC,aAAa;IA0Cb,YAAY,CAAC,WAAW,EAAE,eAAe;IAWzC,UAAU,CAAC,WAAW,EAAE,eAAe;IAYvC,aAAa;IA0Cb,YAAY,CAAC,WAAW,EAAE,eAAe;IAWzC,gBAAgB,CACpB,WAAW,EAAE,eAAe,EAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAwB7B,cAAc,CAAC,WAAW,EAAE,eAAe;IAuE3C,iBAAiB;IA2BjB,qBAAqB;IA0CrB,gBAAgB,CAAC,WAAW,EAAE,eAAe;IAS7C,KAAK,CAAC,OAAO,GAAE,gBAAqB;;;;IA0FpC,aAAa,CAAC,OAAO,GAAE,gBAAqB;IAgBlD,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,OAAO,CAAC,SAAS;YAQH,oBAAoB;IAiBlC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iCAAiC;YAiD3B,gBAAgB;YAsBhB,oBAAoB;IA2BlC,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,4BAA4B;IAe9B,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;IAYnD;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,sBAAsB;CA2B/B;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { default as Knock } from '../../knock';
2
+ import { default as Feed } from './feed';
3
+ import { FeedClientOptions } from './interfaces';
4
+ declare class FeedClient {
5
+ private instance;
6
+ private feedInstances;
7
+ private socketManager;
8
+ constructor(instance: Knock);
9
+ initialize(feedChannelId: string, options?: FeedClientOptions): Feed;
10
+ removeInstance(feed: Feed): void;
11
+ teardownInstances(): void;
12
+ reinitializeInstances(): void;
13
+ private initSocketManager;
14
+ }
15
+ export { Feed };
16
+ export default FeedClient;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,cAAM,UAAU;IACd,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,aAAa,CAAgC;gBAEzC,QAAQ,EAAE,KAAK;IAI3B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAajE,cAAc,CAAC,IAAI,EAAE,IAAI;IAIzB,iBAAiB;IAMjB,qBAAqB;IAerB,OAAO,CAAC,iBAAiB;CAM1B;AAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,eAAe,UAAU,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { GenericData, PageInfo } from '@knocklabs/types';
2
+ import { Activity, Recipient } from '../../interfaces';
3
+ import { NetworkStatus } from '../../networkStatus';
4
+ import { NotificationSource } from '../messages/interfaces';
5
+ /**
6
+ * `trigger_data` may only specify flat key-value pairs, not nested objects
7
+ * Specifying a nested object will result in a 422 "invalid_params" error
8
+ * https://docs.knock.app/reference#trigger-data-filtering
9
+ */
10
+ export interface TriggerData extends GenericData {
11
+ [key: string]: string | number | boolean | null;
12
+ }
13
+ export interface FeedClientOptions {
14
+ before?: string;
15
+ after?: string;
16
+ page_size?: number;
17
+ status?: "unread" | "read" | "unseen" | "seen" | "all";
18
+ source?: string;
19
+ tenant?: string;
20
+ has_tenant?: boolean;
21
+ workflow_categories?: string[];
22
+ archived?: "include" | "exclude" | "only";
23
+ trigger_data?: TriggerData;
24
+ __experimentalCrossBrowserUpdates?: boolean;
25
+ auto_manage_socket_connection?: boolean;
26
+ auto_manage_socket_connection_delay?: number;
27
+ inserted_at_date_range?: {
28
+ start?: string;
29
+ end?: string;
30
+ inclusive?: boolean;
31
+ };
32
+ }
33
+ export type FetchFeedOptions = {
34
+ __loadingType?: NetworkStatus.loading | NetworkStatus.fetchMore;
35
+ __fetchSource?: "socket" | "http";
36
+ } & Omit<FeedClientOptions, "__experimentalCrossBrowserUpdates">;
37
+ export type FetchFeedOptionsForRequest = Omit<FeedClientOptions, "trigger_data"> & {
38
+ trigger_data?: string;
39
+ __loadingType: undefined;
40
+ __fetchSource: undefined;
41
+ __experimentalCrossBrowserUpdates: undefined;
42
+ auto_manage_socket_connection: undefined;
43
+ auto_manage_socket_connection_delay: undefined;
44
+ };
45
+ export interface ContentBlockBase {
46
+ name: string;
47
+ type: "markdown" | "text" | "button_set";
48
+ }
49
+ export interface ActionButton {
50
+ name: string;
51
+ label: string;
52
+ action: string;
53
+ }
54
+ export interface ButtonSetContentBlock extends ContentBlockBase {
55
+ type: "button_set";
56
+ buttons: ActionButton[];
57
+ }
58
+ export interface TextContentBlock extends ContentBlockBase {
59
+ type: "text";
60
+ rendered: string;
61
+ content: string;
62
+ }
63
+ export interface MarkdownContentBlock extends ContentBlockBase {
64
+ type: "markdown";
65
+ rendered: string;
66
+ content: string;
67
+ }
68
+ export type ContentBlock = MarkdownContentBlock | TextContentBlock | ButtonSetContentBlock;
69
+ export interface FeedItem<T = GenericData> {
70
+ __cursor: string;
71
+ id: string;
72
+ activities: Activity<T>[];
73
+ actors: Recipient[];
74
+ blocks: ContentBlock[];
75
+ inserted_at: string;
76
+ updated_at: string;
77
+ read_at: string | null;
78
+ seen_at: string | null;
79
+ clicked_at: string | null;
80
+ interacted_at: string | null;
81
+ link_clicked_at: string | null;
82
+ archived_at: string | null;
83
+ total_activities: number;
84
+ total_actors: number;
85
+ data: T | null;
86
+ source: NotificationSource;
87
+ tenant: string | null;
88
+ }
89
+ export interface FeedMetadata {
90
+ total_count: number;
91
+ unread_count: number;
92
+ unseen_count: number;
93
+ }
94
+ export interface FeedResponse<T = GenericData> {
95
+ entries: FeedItem<T>[];
96
+ meta: FeedMetadata;
97
+ page_info: PageInfo;
98
+ }
99
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Socket } from 'phoenix';
2
+ import { default as Feed } from './feed';
3
+ import { FeedMetadata } from './interfaces';
4
+ export declare const SocketEventType: {
5
+ readonly NewMessage: "new-message";
6
+ };
7
+ type ClientReferenceId = string;
8
+ type NewMessageEventPayload = {
9
+ event: typeof SocketEventType.NewMessage;
10
+ /**
11
+ * @deprecated Top-level feed metadata. Exists for legacy reasons.
12
+ */
13
+ metadata: FeedMetadata;
14
+ /** Feed metadata, keyed by client reference id. */
15
+ data: Record<ClientReferenceId, {
16
+ metadata: FeedMetadata;
17
+ }>;
18
+ };
19
+ export type SocketEventPayload = NewMessageEventPayload;
20
+ export declare class FeedSocketManager {
21
+ readonly socket: Socket;
22
+ private channels;
23
+ private params;
24
+ private inbox;
25
+ constructor(socket: Socket);
26
+ join(feed: Feed): () => void;
27
+ leave(feed: Feed): void;
28
+ private setInbox;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=socket-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/socket-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,KAAK,EAAqB,YAAY,EAAE,MAAM,cAAc,CAAC;AAEpE,eAAO,MAAM,eAAe;;CAElB,CAAC;AAUX,KAAK,iBAAiB,GAAG,MAAM,CAAC;AAEhC,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,OAAO,eAAe,CAAC,UAAU,CAAC;IACzC;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IACvB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAAE;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAaxD,qBAAa,iBAAiB;IAuChB,QAAQ,CAAC,MAAM,EAAE,MAAM;IApCnC,OAAO,CAAC,QAAQ,CAAgC;IAwBhD,OAAO,CAAC,MAAM,CAGZ;IAIF,OAAO,CAAC,KAAK,CAGX;gBAEmB,MAAM,EAAE,MAAM;IAMnC,IAAI,CAAC,IAAI,EAAE,IAAI;IAwDf,KAAK,CAAC,IAAI,EAAE,IAAI;IA4BhB,OAAO,CAAC,QAAQ;CAYjB"}
@@ -0,0 +1,20 @@
1
+ import { Store } from '@tanstack/store';
2
+ import { FeedStoreState } from './types';
3
+ export declare const initialStoreState: FeedStoreState;
4
+ /**
5
+ * The FeedStore class is a wrapper for our store solution that's
6
+ * based on the same shape as zustand. This wrapping class allows
7
+ * us to maintain backwards compatibility with the zustand model
8
+ * while still allowing us to utilize tanstack store for the
9
+ * underlying store solution.
10
+ */
11
+ export declare class FeedStore {
12
+ store: Store<FeedStoreState>;
13
+ constructor(store: Store<FeedStoreState>);
14
+ getState(): FeedStoreState;
15
+ setState(updater: ((state: FeedStoreState) => FeedStoreState) | FeedStoreState): void;
16
+ getInitialState(): FeedStoreState;
17
+ subscribe(listener: (state: FeedStoreState) => void): () => void;
18
+ }
19
+ export default function createStore(): FeedStore;
20
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKxC,OAAO,EAAE,cAAc,EAA0B,MAAM,SAAS,CAAC;AAejE,eAAO,MAAM,iBAAiB,EAAE,cAmB/B,CAAC;AAwEF;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBAEjB,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC;IAIxC,QAAQ;IAIR,QAAQ,CACN,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,CAAC,GAAG,cAAc;IAOvE,eAAe;IAIf,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI;CAGpD;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,cAGlC"}
@@ -0,0 +1,35 @@
1
+ import { GenericData, PageInfo } from '@knocklabs/types';
2
+ import { NetworkStatus } from '../../networkStatus';
3
+ import { FeedItem, FeedMetadata, FeedResponse } from './interfaces';
4
+ import { SocketEventPayload, SocketEventType } from './socket-manager';
5
+ export type StoreFeedResultOptions = {
6
+ shouldSetPage?: boolean;
7
+ shouldAppend?: boolean;
8
+ };
9
+ export interface FeedStoreState {
10
+ items: FeedItem[];
11
+ pageInfo: PageInfo;
12
+ metadata: FeedMetadata;
13
+ loading: boolean;
14
+ networkStatus: NetworkStatus;
15
+ setResult: (response: FeedResponse, opts?: StoreFeedResultOptions) => void;
16
+ setMetadata: (metadata: FeedMetadata) => void;
17
+ setNetworkStatus: (networkStatus: NetworkStatus) => void;
18
+ setItemAttrs: (itemIds: string[], attrs: object) => void;
19
+ resetStore: (metadata?: FeedMetadata) => void;
20
+ }
21
+ export type FeedMessagesReceivedPayload = Extract<SocketEventPayload, {
22
+ event: typeof SocketEventType.NewMessage;
23
+ }>;
24
+ export type FeedRealTimeEvent = "messages.new";
25
+ export type FeedEvent = FeedRealTimeEvent | "items.received.page" | "items.received.realtime" | "items.archived" | "items.unarchived" | "items.seen" | "items.unseen" | "items.read" | "items.unread" | "items.all_archived" | "items.all_read" | "items.all_seen";
26
+ export type BindableFeedEvent = FeedEvent | "items.received.*" | "items.*";
27
+ export interface FeedEventPayload<T = GenericData> {
28
+ event: Omit<FeedEvent, "messages.new">;
29
+ items: FeedItem<T>[];
30
+ metadata: FeedMetadata;
31
+ }
32
+ export type FeedRealTimeCallback = (resp: FeedResponse) => void;
33
+ export type FeedEventCallback = (payload: FeedEventPayload) => void;
34
+ export type FeedItemOrItems = FeedItem | FeedItem[];
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC3E,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IACzD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,kBAAkB,EAClB;IAAE,KAAK,EAAE,OAAO,eAAe,CAAC,UAAU,CAAA;CAAE,CAC7C,CAAC;AAQF,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAE/C,MAAM,MAAM,SAAS,GACjB,iBAAiB,GACjB,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,kBAAkB,GAClB,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,CAAC;AAGrB,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAE3E,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,WAAW;IAC/C,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACvC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { FeedClientOptions, FeedItem } from './interfaces';
2
+ export declare function deduplicateItems(items: FeedItem[]): FeedItem[];
3
+ export declare function sortItems(items: FeedItem[]): FeedItem<import('@knocklabs/types').GenericData>[];
4
+ export declare function mergeDateRangeParams(options: FeedClientOptions): {
5
+ before?: string;
6
+ after?: string;
7
+ page_size?: number;
8
+ status?: "unread" | "read" | "unseen" | "seen" | "all";
9
+ source?: string;
10
+ tenant?: string;
11
+ has_tenant?: boolean;
12
+ workflow_categories?: string[];
13
+ archived?: "include" | "exclude" | "only";
14
+ trigger_data?: import('./interfaces').TriggerData;
15
+ __experimentalCrossBrowserUpdates?: boolean;
16
+ auto_manage_socket_connection?: boolean;
17
+ auto_manage_socket_connection_delay?: number;
18
+ };
19
+ export declare function getFormattedTriggerData(options: FeedClientOptions): string | undefined;
20
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEhE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAY9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,sDAM1C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;;EAyB9D;AAMD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,sBAYjE"}
@@ -0,0 +1,124 @@
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { Store } from '@tanstack/store';
3
+ import { URLPattern } from 'urlpattern-polyfill';
4
+ import { default as Knock } from '../../knock';
5
+ export declare const guidesApiRootPath: (userId: string | undefined | null) => string;
6
+ interface StepMessageState {
7
+ id: string;
8
+ seen_at: string | null;
9
+ read_at: string | null;
10
+ interacted_at: string | null;
11
+ archived_at: string | null;
12
+ link_clicked_at: string | null;
13
+ }
14
+ interface GuideStepData {
15
+ ref: string;
16
+ schema_key: string;
17
+ schema_semver: string;
18
+ schema_variant_key: string;
19
+ message: StepMessageState;
20
+ content: any;
21
+ }
22
+ interface GuideActivationLocationRuleData {
23
+ directive: "allow" | "block";
24
+ pathname: string;
25
+ }
26
+ interface GuideData {
27
+ __typename: "Guide";
28
+ channel_id: string;
29
+ id: string;
30
+ key: string;
31
+ priority: number;
32
+ type: string;
33
+ semver: string;
34
+ steps: GuideStepData[];
35
+ activation_location_rules: GuideActivationLocationRuleData[];
36
+ inserted_at: string;
37
+ updated_at: string;
38
+ }
39
+ export interface KnockGuideStep extends GuideStepData {
40
+ markAsSeen: () => void;
41
+ markAsInteracted: (params?: {
42
+ metadata?: GenericData;
43
+ }) => void;
44
+ markAsArchived: () => void;
45
+ }
46
+ interface KnockGuideActivationLocationRule extends GuideActivationLocationRuleData {
47
+ pattern: URLPattern;
48
+ }
49
+ export interface KnockGuide extends GuideData {
50
+ steps: KnockGuideStep[];
51
+ activation_location_rules: KnockGuideActivationLocationRule[];
52
+ }
53
+ type GetGuidesQueryParams = {
54
+ data?: string;
55
+ tenant?: string;
56
+ type?: string;
57
+ };
58
+ export type GuideEngagementEventBaseParams = {
59
+ message_id: string;
60
+ channel_id: string;
61
+ guide_key: string;
62
+ guide_id: string;
63
+ guide_step_ref: string;
64
+ };
65
+ type QueryKey = string;
66
+ type QueryStatus = {
67
+ status: "loading" | "ok" | "error";
68
+ error?: Error;
69
+ };
70
+ type StoreState = {
71
+ guides: KnockGuide[];
72
+ queries: Record<QueryKey, QueryStatus>;
73
+ location: string | undefined;
74
+ };
75
+ type QueryFilterParams = Pick<GetGuidesQueryParams, "type">;
76
+ export type SelectFilterParams = {
77
+ key?: string;
78
+ type?: string;
79
+ };
80
+ export type TargetParams = {
81
+ data?: GenericData | undefined;
82
+ tenant?: string | undefined;
83
+ };
84
+ type ConstructorOpts = {
85
+ trackLocationFromWindow?: boolean;
86
+ };
87
+ export declare class KnockGuideClient {
88
+ readonly knock: Knock;
89
+ readonly channelId: string;
90
+ readonly targetParams: TargetParams;
91
+ readonly options: ConstructorOpts;
92
+ store: Store<StoreState, (state: StoreState) => StoreState>;
93
+ private socket;
94
+ private socketChannel;
95
+ private socketChannelTopic;
96
+ private socketEventTypes;
97
+ private pushStateFn;
98
+ private replaceStateFn;
99
+ constructor(knock: Knock, channelId: string, targetParams?: TargetParams, options?: ConstructorOpts);
100
+ cleanup(): void;
101
+ fetch(opts?: {
102
+ filters?: QueryFilterParams;
103
+ }): Promise<QueryStatus>;
104
+ subscribe(): void;
105
+ unsubscribe(): void;
106
+ private handleSocketEvent;
107
+ select(state: StoreState, filters?: SelectFilterParams): KnockGuide[];
108
+ markAsSeen(guide: GuideData, step: GuideStepData): Promise<KnockGuideStep | undefined>;
109
+ markAsInteracted(guide: GuideData, step: GuideStepData, metadata?: GenericData): Promise<KnockGuideStep | undefined>;
110
+ markAsArchived(guide: GuideData, step: GuideStepData): Promise<KnockGuideStep | undefined>;
111
+ private localCopy;
112
+ private buildQueryParams;
113
+ private formatQueryKey;
114
+ private setStepMessageAttrs;
115
+ private buildEngagementEventBaseParams;
116
+ private addGuide;
117
+ private replaceOrAddGuide;
118
+ private removeGuide;
119
+ private handleLocationChange;
120
+ private listenForLocationChangesFromWindow;
121
+ private removeEventListeners;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/clients/guide/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { KnockGuideClient } from './client';
2
+ export type { KnockGuide, KnockGuideStep, TargetParams as KnockGuideTargetParams, SelectFilterParams as KnockGuideFilterParams, } from './client';
3
+ //# sourceMappingURL=index.d.ts.map