@knocklabs/client 0.10.10 → 0.10.12

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 (62) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/api.js +1 -1
  3. package/dist/cjs/api.js.map +1 -1
  4. package/dist/cjs/clients/feed/feed.js +1 -1
  5. package/dist/cjs/clients/feed/feed.js.map +1 -1
  6. package/dist/cjs/clients/feed/index.js +1 -1
  7. package/dist/cjs/clients/feed/index.js.map +1 -1
  8. package/dist/cjs/clients/feed/store.js +1 -1
  9. package/dist/cjs/clients/feed/store.js.map +1 -1
  10. package/dist/cjs/clients/messages/index.js +1 -1
  11. package/dist/cjs/clients/messages/index.js.map +1 -1
  12. package/dist/cjs/clients/objects/index.js +1 -1
  13. package/dist/cjs/clients/objects/index.js.map +1 -1
  14. package/dist/cjs/clients/preferences/index.js +1 -1
  15. package/dist/cjs/clients/preferences/index.js.map +1 -1
  16. package/dist/cjs/clients/slack/index.js +1 -1
  17. package/dist/cjs/clients/slack/index.js.map +1 -1
  18. package/dist/cjs/clients/users/index.js +1 -1
  19. package/dist/cjs/clients/users/index.js.map +1 -1
  20. package/dist/cjs/knock.js +1 -1
  21. package/dist/cjs/knock.js.map +1 -1
  22. package/dist/esm/api.mjs +1 -1
  23. package/dist/esm/clients/feed/feed.mjs +64 -60
  24. package/dist/esm/clients/feed/feed.mjs.map +1 -1
  25. package/dist/esm/clients/feed/index.mjs +1 -1
  26. package/dist/esm/clients/feed/store.mjs +22 -18
  27. package/dist/esm/clients/feed/store.mjs.map +1 -1
  28. package/dist/esm/clients/messages/index.mjs +23 -22
  29. package/dist/esm/clients/messages/index.mjs.map +1 -1
  30. package/dist/esm/clients/objects/index.mjs +1 -1
  31. package/dist/esm/clients/preferences/index.mjs +1 -1
  32. package/dist/esm/clients/slack/index.mjs +1 -1
  33. package/dist/esm/clients/users/index.mjs +1 -1
  34. package/dist/esm/knock.mjs +2 -3
  35. package/dist/esm/knock.mjs.map +1 -1
  36. package/dist/types/api.d.ts +3 -2
  37. package/dist/types/clients/feed/feed.d.ts +16 -15
  38. package/dist/types/clients/feed/feed.d.ts.map +1 -1
  39. package/dist/types/clients/feed/index.d.ts +4 -3
  40. package/dist/types/clients/feed/interfaces.d.ts +5 -4
  41. package/dist/types/clients/feed/store.d.ts +3 -2
  42. package/dist/types/clients/feed/store.d.ts.map +1 -1
  43. package/dist/types/clients/feed/types.d.ts +4 -3
  44. package/dist/types/clients/feed/utils.d.ts +3 -2
  45. package/dist/types/clients/messages/index.d.ts +6 -5
  46. package/dist/types/clients/messages/index.d.ts.map +1 -1
  47. package/dist/types/clients/messages/interfaces.d.ts +6 -2
  48. package/dist/types/clients/messages/interfaces.d.ts.map +1 -1
  49. package/dist/types/clients/objects/index.d.ts +4 -3
  50. package/dist/types/clients/preferences/index.d.ts +4 -3
  51. package/dist/types/clients/preferences/interfaces.d.ts +2 -1
  52. package/dist/types/clients/slack/index.d.ts +3 -2
  53. package/dist/types/clients/users/index.d.ts +6 -5
  54. package/dist/types/clients/users/interfaces.d.ts +2 -1
  55. package/dist/types/index.d.ts +16 -15
  56. package/dist/types/interfaces.d.ts +3 -2
  57. package/dist/types/knock.d.ts +9 -8
  58. package/package.json +5 -5
  59. package/src/clients/feed/feed.ts +11 -3
  60. package/src/clients/feed/store.ts +7 -1
  61. package/src/clients/messages/index.ts +15 -1
  62. package/src/clients/messages/interfaces.ts +4 -0
@@ -1,9 +1,9 @@
1
- var u = Object.defineProperty;
2
- var o = (a, e, t) => e in a ? u(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t;
3
- var n = (a, e, t) => (o(a, typeof e != "symbol" ? e + "" : e, t), t);
4
- class c {
1
+ var o = Object.defineProperty;
2
+ var l = (s, e, t) => e in s ? o(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
+ var d = (s, e, t) => l(s, typeof e != "symbol" ? e + "" : e, t);
4
+ class u {
5
5
  constructor(e) {
6
- n(this, "knock");
6
+ d(this, "knock");
7
7
  this.knock = e;
8
8
  }
9
9
  async get(e) {
@@ -13,44 +13,45 @@ class c {
13
13
  });
14
14
  return this.handleResponse(t);
15
15
  }
16
- async updateStatus(e, t) {
17
- const s = await this.knock.client().makeRequest({
16
+ async updateStatus(e, t, a) {
17
+ const n = t === "interacted" && a ? { metadata: a.metadata } : void 0, r = await this.knock.client().makeRequest({
18
18
  method: "PUT",
19
- url: `/v1/messages/${e}/${t}`
19
+ url: `/v1/messages/${e}/${t}`,
20
+ data: n
20
21
  });
21
- return this.handleResponse(s);
22
+ return this.handleResponse(r);
22
23
  }
23
24
  async removeStatus(e, t) {
24
- const s = await this.knock.client().makeRequest({
25
+ const a = await this.knock.client().makeRequest({
25
26
  method: "DELETE",
26
27
  url: `/v1/messages/${e}/${t}`
27
28
  });
28
- return this.handleResponse(s);
29
+ return this.handleResponse(a);
29
30
  }
30
- async batchUpdateStatuses(e, t) {
31
- const s = await this.knock.client().makeRequest({
31
+ async batchUpdateStatuses(e, t, a) {
32
+ const n = t === "interacted" && a ? { metadata: a.metadata } : {}, r = await this.knock.client().makeRequest({
32
33
  method: "POST",
33
34
  url: `/v1/messages/batch/${t}`,
34
- data: { message_ids: e }
35
+ data: { message_ids: e, ...n }
35
36
  });
36
- return this.handleResponse(s);
37
+ return this.handleResponse(r);
37
38
  }
38
39
  async bulkUpdateAllStatusesInChannel({
39
40
  channelId: e,
40
41
  status: t,
41
- options: s
42
+ options: a
42
43
  }) {
43
- const r = await this.knock.client().makeRequest({
44
+ const n = await this.knock.client().makeRequest({
44
45
  method: "POST",
45
46
  url: `/v1/channels/${e}/messages/bulk/${t}`,
46
- data: s
47
+ data: a
47
48
  });
48
- return this.handleResponse(r);
49
+ return this.handleResponse(n);
49
50
  }
50
51
  handleResponse(e) {
51
- var t, s;
52
+ var t, a;
52
53
  if (e.statusCode === "error") {
53
- if (((s = (t = e.error) == null ? void 0 : t.response) == null ? void 0 : s.status) < 500)
54
+ if (((a = (t = e.error) == null ? void 0 : t.response) == null ? void 0 : a.status) < 500)
54
55
  return e.error || e.body;
55
56
  throw new Error(e.error || e.body);
56
57
  }
@@ -58,6 +59,6 @@ class c {
58
59
  }
59
60
  }
60
61
  export {
61
- c as default
62
+ u as default
62
63
  };
63
64
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/clients/messages/index.ts"],"sourcesContent":["import { ApiResponse } from \"../../api\";\nimport { BulkOperation } from \"../../interfaces\";\nimport Knock from \"../../knock\";\n\nimport {\n BulkUpdateMessagesInChannelProperties,\n Message,\n MessageEngagementStatus,\n} from \"./interfaces\";\n\nclass MessageClient {\n private knock: Knock;\n\n constructor(knock: Knock) {\n this.knock = knock;\n }\n\n async get(messageId: string): Promise<Message> {\n const result = await this.knock.client().makeRequest({\n method: \"GET\",\n url: `/v1/messages/${messageId}`,\n });\n\n return this.handleResponse<Message>(result);\n }\n\n async updateStatus(\n messageId: string,\n status: MessageEngagementStatus,\n ): Promise<Message> {\n const result = await this.knock.client().makeRequest({\n method: \"PUT\",\n url: `/v1/messages/${messageId}/${status}`,\n });\n\n return this.handleResponse<Message>(result);\n }\n\n async removeStatus(\n messageId: string,\n status: Exclude<MessageEngagementStatus, \"interacted\">,\n ): Promise<Message> {\n const result = await this.knock.client().makeRequest({\n method: \"DELETE\",\n url: `/v1/messages/${messageId}/${status}`,\n });\n\n return this.handleResponse<Message>(result);\n }\n\n async batchUpdateStatuses(\n messageIds: string[],\n status: MessageEngagementStatus | \"unseen\" | \"unread\" | \"unarchived\",\n ): Promise<Message[]> {\n const result = await this.knock.client().makeRequest({\n method: \"POST\",\n url: `/v1/messages/batch/${status}`,\n data: { message_ids: messageIds },\n });\n\n return this.handleResponse<Message[]>(result);\n }\n\n async bulkUpdateAllStatusesInChannel({\n channelId,\n status,\n options,\n }: BulkUpdateMessagesInChannelProperties): Promise<BulkOperation> {\n const result = await this.knock.client().makeRequest({\n method: \"POST\",\n url: `/v1/channels/${channelId}/messages/bulk/${status}`,\n data: options,\n });\n\n return this.handleResponse<BulkOperation>(result);\n }\n\n private handleResponse<T = unknown>(response: ApiResponse) {\n if (response.statusCode === \"error\") {\n if (response.error?.response?.status < 500) {\n return response.error || response.body;\n }\n throw new Error(response.error || response.body);\n }\n\n return response.body as T;\n }\n}\n\nexport default MessageClient;\n"],"names":["MessageClient","knock","__publicField","messageId","result","status","messageIds","channelId","options","response","_a","_b"],"mappings":";;;AAUA,MAAMA,EAAc;AAAA,EAGlB,YAAYC,GAAc;AAFlB,IAAAC,EAAA;AAGN,SAAK,QAAQD;AAAA,EACf;AAAA,EAEA,MAAM,IAAIE,GAAqC;AAC7C,UAAMC,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBD,CAAS;AAAA,IAAA,CAC/B;AAEM,WAAA,KAAK,eAAwBC,CAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,aACJD,GACAE,GACkB;AAClB,UAAMD,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBD,CAAS,IAAIE,CAAM;AAAA,IAAA,CACzC;AAEM,WAAA,KAAK,eAAwBD,CAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,aACJD,GACAE,GACkB;AAClB,UAAMD,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBD,CAAS,IAAIE,CAAM;AAAA,IAAA,CACzC;AAEM,WAAA,KAAK,eAAwBD,CAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,oBACJE,GACAD,GACoB;AACpB,UAAMD,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,sBAAsBC,CAAM;AAAA,MACjC,MAAM,EAAE,aAAaC,EAAW;AAAA,IAAA,CACjC;AAEM,WAAA,KAAK,eAA0BF,CAAM;AAAA,EAC9C;AAAA,EAEA,MAAM,+BAA+B;AAAA,IACnC,WAAAG;AAAA,IACA,QAAAF;AAAA,IACA,SAAAG;AAAA,EAAA,GACgE;AAChE,UAAMJ,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBG,CAAS,kBAAkBF,CAAM;AAAA,MACtD,MAAMG;AAAA,IAAA,CACP;AAEM,WAAA,KAAK,eAA8BJ,CAAM;AAAA,EAClD;AAAA,EAEQ,eAA4BK,GAAuB;AAnE7D,QAAAC,GAAAC;AAoEQ,QAAAF,EAAS,eAAe,SAAS;AACnC,YAAIE,KAAAD,IAAAD,EAAS,UAAT,gBAAAC,EAAgB,aAAhB,gBAAAC,EAA0B,UAAS;AAC9B,eAAAF,EAAS,SAASA,EAAS;AAEpC,YAAM,IAAI,MAAMA,EAAS,SAASA,EAAS,IAAI;AAAA,IACjD;AAEA,WAAOA,EAAS;AAAA,EAClB;AACF;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/clients/messages/index.ts"],"sourcesContent":["import { ApiResponse } from \"../../api\";\nimport { BulkOperation } from \"../../interfaces\";\nimport Knock from \"../../knock\";\n\nimport {\n BulkUpdateMessagesInChannelProperties,\n Message,\n MessageEngagementStatus,\n UpdateMessageStatusOptions,\n} from \"./interfaces\";\n\nclass MessageClient {\n private knock: Knock;\n\n constructor(knock: Knock) {\n this.knock = knock;\n }\n\n async get(messageId: string): Promise<Message> {\n const result = await this.knock.client().makeRequest({\n method: \"GET\",\n url: `/v1/messages/${messageId}`,\n });\n\n return this.handleResponse<Message>(result);\n }\n\n async updateStatus(\n messageId: string,\n status: MessageEngagementStatus,\n options?: UpdateMessageStatusOptions,\n ): Promise<Message> {\n // Metadata is only required for the \"interacted\" status\n const payload =\n status === \"interacted\" && options\n ? { metadata: options.metadata }\n : undefined;\n\n const result = await this.knock.client().makeRequest({\n method: \"PUT\",\n url: `/v1/messages/${messageId}/${status}`,\n data: payload,\n });\n\n return this.handleResponse<Message>(result);\n }\n\n async removeStatus(\n messageId: string,\n status: Exclude<MessageEngagementStatus, \"interacted\">,\n ): Promise<Message> {\n const result = await this.knock.client().makeRequest({\n method: \"DELETE\",\n url: `/v1/messages/${messageId}/${status}`,\n });\n\n return this.handleResponse<Message>(result);\n }\n\n async batchUpdateStatuses(\n messageIds: string[],\n status: MessageEngagementStatus | \"unseen\" | \"unread\" | \"unarchived\",\n options?: UpdateMessageStatusOptions,\n ): Promise<Message[]> {\n // Metadata is only required for the \"interacted\" status\n const additionalPayload =\n status === \"interacted\" && options ? { metadata: options.metadata } : {};\n\n const result = await this.knock.client().makeRequest({\n method: \"POST\",\n url: `/v1/messages/batch/${status}`,\n data: { message_ids: messageIds, ...additionalPayload },\n });\n\n return this.handleResponse<Message[]>(result);\n }\n\n async bulkUpdateAllStatusesInChannel({\n channelId,\n status,\n options,\n }: BulkUpdateMessagesInChannelProperties): Promise<BulkOperation> {\n const result = await this.knock.client().makeRequest({\n method: \"POST\",\n url: `/v1/channels/${channelId}/messages/bulk/${status}`,\n data: options,\n });\n\n return this.handleResponse<BulkOperation>(result);\n }\n\n private handleResponse<T = unknown>(response: ApiResponse) {\n if (response.statusCode === \"error\") {\n if (response.error?.response?.status < 500) {\n return response.error || response.body;\n }\n throw new Error(response.error || response.body);\n }\n\n return response.body as T;\n }\n}\n\nexport default MessageClient;\n"],"names":["MessageClient","knock","__publicField","messageId","result","status","options","payload","messageIds","additionalPayload","channelId","response","_a","_b"],"mappings":";;;AAWA,MAAMA,EAAc;AAAA,EAGlB,YAAYC,GAAc;AAFlB,IAAAC,EAAA;AAGN,SAAK,QAAQD;AAAA,EACf;AAAA,EAEA,MAAM,IAAIE,GAAqC;AAC7C,UAAMC,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBD,CAAS;AAAA,IAAA,CAC/B;AAEM,WAAA,KAAK,eAAwBC,CAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,aACJD,GACAE,GACAC,GACkB;AAEZ,UAAAC,IACJF,MAAW,gBAAgBC,IACvB,EAAE,UAAUA,EAAQ,aACpB,QAEAF,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBD,CAAS,IAAIE,CAAM;AAAA,MACxC,MAAME;AAAA,IAAA,CACP;AAEM,WAAA,KAAK,eAAwBH,CAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,aACJD,GACAE,GACkB;AAClB,UAAMD,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBD,CAAS,IAAIE,CAAM;AAAA,IAAA,CACzC;AAEM,WAAA,KAAK,eAAwBD,CAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,oBACJI,GACAH,GACAC,GACoB;AAEd,UAAAG,IACJJ,MAAW,gBAAgBC,IAAU,EAAE,UAAUA,EAAQ,SAAS,IAAI,IAElEF,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,sBAAsBC,CAAM;AAAA,MACjC,MAAM,EAAE,aAAaG,GAAY,GAAGC,EAAkB;AAAA,IAAA,CACvD;AAEM,WAAA,KAAK,eAA0BL,CAAM;AAAA,EAC9C;AAAA,EAEA,MAAM,+BAA+B;AAAA,IACnC,WAAAM;AAAA,IACA,QAAAL;AAAA,IACA,SAAAC;AAAA,EAAA,GACgE;AAChE,UAAMF,IAAS,MAAM,KAAK,MAAM,OAAA,EAAS,YAAY;AAAA,MACnD,QAAQ;AAAA,MACR,KAAK,gBAAgBM,CAAS,kBAAkBL,CAAM;AAAA,MACtD,MAAMC;AAAA,IAAA,CACP;AAEM,WAAA,KAAK,eAA8BF,CAAM;AAAA,EAClD;AAAA,EAEQ,eAA4BO,GAAuB;AAhF7D,QAAAC,GAAAC;AAiFQ,QAAAF,EAAS,eAAe,SAAS;AACnC,YAAIE,KAAAD,IAAAD,EAAS,UAAT,gBAAAC,EAAgB,aAAhB,gBAAAC,EAA0B,UAAS;AAC9B,eAAAF,EAAS,SAASA,EAAS;AAEpC,YAAM,IAAI,MAAMA,EAAS,SAASA,EAAS,IAAI;AAAA,IACjD;AAEA,WAAOA,EAAS;AAAA,EAClB;AACF;"}
@@ -1,6 +1,6 @@
1
1
  var l = Object.defineProperty;
2
2
  var o = (a, t, e) => t in a ? l(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e;
3
- var r = (a, t, e) => (o(a, typeof t != "symbol" ? t + "" : t, e), e);
3
+ var r = (a, t, e) => o(a, typeof t != "symbol" ? t + "" : t, e);
4
4
  class i {
5
5
  constructor(t) {
6
6
  r(this, "instance");
@@ -1,6 +1,6 @@
1
1
  var d = Object.defineProperty;
2
2
  var h = (r, e, t) => e in r ? d(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
- var u = (r, e, t) => (h(r, typeof e != "symbol" ? e + "" : e, t), t);
3
+ var u = (r, e, t) => h(r, typeof e != "symbol" ? e + "" : e, t);
4
4
  const a = "default";
5
5
  function o(r) {
6
6
  return typeof r == "object" ? r : { subscribed: r };
@@ -1,6 +1,6 @@
1
1
  var i = Object.defineProperty;
2
2
  var l = (c, e, t) => e in c ? i(c, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : c[e] = t;
3
- var r = (c, e, t) => (l(c, typeof e != "symbol" ? e + "" : e, t), t);
3
+ var r = (c, e, t) => l(c, typeof e != "symbol" ? e + "" : e, t);
4
4
  const a = "$tenants";
5
5
  class u {
6
6
  constructor(e) {
@@ -1,6 +1,6 @@
1
1
  var i = Object.defineProperty;
2
2
  var u = (s, e, t) => e in s ? i(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
- var a = (s, e, t) => (u(s, typeof e != "symbol" ? e + "" : e, t), t);
3
+ var a = (s, e, t) => u(s, typeof e != "symbol" ? e + "" : e, t);
4
4
  const r = "default";
5
5
  class l {
6
6
  constructor(e) {
@@ -1,6 +1,6 @@
1
1
  var l = Object.defineProperty;
2
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), t);
3
+ var i = (n, e, t) => c(n, typeof e != "symbol" ? e + "" : e, t);
4
4
  import { jwtDecode as u } from "jwt-decode";
5
5
  import p from "./api.mjs";
6
6
  import k from "./clients/feed/index.mjs";
@@ -75,8 +75,7 @@ class v {
75
75
  });
76
76
  }
77
77
  async maybeScheduleUserTokenExpiration(e, t = 3e4) {
78
- if (!this.userToken)
79
- return;
78
+ if (!this.userToken) return;
80
79
  const s = u(this.userToken), o = (s.exp ?? 0) * 1e3, r = Date.now();
81
80
  if (o && o > r) {
82
81
  const h = o - t - r;
@@ -1 +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 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;\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 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 if (!this.userId) {\n console.warn(\n `[Knock] You must call authenticate(userId, userToken) first before trying to make a request.\n Typically you'll see this message when you're creating a feed instance before having called\n authenticate with a user Id and token. That means we won't know who to issue the request\n to Knock on behalf of.\n `,\n );\n }\n\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: string,\n userToken?: string,\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 /*\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) {\n if (this.logLevel === \"debug\") {\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","UserClient","MessageClient","userId","userToken","reinitializeApi","checkUserToken","_a","message","ApiClient","callbackFn","timeBeforeExpirationInMs","decoded","jwtDecode","expiresAtMs","nowMs","msInFuture","newToken"],"mappings":"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"}
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 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;\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 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 if (!this.userId) {\n console.warn(\n `[Knock] You must call authenticate(userId, userToken) first before trying to make a request.\n Typically you'll see this message when you're creating a feed instance before having called\n authenticate with a user Id and token. That means we won't know who to issue the request\n to Knock on behalf of.\n `,\n );\n }\n\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: string,\n userToken?: string,\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 /*\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) {\n if (this.logLevel === \"debug\") {\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","UserClient","MessageClient","userId","userToken","reinitializeApi","checkUserToken","_a","message","ApiClient","callbackFn","timeBeforeExpirationInMs","decoded","jwtDecode","expiresAtMs","nowMs","msInFuture","newToken"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { AxiosRequestConfig } from "axios";
2
- import { Socket } from "phoenix";
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { Socket } from 'phoenix';
3
+
3
4
  type ApiClientOptions = {
4
5
  host: string;
5
6
  apiKey: string;
@@ -1,8 +1,9 @@
1
- import { GenericData } from "@knocklabs/types";
2
- import { StoreApi } from "zustand";
3
- import Knock from "../../knock";
4
- import { FeedClientOptions, FetchFeedOptions } from "./interfaces";
5
- import { BindableFeedEvent, FeedEventCallback, FeedItemOrItems, FeedRealTimeCallback, FeedStoreState } from "./types";
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { StoreApi } from 'zustand';
3
+ import { default as Knock } from '../../knock';
4
+ import { FeedClientOptions, FetchFeedOptions } from './interfaces';
5
+ import { BindableFeedEvent, FeedEventCallback, FeedItemOrItems, FeedRealTimeCallback, FeedStoreState } from './types';
6
+
6
7
  declare class Feed {
7
8
  readonly knock: Knock;
8
9
  readonly feedId: string;
@@ -32,16 +33,16 @@ declare class Feed {
32
33
  on(eventName: BindableFeedEvent, callback: FeedEventCallback | FeedRealTimeCallback): void;
33
34
  off(eventName: BindableFeedEvent, callback: FeedEventCallback | FeedRealTimeCallback): void;
34
35
  getState(): FeedStoreState;
35
- markAsSeen(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
36
- markAllAsSeen(): Promise<import("../..").BulkOperation>;
37
- markAsUnseen(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
38
- markAsRead(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
39
- markAllAsRead(): Promise<import("../..").BulkOperation>;
40
- markAsUnread(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
41
- markAsInteracted(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
42
- markAsArchived(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
43
- markAllAsArchived(): Promise<import("../..").BulkOperation>;
44
- markAsUnarchived(itemOrItems: FeedItemOrItems): Promise<import("../messages/interfaces").Message<GenericData>[]>;
36
+ markAsSeen(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
37
+ markAllAsSeen(): Promise<import('../..').BulkOperation>;
38
+ markAsUnseen(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
39
+ markAsRead(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
40
+ markAllAsRead(): Promise<import('../..').BulkOperation>;
41
+ markAsUnread(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
42
+ markAsInteracted(itemOrItems: FeedItemOrItems, metadata?: Record<string, string>): Promise<import('../messages/interfaces').Message<GenericData>[]>;
43
+ markAsArchived(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
44
+ markAllAsArchived(): Promise<import('../..').BulkOperation>;
45
+ markAsUnarchived(itemOrItems: FeedItemOrItems): Promise<import('../messages/interfaces').Message<GenericData>[]>;
45
46
  fetch(options?: FetchFeedOptions): Promise<{
46
47
  status: "ok" | "error";
47
48
  data: any;
@@ -1 +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;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,OAAO,EACL,iBAAiB,EAIjB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,EAEjB,eAAe,EAEf,oBAAoB,EACpB,cAAc,EACf,MAAM,SAAS,CAAC;AASjB,cAAM,IAAI;IAeN,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAfzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAoB;IAC1C,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,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAG5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,iBAAiB;IAgB5B;;OAEG;IACH,YAAY;IAWZ;;;OAGG;IACH,QAAQ;IAoBR,2EAA2E;IAC3E,OAAO;IAWP,gBAAgB;IAmBhB,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,CAAC,WAAW,EAAE,eAAe;IAuB7C,cAAc,CAAC,WAAW,EAAE,eAAe;IAuE3C,iBAAiB;IA2BjB,gBAAgB,CAAC,WAAW,EAAE,eAAe;IAS7C,KAAK,CAAC,OAAO,GAAE,gBAAqB;;;;IA0EpC,aAAa;IAenB,OAAO,CAAC,SAAS;YAQH,oBAAoB;IAclC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iCAAiC;YAiD3B,gBAAgB;YAiBhB,oBAAoB;IA2BlC,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,4BAA4B;IA0BpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,sBAAsB;CA2B/B;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,OAAO,EACL,iBAAiB,EAIjB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,EAEjB,eAAe,EAEf,oBAAoB,EACpB,cAAc,EACf,MAAM,SAAS,CAAC;AASjB,cAAM,IAAI;IAeN,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAfzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAoB;IAC1C,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,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAG5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,iBAAiB;IAgB5B;;OAEG;IACH,YAAY;IAWZ;;;OAGG;IACH,QAAQ;IAoBR,2EAA2E;IAC3E,OAAO;IAWP,gBAAgB;IAmBhB,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,gBAAgB,CAAC,WAAW,EAAE,eAAe;IAS7C,KAAK,CAAC,OAAO,GAAE,gBAAqB;;;;IA0EpC,aAAa;IAenB,OAAO,CAAC,SAAS;YAQH,oBAAoB;IAclC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iCAAiC;YAiD3B,gBAAgB;YAsBhB,oBAAoB;IA2BlC,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,4BAA4B;IA0BpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,sBAAsB;CA2B/B;AAED,eAAe,IAAI,CAAC"}
@@ -1,6 +1,7 @@
1
- import Knock from "../../knock";
2
- import Feed from "./feed";
3
- import { FeedClientOptions } from "./interfaces";
1
+ import { default as Knock } from '../../knock';
2
+ import { default as Feed } from './feed';
3
+ import { FeedClientOptions } from './interfaces';
4
+
4
5
  declare class FeedClient {
5
6
  private instance;
6
7
  private feedInstances;
@@ -1,7 +1,8 @@
1
- import { GenericData, PageInfo } from "@knocklabs/types";
2
- import { Activity, Recipient } from "../../interfaces";
3
- import { NetworkStatus } from "../../networkStatus";
4
- import { NotificationSource } from "../messages/interfaces";
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
+
5
6
  export interface FeedClientOptions {
6
7
  before?: string;
7
8
  after?: string;
@@ -1,3 +1,4 @@
1
- import { FeedStoreState } from "./types";
2
- export default function createStore(): import("zustand/vanilla").StoreApi<FeedStoreState>;
1
+ import { FeedStoreState } from './types';
2
+
3
+ export default function createStore(): import('zustand/vanilla').StoreApi<FeedStoreState>;
3
4
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA6BzC,MAAM,CAAC,OAAO,UAAU,WAAW,uDA0DlC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmCzC,MAAM,CAAC,OAAO,UAAU,WAAW,uDA0DlC"}
@@ -1,6 +1,7 @@
1
- import { GenericData, PageInfo } from "@knocklabs/types";
2
- import { NetworkStatus } from "../../networkStatus";
3
- import { FeedItem, FeedMetadata, FeedResponse } from "./interfaces";
1
+ import { GenericData, PageInfo } from '@knocklabs/types';
2
+ import { NetworkStatus } from '../../networkStatus';
3
+ import { FeedItem, FeedMetadata, FeedResponse } from './interfaces';
4
+
4
5
  export type StoreFeedResultOptions = {
5
6
  shouldSetPage?: boolean;
6
7
  shouldAppend?: boolean;
@@ -1,4 +1,5 @@
1
- import { FeedItem } from "./interfaces";
1
+ import { FeedItem } from './interfaces';
2
+
2
3
  export declare function deduplicateItems(items: FeedItem[]): FeedItem[];
3
- export declare function sortItems(items: FeedItem[]): FeedItem<import("@knocklabs/types").GenericData>[];
4
+ export declare function sortItems(items: FeedItem[]): FeedItem<import('@knocklabs/types').GenericData>[];
4
5
  //# sourceMappingURL=utils.d.ts.map
@@ -1,13 +1,14 @@
1
- import { BulkOperation } from "../../interfaces";
2
- import Knock from "../../knock";
3
- import { BulkUpdateMessagesInChannelProperties, Message, MessageEngagementStatus } from "./interfaces";
1
+ import { BulkOperation } from '../../interfaces';
2
+ import { default as Knock } from '../../knock';
3
+ import { BulkUpdateMessagesInChannelProperties, Message, MessageEngagementStatus, UpdateMessageStatusOptions } from './interfaces';
4
+
4
5
  declare class MessageClient {
5
6
  private knock;
6
7
  constructor(knock: Knock);
7
8
  get(messageId: string): Promise<Message>;
8
- updateStatus(messageId: string, status: MessageEngagementStatus): Promise<Message>;
9
+ updateStatus(messageId: string, status: MessageEngagementStatus, options?: UpdateMessageStatusOptions): Promise<Message>;
9
10
  removeStatus(messageId: string, status: Exclude<MessageEngagementStatus, "interacted">): Promise<Message>;
10
- batchUpdateStatuses(messageIds: string[], status: MessageEngagementStatus | "unseen" | "unread" | "unarchived"): Promise<Message[]>;
11
+ batchUpdateStatuses(messageIds: string[], status: MessageEngagementStatus | "unseen" | "unread" | "unarchived", options?: UpdateMessageStatusOptions): Promise<Message[]>;
11
12
  bulkUpdateAllStatusesInChannel({ channelId, status, options, }: BulkUpdateMessagesInChannelProperties): Promise<BulkOperation>;
12
13
  private handleResponse;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/messages/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EACL,qCAAqC,EACrC,OAAO,EACP,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAEtB,cAAM,aAAa;IACjB,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,EAAE,KAAK;IAIlB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxC,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC;IASb,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,CAAC,uBAAuB,EAAE,YAAY,CAAC,GACrD,OAAO,CAAC,OAAO,CAAC;IASb,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GACnE,OAAO,CAAC,OAAO,EAAE,CAAC;IAUf,8BAA8B,CAAC,EACnC,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE,qCAAqC,GAAG,OAAO,CAAC,aAAa,CAAC;IAUjE,OAAO,CAAC,cAAc;CAUvB;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/messages/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EACL,qCAAqC,EACrC,OAAO,EACP,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AAEtB,cAAM,aAAa;IACjB,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,EAAE,KAAK;IAIlB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxC,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,OAAO,CAAC;IAgBb,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,CAAC,uBAAuB,EAAE,YAAY,CAAC,GACrD,OAAO,CAAC,OAAO,CAAC;IASb,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,EACpE,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,OAAO,EAAE,CAAC;IAcf,8BAA8B,CAAC,EACnC,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE,qCAAqC,GAAG,OAAO,CAAC,aAAa,CAAC;IAUjE,OAAO,CAAC,cAAc;CAUvB;AAED,eAAe,aAAa,CAAC"}
@@ -1,5 +1,6 @@
1
- import { GenericData } from "@knocklabs/types";
2
- import { RecipientRef } from "../..";
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { RecipientRef } from '../..';
3
+
3
4
  export type MessageDeliveryStatus = "queued" | "sent" | "delivered" | "delivery_attempted" | "undelivered" | "not_sent";
4
5
  export interface NotificationSource {
5
6
  key: string;
@@ -37,4 +38,7 @@ export type BulkUpdateMessagesInChannelProperties = {
37
38
  tenants?: string[];
38
39
  };
39
40
  };
41
+ export type UpdateMessageStatusOptions = {
42
+ metadata?: Record<string, string>;
43
+ };
40
44
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/clients/messages/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,MAAM,GACN,WAAW,GACX,oBAAoB,GACpB,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,MAAM,GACN,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,WAAW;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,mBAAmB,EAAE,uBAAuB,EAAE,CAAC;IAC/C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,QAAQ,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,MAAM,qCAAqC,GAAG;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1D,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/clients/messages/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,MAAM,GACN,WAAW,GACX,oBAAoB,GACpB,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,MAAM,GACN,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,WAAW;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,mBAAmB,EAAE,uBAAuB,EAAE,CAAC;IAC/C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,QAAQ,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,MAAM,qCAAqC,GAAG;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1D,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC"}
@@ -1,6 +1,7 @@
1
- import { GenericData } from "@knocklabs/types";
2
- import { ChannelData } from "../../interfaces";
3
- import Knock from "../../knock";
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { ChannelData } from '../../interfaces';
3
+ import { default as Knock } from '../../knock';
4
+
4
5
  type GetChannelDataInput = {
5
6
  objectId: string;
6
7
  collection: string;
@@ -1,6 +1,7 @@
1
- import { ChannelType } from "@knocklabs/types";
2
- import Knock from "../../knock";
3
- import { ChannelTypePreferences, PreferenceOptions, PreferenceSet, SetPreferencesProperties, WorkflowPreferenceSetting, WorkflowPreferences } from "./interfaces";
1
+ import { ChannelType } from '@knocklabs/types';
2
+ import { default as Knock } from '../../knock';
3
+ import { ChannelTypePreferences, PreferenceOptions, PreferenceSet, SetPreferencesProperties, WorkflowPreferenceSetting, WorkflowPreferences } from './interfaces';
4
+
4
5
  declare class Preferences {
5
6
  private instance;
6
7
  constructor(instance: Knock);
@@ -1,4 +1,5 @@
1
- import { ChannelType } from "@knocklabs/types";
1
+ import { ChannelType } from '@knocklabs/types';
2
+
2
3
  export type ChannelTypePreferences = {
3
4
  [K in ChannelType]?: boolean;
4
5
  };
@@ -1,5 +1,6 @@
1
- import Knock from "../../knock";
2
- import { AuthCheckInput, GetSlackChannelsInput, GetSlackChannelsResponse, RevokeAccessTokenInput } from "./interfaces";
1
+ import { default as Knock } from '../../knock';
2
+ import { AuthCheckInput, GetSlackChannelsInput, GetSlackChannelsResponse, RevokeAccessTokenInput } from './interfaces';
3
+
3
4
  declare class SlackClient {
4
5
  private instance;
5
6
  constructor(instance: Knock);
@@ -1,8 +1,9 @@
1
- import { GenericData } from "@knocklabs/types";
2
- import { ChannelData, User } from "../../interfaces";
3
- import Knock from "../../knock";
4
- import { GetPreferencesOptions, PreferenceOptions, PreferenceSet, SetPreferencesProperties } from "../preferences/interfaces";
5
- import { GetChannelDataInput, SetChannelDataInput } from "./interfaces";
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { ChannelData, User } from '../../interfaces';
3
+ import { default as Knock } from '../../knock';
4
+ import { GetPreferencesOptions, PreferenceOptions, PreferenceSet, SetPreferencesProperties } from '../preferences/interfaces';
5
+ import { GetChannelDataInput, SetChannelDataInput } from './interfaces';
6
+
6
7
  declare class UserClient {
7
8
  private instance;
8
9
  constructor(instance: Knock);
@@ -1,4 +1,5 @@
1
- import { GenericData } from "@knocklabs/types";
1
+ import { GenericData } from '@knocklabs/types';
2
+
2
3
  export interface SetChannelDataInput {
3
4
  channelId: string;
4
5
  channelData: GenericData;
@@ -1,18 +1,19 @@
1
- import FeedClient, { Feed } from "./clients/feed";
2
- import Knock from "./knock";
3
- export * from "./interfaces";
4
- export * from "./clients/feed/types";
5
- export * from "./clients/feed/interfaces";
6
- export * from "./clients/objects";
7
- export * from "./clients/objects/constants";
8
- export * from "./clients/preferences/interfaces";
9
- export * from "./clients/slack";
10
- export * from "./clients/slack/interfaces";
11
- export * from "./clients/users";
12
- export * from "./clients/users/interfaces";
13
- export * from "./clients/messages";
14
- export * from "./clients/messages/interfaces";
15
- export * from "./networkStatus";
1
+ import { default as FeedClient, Feed } from './clients/feed';
2
+ import { default as Knock } from './knock';
3
+
4
+ export * from './interfaces';
5
+ export * from './clients/feed/types';
6
+ export * from './clients/feed/interfaces';
7
+ export * from './clients/objects';
8
+ export * from './clients/objects/constants';
9
+ export * from './clients/preferences/interfaces';
10
+ export * from './clients/slack';
11
+ export * from './clients/slack/interfaces';
12
+ export * from './clients/users';
13
+ export * from './clients/users/interfaces';
14
+ export * from './clients/messages';
15
+ export * from './clients/messages/interfaces';
16
+ export * from './networkStatus';
16
17
  export default Knock;
17
18
  export { Feed, FeedClient };
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,6 @@
1
- import { GenericData } from "@knocklabs/types";
2
- import { JwtPayload } from "jwt-decode";
1
+ import { GenericData } from '@knocklabs/types';
2
+ import { JwtPayload } from 'jwt-decode';
3
+
3
4
  export type LogLevel = "debug";
4
5
  export interface KnockOptions {
5
6
  host?: string;
@@ -1,11 +1,12 @@
1
- import ApiClient from "./api";
2
- import FeedClient from "./clients/feed";
3
- import MessageClient from "./clients/messages";
4
- import ObjectClient from "./clients/objects";
5
- import Preferences from "./clients/preferences";
6
- import SlackClient from "./clients/slack";
7
- import UserClient from "./clients/users";
8
- import { AuthenticateOptions, KnockOptions, LogLevel } from "./interfaces";
1
+ import { default as ApiClient } from './api';
2
+ import { default as FeedClient } from './clients/feed';
3
+ import { default as MessageClient } from './clients/messages';
4
+ import { default as ObjectClient } from './clients/objects';
5
+ import { default as Preferences } from './clients/preferences';
6
+ import { default as SlackClient } from './clients/slack';
7
+ import { default as UserClient } from './clients/users';
8
+ import { AuthenticateOptions, KnockOptions, LogLevel } from './interfaces';
9
+
9
10
  declare class Knock {
10
11
  readonly apiKey: string;
11
12
  host: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knocklabs/client",
3
- "version": "0.10.10",
3
+ "version": "0.10.12",
4
4
  "description": "The clientside library for interacting with Knock",
5
5
  "homepage": "https://github.com/knocklabs/javascript/tree/main/packages/client",
6
6
  "author": "@knocklabs",
@@ -62,17 +62,17 @@
62
62
  "eslint": "^8.56.0",
63
63
  "jsonwebtoken": "^9.0.2",
64
64
  "prettier": "^3.1.0",
65
- "rimraf": "^5.0.5",
65
+ "rimraf": "^6.0.1",
66
66
  "rollup": "^2.46.0",
67
- "typescript": "^5.3.3",
67
+ "typescript": "^5.5.4",
68
68
  "vite": "^5.0.0",
69
- "vitest": "^1.2.2"
69
+ "vitest": "^2.0.5"
70
70
  },
71
71
  "dependencies": {
72
72
  "@babel/runtime": "^7.23.9",
73
73
  "@knocklabs/types": "^0.1.4",
74
74
  "@types/phoenix": "^1.5.4",
75
- "axios": "^1.6.0",
75
+ "axios": "^1.7.3",
76
76
  "axios-retry": "^3.1.9",
77
77
  "eventemitter2": "^6.4.5",
78
78
  "jwt-decode": "^4.0.0",
@@ -286,7 +286,10 @@ class Feed {
286
286
  return this.makeStatusUpdate(itemOrItems, "unread");
287
287
  }
288
288
 
289
- async markAsInteracted(itemOrItems: FeedItemOrItems) {
289
+ async markAsInteracted(
290
+ itemOrItems: FeedItemOrItems,
291
+ metadata?: Record<string, string>,
292
+ ) {
290
293
  const now = new Date().toISOString();
291
294
  this.optimisticallyPerformStatusUpdate(
292
295
  itemOrItems,
@@ -298,7 +301,7 @@ class Feed {
298
301
  "unread_count",
299
302
  );
300
303
 
301
- return this.makeStatusUpdate(itemOrItems, "interacted");
304
+ return this.makeStatusUpdate(itemOrItems, "interacted", metadata);
302
305
  }
303
306
 
304
307
  /*
@@ -583,12 +586,17 @@ class Feed {
583
586
  private async makeStatusUpdate(
584
587
  itemOrItems: FeedItemOrItems,
585
588
  type: MessageEngagementStatus | "unread" | "unseen" | "unarchived",
589
+ metadata?: Record<string, string>,
586
590
  ) {
587
591
  // Always treat items as a batch to use the corresponding batch endpoint
588
592
  const items = Array.isArray(itemOrItems) ? itemOrItems : [itemOrItems];
589
593
  const itemIds = items.map((item) => item.id);
590
594
 
591
- const result = await this.knock.messages.batchUpdateStatuses(itemIds, type);
595
+ const result = await this.knock.messages.batchUpdateStatuses(
596
+ itemIds,
597
+ type,
598
+ { metadata },
599
+ );
592
600
 
593
601
  // Emit the event that these items had their statuses changed
594
602
  // Note: we do this after the update to ensure that the server event actually completed