@stream-io/node-sdk 0.1.1 → 0.1.2
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 +3 -1
- package/dist/__tests__/create-token.test.d.ts +1 -1
- package/dist/index.cjs.js +60 -14
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +60 -14
- package/dist/index.es.js.map +1 -1
- package/dist/src/StreamClient.d.ts +9 -0
- package/package.json +3 -2
- package/src/StreamClient.ts +121 -47
|
@@ -19,7 +19,16 @@ export declare class StreamClient {
|
|
|
19
19
|
private readonly tasksApi;
|
|
20
20
|
private token;
|
|
21
21
|
constructor(apiKey: string, secret: string, basePath?: string | undefined);
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param userID
|
|
25
|
+
* @param exp
|
|
26
|
+
* @param iat
|
|
27
|
+
* @param call_cids this parameter is deprecated use `createCallToken` for call tokens
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
22
30
|
createToken(userID: string, exp?: number, iat?: number, call_cids?: string[]): string;
|
|
31
|
+
createCallToken(userID: string, call_cids: string[], exp?: number, iat?: number): string;
|
|
23
32
|
createDevice: (createDeviceRequest: CreateDeviceRequest) => Promise<void>;
|
|
24
33
|
deleteDevice: (requestParameters: DeleteDeviceRequest) => Promise<import("./gen/chat").Response>;
|
|
25
34
|
listDevices: (requestParameters: ListDevicesRequest) => Promise<import("./gen/chat").ListDevicesResponse>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/node-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.es.js",
|
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
"url": "https://github.com/GetStream/stream-node.git"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
+
"prepublish": "yarn build",
|
|
15
16
|
"test": "vitest",
|
|
16
17
|
"start": "rollup -w -c",
|
|
17
|
-
"build": "rollup -c",
|
|
18
|
+
"build": "rm -rf dist && rollup -c",
|
|
18
19
|
"generate:open-api": "./generate-openapi.sh protocol",
|
|
19
20
|
"generate:open-api:dev": "./generate-openapi.sh chat"
|
|
20
21
|
},
|
package/src/StreamClient.ts
CHANGED
|
@@ -100,11 +100,19 @@ export class StreamClient {
|
|
|
100
100
|
this.tasksApi = new TasksApi(chatConfiguration);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
* @param userID
|
|
106
|
+
* @param exp
|
|
107
|
+
* @param iat
|
|
108
|
+
* @param call_cids this parameter is deprecated use `createCallToken` for call tokens
|
|
109
|
+
* @returns
|
|
110
|
+
*/
|
|
103
111
|
createToken(
|
|
104
112
|
userID: string,
|
|
105
113
|
exp?: number,
|
|
106
|
-
iat
|
|
107
|
-
call_cids?: string[]
|
|
114
|
+
iat = Math.round(Date.now() / 1000),
|
|
115
|
+
call_cids?: string[]
|
|
108
116
|
) {
|
|
109
117
|
const extra: { exp?: number; iat?: number; call_cids?: string[] } = {};
|
|
110
118
|
|
|
@@ -117,12 +125,36 @@ export class StreamClient {
|
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
if (call_cids) {
|
|
128
|
+
console.warn(
|
|
129
|
+
`Use createCallToken method for creating call tokens, the "call_cids" param will be removed from the createToken method with version 0.2.0`
|
|
130
|
+
);
|
|
120
131
|
extra.call_cids = call_cids;
|
|
121
132
|
}
|
|
122
133
|
|
|
123
134
|
return JWTUserToken(this.secret, userID, extra);
|
|
124
135
|
}
|
|
125
136
|
|
|
137
|
+
createCallToken(
|
|
138
|
+
userID: string,
|
|
139
|
+
call_cids: string[],
|
|
140
|
+
exp?: number,
|
|
141
|
+
iat = Math.round(Date.now() / 1000)
|
|
142
|
+
) {
|
|
143
|
+
const extra: { exp?: number; iat?: number; call_cids?: string[] } = {};
|
|
144
|
+
|
|
145
|
+
if (exp) {
|
|
146
|
+
extra.exp = exp;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (iat) {
|
|
150
|
+
extra.iat = iat;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
extra.call_cids = call_cids;
|
|
154
|
+
|
|
155
|
+
return JWTUserToken(this.secret, userID, extra);
|
|
156
|
+
}
|
|
157
|
+
|
|
126
158
|
createDevice = (createDeviceRequest: CreateDeviceRequest) => {
|
|
127
159
|
return this.devicesApi.createDevice({ createDeviceRequest });
|
|
128
160
|
};
|
|
@@ -133,21 +165,23 @@ export class StreamClient {
|
|
|
133
165
|
return this.devicesApi.listDevices(requestParameters);
|
|
134
166
|
};
|
|
135
167
|
|
|
136
|
-
listPushProviders= () => {
|
|
168
|
+
listPushProviders = () => {
|
|
137
169
|
return this.pushApi.listPushProviders();
|
|
138
|
-
}
|
|
170
|
+
};
|
|
139
171
|
|
|
140
172
|
deletePushProvider = (request: DeletePushProviderRequest) => {
|
|
141
173
|
return this.pushApi.deletePushProvider(request);
|
|
142
|
-
}
|
|
174
|
+
};
|
|
143
175
|
|
|
144
176
|
upsertPushProvider = (request: PushProviderRequest) => {
|
|
145
|
-
return this.serversideApi.upsertPushProvider({
|
|
146
|
-
|
|
177
|
+
return this.serversideApi.upsertPushProvider({
|
|
178
|
+
upsertPushProviderRequest: { push_provider: request },
|
|
179
|
+
});
|
|
180
|
+
};
|
|
147
181
|
|
|
148
182
|
checkPush = (checkPushRequest: CheckPushRequest) => {
|
|
149
|
-
return this.testingApi.checkPush({checkPushRequest});
|
|
150
|
-
}
|
|
183
|
+
return this.testingApi.checkPush({ checkPushRequest });
|
|
184
|
+
};
|
|
151
185
|
|
|
152
186
|
createGuest = async (guestRequest: GuestRequest) => {
|
|
153
187
|
guestRequest.user = this.mapCustomDataBeforeSend(guestRequest.user);
|
|
@@ -209,10 +243,10 @@ export class StreamClient {
|
|
|
209
243
|
queryBannedUsers = async (payload: QueryBannedUsersRequest) => {
|
|
210
244
|
payload.user = this.mapCustomDataBeforeSend(payload.user);
|
|
211
245
|
const response = await this.usersApi.queryBannedUsers({ payload });
|
|
212
|
-
response.bans.forEach(b => {
|
|
246
|
+
response.bans.forEach((b) => {
|
|
213
247
|
b.banned_by = this.mapCustomDataAfterReceive(b.banned_by);
|
|
214
248
|
b.user = this.mapCustomDataAfterReceive(b.user);
|
|
215
|
-
})
|
|
249
|
+
});
|
|
216
250
|
|
|
217
251
|
return response;
|
|
218
252
|
};
|
|
@@ -221,7 +255,9 @@ export class StreamClient {
|
|
|
221
255
|
payload.user = this.mapCustomDataBeforeSend(payload.user);
|
|
222
256
|
const response = await this.usersApi.queryUsers({ payload });
|
|
223
257
|
// @ts-expect-error
|
|
224
|
-
response.users = response.users.map(
|
|
258
|
+
response.users = response.users.map(
|
|
259
|
+
(u) => this.mapCustomDataAfterReceive(u)!
|
|
260
|
+
);
|
|
225
261
|
|
|
226
262
|
return response;
|
|
227
263
|
};
|
|
@@ -256,22 +292,32 @@ export class StreamClient {
|
|
|
256
292
|
};
|
|
257
293
|
|
|
258
294
|
upsertUsers = async (updateUsersRequest: UpdateUsersRequest) => {
|
|
259
|
-
Object.keys(updateUsersRequest.users).forEach(key => {
|
|
260
|
-
updateUsersRequest.users[key] = this.mapCustomDataBeforeSend(
|
|
261
|
-
|
|
295
|
+
Object.keys(updateUsersRequest.users).forEach((key) => {
|
|
296
|
+
updateUsersRequest.users[key] = this.mapCustomDataBeforeSend(
|
|
297
|
+
updateUsersRequest.users[key]
|
|
298
|
+
);
|
|
299
|
+
});
|
|
262
300
|
const response = await this.usersApi.updateUsers({ updateUsersRequest });
|
|
263
|
-
Object.keys(response.users).forEach(key => {
|
|
264
|
-
response.users[key] = this.mapCustomDataAfterReceive(
|
|
301
|
+
Object.keys(response.users).forEach((key) => {
|
|
302
|
+
response.users[key] = this.mapCustomDataAfterReceive(
|
|
303
|
+
response.users[key]
|
|
304
|
+
)!;
|
|
265
305
|
});
|
|
266
306
|
|
|
267
307
|
return response;
|
|
268
308
|
};
|
|
269
309
|
|
|
270
|
-
updateUsersPartial = async (request: {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
310
|
+
updateUsersPartial = async (request: {
|
|
311
|
+
users: UpdateUserPartialRequest[];
|
|
312
|
+
}) => {
|
|
313
|
+
const response = await this.usersApi.updateUsersPartial({
|
|
314
|
+
// @ts-expect-error typing error
|
|
315
|
+
updateUserPartialRequest: request,
|
|
316
|
+
});
|
|
317
|
+
Object.keys(response.users).forEach((key) => {
|
|
318
|
+
response.users[key] = this.mapCustomDataAfterReceive(
|
|
319
|
+
response.users[key]
|
|
320
|
+
)!;
|
|
275
321
|
});
|
|
276
322
|
|
|
277
323
|
return response;
|
|
@@ -284,11 +330,11 @@ export class StreamClient {
|
|
|
284
330
|
response.mute.user = this.mapCustomDataAfterReceive(response.mute?.user);
|
|
285
331
|
}
|
|
286
332
|
if (response.mutes) {
|
|
287
|
-
response.mutes = response.mutes.map(m => {
|
|
333
|
+
response.mutes = response.mutes.map((m) => {
|
|
288
334
|
return {
|
|
289
335
|
...m,
|
|
290
|
-
user: this.mapCustomDataAfterReceive(m.user)
|
|
291
|
-
}
|
|
336
|
+
user: this.mapCustomDataAfterReceive(m.user),
|
|
337
|
+
};
|
|
292
338
|
});
|
|
293
339
|
}
|
|
294
340
|
|
|
@@ -296,49 +342,54 @@ export class StreamClient {
|
|
|
296
342
|
};
|
|
297
343
|
|
|
298
344
|
unmuteUser = (unmuteUserRequest: UnmuteUserRequest) => {
|
|
299
|
-
unmuteUserRequest.user = this.mapCustomDataBeforeSend(
|
|
345
|
+
unmuteUserRequest.user = this.mapCustomDataBeforeSend(
|
|
346
|
+
unmuteUserRequest.user
|
|
347
|
+
);
|
|
300
348
|
return this.usersApi.unmuteUser({ unmuteUserRequest });
|
|
301
349
|
};
|
|
302
350
|
|
|
303
351
|
sendCustomEventToUser = (userId: string, event: UserCustomEventRequest) => {
|
|
304
|
-
return this.eventsApi.sendUserCustomEvent({
|
|
305
|
-
|
|
352
|
+
return this.eventsApi.sendUserCustomEvent({
|
|
353
|
+
userId,
|
|
354
|
+
sendUserCustomEventRequest: { event },
|
|
355
|
+
});
|
|
356
|
+
};
|
|
306
357
|
|
|
307
358
|
createRole = (createRoleRequest: CreateRoleRequest) => {
|
|
308
|
-
return this.permissionsApi.createRole({createRoleRequest});
|
|
309
|
-
}
|
|
359
|
+
return this.permissionsApi.createRole({ createRoleRequest });
|
|
360
|
+
};
|
|
310
361
|
|
|
311
362
|
deleteRole = (request: DeleteRoleRequest) => {
|
|
312
363
|
return this.permissionsApi.deleteRole(request);
|
|
313
|
-
}
|
|
364
|
+
};
|
|
314
365
|
|
|
315
366
|
getPermission = (request: GetPermissionRequest) => {
|
|
316
367
|
return this.permissionsApi.getPermission(request);
|
|
317
|
-
}
|
|
368
|
+
};
|
|
318
369
|
|
|
319
370
|
listPermissions = () => {
|
|
320
371
|
return this.permissionsApi.listPermissions();
|
|
321
|
-
}
|
|
372
|
+
};
|
|
322
373
|
|
|
323
374
|
listRoles = () => {
|
|
324
375
|
return this.permissionsApi.listRoles();
|
|
325
|
-
}
|
|
376
|
+
};
|
|
326
377
|
|
|
327
378
|
getAppSettings = () => {
|
|
328
379
|
return this.settingsApi.getApp();
|
|
329
|
-
}
|
|
380
|
+
};
|
|
330
381
|
|
|
331
382
|
updateAppSettings = (updateAppRequest: UpdateAppRequest) => {
|
|
332
|
-
return this.settingsApi.updateApp({updateAppRequest});
|
|
333
|
-
}
|
|
383
|
+
return this.settingsApi.updateApp({ updateAppRequest });
|
|
384
|
+
};
|
|
334
385
|
|
|
335
386
|
getRateLimits = () => {
|
|
336
387
|
return this.settingsApi.getRateLimits();
|
|
337
|
-
}
|
|
388
|
+
};
|
|
338
389
|
|
|
339
390
|
getTaskStatus = (request: GetTaskRequest) => {
|
|
340
391
|
return this.tasksApi.getTask(request);
|
|
341
|
-
}
|
|
392
|
+
};
|
|
342
393
|
|
|
343
394
|
getConfiguration = (options?: { basePath?: string }) => {
|
|
344
395
|
return new Configuration({
|
|
@@ -408,23 +459,46 @@ export class StreamClient {
|
|
|
408
459
|
});
|
|
409
460
|
};
|
|
410
461
|
|
|
411
|
-
private reservedKeywords = [
|
|
412
|
-
|
|
462
|
+
private reservedKeywords = [
|
|
463
|
+
"ban_expires",
|
|
464
|
+
"banned",
|
|
465
|
+
"id",
|
|
466
|
+
"invisible",
|
|
467
|
+
"language",
|
|
468
|
+
"push_notifications",
|
|
469
|
+
"revoke_tokens_issued_before",
|
|
470
|
+
"role",
|
|
471
|
+
"teams",
|
|
472
|
+
"created_at",
|
|
473
|
+
"deactivated_at",
|
|
474
|
+
"deleted_at",
|
|
475
|
+
"last_active",
|
|
476
|
+
"online",
|
|
477
|
+
"updated_at",
|
|
478
|
+
"shadow_banned",
|
|
479
|
+
"name",
|
|
480
|
+
"image",
|
|
481
|
+
];
|
|
482
|
+
private mapCustomDataBeforeSend = (
|
|
483
|
+
user: UserObject | UserObjectRequest | UserResponse | undefined
|
|
484
|
+
) => {
|
|
413
485
|
if (!user) {
|
|
414
486
|
return undefined;
|
|
415
487
|
}
|
|
416
|
-
const copy = {...user};
|
|
488
|
+
const copy = { ...user };
|
|
417
489
|
delete copy.custom;
|
|
418
|
-
return {...copy, ...user.custom}
|
|
419
|
-
}
|
|
490
|
+
return { ...copy, ...user.custom };
|
|
491
|
+
};
|
|
420
492
|
|
|
421
|
-
private mapCustomDataAfterReceive = (
|
|
493
|
+
private mapCustomDataAfterReceive = (
|
|
494
|
+
user: UserObject | UserResponse | undefined
|
|
495
|
+
) => {
|
|
422
496
|
if (!user) {
|
|
423
497
|
return undefined;
|
|
424
498
|
}
|
|
425
499
|
// @ts-expect-error
|
|
426
500
|
let result: UserObject | UserResponse = {};
|
|
427
|
-
Object.keys(user).forEach(key => {
|
|
501
|
+
Object.keys(user).forEach((key) => {
|
|
428
502
|
if (!this.reservedKeywords.includes(key)) {
|
|
429
503
|
if (!result.custom) {
|
|
430
504
|
result.custom = {};
|
|
@@ -436,5 +510,5 @@ export class StreamClient {
|
|
|
436
510
|
});
|
|
437
511
|
|
|
438
512
|
return result;
|
|
439
|
-
}
|
|
513
|
+
};
|
|
440
514
|
}
|