@knocklabs/client 0.8.20 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) 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/store.js +1 -1
  7. package/dist/cjs/clients/feed/store.js.map +1 -1
  8. package/dist/cjs/clients/objects/constants.js +2 -0
  9. package/dist/cjs/clients/objects/constants.js.map +1 -0
  10. package/dist/cjs/clients/objects/index.js +2 -0
  11. package/dist/cjs/clients/objects/index.js.map +1 -0
  12. package/dist/cjs/clients/slack/index.js +2 -0
  13. package/dist/cjs/clients/slack/index.js.map +1 -0
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/cjs/knock.js +2 -2
  16. package/dist/cjs/knock.js.map +1 -1
  17. package/dist/esm/{api.js → api.mjs} +1 -1
  18. package/dist/esm/api.mjs.map +1 -0
  19. package/dist/esm/clients/feed/{feed.js → feed.mjs} +4 -4
  20. package/dist/esm/clients/feed/feed.mjs.map +1 -0
  21. package/dist/esm/clients/feed/{index.js → index.mjs} +2 -2
  22. package/dist/esm/clients/feed/index.mjs.map +1 -0
  23. package/dist/esm/clients/feed/{store.js → store.mjs} +3 -3
  24. package/dist/esm/clients/feed/store.mjs.map +1 -0
  25. package/dist/esm/clients/feed/{utils.js → utils.mjs} +1 -1
  26. package/dist/esm/clients/feed/utils.mjs.map +1 -0
  27. package/dist/esm/clients/objects/constants.mjs +5 -0
  28. package/dist/esm/clients/objects/constants.mjs.map +1 -0
  29. package/dist/esm/clients/objects/index.mjs +42 -0
  30. package/dist/esm/clients/objects/index.mjs.map +1 -0
  31. package/dist/esm/clients/preferences/{index.js → index.mjs} +1 -1
  32. package/dist/esm/clients/preferences/index.mjs.map +1 -0
  33. package/dist/esm/clients/slack/index.mjs +72 -0
  34. package/dist/esm/clients/slack/index.mjs.map +1 -0
  35. package/dist/esm/clients/users/{index.js → index.mjs} +1 -1
  36. package/dist/esm/clients/users/index.mjs.map +1 -0
  37. package/dist/esm/index.mjs +14 -0
  38. package/dist/esm/index.mjs.map +1 -0
  39. package/dist/esm/{knock.js → knock.mjs} +20 -16
  40. package/dist/esm/knock.mjs.map +1 -0
  41. package/dist/esm/{networkStatus.js → networkStatus.mjs} +1 -1
  42. package/dist/esm/networkStatus.mjs.map +1 -0
  43. package/dist/types/api.d.ts.map +1 -1
  44. package/dist/types/clients/objects/constants.d.ts +2 -0
  45. package/dist/types/clients/objects/constants.d.ts.map +1 -0
  46. package/dist/types/clients/objects/index.d.ts +22 -0
  47. package/dist/types/clients/objects/index.d.ts.map +1 -0
  48. package/dist/types/clients/slack/index.d.ts +12 -0
  49. package/dist/types/clients/slack/index.d.ts.map +1 -0
  50. package/dist/types/clients/slack/interfaces.d.ts +33 -0
  51. package/dist/types/clients/slack/interfaces.d.ts.map +1 -0
  52. package/dist/types/index.d.ts +4 -0
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/dist/types/knock.d.ts +5 -1
  55. package/dist/types/knock.d.ts.map +1 -1
  56. package/package.json +6 -5
  57. package/dist/api.d.ts +0 -25
  58. package/dist/api.d.ts.map +0 -1
  59. package/dist/api.js +0 -84
  60. package/dist/clients/feed/feed.d.ts +0 -64
  61. package/dist/clients/feed/feed.d.ts.map +0 -1
  62. package/dist/clients/feed/feed.js +0 -572
  63. package/dist/clients/feed/index.d.ts +0 -15
  64. package/dist/clients/feed/index.d.ts.map +0 -1
  65. package/dist/clients/feed/index.js +0 -34
  66. package/dist/clients/feed/interfaces.d.ts +0 -60
  67. package/dist/clients/feed/interfaces.d.ts.map +0 -1
  68. package/dist/clients/feed/interfaces.js +0 -2
  69. package/dist/clients/feed/store.d.ts +0 -3
  70. package/dist/clients/feed/store.d.ts.map +0 -1
  71. package/dist/clients/feed/store.js +0 -72
  72. package/dist/clients/feed/types.d.ts +0 -34
  73. package/dist/clients/feed/types.d.ts.map +0 -1
  74. package/dist/clients/feed/types.js +0 -2
  75. package/dist/clients/feed/utils.d.ts +0 -4
  76. package/dist/clients/feed/utils.d.ts.map +0 -1
  77. package/dist/clients/feed/utils.js +0 -21
  78. package/dist/clients/preferences/index.d.ts +0 -46
  79. package/dist/clients/preferences/index.d.ts.map +0 -1
  80. package/dist/clients/preferences/index.js +0 -129
  81. package/dist/clients/preferences/interfaces.d.ts +0 -26
  82. package/dist/clients/preferences/interfaces.d.ts.map +0 -1
  83. package/dist/clients/preferences/interfaces.js +0 -2
  84. package/dist/clients/users/index.d.ts +0 -16
  85. package/dist/clients/users/index.d.ts.map +0 -1
  86. package/dist/clients/users/index.js +0 -56
  87. package/dist/clients/users/interfaces.d.ts +0 -8
  88. package/dist/clients/users/interfaces.d.ts.map +0 -1
  89. package/dist/clients/users/interfaces.js +0 -2
  90. package/dist/esm/api.js.map +0 -1
  91. package/dist/esm/clients/feed/feed.js.map +0 -1
  92. package/dist/esm/clients/feed/index.js.map +0 -1
  93. package/dist/esm/clients/feed/store.js.map +0 -1
  94. package/dist/esm/clients/feed/utils.js.map +0 -1
  95. package/dist/esm/clients/preferences/index.js.map +0 -1
  96. package/dist/esm/clients/users/index.js.map +0 -1
  97. package/dist/esm/index.js +0 -12
  98. package/dist/esm/index.js.map +0 -1
  99. package/dist/esm/knock.js.map +0 -1
  100. package/dist/esm/networkStatus.js.map +0 -1
  101. package/dist/index.d.ts +0 -11
  102. package/dist/index.d.ts.map +0 -1
  103. package/dist/index.js +0 -43
  104. package/dist/interfaces.d.ts +0 -41
  105. package/dist/interfaces.d.ts.map +0 -1
  106. package/dist/interfaces.js +0 -2
  107. package/dist/knock.d.ts +0 -30
  108. package/dist/knock.d.ts.map +0 -1
  109. package/dist/knock.js +0 -135
  110. package/dist/networkStatus.d.ts +0 -8
  111. package/dist/networkStatus.d.ts.map +0 -1
  112. package/dist/networkStatus.js +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/clients/feed/index.ts"],"sourcesContent":["import Knock from \"../../knock\";\n\nimport Feed from \"./feed\";\nimport { FeedClientOptions } from \"./interfaces\";\n\nclass FeedClient {\n private instance: Knock;\n private feedInstances: Feed[] = [];\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n initialize(feedChannelId: string, options: FeedClientOptions = {}) {\n const feedInstance = new Feed(this.instance, feedChannelId, options);\n this.feedInstances.push(feedInstance);\n\n return feedInstance;\n }\n\n removeInstance(feed: Feed) {\n this.feedInstances = this.feedInstances.filter((f) => f !== feed);\n }\n\n teardownInstances() {\n for (const feed of this.feedInstances) {\n feed.teardown();\n }\n }\n\n reinitializeInstances() {\n for (const feed of this.feedInstances) {\n feed.reinitialize();\n }\n }\n}\n\nexport { Feed };\nexport default FeedClient;\n"],"names":["FeedClient","instance","__publicField","feedChannelId","options","feedInstance","Feed","feed","f"],"mappings":";;;;AAKA,MAAMA,EAAW;AAAA,EAIf,YAAYC,GAAiB;AAHrB,IAAAC,EAAA;AACA,IAAAA,EAAA,uBAAwB,CAAA;AAG9B,SAAK,WAAWD;AAAA,EAClB;AAAA,EAEA,WAAWE,GAAuBC,IAA6B,IAAI;AACjE,UAAMC,IAAe,IAAIC,EAAK,KAAK,UAAUH,GAAeC,CAAO;AAC9D,gBAAA,cAAc,KAAKC,CAAY,GAE7BA;AAAA,EACT;AAAA,EAEA,eAAeE,GAAY;AACzB,SAAK,gBAAgB,KAAK,cAAc,OAAO,CAACC,MAAMA,MAAMD,CAAI;AAAA,EAClE;AAAA,EAEA,oBAAoB;AACP,eAAAA,KAAQ,KAAK;AACtB,MAAAA,EAAK,SAAS;AAAA,EAElB;AAAA,EAEA,wBAAwB;AACX,eAAAA,KAAQ,KAAK;AACtB,MAAAA,EAAK,aAAa;AAAA,EAEtB;AACF;"}
@@ -1,6 +1,6 @@
1
1
  import l from "zustand/vanilla";
2
- import { NetworkStatus as u } from "../../networkStatus.js";
3
- import { deduplicateItems as i, sortItems as c } from "./utils.js";
2
+ import { NetworkStatus as u } from "../../networkStatus.mjs";
3
+ import { deduplicateItems as i, sortItems as c } from "./utils.mjs";
4
4
  function m(e) {
5
5
  const t = i(e);
6
6
  return c(t);
@@ -53,4 +53,4 @@ function I() {
53
53
  export {
54
54
  I as default
55
55
  };
56
- //# sourceMappingURL=store.js.map
56
+ //# sourceMappingURL=store.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.mjs","sources":["../../../../src/clients/feed/store.ts"],"sourcesContent":["import create from \"zustand/vanilla\";\n\nimport { NetworkStatus } from \"../../networkStatus\";\n\nimport { FeedItem } from \"./interfaces\";\nimport { FeedStoreState } from \"./types\";\nimport { deduplicateItems, sortItems } from \"./utils\";\n\nfunction processItems(items: FeedItem[]) {\n const deduped = deduplicateItems(items);\n const sorted = sortItems(deduped);\n\n return sorted;\n}\n\nconst defaultSetResultOptions = {\n shouldSetPage: true,\n shouldAppend: false,\n};\n\nconst initialStoreState = {\n items: [],\n metadata: {\n total_count: 0,\n unread_count: 0,\n unseen_count: 0,\n },\n pageInfo: {\n before: null,\n after: null,\n page_size: 50,\n },\n};\n\nexport default function createStore() {\n return create<FeedStoreState>((set) => ({\n // Keeps track of all of the items loaded\n ...initialStoreState,\n // The network status indicates what's happening with the request\n networkStatus: NetworkStatus.ready,\n loading: false,\n\n setNetworkStatus: (networkStatus: NetworkStatus) =>\n set(() => ({\n networkStatus,\n loading: networkStatus === NetworkStatus.loading,\n })),\n\n setResult: (\n { entries, meta, page_info },\n options = defaultSetResultOptions,\n ) =>\n set((state) => {\n // We resort the list on set, so concating everything is fine (if a bit suboptimal)\n const items = options.shouldAppend\n ? processItems(state.items.concat(entries))\n : entries;\n\n return {\n items,\n metadata: meta,\n pageInfo: options.shouldSetPage ? page_info : state.pageInfo,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n }),\n\n setMetadata: (metadata) => set(() => ({ metadata })),\n\n resetStore: (metadata = initialStoreState.metadata) =>\n set(() => ({ ...initialStoreState, metadata })),\n\n setItemAttrs: (itemIds, attrs) => {\n // Create a map for the items to the updates to be made\n const itemUpdatesMap: { [id: string]: object } = itemIds.reduce(\n (acc, itemId) => ({ ...acc, [itemId]: attrs }),\n {},\n );\n\n return set((state) => {\n const items = state.items.map((item) => {\n if (itemUpdatesMap[item.id]) {\n return { ...item, ...itemUpdatesMap[item.id] };\n }\n\n return item;\n });\n\n return { items };\n });\n },\n }));\n}\n"],"names":["processItems","items","deduped","deduplicateItems","sortItems","defaultSetResultOptions","initialStoreState","createStore","create","set","NetworkStatus","networkStatus","entries","meta","page_info","options","state","metadata","itemIds","attrs","itemUpdatesMap","acc","itemId","item"],"mappings":";;;AAQA,SAASA,EAAaC,GAAmB;AACjC,QAAAC,IAAUC,EAAiBF,CAAK;AAG/B,SAFQG,EAAUF,CAAO;AAGlC;AAEA,MAAMG,IAA0B;AAAA,EAC9B,eAAe;AAAA,EACf,cAAc;AAChB,GAEMC,IAAoB;AAAA,EACxB,OAAO,CAAC;AAAA,EACR,UAAU;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AACF;AAEA,SAAwBC,IAAc;AAC7B,SAAAC,EAAuB,CAACC,OAAS;AAAA;AAAA,IAEtC,GAAGH;AAAA;AAAA,IAEH,eAAeI,EAAc;AAAA,IAC7B,SAAS;AAAA,IAET,kBAAkB,CAACC,MACjBF,EAAI,OAAO;AAAA,MACT,eAAAE;AAAA,MACA,SAASA,MAAkBD,EAAc;AAAA,IAAA,EACzC;AAAA,IAEJ,WAAW,CACT,EAAE,SAAAE,GAAS,MAAAC,GAAM,WAAAC,KACjBC,IAAUV,MAEVI,EAAI,CAACO,OAMI;AAAA,MACL,OALYD,EAAQ,eAClBf,EAAagB,EAAM,MAAM,OAAOJ,CAAO,CAAC,IACxCA;AAAA,MAIF,UAAUC;AAAA,MACV,UAAUE,EAAQ,gBAAgBD,IAAYE,EAAM;AAAA,MACpD,SAAS;AAAA,MACT,eAAeN,EAAc;AAAA,IAAA,EAEhC;AAAA,IAEH,aAAa,CAACO,MAAaR,EAAI,OAAO,EAAE,UAAAQ,EAAW,EAAA;AAAA,IAEnD,YAAY,CAACA,IAAWX,EAAkB,aACxCG,EAAI,OAAO,EAAE,GAAGH,GAAmB,UAAAW,EAAA,EAAW;AAAA,IAEhD,cAAc,CAACC,GAASC,MAAU;AAEhC,YAAMC,IAA2CF,EAAQ;AAAA,QACvD,CAACG,GAAKC,OAAY,EAAE,GAAGD,GAAK,CAACC,CAAM,GAAGH;QACtC,CAAC;AAAA,MAAA;AAGI,aAAAV,EAAI,CAACO,OASH,EAAE,OARKA,EAAM,MAAM,IAAI,CAACO,MACzBH,EAAeG,EAAK,EAAE,IACjB,EAAE,GAAGA,GAAM,GAAGH,EAAeG,EAAK,EAAE,MAGtCA,CACR,EAEc,EAChB;AAAA,IACH;AAAA,EACA,EAAA;AACJ;"}
@@ -9,4 +9,4 @@ export {
9
9
  s as deduplicateItems,
10
10
  i as sortItems
11
11
  };
12
- //# sourceMappingURL=utils.js.map
12
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../src/clients/feed/utils.ts"],"sourcesContent":["import { FeedItem } from \"./interfaces\";\n\nexport function deduplicateItems(items: FeedItem[]): FeedItem[] {\n const seen: Record<string, boolean> = {};\n const values: FeedItem[] = [];\n\n return items.reduce((acc, item) => {\n if (seen[item.id]) {\n return acc;\n }\n\n seen[item.id] = true;\n return [...acc, item];\n }, values);\n}\n\nexport function sortItems(items: FeedItem[]) {\n return items.sort((a, b) => {\n return (\n new Date(b.inserted_at).getTime() - new Date(a.inserted_at).getTime()\n );\n });\n}\n"],"names":["deduplicateItems","items","seen","values","acc","item","sortItems","a","b"],"mappings":"AAEO,SAASA,EAAiBC,GAA+B;AAC9D,QAAMC,IAAgC,CAAA,GAChCC,IAAqB,CAAA;AAE3B,SAAOF,EAAM,OAAO,CAACG,GAAKC,MACpBH,EAAKG,EAAK,EAAE,IACPD,KAGJF,EAAAG,EAAK,EAAE,IAAI,IACT,CAAC,GAAGD,GAAKC,CAAI,IACnBF,CAAM;AACX;AAEO,SAASG,EAAUL,GAAmB;AAC3C,SAAOA,EAAM,KAAK,CAACM,GAAGC,MAElB,IAAI,KAAKA,EAAE,WAAW,EAAE,QAAA,IAAY,IAAI,KAAKD,EAAE,WAAW,EAAE,QAAQ,CAEvE;AACH;"}
@@ -0,0 +1,5 @@
1
+ const t = "$tenants";
2
+ export {
3
+ t as TENANT_OBJECT_COLLECTION
4
+ };
5
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.mjs","sources":["../../../../src/clients/objects/constants.ts"],"sourcesContent":["export const TENANT_OBJECT_COLLECTION = \"$tenants\";\n"],"names":["TENANT_OBJECT_COLLECTION"],"mappings":"AAAO,MAAMA,IAA2B;"}
@@ -0,0 +1,42 @@
1
+ var l = Object.defineProperty;
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);
4
+ class i {
5
+ constructor(t) {
6
+ r(this, "instance");
7
+ this.instance = t;
8
+ }
9
+ async getChannelData({
10
+ collection: t,
11
+ objectId: e,
12
+ channelId: n
13
+ }) {
14
+ const s = await this.instance.client().makeRequest({
15
+ method: "GET",
16
+ url: `/v1/objects/${t}/${e}/channel_data/${n}`
17
+ });
18
+ return this.handleResponse(s);
19
+ }
20
+ async setChannelData({
21
+ objectId: t,
22
+ collection: e,
23
+ channelId: n,
24
+ data: s
25
+ }) {
26
+ const c = await this.instance.client().makeRequest({
27
+ method: "PUT",
28
+ url: `v1/objects/${e}/${t}/channel_data/${n}`,
29
+ data: { data: s }
30
+ });
31
+ return this.handleResponse(c);
32
+ }
33
+ handleResponse(t) {
34
+ if (t.statusCode === "error")
35
+ throw new Error(t.error || t.body);
36
+ return t.body;
37
+ }
38
+ }
39
+ export {
40
+ i as default
41
+ };
42
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/clients/objects/index.ts"],"sourcesContent":["import { ApiResponse } from \"../../api\";\nimport { ChannelData } from \"../../interfaces\";\nimport Knock from \"../../knock\";\n\ntype GetChannelDataInput = {\n objectId: string;\n collection: string;\n channelId: string;\n};\n\ntype SetChannelDataInput = {\n objectId: string;\n collection: string;\n channelId: string;\n data: any;\n};\n\nclass ObjectClient {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n async getChannelData<T = any>({\n collection,\n objectId,\n channelId,\n }: GetChannelDataInput) {\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/objects/${collection}/${objectId}/channel_data/${channelId}`,\n });\n\n return this.handleResponse<ChannelData<T>>(result);\n }\n\n async setChannelData({\n objectId,\n collection,\n channelId,\n data,\n }: SetChannelDataInput) {\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `v1/objects/${collection}/${objectId}/channel_data/${channelId}`,\n data: { data },\n });\n\n return this.handleResponse(result);\n }\n\n private handleResponse<T>(response: ApiResponse) {\n if (response.statusCode === \"error\") {\n throw new Error(response.error || response.body);\n }\n\n return response.body as T;\n }\n}\n\nexport default ObjectClient;\n"],"names":["ObjectClient","instance","__publicField","collection","objectId","channelId","result","data","response"],"mappings":";;;AAiBA,MAAMA,EAAa;AAAA,EAGjB,YAAYC,GAAiB;AAFrB,IAAAC,EAAA;AAGN,SAAK,WAAWD;AAAA,EAClB;AAAA,EACA,MAAM,eAAwB;AAAA,IAC5B,YAAAE;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,GACsB;AACtB,UAAMC,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,eAAeH,CAAU,IAAIC,CAAQ,iBAAiBC,CAAS;AAAA,IAAA,CACrE;AAEM,WAAA,KAAK,eAA+BC,CAAM;AAAA,EACnD;AAAA,EAEA,MAAM,eAAe;AAAA,IACnB,UAAAF;AAAA,IACA,YAAAD;AAAA,IACA,WAAAE;AAAA,IACA,MAAAE;AAAA,EAAA,GACsB;AACtB,UAAMD,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,cAAcH,CAAU,IAAIC,CAAQ,iBAAiBC,CAAS;AAAA,MACnE,MAAM,EAAE,MAAAE,EAAK;AAAA,IAAA,CACd;AAEM,WAAA,KAAK,eAAeD,CAAM;AAAA,EACnC;AAAA,EAEQ,eAAkBE,GAAuB;AAC3C,QAAAA,EAAS,eAAe;AAC1B,YAAM,IAAI,MAAMA,EAAS,SAASA,EAAS,IAAI;AAGjD,WAAOA,EAAS;AAAA,EAClB;AACF;"}
@@ -116,4 +116,4 @@ class p {
116
116
  export {
117
117
  p as default
118
118
  };
119
- //# sourceMappingURL=index.js.map
119
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/clients/preferences/index.ts"],"sourcesContent":["import { ChannelType } from \"@knocklabs/types\";\nimport { ApiResponse } from \"../../api\";\nimport Knock from \"../../knock\";\nimport {\n ChannelTypePreferences,\n PreferenceOptions,\n SetPreferencesProperties,\n WorkflowPreferenceSetting,\n WorkflowPreferences,\n PreferenceSet,\n} from \"./interfaces\";\n\nconst DEFAULT_PREFERENCE_SET_ID = \"default\";\n\nfunction buildUpdateParam(param: WorkflowPreferenceSetting) {\n if (typeof param === \"object\") {\n return param;\n }\n\n return { subscribed: param };\n}\n\nclass Preferences {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n /**\n * @deprecated Use `user.getAllPreferences()` instead\n */\n async getAll() {\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/users/${this.instance.userId}/preferences`,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.getPreferences()` instead\n */\n async get(options: PreferenceOptions = {}) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async set(\n preferenceSet: SetPreferencesProperties,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n data: preferenceSet,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async setChannelTypes(\n channelTypePreferences: ChannelTypePreferences,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/channel_types`,\n data: channelTypePreferences,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async setChannelType(\n channelType: ChannelType,\n setting: boolean,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/channel_types/${channelType}`,\n data: { subscribed: setting },\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async setWorkflows(\n workflowPreferences: WorkflowPreferences,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/workflows`,\n data: workflowPreferences,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async setWorkflow(\n workflowKey: string,\n setting: WorkflowPreferenceSetting,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n const params = buildUpdateParam(setting);\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/workflows/${workflowKey}`,\n data: params,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async setCategories(\n categoryPreferences: WorkflowPreferences,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/categories`,\n data: categoryPreferences,\n });\n\n return this.handleResponse(result);\n }\n\n /**\n * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n */\n async setCategory(\n categoryKey: string,\n setting: WorkflowPreferenceSetting,\n options: PreferenceOptions = {},\n ) {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n const params = buildUpdateParam(setting);\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/categories/${categoryKey}`,\n data: params,\n });\n\n return this.handleResponse(result);\n }\n\n private handleResponse(response: ApiResponse) {\n if (response.statusCode === \"error\") {\n throw new Error(response.error || response.body);\n }\n\n return response.body as PreferenceSet;\n }\n}\n\nexport default Preferences;\n"],"names":["DEFAULT_PREFERENCE_SET_ID","buildUpdateParam","param","Preferences","instance","__publicField","result","options","preferenceSetId","preferenceSet","channelTypePreferences","channelType","setting","workflowPreferences","workflowKey","params","categoryPreferences","categoryKey","response"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ var i = Object.defineProperty;
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);
4
+ const a = "$tenants";
5
+ class u {
6
+ constructor(e) {
7
+ r(this, "instance");
8
+ this.instance = e;
9
+ }
10
+ async authCheck({ tenant: e, knockChannelId: t }) {
11
+ const s = await this.instance.client().makeRequest({
12
+ method: "GET",
13
+ url: `/v1/providers/slack/${t}/auth_check`,
14
+ params: {
15
+ access_token_object: {
16
+ object_id: e,
17
+ collection: a
18
+ },
19
+ channel_id: t
20
+ }
21
+ });
22
+ return this.handleResponse(s);
23
+ }
24
+ async getChannels(e) {
25
+ const { knockChannelId: t, tenant: s } = e, n = e.queryOptions || {}, o = await this.instance.client().makeRequest({
26
+ method: "GET",
27
+ url: `/v1/providers/slack/${t}/channels`,
28
+ params: {
29
+ access_token_object: {
30
+ object_id: s,
31
+ collection: a
32
+ },
33
+ channel_id: t,
34
+ query_options: {
35
+ cursor: n.cursor,
36
+ limit: n.limit,
37
+ exclude_archived: n.excludeArchived,
38
+ team_id: n.teamId,
39
+ types: n.types
40
+ }
41
+ }
42
+ });
43
+ return this.handleResponse(o);
44
+ }
45
+ async revokeAccessToken({ tenant: e, knockChannelId: t }) {
46
+ const s = await this.instance.client().makeRequest({
47
+ method: "PUT",
48
+ url: `/v1/providers/slack/${t}/revoke_access`,
49
+ params: {
50
+ access_token_object: {
51
+ object_id: e,
52
+ collection: a
53
+ },
54
+ channel_id: t
55
+ }
56
+ });
57
+ return this.handleResponse(s);
58
+ }
59
+ handleResponse(e) {
60
+ var t, s;
61
+ if (e.statusCode === "error") {
62
+ if (((s = (t = e.error) == null ? void 0 : t.response) == null ? void 0 : s.status) < 500)
63
+ return e.error || e.body;
64
+ throw new Error(e.error || e.body);
65
+ }
66
+ return e.body;
67
+ }
68
+ }
69
+ export {
70
+ u as default
71
+ };
72
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/clients/slack/index.ts"],"sourcesContent":["import { ApiResponse } from \"../../api\";\nimport Knock from \"../../knock\";\n\nimport {\n AuthCheckInput,\n GetSlackChannelsInput,\n RevokeAccessTokenInput,\n} from \"./interfaces\";\n\nconst TENANT_COLLECTION = \"$tenants\";\n\nclass SlackClient {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n async authCheck({ tenant, knockChannelId }: AuthCheckInput) {\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/providers/slack/${knockChannelId}/auth_check`,\n params: {\n access_token_object: {\n object_id: tenant,\n collection: TENANT_COLLECTION,\n },\n channel_id: knockChannelId,\n },\n });\n\n return this.handleResponse(result);\n }\n\n async getChannels(input: GetSlackChannelsInput) {\n const { knockChannelId, tenant } = input;\n const queryOptions = input.queryOptions || {};\n\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/providers/slack/${knockChannelId}/channels`,\n params: {\n access_token_object: {\n object_id: tenant,\n collection: TENANT_COLLECTION,\n },\n channel_id: knockChannelId,\n query_options: {\n cursor: queryOptions.cursor,\n limit: queryOptions.limit,\n exclude_archived: queryOptions.excludeArchived,\n team_id: queryOptions.teamId,\n types: queryOptions.types,\n },\n },\n });\n\n return this.handleResponse(result);\n }\n\n async revokeAccessToken({ tenant, knockChannelId }: RevokeAccessTokenInput) {\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/providers/slack/${knockChannelId}/revoke_access`,\n params: {\n access_token_object: {\n object_id: tenant,\n collection: TENANT_COLLECTION,\n },\n channel_id: knockChannelId,\n },\n });\n\n return this.handleResponse(result);\n }\n\n private handleResponse(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;\n }\n}\n\nexport default SlackClient;\n"],"names":["TENANT_COLLECTION","SlackClient","instance","__publicField","tenant","knockChannelId","result","input","queryOptions","response","_a","_b"],"mappings":";;;AASA,MAAMA,IAAoB;AAE1B,MAAMC,EAAY;AAAA,EAGhB,YAAYC,GAAiB;AAFrB,IAAAC,EAAA;AAGN,SAAK,WAAWD;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,EAAE,QAAAE,GAAQ,gBAAAC,KAAkC;AAC1D,UAAMC,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,uBAAuBD,CAAc;AAAA,MAC1C,QAAQ;AAAA,QACN,qBAAqB;AAAA,UACnB,WAAWD;AAAA,UACX,YAAYJ;AAAA,QACd;AAAA,QACA,YAAYK;AAAA,MACd;AAAA,IAAA,CACD;AAEM,WAAA,KAAK,eAAeC,CAAM;AAAA,EACnC;AAAA,EAEA,MAAM,YAAYC,GAA8B;AACxC,UAAA,EAAE,gBAAAF,GAAgB,QAAAD,EAAW,IAAAG,GAC7BC,IAAeD,EAAM,gBAAgB,IAErCD,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,uBAAuBD,CAAc;AAAA,MAC1C,QAAQ;AAAA,QACN,qBAAqB;AAAA,UACnB,WAAWD;AAAA,UACX,YAAYJ;AAAA,QACd;AAAA,QACA,YAAYK;AAAA,QACZ,eAAe;AAAA,UACb,QAAQG,EAAa;AAAA,UACrB,OAAOA,EAAa;AAAA,UACpB,kBAAkBA,EAAa;AAAA,UAC/B,SAASA,EAAa;AAAA,UACtB,OAAOA,EAAa;AAAA,QACtB;AAAA,MACF;AAAA,IAAA,CACD;AAEM,WAAA,KAAK,eAAeF,CAAM;AAAA,EACnC;AAAA,EAEA,MAAM,kBAAkB,EAAE,QAAAF,GAAQ,gBAAAC,KAA0C;AAC1E,UAAMC,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,uBAAuBD,CAAc;AAAA,MAC1C,QAAQ;AAAA,QACN,qBAAqB;AAAA,UACnB,WAAWD;AAAA,UACX,YAAYJ;AAAA,QACd;AAAA,QACA,YAAYK;AAAA,MACd;AAAA,IAAA,CACD;AAEM,WAAA,KAAK,eAAeC,CAAM;AAAA,EACnC;AAAA,EAEQ,eAAeG,GAAuB;AAnEhD,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;"}
@@ -57,4 +57,4 @@ class l {
57
57
  export {
58
58
  l as default
59
59
  };
60
- //# sourceMappingURL=index.js.map
60
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/clients/users/index.ts"],"sourcesContent":["import { ApiResponse } from \"../../api\";\nimport { ChannelData } from \"../../interfaces\";\nimport Knock from \"../../knock\";\nimport {\n GetPreferencesOptions,\n PreferenceOptions,\n PreferenceSet,\n SetPreferencesProperties,\n} from \"../preferences/interfaces\";\nimport { GetChannelDataInput, SetChannelDataInput } from \"./interfaces\";\n\nconst DEFAULT_PREFERENCE_SET_ID = \"default\";\n\nclass UserClient {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n async getAllPreferences() {\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/users/${this.instance.userId}/preferences`,\n });\n\n return this.handleResponse<PreferenceSet[]>(result);\n }\n\n async getPreferences(\n options: GetPreferencesOptions = {},\n ): Promise<PreferenceSet> {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n params: { tenant: options.tenant },\n });\n\n return this.handleResponse<PreferenceSet>(result);\n }\n\n async setPreferences(\n preferenceSet: SetPreferencesProperties,\n options: PreferenceOptions = {},\n ): Promise<PreferenceSet> {\n const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n data: preferenceSet,\n });\n\n return this.handleResponse<PreferenceSet>(result);\n }\n\n async getChannelData<T = any>(params: GetChannelDataInput) {\n const result = await this.instance.client().makeRequest({\n method: \"GET\",\n url: `/v1/users/${this.instance.userId}/channel_data/${params.channelId}`,\n });\n\n return this.handleResponse<ChannelData<T>>(result);\n }\n\n async setChannelData<T = any>({\n channelId,\n channelData,\n }: SetChannelDataInput) {\n const result = await this.instance.client().makeRequest({\n method: \"PUT\",\n url: `/v1/users/${this.instance.userId}/channel_data/${channelId}`,\n data: { data: channelData },\n });\n\n return this.handleResponse<ChannelData<T>>(result);\n }\n\n private handleResponse<T>(response: ApiResponse) {\n if (response.statusCode === \"error\") {\n throw new Error(response.error || response.body);\n }\n\n return response.body as T;\n }\n}\n\nexport default UserClient;\n"],"names":["DEFAULT_PREFERENCE_SET_ID","UserClient","instance","__publicField","result","options","preferenceSetId","preferenceSet","params","channelId","channelData","response"],"mappings":";;;AAWA,MAAMA,IAA4B;AAElC,MAAMC,EAAW;AAAA,EAGf,YAAYC,GAAiB;AAFrB,IAAAC,EAAA;AAGN,SAAK,WAAWD;AAAA,EAClB;AAAA,EAEA,MAAM,oBAAoB;AACxB,UAAME,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,aAAa,KAAK,SAAS,MAAM;AAAA,IAAA,CACvC;AAEM,WAAA,KAAK,eAAgCA,CAAM;AAAA,EACpD;AAAA,EAEA,MAAM,eACJC,IAAiC,IACT;AAClB,UAAAC,IAAkBD,EAAQ,iBAAiBL,GAE3CI,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,aAAa,KAAK,SAAS,MAAM,gBAAgBE,CAAe;AAAA,MACrE,QAAQ,EAAE,QAAQD,EAAQ,OAAO;AAAA,IAAA,CAClC;AAEM,WAAA,KAAK,eAA8BD,CAAM;AAAA,EAClD;AAAA,EAEA,MAAM,eACJG,GACAF,IAA6B,IACL;AAClB,UAAAC,IAAkBD,EAAQ,iBAAiBL,GAE3CI,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,aAAa,KAAK,SAAS,MAAM,gBAAgBE,CAAe;AAAA,MACrE,MAAMC;AAAA,IAAA,CACP;AAEM,WAAA,KAAK,eAA8BH,CAAM;AAAA,EAClD;AAAA,EAEA,MAAM,eAAwBI,GAA6B;AACzD,UAAMJ,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,aAAa,KAAK,SAAS,MAAM,iBAAiBI,EAAO,SAAS;AAAA,IAAA,CACxE;AAEM,WAAA,KAAK,eAA+BJ,CAAM;AAAA,EACnD;AAAA,EAEA,MAAM,eAAwB;AAAA,IAC5B,WAAAK;AAAA,IACA,aAAAC;AAAA,EAAA,GACsB;AACtB,UAAMN,IAAS,MAAM,KAAK,SAAS,OAAA,EAAS,YAAY;AAAA,MACtD,QAAQ;AAAA,MACR,KAAK,aAAa,KAAK,SAAS,MAAM,iBAAiBK,CAAS;AAAA,MAChE,MAAM,EAAE,MAAMC,EAAY;AAAA,IAAA,CAC3B;AAEM,WAAA,KAAK,eAA+BN,CAAM;AAAA,EACnD;AAAA,EAEQ,eAAkBO,GAAuB;AAC3C,QAAAA,EAAS,eAAe;AAC1B,YAAM,IAAI,MAAMA,EAAS,SAASA,EAAS,IAAI;AAGjD,WAAOA,EAAS;AAAA,EAClB;AACF;"}
@@ -0,0 +1,14 @@
1
+ import { default as f } from "./clients/feed/index.mjs";
2
+ import t from "./knock.mjs";
3
+ import { TENANT_OBJECT_COLLECTION as m } from "./clients/objects/constants.mjs";
4
+ import { NetworkStatus as s, isRequestInFlight as d } from "./networkStatus.mjs";
5
+ import { default as u } from "./clients/feed/feed.mjs";
6
+ export {
7
+ u as Feed,
8
+ f as FeedClient,
9
+ s as NetworkStatus,
10
+ m as TENANT_OBJECT_COLLECTION,
11
+ t as default,
12
+ d as isRequestInFlight
13
+ };
14
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -2,12 +2,14 @@ var c = Object.defineProperty;
2
2
  var l = (s, e, t) => e in s ? c(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
3
  var i = (s, e, t) => (l(s, typeof e != "symbol" ? e + "" : e, t), t);
4
4
  import { jwtDecode as u } from "jwt-decode";
5
- import p from "./api.js";
6
- import k from "./clients/feed/index.js";
7
- import d from "./clients/preferences/index.js";
8
- import f from "./clients/users/index.js";
9
- const T = "https://api.knock.app";
10
- class x {
5
+ import p from "./api.mjs";
6
+ import k from "./clients/feed/index.mjs";
7
+ import f from "./clients/objects/index.mjs";
8
+ import d from "./clients/preferences/index.mjs";
9
+ import m from "./clients/slack/index.mjs";
10
+ import T from "./clients/users/index.mjs";
11
+ const w = "https://api.knock.app";
12
+ class b {
11
13
  constructor(e, t = {}) {
12
14
  i(this, "host");
13
15
  i(this, "apiClient", null);
@@ -16,9 +18,11 @@ class x {
16
18
  i(this, "logLevel");
17
19
  i(this, "tokenExpirationTimer", null);
18
20
  i(this, "feeds", new k(this));
21
+ i(this, "objects", new f(this));
19
22
  i(this, "preferences", new d(this));
20
- i(this, "user", new f(this));
21
- if (this.apiKey = e, this.host = t.host || T, this.logLevel = t.logLevel, this.log("Initialized Knock instance"), this.apiKey && this.apiKey.startsWith("sk_"))
23
+ i(this, "slack", new m(this));
24
+ i(this, "user", new T(this));
25
+ if (this.apiKey = e, this.host = t.host || w, this.logLevel = t.logLevel, this.log("Initialized Knock instance"), this.apiKey && this.apiKey.startsWith("sk_"))
22
26
  throw new Error(
23
27
  "[Knock] You are using your secret API key on the client. Please use the public key."
24
28
  );
@@ -37,11 +41,11 @@ class x {
37
41
  the userToken must be specified.
38
42
  */
39
43
  authenticate(e, t, n) {
40
- let r = !1;
41
- 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 && (n == null ? void 0 : n.onUserTokenExpiring) instanceof Function && this.maybeScheduleUserTokenExpiration(
44
+ let o = !1;
45
+ this.apiClient && (this.userId !== e || this.userToken !== t) && (this.log("userId or userToken changed; reinitializing connections"), this.feeds.teardownInstances(), this.teardown(), o = !0), this.userId = e, this.userToken = t, this.log(`Authenticated with userId ${e}`), this.userToken && (n == null ? void 0 : n.onUserTokenExpiring) instanceof Function && this.maybeScheduleUserTokenExpiration(
42
46
  n.onUserTokenExpiring,
43
47
  n.timeBeforeExpirationInMs
44
- ), r && (this.apiClient = this.createApiClient(), this.feeds.reinitializeInstances(), this.log("Reinitialized real-time connections"));
48
+ ), o && (this.apiClient = this.createApiClient(), this.feeds.reinitializeInstances(), this.log("Reinitialized real-time connections"));
45
49
  }
46
50
  /*
47
51
  Returns whether or this Knock instance is authenticated. Passing `true` will check the presence
@@ -71,9 +75,9 @@ class x {
71
75
  async maybeScheduleUserTokenExpiration(e, t = 3e4) {
72
76
  if (!this.userToken)
73
77
  return;
74
- const n = u(this.userToken), r = (n.exp ?? 0) * 1e3, o = Date.now();
75
- if (r && r > o) {
76
- const h = r - t - o;
78
+ const n = u(this.userToken), o = (n.exp ?? 0) * 1e3, r = Date.now();
79
+ if (o && o > r) {
80
+ const h = o - t - r;
77
81
  this.tokenExpirationTimer = setTimeout(async () => {
78
82
  const a = await e(this.userToken, n);
79
83
  typeof a == "string" && this.authenticate(this.userId, a, {
@@ -85,6 +89,6 @@ class x {
85
89
  }
86
90
  }
87
91
  export {
88
- x as default
92
+ b as default
89
93
  };
90
- //# sourceMappingURL=knock.js.map
94
+ //# 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 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\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","userId","userToken","reinitializeApi","checkUserToken","_a","message","ApiClient","callbackFn","timeBeforeExpirationInMs","decoded","jwtDecode","expiresAtMs","nowMs","msInFuture","newToken"],"mappings":"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"}
@@ -12,4 +12,4 @@ export {
12
12
  e as NetworkStatus,
13
13
  n as isRequestInFlight
14
14
  };
15
- //# sourceMappingURL=networkStatus.js.map
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,EAAA;AAEJ;"}
@@ -1 +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"}
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;IAiC/B,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBhE,OAAO,CAAC,eAAe;CAuBxB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const TENANT_OBJECT_COLLECTION = "$tenants";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/clients/objects/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,aAAa,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { ChannelData } from "../../interfaces";
2
+ import Knock from "../../knock";
3
+ type GetChannelDataInput = {
4
+ objectId: string;
5
+ collection: string;
6
+ channelId: string;
7
+ };
8
+ type SetChannelDataInput = {
9
+ objectId: string;
10
+ collection: string;
11
+ channelId: string;
12
+ data: any;
13
+ };
14
+ declare class ObjectClient {
15
+ private instance;
16
+ constructor(instance: Knock);
17
+ getChannelData<T = any>({ collection, objectId, channelId, }: GetChannelDataInput): Promise<ChannelData<T>>;
18
+ setChannelData({ objectId, collection, channelId, data, }: SetChannelDataInput): Promise<unknown>;
19
+ private handleResponse;
20
+ }
21
+ export default ObjectClient;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/objects/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,KAAK;IAGrB,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,EAC5B,UAAU,EACV,QAAQ,EACR,SAAS,GACV,EAAE,mBAAmB;IAShB,cAAc,CAAC,EACnB,QAAQ,EACR,UAAU,EACV,SAAS,EACT,IAAI,GACL,EAAE,mBAAmB;IAUtB,OAAO,CAAC,cAAc;CAOvB;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import Knock from "../../knock";
2
+ import { AuthCheckInput, GetSlackChannelsInput, RevokeAccessTokenInput } from "./interfaces";
3
+ declare class SlackClient {
4
+ private instance;
5
+ constructor(instance: Knock);
6
+ authCheck({ tenant, knockChannelId }: AuthCheckInput): Promise<any>;
7
+ getChannels(input: GetSlackChannelsInput): Promise<any>;
8
+ revokeAccessToken({ tenant, knockChannelId }: RevokeAccessTokenInput): Promise<any>;
9
+ private handleResponse;
10
+ }
11
+ export default SlackClient;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/slack/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AAItB,cAAM,WAAW;IACf,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,KAAK;IAIrB,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,cAAc;IAgBpD,WAAW,CAAC,KAAK,EAAE,qBAAqB;IA0BxC,iBAAiB,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,sBAAsB;IAgB1E,OAAO,CAAC,cAAc;CAUvB;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,33 @@
1
+ export type SlackChannelConnection = {
2
+ access_token?: string;
3
+ channel_id?: string;
4
+ incoming_webhook?: string;
5
+ user_id?: null;
6
+ };
7
+ export type GetSlackChannelsInput = {
8
+ tenant: string;
9
+ knockChannelId: string;
10
+ queryOptions?: {
11
+ limit?: number;
12
+ cursor?: string;
13
+ excludeArchived?: boolean;
14
+ teamId?: string;
15
+ types?: string;
16
+ };
17
+ };
18
+ export type AuthCheckInput = {
19
+ tenant: string;
20
+ knockChannelId: string;
21
+ };
22
+ export type RevokeAccessTokenInput = {
23
+ tenant: string;
24
+ knockChannelId: string;
25
+ };
26
+ export type SlackChannel = {
27
+ name: string;
28
+ id: string;
29
+ is_private: boolean;
30
+ is_im: boolean;
31
+ context_team_id: boolean;
32
+ };
33
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/clients/slack/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC"}
@@ -3,7 +3,11 @@ import Knock from "./knock";
3
3
  export * from "./interfaces";
4
4
  export * from "./clients/feed/types";
5
5
  export * from "./clients/feed/interfaces";
6
+ export * from "./clients/objects";
7
+ export * from "./clients/objects/constants";
6
8
  export * from "./clients/preferences/interfaces";
9
+ export * from "./clients/slack";
10
+ export * from "./clients/slack/interfaces";
7
11
  export * from "./clients/users";
8
12
  export * from "./networkStatus";
9
13
  export default Knock;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC"}
@@ -1,18 +1,22 @@
1
1
  import ApiClient from "./api";
2
2
  import FeedClient from "./clients/feed";
3
+ import ObjectClient from "./clients/objects";
3
4
  import Preferences from "./clients/preferences";
5
+ import SlackClient from "./clients/slack";
4
6
  import UserClient from "./clients/users";
5
7
  import { AuthenticateOptions, KnockOptions, LogLevel } from "./interfaces";
6
8
  declare class Knock {
7
9
  readonly apiKey: string;
8
- private host;
10
+ host: string;
9
11
  private apiClient;
10
12
  userId: string | undefined;
11
13
  userToken?: string;
12
14
  logLevel?: LogLevel;
13
15
  private tokenExpirationTimer;
14
16
  readonly feeds: FeedClient;
17
+ readonly objects: ObjectClient;
15
18
  readonly preferences: Preferences;
19
+ readonly slack: SlackClient;
16
20
  readonly user: UserClient;
17
21
  constructor(apiKey: string, options?: KnockOptions);
18
22
  client(): ApiClient;
@@ -1 +1 @@
1
- {"version":3,"file":"knock.d.ts","sourceRoot":"","sources":["../../src/knock.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,OAAO,CAAC;AAC9B,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EAET,MAAM,cAAc,CAAC;AAItB,cAAM,KAAK;IAYP,QAAQ,CAAC,MAAM,EAAE,MAAM;IAXzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAA0B;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC3B,OAAO,CAAC,oBAAoB,CAA8C;IAC1E,QAAQ,CAAC,KAAK,aAAwB;IACtC,QAAQ,CAAC,WAAW,cAAyB;IAC7C,QAAQ,CAAC,IAAI,aAAwB;gBAG1B,MAAM,EAAE,MAAM,EACvB,OAAO,GAAE,YAAiB;IAe5B,MAAM;IAuBN,YAAY,CACV,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,mBAAmB;IA6C/B,eAAe,CAAC,cAAc,UAAQ;IAKtC,QAAQ;IASR,GAAG,CAAC,OAAO,EAAE,MAAM;IAMnB;;OAEG;IACH,OAAO,CAAC,eAAe;YAQT,gCAAgC;CA8B/C;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"knock.d.ts","sourceRoot":"","sources":["../../src/knock.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,OAAO,CAAC;AAC9B,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EAET,MAAM,cAAc,CAAC;AAItB,cAAM,KAAK;IAcP,QAAQ,CAAC,MAAM,EAAE,MAAM;IAblB,IAAI,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,SAAS,CAA0B;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC3B,OAAO,CAAC,oBAAoB,CAA8C;IAC1E,QAAQ,CAAC,KAAK,aAAwB;IACtC,QAAQ,CAAC,OAAO,eAA0B;IAC1C,QAAQ,CAAC,WAAW,cAAyB;IAC7C,QAAQ,CAAC,KAAK,cAAyB;IACvC,QAAQ,CAAC,IAAI,aAAwB;gBAG1B,MAAM,EAAE,MAAM,EACvB,OAAO,GAAE,YAAiB;IAe5B,MAAM;IAuBN,YAAY,CACV,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,mBAAmB;IA6C/B,eAAe,CAAC,cAAc,UAAQ;IAKtC,QAAQ;IASR,GAAG,CAAC,OAAO,EAAE,MAAM;IAMnB;;OAEG;IACH,OAAO,CAAC,eAAe;YAQT,gCAAgC;CA8B/C;AAED,eAAe,KAAK,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@knocklabs/client",
3
- "version": "0.8.20",
3
+ "version": "0.9.0",
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",
7
7
  "license": "MIT",
8
8
  "main": "dist/cjs/index.js",
9
- "module": "dist/esm/index.js",
9
+ "module": "dist/esm/index.mjs",
10
10
  "types": "dist/types/index.d.ts",
11
11
  "typings": "dist/types/index.d.ts",
12
12
  "exports": {
13
13
  ".": {
14
14
  "require": "./dist/cjs/index.js",
15
+ "import": "./dist/esm/index.mjs",
15
16
  "types": "./dist/types/index.d.ts",
16
- "default": "./dist/esm/index.js"
17
+ "default": "./dist/esm/index.mjs"
17
18
  }
18
19
  },
19
20
  "files": [
@@ -39,8 +40,8 @@
39
40
  "type-check": "tsc --noEmit",
40
41
  "type-check:watch": "npm run type-check -- --watch",
41
42
  "build": "yarn clean && yarn build:cjs && yarn build:esm",
42
- "build:esm": "BUILD_TARGET=esm; tsc && vite build",
43
- "build:cjs": "BUILD_TARGET=cjs; tsc && vite build",
43
+ "build:esm": "BUILD_TARGET=esm; vite build",
44
+ "build:cjs": "BUILD_TARGET=cjs; vite build",
44
45
  "prepublishOnly": "npm run build"
45
46
  },
46
47
  "devDependencies": {
package/dist/api.d.ts DELETED
@@ -1,25 +0,0 @@
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
package/dist/api.d.ts.map DELETED
@@ -1 +0,0 @@
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"}