@knocklabs/client 0.8.13 → 0.8.15
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.
- package/README.md +27 -0
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/clients/users/index.js +112 -0
- package/dist/cjs/clients/users/index.js.map +1 -0
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/knock.js +3 -0
- package/dist/cjs/knock.js.map +1 -1
- package/dist/esm/api.js.map +1 -1
- package/dist/esm/clients/users/index.js +53 -0
- package/dist/esm/clients/users/index.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/knock.js +3 -0
- package/dist/esm/knock.js.map +1 -1
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/clients/users/index.d.ts +17 -0
- package/dist/types/clients/users/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/knock.d.ts +2 -0
- package/dist/types/knock.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -182,3 +182,30 @@ await knockClient.preferences.setWorkflow("dinosaurs-loose", {
|
|
|
182
182
|
},
|
|
183
183
|
});
|
|
184
184
|
```
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
### Managing the current user's channel data
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// Get user channel data
|
|
191
|
+
await knockClient.user.getChannelData({
|
|
192
|
+
userId: "user-id",
|
|
193
|
+
channelId: "channel-id"
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
// Set push channel data for a user
|
|
199
|
+
await knockClient.user.setChannelData({
|
|
200
|
+
userId: "user-id",
|
|
201
|
+
channelId: "channel-id",
|
|
202
|
+
channelData: {
|
|
203
|
+
tokens: [
|
|
204
|
+
"apns-user-push-token"
|
|
205
|
+
]
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
See provider requirements for setting channel data [here]("https://docs.knock.app/managing-recipients/setting-channel-data#provider-data-requirements").
|
|
211
|
+
|
package/dist/cjs/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api.ts"],"names":["ApiClient","options","host","apiKey","userToken","axiosClient","axios","create","baseURL","headers","Accept","Authorization","window","socket","Socket","replace","params","user_token","api_key","retries","retryCondition","canRetryRequest","retryDelay","axiosRetry","exponentialDelay","req","result","statusCode","status","body","data","error","undefined","console","isNetworkError","response"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;IAkBMA,S;AAQJ,qBAAYC,OAAZ,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrC,SAAKC,IAAL,GAAYD,OAAO,CAACC,IAApB;AACA,SAAKC,MAAL,GAAcF,OAAO,CAACE,MAAtB;AACA,SAAKC,SAAL,GAAiBH,OAAO,CAACG,SAAR,IAAqB,IAAtC,CAHqC,CAKrC;;AACA,SAAKC,WAAL,GAAmBC,kBAAMC,MAAN,CAAa;AAC9BC,MAAAA,OAAO,EAAE,KAAKN,IADgB;AAE9BO,MAAAA,OAAO,EAAE;AACPC,QAAAA,MAAM,EAAE,kBADD;AAEP,wBAAgB,kBAFT;AAGPC,QAAAA,aAAa,mBAAY,KAAKR,MAAjB,CAHN;AAIP,8BAAsB,KAAKC;AAJpB;AAFqB,KAAb,CAAnB;;AAUA,QAAI,OAAOQ,MAAP,KAAkB,WAAtB,EAAmC;AACjC,WAAKC,MAAL,GAAc,IAAIC,eAAJ,WAAc,KAAKZ,IAAL,CAAUa,OAAV,CAAkB,MAAlB,EAA0B,IAA1B,CAAd,aAAuD;AACnEC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKb,SADX;AAENc,UAAAA,OAAO,EAAE,KAAKf;AAFR;AAD2D,OAAvD,CAAd;AAMD;;AAED,gCAAW,KAAKE,WAAhB,EAA6B;AAC3Bc,MAAAA,OAAO,EAAE,CADkB;AAE3BC,MAAAA,cAAc,EAAE,KAAKC,eAFM;AAG3BC,MAAAA,UAAU,EAAEC,uBAAWC;AAHI,KAA7B;AAKD;;;;;uGAED,iBAAkBC,GAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEyB,KAAKpB,WAAL,CAAiBoB,GAAjB,CAFzB;;AAAA;AAEUC,gBAAAA,MAFV;AAAA,iDAIW;AACLC,kBAAAA,UAAU,EAAED,MAAM,CAACE,MAAP,GAAgB,GAAhB,GAAsB,IAAtB,GAA6B,OADpC;AAELC,kBAAAA,IAAI,EAAEH,MAAM,CAACI,IAFR;AAGLC,kBAAAA,KAAK,EAAEC,SAHF;AAILJ,kBAAAA,MAAM,EAAEF,MAAM,CAACE;AAJV,iBAJX;;AAAA;AAAA;AAAA;AAaIK,gBAAAA,OAAO,CAACF,KAAR;AAbJ,iDAeW;AACLJ,kBAAAA,UAAU,EAAE,OADP;AAELC,kBAAAA,MAAM,EAAE,GAFH;AAGLC,kBAAAA,IAAI,EAAEG,SAHD;AAILD,kBAAAA,KAAK;AAJA,iBAfX;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAwBA,yBAAwBA,KAAxB,EAA2C;AACzC;AACA,UAAIR,uBAAWW,cAAX,CAA0BH,KAA1B,CAAJ,EAAsC;AACpC,eAAO,IAAP;AACD;;AAED,UAAI,CAACA,KAAK,CAACI,QAAX,EAAqB;AACnB;AACA,eAAO,KAAP;AACD,OATwC,CAWzC;;;AACA,UAAIJ,KAAK,CAACI,QAAN,CAAeP,MAAf,IAAyB,GAAzB,IAAgCG,KAAK,CAACI,QAAN,CAAeP,MAAf,IAAyB,GAA7D,EAAkE;AAChE,eAAO,IAAP;AACD,OAdwC,CAgBzC;;;AACA,UAAIG,KAAK,CAACI,QAAN,CAAeP,MAAf,KAA0B,GAA9B,EAAmC;AACjC,eAAO,IAAP;AACD;;AAED,aAAO,KAAP;AACD;;;;;eAGY5B,S","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport axiosRetry from \"axios-retry\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/api.ts"],"names":["ApiClient","options","host","apiKey","userToken","axiosClient","axios","create","baseURL","headers","Accept","Authorization","window","socket","Socket","replace","params","user_token","api_key","retries","retryCondition","canRetryRequest","retryDelay","axiosRetry","exponentialDelay","req","result","statusCode","status","body","data","error","undefined","console","isNetworkError","response"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;IAkBMA,S;AAQJ,qBAAYC,OAAZ,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACrC,SAAKC,IAAL,GAAYD,OAAO,CAACC,IAApB;AACA,SAAKC,MAAL,GAAcF,OAAO,CAACE,MAAtB;AACA,SAAKC,SAAL,GAAiBH,OAAO,CAACG,SAAR,IAAqB,IAAtC,CAHqC,CAKrC;;AACA,SAAKC,WAAL,GAAmBC,kBAAMC,MAAN,CAAa;AAC9BC,MAAAA,OAAO,EAAE,KAAKN,IADgB;AAE9BO,MAAAA,OAAO,EAAE;AACPC,QAAAA,MAAM,EAAE,kBADD;AAEP,wBAAgB,kBAFT;AAGPC,QAAAA,aAAa,mBAAY,KAAKR,MAAjB,CAHN;AAIP,8BAAsB,KAAKC;AAJpB;AAFqB,KAAb,CAAnB;;AAUA,QAAI,OAAOQ,MAAP,KAAkB,WAAtB,EAAmC;AACjC,WAAKC,MAAL,GAAc,IAAIC,eAAJ,WAAc,KAAKZ,IAAL,CAAUa,OAAV,CAAkB,MAAlB,EAA0B,IAA1B,CAAd,aAAuD;AACnEC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKb,SADX;AAENc,UAAAA,OAAO,EAAE,KAAKf;AAFR;AAD2D,OAAvD,CAAd;AAMD;;AAED,gCAAW,KAAKE,WAAhB,EAA6B;AAC3Bc,MAAAA,OAAO,EAAE,CADkB;AAE3BC,MAAAA,cAAc,EAAE,KAAKC,eAFM;AAG3BC,MAAAA,UAAU,EAAEC,uBAAWC;AAHI,KAA7B;AAKD;;;;;uGAED,iBAAkBC,GAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEyB,KAAKpB,WAAL,CAAiBoB,GAAjB,CAFzB;;AAAA;AAEUC,gBAAAA,MAFV;AAAA,iDAIW;AACLC,kBAAAA,UAAU,EAAED,MAAM,CAACE,MAAP,GAAgB,GAAhB,GAAsB,IAAtB,GAA6B,OADpC;AAELC,kBAAAA,IAAI,EAAEH,MAAM,CAACI,IAFR;AAGLC,kBAAAA,KAAK,EAAEC,SAHF;AAILJ,kBAAAA,MAAM,EAAEF,MAAM,CAACE;AAJV,iBAJX;;AAAA;AAAA;AAAA;AAaIK,gBAAAA,OAAO,CAACF,KAAR;AAbJ,iDAeW;AACLJ,kBAAAA,UAAU,EAAE,OADP;AAELC,kBAAAA,MAAM,EAAE,GAFH;AAGLC,kBAAAA,IAAI,EAAEG,SAHD;AAILD,kBAAAA,KAAK;AAJA,iBAfX;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAwBA,yBAAwBA,KAAxB,EAA2C;AACzC;AACA,UAAIR,uBAAWW,cAAX,CAA0BH,KAA1B,CAAJ,EAAsC;AACpC,eAAO,IAAP;AACD;;AAED,UAAI,CAACA,KAAK,CAACI,QAAX,EAAqB;AACnB;AACA,eAAO,KAAP;AACD,OATwC,CAWzC;;;AACA,UAAIJ,KAAK,CAACI,QAAN,CAAeP,MAAf,IAAyB,GAAzB,IAAgCG,KAAK,CAACI,QAAN,CAAeP,MAAf,IAAyB,GAA7D,EAAkE;AAChE,eAAO,IAAP;AACD,OAdwC,CAgBzC;;;AACA,UAAIG,KAAK,CAACI,QAAN,CAAeP,MAAf,KAA0B,GAA9B,EAAmC;AACjC,eAAO,IAAP;AACD;;AAED,aAAO,KAAP;AACD;;;;;eAGY5B,S","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport axiosRetry from \"axios-retry\";\nimport { Socket } from \"phoenix\";\nimport { AxiosError } from \"axios\";\n\ntype ApiClientOptions = {\n host: string;\n apiKey: string;\n userToken: string | undefined;\n};\n\nexport interface ApiResponse {\n // eslint-disable-next-line\n error?: any;\n // eslint-disable-next-line\n body?: any;\n statusCode: \"ok\" | \"error\";\n status: number;\n}\n\nclass ApiClient {\n private host: string;\n private apiKey: string;\n private userToken: string | null;\n private axiosClient: AxiosInstance;\n\n public socket: Socket | undefined;\n\n constructor(options: ApiClientOptions) {\n this.host = options.host;\n this.apiKey = options.apiKey;\n this.userToken = options.userToken || null;\n\n // Create a retryable axios client\n this.axiosClient = axios.create({\n baseURL: this.host,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n \"X-Knock-User-Token\": this.userToken,\n },\n });\n\n if (typeof window !== \"undefined\") {\n this.socket = new Socket(`${this.host.replace(\"http\", \"ws\")}/ws/v1`, {\n params: {\n user_token: this.userToken,\n api_key: this.apiKey,\n },\n });\n }\n\n axiosRetry(this.axiosClient, {\n retries: 3,\n retryCondition: this.canRetryRequest,\n retryDelay: axiosRetry.exponentialDelay,\n });\n }\n\n async makeRequest(req: AxiosRequestConfig): Promise<ApiResponse> {\n try {\n const result = await this.axiosClient(req);\n\n return {\n statusCode: result.status < 300 ? \"ok\" : \"error\",\n body: result.data,\n error: undefined,\n status: result.status,\n };\n\n // eslint:disable-next-line\n } catch (e: unknown) {\n console.error(e);\n\n return {\n statusCode: \"error\",\n status: 500,\n body: undefined,\n error: e,\n };\n }\n }\n\n private canRetryRequest(error: AxiosError) {\n // Retry Network Errors.\n if (axiosRetry.isNetworkError(error)) {\n return true;\n }\n\n if (!error.response) {\n // Cannot determine if the request can be retried\n return false;\n }\n\n // Retry Server Errors (5xx).\n if (error.response.status >= 500 && error.response.status <= 599) {\n return true;\n }\n\n // Retry if rate limited.\n if (error.response.status === 429) {\n return true;\n }\n\n return false;\n }\n}\n\nexport default ApiClient;\n"],"file":"api.js"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
+
|
|
20
|
+
var UserClient = /*#__PURE__*/function () {
|
|
21
|
+
function UserClient(instance) {
|
|
22
|
+
(0, _classCallCheck2["default"])(this, UserClient);
|
|
23
|
+
(0, _defineProperty2["default"])(this, "instance", void 0);
|
|
24
|
+
this.instance = instance;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
(0, _createClass2["default"])(UserClient, [{
|
|
28
|
+
key: "getChannelData",
|
|
29
|
+
value: function () {
|
|
30
|
+
var _getChannelData = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(params) {
|
|
31
|
+
var result;
|
|
32
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
33
|
+
while (1) {
|
|
34
|
+
switch (_context.prev = _context.next) {
|
|
35
|
+
case 0:
|
|
36
|
+
_context.next = 2;
|
|
37
|
+
return this.instance.client().makeRequest({
|
|
38
|
+
method: "GET",
|
|
39
|
+
url: "/v1/users/".concat(this.instance.userId, "/channel_data/").concat(params.channelId)
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
case 2:
|
|
43
|
+
result = _context.sent;
|
|
44
|
+
return _context.abrupt("return", this.handleResponse(result));
|
|
45
|
+
|
|
46
|
+
case 4:
|
|
47
|
+
case "end":
|
|
48
|
+
return _context.stop();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}, _callee, this);
|
|
52
|
+
}));
|
|
53
|
+
|
|
54
|
+
function getChannelData(_x) {
|
|
55
|
+
return _getChannelData.apply(this, arguments);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return getChannelData;
|
|
59
|
+
}()
|
|
60
|
+
}, {
|
|
61
|
+
key: "setChannelData",
|
|
62
|
+
value: function () {
|
|
63
|
+
var _setChannelData = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref) {
|
|
64
|
+
var channelId, channelData, result;
|
|
65
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
66
|
+
while (1) {
|
|
67
|
+
switch (_context2.prev = _context2.next) {
|
|
68
|
+
case 0:
|
|
69
|
+
channelId = _ref.channelId, channelData = _ref.channelData;
|
|
70
|
+
_context2.next = 3;
|
|
71
|
+
return this.instance.client().makeRequest({
|
|
72
|
+
method: "PUT",
|
|
73
|
+
url: "/v1/users/".concat(this.instance.userId, "/channel_data/").concat(channelId),
|
|
74
|
+
data: {
|
|
75
|
+
data: channelData
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
case 3:
|
|
80
|
+
result = _context2.sent;
|
|
81
|
+
return _context2.abrupt("return", this.handleResponse(result));
|
|
82
|
+
|
|
83
|
+
case 5:
|
|
84
|
+
case "end":
|
|
85
|
+
return _context2.stop();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, _callee2, this);
|
|
89
|
+
}));
|
|
90
|
+
|
|
91
|
+
function setChannelData(_x2) {
|
|
92
|
+
return _setChannelData.apply(this, arguments);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return setChannelData;
|
|
96
|
+
}()
|
|
97
|
+
}, {
|
|
98
|
+
key: "handleResponse",
|
|
99
|
+
value: function handleResponse(response) {
|
|
100
|
+
if (response.statusCode === "error") {
|
|
101
|
+
throw new Error(response.error || response.body);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return response.body;
|
|
105
|
+
}
|
|
106
|
+
}]);
|
|
107
|
+
return UserClient;
|
|
108
|
+
}();
|
|
109
|
+
|
|
110
|
+
var _default = UserClient;
|
|
111
|
+
exports["default"] = _default;
|
|
112
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/clients/users/index.ts"],"names":["UserClient","instance","params","client","makeRequest","method","url","userId","channelId","result","handleResponse","channelData","data","response","statusCode","Error","error","body"],"mappings":";;;;;;;;;;;;;;;;;;;IAYMA,U;AAGJ,sBAAYC,QAAZ,EAA6B;AAAA;AAAA;AAC3B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;;;;0GAED,iBAAqBC,MAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACuB,KAAKD,QAAL,CAAcE,MAAd,GAAuBC,WAAvB,CAAmC;AACtDC,kBAAAA,MAAM,EAAE,KAD8C;AAEtDC,kBAAAA,GAAG,sBAAe,KAAKL,QAAL,CAAcM,MAA7B,2BAAoDL,MAAM,CAACM,SAA3D;AAFmD,iBAAnC,CADvB;;AAAA;AACQC,gBAAAA,MADR;AAAA,iDAMS,KAAKC,cAAL,CAAoBD,MAApB,CANT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;0GASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuBD,gBAAAA,SAAvB,QAAuBA,SAAvB,EAAkCG,WAAlC,QAAkCA,WAAlC;AAAA;AAAA,uBACuB,KAAKV,QAAL,CAAcE,MAAd,GAAuBC,WAAvB,CAAmC;AACtDC,kBAAAA,MAAM,EAAE,KAD8C;AAEtDC,kBAAAA,GAAG,sBAAe,KAAKL,QAAL,CAAcM,MAA7B,2BAAoDC,SAApD,CAFmD;AAGtDI,kBAAAA,IAAI,EAAE;AAAEA,oBAAAA,IAAI,EAAED;AAAR;AAHgD,iBAAnC,CADvB;;AAAA;AACQF,gBAAAA,MADR;AAAA,kDAOS,KAAKC,cAAL,CAAoBD,MAApB,CAPT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAUA,wBAAuBI,QAAvB,EAA8C;AAC5C,UAAIA,QAAQ,CAACC,UAAT,KAAwB,OAA5B,EAAqC;AACnC,cAAM,IAAIC,KAAJ,CAAUF,QAAQ,CAACG,KAAT,IAAkBH,QAAQ,CAACI,IAArC,CAAN;AACD;;AAED,aAAOJ,QAAQ,CAACI,IAAhB;AACD;;;;;eAGYjB,U","sourcesContent":["import { ApiResponse } from \"../../api\";\nimport Knock from \"../../knock\";\n\ntype SetChannelDataInput = {\n channelId: string;\n channelData: Record<string, any>;\n};\n\ntype GetChannelDataInput = {\n channelId: string;\n};\n\nclass UserClient {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n async getChannelData(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(result);\n }\n\n async setChannelData({ channelId, channelData }: 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(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;\n }\n}\n\nexport default UserClient;\n"],"file":"index.js"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -85,6 +85,20 @@ Object.keys(_interfaces3).forEach(function (key) {
|
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
87
|
|
|
88
|
+
var _users = require("./clients/users");
|
|
89
|
+
|
|
90
|
+
Object.keys(_users).forEach(function (key) {
|
|
91
|
+
if (key === "default" || key === "__esModule") return;
|
|
92
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
93
|
+
if (key in exports && exports[key] === _users[key]) return;
|
|
94
|
+
Object.defineProperty(exports, key, {
|
|
95
|
+
enumerable: true,
|
|
96
|
+
get: function get() {
|
|
97
|
+
return _users[key];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
88
102
|
var _networkStatus = require("./networkStatus");
|
|
89
103
|
|
|
90
104
|
Object.keys(_networkStatus).forEach(function (key) {
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["Knock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;eAEeA,iB","sourcesContent":["import Knock from \"./knock\";\nimport FeedClient, { Feed } from \"./clients/feed\";\n\nexport * from \"./interfaces\";\nexport * from \"./clients/feed/types\";\nexport * from \"./clients/feed/interfaces\";\nexport * from \"./clients/preferences/interfaces\";\nexport * from \"./networkStatus\";\n\nexport default Knock;\nexport { Feed, FeedClient };\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["Knock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;eAEeA,iB","sourcesContent":["import Knock from \"./knock\";\nimport FeedClient, { Feed } from \"./clients/feed\";\n\nexport * from \"./interfaces\";\nexport * from \"./clients/feed/types\";\nexport * from \"./clients/feed/interfaces\";\nexport * from \"./clients/preferences/interfaces\";\nexport * from \"./clients/users\";\nexport * from \"./networkStatus\";\n\nexport default Knock;\nexport { Feed, FeedClient };\n"],"file":"index.js"}
|
package/dist/cjs/knock.js
CHANGED
|
@@ -19,6 +19,8 @@ var _feed = _interopRequireDefault(require("./clients/feed"));
|
|
|
19
19
|
|
|
20
20
|
var _preferences = _interopRequireDefault(require("./clients/preferences"));
|
|
21
21
|
|
|
22
|
+
var _users = _interopRequireDefault(require("./clients/users"));
|
|
23
|
+
|
|
22
24
|
var DEFAULT_HOST = "https://api.knock.app";
|
|
23
25
|
|
|
24
26
|
var Knock = /*#__PURE__*/function () {
|
|
@@ -32,6 +34,7 @@ var Knock = /*#__PURE__*/function () {
|
|
|
32
34
|
(0, _defineProperty2["default"])(this, "userToken", void 0);
|
|
33
35
|
(0, _defineProperty2["default"])(this, "feeds", new _feed["default"](this));
|
|
34
36
|
(0, _defineProperty2["default"])(this, "preferences", new _preferences["default"](this));
|
|
37
|
+
(0, _defineProperty2["default"])(this, "user", new _users["default"](this));
|
|
35
38
|
this.host = options.host || DEFAULT_HOST; // Fail loudly if we're using the wrong API key
|
|
36
39
|
|
|
37
40
|
if (this.apiKey && this.apiKey.startsWith("sk_")) {
|
package/dist/cjs/knock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/knock.ts"],"names":["DEFAULT_HOST","Knock","apiKey","options","FeedClient","Preferences","host","startsWith","Error","userId","console","warn","apiClient","ApiClient","userToken","checkUserToken","socket","disconnect"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAGA,IAAMA,YAAY,GAAG,uBAArB;;IAEMC,K;
|
|
1
|
+
{"version":3,"sources":["../../src/knock.ts"],"names":["DEFAULT_HOST","Knock","apiKey","options","FeedClient","Preferences","UserClient","host","startsWith","Error","userId","console","warn","apiClient","ApiClient","userToken","checkUserToken","socket","disconnect"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAGA,IAAMA,YAAY,GAAG,uBAArB;;IAEMC,K;AAUJ,iBAAqBC,MAArB,EAAiE;AAAA,QAA5BC,OAA4B,uEAAJ,EAAI;AAAA;AAAA,SAA5CD,MAA4C,GAA5CA,MAA4C;AAAA;AAAA,wDAR3B,IAQ2B;AAAA;AAAA;AAAA,oDAJhD,IAAIE,gBAAJ,CAAe,IAAf,CAIgD;AAAA,0DAH1C,IAAIC,uBAAJ,CAAgB,IAAhB,CAG0C;AAAA,mDAFjD,IAAIC,iBAAJ,CAAe,IAAf,CAEiD;AAC/D,SAAKC,IAAL,GAAYJ,OAAO,CAACI,IAAR,IAAgBP,YAA5B,CAD+D,CAG/D;;AACA,QAAI,KAAKE,MAAL,IAAe,KAAKA,MAAL,CAAYM,UAAZ,CAAuB,KAAvB,CAAnB,EAAkD;AAChD,YAAM,IAAIC,KAAJ,CACJ,qFADI,CAAN;AAGD;AACF;;;;WAED,kBAAS;AACP,UAAI,CAAC,KAAKC,MAAV,EAAkB;AAChBC,QAAAA,OAAO,CAACC,IAAR;AAOD,OATM,CAWP;;;AACA,UAAI,CAAC,KAAKC,SAAV,EAAqB;AACnB,aAAKA,SAAL,GAAiB,IAAIC,eAAJ,CAAc;AAC7BZ,UAAAA,MAAM,EAAE,KAAKA,MADgB;AAE7BK,UAAAA,IAAI,EAAE,KAAKA,IAFkB;AAG7BQ,UAAAA,SAAS,EAAE,KAAKA;AAHa,SAAd,CAAjB;AAKD;;AAED,aAAO,KAAKF,SAAZ;AACD;AAED;AACF;AACA;AACA;;;;WACE,sBAAaH,MAAb,EAA6BK,SAA7B,EAAiD;AAC/C,WAAKL,MAAL,GAAcA,MAAd;AACA,WAAKK,SAAL,GAAiBA,SAAjB;AAEA;AACD;AAED;AACF;AACA;AACA;;;;WACE,2BAAwC;AAAA,UAAxBC,cAAwB,uEAAP,KAAO;AACtC,aAAOA,cAAc,GAAG,KAAKN,MAAL,IAAe,KAAKK,SAAvB,GAAmC,KAAKL,MAA7D;AACD,K,CAED;;;;WACA,oBAAW;AACT,UAAI,CAAC,KAAKG,SAAV,EAAqB;;AACrB,UAAI,KAAKA,SAAL,CAAeI,MAAnB,EAA2B;AACzB,aAAKJ,SAAL,CAAeI,MAAf,CAAsBC,UAAtB;AACD;AACF;;;;;eAGYjB,K","sourcesContent":["import ApiClient from \"./api\";\nimport FeedClient from \"./clients/feed\";\nimport Preferences from \"./clients/preferences\";\nimport UserClient from \"./clients/users\";\nimport { KnockOptions } from \"./interfaces\";\n\nconst DEFAULT_HOST = \"https://api.knock.app\";\n\nclass Knock {\n private host: string;\n private apiClient: ApiClient | null = null;\n public userId: string | undefined;\n public userToken: string | undefined;\n\n readonly feeds = new FeedClient(this);\n readonly preferences = new Preferences(this);\n readonly user = new UserClient(this);\n\n constructor(readonly apiKey: string, options: KnockOptions = {}) {\n this.host = options.host || DEFAULT_HOST;\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 = new ApiClient({\n apiKey: this.apiKey,\n host: this.host,\n userToken: this.userToken,\n });\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(userId: string, userToken?: string) {\n this.userId = userId;\n this.userToken = userToken;\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.apiClient) return;\n if (this.apiClient.socket) {\n this.apiClient.socket.disconnect();\n }\n }\n}\n\nexport default Knock;\n"],"file":"knock.js"}
|
package/dist/esm/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api.ts"],"names":["axios","axiosRetry","Socket","ApiClient","constructor","options","host","apiKey","userToken","axiosClient","create","baseURL","headers","Accept","Authorization","window","socket","replace","params","user_token","api_key","retries","retryCondition","canRetryRequest","retryDelay","exponentialDelay","makeRequest","req","result","statusCode","status","body","data","error","undefined","e","console","isNetworkError","response"],"mappings":";;AAAA,OAAOA,KAAP,MAAyD,OAAzD;AACA,OAAOC,UAAP,MAAuB,aAAvB;AACA,
|
|
1
|
+
{"version":3,"sources":["../../src/api.ts"],"names":["axios","axiosRetry","Socket","ApiClient","constructor","options","host","apiKey","userToken","axiosClient","create","baseURL","headers","Accept","Authorization","window","socket","replace","params","user_token","api_key","retries","retryCondition","canRetryRequest","retryDelay","exponentialDelay","makeRequest","req","result","statusCode","status","body","data","error","undefined","e","console","isNetworkError","response"],"mappings":";;AAAA,OAAOA,KAAP,MAAyD,OAAzD;AACA,OAAOC,UAAP,MAAuB,aAAvB;AACA,SAASC,MAAT,QAAuB,SAAvB;;AAkBA,MAAMC,SAAN,CAAgB;AAQdC,EAAAA,WAAW,CAACC,OAAD,EAA4B;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACrC,SAAKC,IAAL,GAAYD,OAAO,CAACC,IAApB;AACA,SAAKC,MAAL,GAAcF,OAAO,CAACE,MAAtB;AACA,SAAKC,SAAL,GAAiBH,OAAO,CAACG,SAAR,IAAqB,IAAtC,CAHqC,CAKrC;;AACA,SAAKC,WAAL,GAAmBT,KAAK,CAACU,MAAN,CAAa;AAC9BC,MAAAA,OAAO,EAAE,KAAKL,IADgB;AAE9BM,MAAAA,OAAO,EAAE;AACPC,QAAAA,MAAM,EAAE,kBADD;AAEP,wBAAgB,kBAFT;AAGPC,QAAAA,aAAa,mBAAY,KAAKP,MAAjB,CAHN;AAIP,8BAAsB,KAAKC;AAJpB;AAFqB,KAAb,CAAnB;;AAUA,QAAI,OAAOO,MAAP,KAAkB,WAAtB,EAAmC;AACjC,WAAKC,MAAL,GAAc,IAAId,MAAJ,WAAc,KAAKI,IAAL,CAAUW,OAAV,CAAkB,MAAlB,EAA0B,IAA1B,CAAd,aAAuD;AACnEC,QAAAA,MAAM,EAAE;AACNC,UAAAA,UAAU,EAAE,KAAKX,SADX;AAENY,UAAAA,OAAO,EAAE,KAAKb;AAFR;AAD2D,OAAvD,CAAd;AAMD;;AAEDN,IAAAA,UAAU,CAAC,KAAKQ,WAAN,EAAmB;AAC3BY,MAAAA,OAAO,EAAE,CADkB;AAE3BC,MAAAA,cAAc,EAAE,KAAKC,eAFM;AAG3BC,MAAAA,UAAU,EAAEvB,UAAU,CAACwB;AAHI,KAAnB,CAAV;AAKD;;AAEKC,EAAAA,WAAW,CAACC,GAAD,EAAgD;AAAA;;AAAA;AAC/D,UAAI;AACF,YAAMC,MAAM,SAAS,KAAI,CAACnB,WAAL,CAAiBkB,GAAjB,CAArB;AAEA,eAAO;AACLE,UAAAA,UAAU,EAAED,MAAM,CAACE,MAAP,GAAgB,GAAhB,GAAsB,IAAtB,GAA6B,OADpC;AAELC,UAAAA,IAAI,EAAEH,MAAM,CAACI,IAFR;AAGLC,UAAAA,KAAK,EAAEC,SAHF;AAILJ,UAAAA,MAAM,EAAEF,MAAM,CAACE;AAJV,SAAP,CAHE,CAUF;AACD,OAXD,CAWE,OAAOK,CAAP,EAAmB;AACnBC,QAAAA,OAAO,CAACH,KAAR,CAAcE,CAAd;AAEA,eAAO;AACLN,UAAAA,UAAU,EAAE,OADP;AAELC,UAAAA,MAAM,EAAE,GAFH;AAGLC,UAAAA,IAAI,EAAEG,SAHD;AAILD,UAAAA,KAAK,EAAEE;AAJF,SAAP;AAMD;AArB8D;AAsBhE;;AAEOZ,EAAAA,eAAe,CAACU,KAAD,EAAoB;AACzC;AACA,QAAIhC,UAAU,CAACoC,cAAX,CAA0BJ,KAA1B,CAAJ,EAAsC;AACpC,aAAO,IAAP;AACD;;AAED,QAAI,CAACA,KAAK,CAACK,QAAX,EAAqB;AACnB;AACA,aAAO,KAAP;AACD,KATwC,CAWzC;;;AACA,QAAIL,KAAK,CAACK,QAAN,CAAeR,MAAf,IAAyB,GAAzB,IAAgCG,KAAK,CAACK,QAAN,CAAeR,MAAf,IAAyB,GAA7D,EAAkE;AAChE,aAAO,IAAP;AACD,KAdwC,CAgBzC;;;AACA,QAAIG,KAAK,CAACK,QAAN,CAAeR,MAAf,KAA0B,GAA9B,EAAmC;AACjC,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD;;AAtFa;;AAyFhB,eAAe3B,SAAf","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport axiosRetry from \"axios-retry\";\nimport { Socket } from \"phoenix\";\nimport { AxiosError } from \"axios\";\n\ntype ApiClientOptions = {\n host: string;\n apiKey: string;\n userToken: string | undefined;\n};\n\nexport interface ApiResponse {\n // eslint-disable-next-line\n error?: any;\n // eslint-disable-next-line\n body?: any;\n statusCode: \"ok\" | \"error\";\n status: number;\n}\n\nclass ApiClient {\n private host: string;\n private apiKey: string;\n private userToken: string | null;\n private axiosClient: AxiosInstance;\n\n public socket: Socket | undefined;\n\n constructor(options: ApiClientOptions) {\n this.host = options.host;\n this.apiKey = options.apiKey;\n this.userToken = options.userToken || null;\n\n // Create a retryable axios client\n this.axiosClient = axios.create({\n baseURL: this.host,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n \"X-Knock-User-Token\": this.userToken,\n },\n });\n\n if (typeof window !== \"undefined\") {\n this.socket = new Socket(`${this.host.replace(\"http\", \"ws\")}/ws/v1`, {\n params: {\n user_token: this.userToken,\n api_key: this.apiKey,\n },\n });\n }\n\n axiosRetry(this.axiosClient, {\n retries: 3,\n retryCondition: this.canRetryRequest,\n retryDelay: axiosRetry.exponentialDelay,\n });\n }\n\n async makeRequest(req: AxiosRequestConfig): Promise<ApiResponse> {\n try {\n const result = await this.axiosClient(req);\n\n return {\n statusCode: result.status < 300 ? \"ok\" : \"error\",\n body: result.data,\n error: undefined,\n status: result.status,\n };\n\n // eslint:disable-next-line\n } catch (e: unknown) {\n console.error(e);\n\n return {\n statusCode: \"error\",\n status: 500,\n body: undefined,\n error: e,\n };\n }\n }\n\n private canRetryRequest(error: AxiosError) {\n // Retry Network Errors.\n if (axiosRetry.isNetworkError(error)) {\n return true;\n }\n\n if (!error.response) {\n // Cannot determine if the request can be retried\n return false;\n }\n\n // Retry Server Errors (5xx).\n if (error.response.status >= 500 && error.response.status <= 599) {\n return true;\n }\n\n // Retry if rate limited.\n if (error.response.status === 429) {\n return true;\n }\n\n return false;\n }\n}\n\nexport default ApiClient;\n"],"file":"api.js"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
|
|
4
|
+
class UserClient {
|
|
5
|
+
constructor(instance) {
|
|
6
|
+
_defineProperty(this, "instance", void 0);
|
|
7
|
+
|
|
8
|
+
this.instance = instance;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getChannelData(params) {
|
|
12
|
+
var _this = this;
|
|
13
|
+
|
|
14
|
+
return _asyncToGenerator(function* () {
|
|
15
|
+
var result = yield _this.instance.client().makeRequest({
|
|
16
|
+
method: "GET",
|
|
17
|
+
url: "/v1/users/".concat(_this.instance.userId, "/channel_data/").concat(params.channelId)
|
|
18
|
+
});
|
|
19
|
+
return _this.handleResponse(result);
|
|
20
|
+
})();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
setChannelData(_ref) {
|
|
24
|
+
var _this2 = this;
|
|
25
|
+
|
|
26
|
+
return _asyncToGenerator(function* () {
|
|
27
|
+
var {
|
|
28
|
+
channelId,
|
|
29
|
+
channelData
|
|
30
|
+
} = _ref;
|
|
31
|
+
var result = yield _this2.instance.client().makeRequest({
|
|
32
|
+
method: "PUT",
|
|
33
|
+
url: "/v1/users/".concat(_this2.instance.userId, "/channel_data/").concat(channelId),
|
|
34
|
+
data: {
|
|
35
|
+
data: channelData
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return _this2.handleResponse(result);
|
|
39
|
+
})();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
handleResponse(response) {
|
|
43
|
+
if (response.statusCode === "error") {
|
|
44
|
+
throw new Error(response.error || response.body);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return response.body;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export default UserClient;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/clients/users/index.ts"],"names":["UserClient","constructor","instance","getChannelData","params","result","client","makeRequest","method","url","userId","channelId","handleResponse","setChannelData","channelData","data","response","statusCode","Error","error","body"],"mappings":";;;AAYA,MAAMA,UAAN,CAAiB;AAGfC,EAAAA,WAAW,CAACC,QAAD,EAAkB;AAAA;;AAC3B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAEKC,EAAAA,cAAc,CAACC,MAAD,EAA8B;AAAA;;AAAA;AAChD,UAAMC,MAAM,SAAS,KAAI,CAACH,QAAL,CAAcI,MAAd,GAAuBC,WAAvB,CAAmC;AACtDC,QAAAA,MAAM,EAAE,KAD8C;AAEtDC,QAAAA,GAAG,sBAAe,KAAI,CAACP,QAAL,CAAcQ,MAA7B,2BAAoDN,MAAM,CAACO,SAA3D;AAFmD,OAAnC,CAArB;AAKA,aAAO,KAAI,CAACC,cAAL,CAAoBP,MAApB,CAAP;AANgD;AAOjD;;AAEKQ,EAAAA,cAAc,OAAkD;AAAA;;AAAA;AAAA,UAAjD;AAAEF,QAAAA,SAAF;AAAaG,QAAAA;AAAb,OAAiD;AACpE,UAAMT,MAAM,SAAS,MAAI,CAACH,QAAL,CAAcI,MAAd,GAAuBC,WAAvB,CAAmC;AACtDC,QAAAA,MAAM,EAAE,KAD8C;AAEtDC,QAAAA,GAAG,sBAAe,MAAI,CAACP,QAAL,CAAcQ,MAA7B,2BAAoDC,SAApD,CAFmD;AAGtDI,QAAAA,IAAI,EAAE;AAAEA,UAAAA,IAAI,EAAED;AAAR;AAHgD,OAAnC,CAArB;AAMA,aAAO,MAAI,CAACF,cAAL,CAAoBP,MAApB,CAAP;AAPoE;AAQrE;;AAEOO,EAAAA,cAAc,CAACI,QAAD,EAAwB;AAC5C,QAAIA,QAAQ,CAACC,UAAT,KAAwB,OAA5B,EAAqC;AACnC,YAAM,IAAIC,KAAJ,CAAUF,QAAQ,CAACG,KAAT,IAAkBH,QAAQ,CAACI,IAArC,CAAN;AACD;;AAED,WAAOJ,QAAQ,CAACI,IAAhB;AACD;;AAhCc;;AAmCjB,eAAepB,UAAf","sourcesContent":["import { ApiResponse } from \"../../api\";\nimport Knock from \"../../knock\";\n\ntype SetChannelDataInput = {\n channelId: string;\n channelData: Record<string, any>;\n};\n\ntype GetChannelDataInput = {\n channelId: string;\n};\n\nclass UserClient {\n private instance: Knock;\n\n constructor(instance: Knock) {\n this.instance = instance;\n }\n\n async getChannelData(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(result);\n }\n\n async setChannelData({ channelId, channelData }: 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(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;\n }\n}\n\nexport default UserClient;\n"],"file":"index.js"}
|
package/dist/esm/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./interfaces";
|
|
|
4
4
|
export * from "./clients/feed/types";
|
|
5
5
|
export * from "./clients/feed/interfaces";
|
|
6
6
|
export * from "./clients/preferences/interfaces";
|
|
7
|
+
export * from "./clients/users";
|
|
7
8
|
export * from "./networkStatus";
|
|
8
9
|
export default Knock;
|
|
9
10
|
export { Feed, FeedClient };
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["Knock","FeedClient","Feed"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,SAAlB;AACA,OAAOC,UAAP,IAAqBC,IAArB,QAAiC,gBAAjC;AAEA,cAAc,cAAd;AACA,cAAc,sBAAd;AACA,cAAc,2BAAd;AACA,cAAc,kCAAd;AACA,cAAc,iBAAd;AAEA,eAAeF,KAAf;AACA,SAASE,IAAT,EAAeD,UAAf","sourcesContent":["import Knock from \"./knock\";\nimport FeedClient, { Feed } from \"./clients/feed\";\n\nexport * from \"./interfaces\";\nexport * from \"./clients/feed/types\";\nexport * from \"./clients/feed/interfaces\";\nexport * from \"./clients/preferences/interfaces\";\nexport * from \"./networkStatus\";\n\nexport default Knock;\nexport { Feed, FeedClient };\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["Knock","FeedClient","Feed"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,SAAlB;AACA,OAAOC,UAAP,IAAqBC,IAArB,QAAiC,gBAAjC;AAEA,cAAc,cAAd;AACA,cAAc,sBAAd;AACA,cAAc,2BAAd;AACA,cAAc,kCAAd;AACA,cAAc,iBAAd;AACA,cAAc,iBAAd;AAEA,eAAeF,KAAf;AACA,SAASE,IAAT,EAAeD,UAAf","sourcesContent":["import Knock from \"./knock\";\nimport FeedClient, { Feed } from \"./clients/feed\";\n\nexport * from \"./interfaces\";\nexport * from \"./clients/feed/types\";\nexport * from \"./clients/feed/interfaces\";\nexport * from \"./clients/preferences/interfaces\";\nexport * from \"./clients/users\";\nexport * from \"./networkStatus\";\n\nexport default Knock;\nexport { Feed, FeedClient };\n"],"file":"index.js"}
|
package/dist/esm/knock.js
CHANGED
|
@@ -2,6 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import ApiClient from "./api";
|
|
3
3
|
import FeedClient from "./clients/feed";
|
|
4
4
|
import Preferences from "./clients/preferences";
|
|
5
|
+
import UserClient from "./clients/users";
|
|
5
6
|
var DEFAULT_HOST = "https://api.knock.app";
|
|
6
7
|
|
|
7
8
|
class Knock {
|
|
@@ -21,6 +22,8 @@ class Knock {
|
|
|
21
22
|
|
|
22
23
|
_defineProperty(this, "preferences", new Preferences(this));
|
|
23
24
|
|
|
25
|
+
_defineProperty(this, "user", new UserClient(this));
|
|
26
|
+
|
|
24
27
|
this.host = options.host || DEFAULT_HOST; // Fail loudly if we're using the wrong API key
|
|
25
28
|
|
|
26
29
|
if (this.apiKey && this.apiKey.startsWith("sk_")) {
|
package/dist/esm/knock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/knock.ts"],"names":["ApiClient","FeedClient","Preferences","DEFAULT_HOST","Knock","constructor","apiKey","options","host","startsWith","Error","client","userId","console","warn","apiClient","userToken","authenticate","isAuthenticated","checkUserToken","teardown","socket","disconnect"],"mappings":";AAAA,OAAOA,SAAP,MAAsB,OAAtB;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,OAAOC,WAAP,MAAwB,uBAAxB;AAGA,IAAMC,YAAY,GAAG,uBAArB;;AAEA,MAAMC,KAAN,CAAY;
|
|
1
|
+
{"version":3,"sources":["../../src/knock.ts"],"names":["ApiClient","FeedClient","Preferences","UserClient","DEFAULT_HOST","Knock","constructor","apiKey","options","host","startsWith","Error","client","userId","console","warn","apiClient","userToken","authenticate","isAuthenticated","checkUserToken","teardown","socket","disconnect"],"mappings":";AAAA,OAAOA,SAAP,MAAsB,OAAtB;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,OAAOC,WAAP,MAAwB,uBAAxB;AACA,OAAOC,UAAP,MAAuB,iBAAvB;AAGA,IAAMC,YAAY,GAAG,uBAArB;;AAEA,MAAMC,KAAN,CAAY;AAUVC,EAAAA,WAAW,CAAUC,MAAV,EAAsD;AAAA,QAA5BC,OAA4B,uEAAJ,EAAI;AAAA,SAA5CD,MAA4C,GAA5CA,MAA4C;;AAAA;;AAAA,uCAR3B,IAQ2B;;AAAA;;AAAA;;AAAA,mCAJhD,IAAIN,UAAJ,CAAe,IAAf,CAIgD;;AAAA,yCAH1C,IAAIC,WAAJ,CAAgB,IAAhB,CAG0C;;AAAA,kCAFjD,IAAIC,UAAJ,CAAe,IAAf,CAEiD;;AAC/D,SAAKM,IAAL,GAAYD,OAAO,CAACC,IAAR,IAAgBL,YAA5B,CAD+D,CAG/D;;AACA,QAAI,KAAKG,MAAL,IAAe,KAAKA,MAAL,CAAYG,UAAZ,CAAuB,KAAvB,CAAnB,EAAkD;AAChD,YAAM,IAAIC,KAAJ,CACJ,qFADI,CAAN;AAGD;AACF;;AAEDC,EAAAA,MAAM,GAAG;AACP,QAAI,CAAC,KAAKC,MAAV,EAAkB;AAChBC,MAAAA,OAAO,CAACC,IAAR;AAOD,KATM,CAWP;;;AACA,QAAI,CAAC,KAAKC,SAAV,EAAqB;AACnB,WAAKA,SAAL,GAAiB,IAAIhB,SAAJ,CAAc;AAC7BO,QAAAA,MAAM,EAAE,KAAKA,MADgB;AAE7BE,QAAAA,IAAI,EAAE,KAAKA,IAFkB;AAG7BQ,QAAAA,SAAS,EAAE,KAAKA;AAHa,OAAd,CAAjB;AAKD;;AAED,WAAO,KAAKD,SAAZ;AACD;AAED;AACF;AACA;AACA;;;AACEE,EAAAA,YAAY,CAACL,MAAD,EAAiBI,SAAjB,EAAqC;AAC/C,SAAKJ,MAAL,GAAcA,MAAd;AACA,SAAKI,SAAL,GAAiBA,SAAjB;AAEA;AACD;AAED;AACF;AACA;AACA;;;AACEE,EAAAA,eAAe,GAAyB;AAAA,QAAxBC,cAAwB,uEAAP,KAAO;AACtC,WAAOA,cAAc,GAAG,KAAKP,MAAL,IAAe,KAAKI,SAAvB,GAAmC,KAAKJ,MAA7D;AACD,GA7DS,CA+DV;;;AACAQ,EAAAA,QAAQ,GAAG;AACT,QAAI,CAAC,KAAKL,SAAV,EAAqB;;AACrB,QAAI,KAAKA,SAAL,CAAeM,MAAnB,EAA2B;AACzB,WAAKN,SAAL,CAAeM,MAAf,CAAsBC,UAAtB;AACD;AACF;;AArES;;AAwEZ,eAAelB,KAAf","sourcesContent":["import ApiClient from \"./api\";\nimport FeedClient from \"./clients/feed\";\nimport Preferences from \"./clients/preferences\";\nimport UserClient from \"./clients/users\";\nimport { KnockOptions } from \"./interfaces\";\n\nconst DEFAULT_HOST = \"https://api.knock.app\";\n\nclass Knock {\n private host: string;\n private apiClient: ApiClient | null = null;\n public userId: string | undefined;\n public userToken: string | undefined;\n\n readonly feeds = new FeedClient(this);\n readonly preferences = new Preferences(this);\n readonly user = new UserClient(this);\n\n constructor(readonly apiKey: string, options: KnockOptions = {}) {\n this.host = options.host || DEFAULT_HOST;\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 = new ApiClient({\n apiKey: this.apiKey,\n host: this.host,\n userToken: this.userToken,\n });\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(userId: string, userToken?: string) {\n this.userId = userId;\n this.userToken = userToken;\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.apiClient) return;\n if (this.apiClient.socket) {\n this.apiClient.socket.disconnect();\n }\n }\n}\n\nexport default Knock;\n"],"file":"knock.js"}
|
package/dist/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,aAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,WAAW;IAE1B,KAAK,CAAC,EAAE,GAAG,CAAC;IAEZ,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,SAAS;IACb,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAgB;IAE5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,OAAO,EAAE,gBAAgB;IAgC/B,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBhE,OAAO,CAAC,eAAe;CAuBxB;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Knock from "../../knock";
|
|
2
|
+
declare type SetChannelDataInput = {
|
|
3
|
+
channelId: string;
|
|
4
|
+
channelData: Record<string, any>;
|
|
5
|
+
};
|
|
6
|
+
declare type GetChannelDataInput = {
|
|
7
|
+
channelId: string;
|
|
8
|
+
};
|
|
9
|
+
declare class UserClient {
|
|
10
|
+
private instance;
|
|
11
|
+
constructor(instance: Knock);
|
|
12
|
+
getChannelData(params: GetChannelDataInput): Promise<any>;
|
|
13
|
+
setChannelData({ channelId, channelData }: SetChannelDataInput): Promise<any>;
|
|
14
|
+
private handleResponse;
|
|
15
|
+
}
|
|
16
|
+
export default UserClient;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/users/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,aAAK,mBAAmB,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC,CAAC;AAEF,aAAK,mBAAmB,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,cAAM,UAAU;IACd,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,KAAK;IAIrB,cAAc,CAAC,MAAM,EAAE,mBAAmB;IAS1C,cAAc,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,mBAAmB;IAUpE,OAAO,CAAC,cAAc;CAOvB;AAED,eAAe,UAAU,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./interfaces";
|
|
|
4
4
|
export * from "./clients/feed/types";
|
|
5
5
|
export * from "./clients/feed/interfaces";
|
|
6
6
|
export * from "./clients/preferences/interfaces";
|
|
7
|
+
export * from "./clients/users";
|
|
7
8
|
export * from "./networkStatus";
|
|
8
9
|
export default Knock;
|
|
9
10
|
export { Feed, FeedClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,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,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAElD,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"}
|
package/dist/types/knock.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ApiClient from "./api";
|
|
2
2
|
import FeedClient from "./clients/feed";
|
|
3
3
|
import Preferences from "./clients/preferences";
|
|
4
|
+
import UserClient from "./clients/users";
|
|
4
5
|
import { KnockOptions } from "./interfaces";
|
|
5
6
|
declare class Knock {
|
|
6
7
|
readonly apiKey: string;
|
|
@@ -10,6 +11,7 @@ declare class Knock {
|
|
|
10
11
|
userToken: string | undefined;
|
|
11
12
|
readonly feeds: FeedClient;
|
|
12
13
|
readonly preferences: Preferences;
|
|
14
|
+
readonly user: UserClient;
|
|
13
15
|
constructor(apiKey: string, options?: KnockOptions);
|
|
14
16
|
client(): ApiClient;
|
|
15
17
|
authenticate(userId: string, userToken?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knock.d.ts","sourceRoot":"","sources":["../../src/knock.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,OAAO,CAAC;AAC9B,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,cAAM,KAAK;
|
|
1
|
+
{"version":3,"file":"knock.d.ts","sourceRoot":"","sources":["../../src/knock.ts"],"names":[],"mappings":"AAAA,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,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,cAAM,KAAK;IAUG,QAAQ,CAAC,MAAM,EAAE,MAAM;IATnC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAA0B;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,QAAQ,CAAC,KAAK,aAAwB;IACtC,QAAQ,CAAC,WAAW,cAAyB;IAC7C,QAAQ,CAAC,IAAI,aAAwB;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAW/D,MAAM;IA2BN,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAW/C,eAAe,CAAC,cAAc,UAAQ;IAKtC,QAAQ;CAMT;AAED,eAAe,KAAK,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knocklabs/client",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.15",
|
|
4
4
|
"description": "The clientside library for interacting with Knock",
|
|
5
5
|
"homepage": "https://github.com/knocklabs/knock-client-js",
|
|
6
6
|
"author": "@knocklabs",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"typescript": "^4.2.4"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"axios": "^
|
|
63
|
+
"axios": "^1.6.0",
|
|
64
64
|
"axios-retry": "^3.1.9",
|
|
65
65
|
"eventemitter2": "^6.4.5",
|
|
66
66
|
"phoenix": "1.6.16",
|