@stream-io/node-sdk 0.1.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 (101) hide show
  1. package/.readme-assets/Github-Graphic-JS.jpg +0 -0
  2. package/LICENSE +219 -0
  3. package/README.md +29 -0
  4. package/dist/__tests__/block-lists.test.d.ts +1 -0
  5. package/dist/__tests__/call-members.test.d.ts +1 -0
  6. package/dist/__tests__/call-types.test.d.ts +1 -0
  7. package/dist/__tests__/call.test.d.ts +1 -0
  8. package/dist/__tests__/channel-types.test.d.ts +1 -0
  9. package/dist/__tests__/channel.test.d.ts +1 -0
  10. package/dist/__tests__/command.test.d.ts +1 -0
  11. package/dist/__tests__/create-token.test.d.ts +1 -0
  12. package/dist/__tests__/devices-push.test.d.ts +1 -0
  13. package/dist/__tests__/messages.test.d.ts +1 -0
  14. package/dist/__tests__/permissions-app-settings.test.d.ts +1 -0
  15. package/dist/__tests__/user-compat.test.d.ts +1 -0
  16. package/dist/__tests__/users.test.d.ts +1 -0
  17. package/dist/index.cjs.js +8789 -0
  18. package/dist/index.cjs.js.map +1 -0
  19. package/dist/index.d.ts +7 -0
  20. package/dist/index.es.js +8708 -0
  21. package/dist/index.es.js.map +1 -0
  22. package/dist/src/StreamCall.d.ts +37 -0
  23. package/dist/src/StreamChannel.d.ts +39 -0
  24. package/dist/src/StreamChatClient.d.ts +31 -0
  25. package/dist/src/StreamClient.d.ts +68 -0
  26. package/dist/src/StreamVideoClient.d.ts +16 -0
  27. package/dist/src/gen/chat/apis/ChannelTypesApi.d.ts +81 -0
  28. package/dist/src/gen/chat/apis/ChannelsApi.d.ts +308 -0
  29. package/dist/src/gen/chat/apis/CustomCommandsApi.d.ts +81 -0
  30. package/dist/src/gen/chat/apis/DefaultApi.d.ts +60 -0
  31. package/dist/src/gen/chat/apis/DevicesApi.d.ts +58 -0
  32. package/dist/src/gen/chat/apis/EventsApi.d.ts +64 -0
  33. package/dist/src/gen/chat/apis/FilesApi.d.ts +81 -0
  34. package/dist/src/gen/chat/apis/GDPRApi.d.ts +114 -0
  35. package/dist/src/gen/chat/apis/ImportsApi.d.ts +67 -0
  36. package/dist/src/gen/chat/apis/MessagesApi.d.ts +370 -0
  37. package/dist/src/gen/chat/apis/ModerationApi.d.ts +271 -0
  38. package/dist/src/gen/chat/apis/PermissionsV2Api.d.ts +77 -0
  39. package/dist/src/gen/chat/apis/PushApi.d.ts +65 -0
  40. package/dist/src/gen/chat/apis/ReactionsApi.d.ts +62 -0
  41. package/dist/src/gen/chat/apis/ServerSideApi.d.ts +31 -0
  42. package/dist/src/gen/chat/apis/SettingsApi.d.ts +257 -0
  43. package/dist/src/gen/chat/apis/TasksApi.d.ts +31 -0
  44. package/dist/src/gen/chat/apis/TestingApi.d.ts +57 -0
  45. package/dist/src/gen/chat/apis/UsersApi.d.ts +313 -0
  46. package/dist/src/gen/chat/apis/index.d.ts +19 -0
  47. package/dist/src/gen/chat/index.d.ts +3 -0
  48. package/dist/src/gen/chat/models/index.d.ts +15624 -0
  49. package/dist/src/gen/chat/runtime.d.ts +180 -0
  50. package/dist/src/gen/video/apis/DefaultApi.d.ts +505 -0
  51. package/dist/src/gen/video/apis/ServerSideApi.d.ts +81 -0
  52. package/dist/src/gen/video/apis/index.d.ts +2 -0
  53. package/dist/src/gen/video/index.d.ts +3 -0
  54. package/dist/src/gen/video/models/index.d.ts +4733 -0
  55. package/dist/src/gen/video/runtime.d.ts +180 -0
  56. package/dist/src/types.d.ts +1 -0
  57. package/dist/src/utils/create-token.d.ts +3 -0
  58. package/index.ts +7 -0
  59. package/package.json +47 -0
  60. package/src/StreamCall.ts +161 -0
  61. package/src/StreamChannel.ts +165 -0
  62. package/src/StreamChatClient.ts +102 -0
  63. package/src/StreamClient.ts +440 -0
  64. package/src/StreamVideoClient.ts +63 -0
  65. package/src/gen/chat/.openapi-generator/FILES +24 -0
  66. package/src/gen/chat/.openapi-generator/VERSION +1 -0
  67. package/src/gen/chat/.openapi-generator-ignore +23 -0
  68. package/src/gen/chat/apis/ChannelTypesApi.ts +275 -0
  69. package/src/gen/chat/apis/ChannelsApi.ts +1221 -0
  70. package/src/gen/chat/apis/CustomCommandsApi.ts +276 -0
  71. package/src/gen/chat/apis/DefaultApi.ts +196 -0
  72. package/src/gen/chat/apis/DevicesApi.ts +180 -0
  73. package/src/gen/chat/apis/EventsApi.ts +220 -0
  74. package/src/gen/chat/apis/FilesApi.ts +312 -0
  75. package/src/gen/chat/apis/GDPRApi.ts +418 -0
  76. package/src/gen/chat/apis/ImportsApi.ts +222 -0
  77. package/src/gen/chat/apis/MessagesApi.ts +1475 -0
  78. package/src/gen/chat/apis/ModerationApi.ts +1038 -0
  79. package/src/gen/chat/apis/PermissionsV2Api.ts +259 -0
  80. package/src/gen/chat/apis/PushApi.ts +183 -0
  81. package/src/gen/chat/apis/ReactionsApi.ts +202 -0
  82. package/src/gen/chat/apis/ServerSideApi.ts +79 -0
  83. package/src/gen/chat/apis/SettingsApi.ts +948 -0
  84. package/src/gen/chat/apis/TasksApi.ts +75 -0
  85. package/src/gen/chat/apis/TestingApi.ts +185 -0
  86. package/src/gen/chat/apis/UsersApi.ts +1203 -0
  87. package/src/gen/chat/apis/index.ts +30 -0
  88. package/src/gen/chat/index.ts +5 -0
  89. package/src/gen/chat/models/index.ts +15541 -0
  90. package/src/gen/chat/runtime.ts +415 -0
  91. package/src/gen/video/.openapi-generator/FILES +7 -0
  92. package/src/gen/video/.openapi-generator/VERSION +1 -0
  93. package/src/gen/video/.openapi-generator-ignore +23 -0
  94. package/src/gen/video/apis/DefaultApi.ts +1997 -0
  95. package/src/gen/video/apis/ServerSideApi.ts +276 -0
  96. package/src/gen/video/apis/index.ts +4 -0
  97. package/src/gen/video/index.ts +5 -0
  98. package/src/gen/video/models/index.ts +4642 -0
  99. package/src/gen/video/runtime.ts +415 -0
  100. package/src/types.ts +1 -0
  101. package/src/utils/create-token.ts +49 -0
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Stream Video API
3
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
4
+ *
5
+ * The version of the OpenAPI document: v89.9.2
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ export declare const BASE_PATH: string;
13
+ export interface ConfigurationParameters {
14
+ basePath?: string;
15
+ fetchApi?: FetchAPI;
16
+ middleware?: Middleware[];
17
+ queryParamsStringify?: (params: HTTPQuery) => string;
18
+ username?: string;
19
+ password?: string;
20
+ apiKey?: string | ((name: string) => string);
21
+ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>);
22
+ headers?: HTTPHeaders;
23
+ credentials?: RequestCredentials;
24
+ }
25
+ export declare class Configuration {
26
+ private configuration;
27
+ constructor(configuration?: ConfigurationParameters);
28
+ set config(configuration: Configuration);
29
+ get basePath(): string;
30
+ get fetchApi(): FetchAPI | undefined;
31
+ get middleware(): Middleware[];
32
+ get queryParamsStringify(): (params: HTTPQuery) => string;
33
+ get username(): string | undefined;
34
+ get password(): string | undefined;
35
+ get apiKey(): ((name: string) => string) | undefined;
36
+ get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined;
37
+ get headers(): HTTPHeaders | undefined;
38
+ get credentials(): RequestCredentials | undefined;
39
+ }
40
+ export declare const DefaultConfig: Configuration;
41
+ /**
42
+ * This is the base class for all generated API classes.
43
+ */
44
+ export declare class BaseAPI {
45
+ protected configuration: Configuration;
46
+ private static readonly jsonRegex;
47
+ private middleware;
48
+ constructor(configuration?: Configuration);
49
+ withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]): T;
50
+ withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>): T;
51
+ withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>): T;
52
+ /**
53
+ * Check if the given MIME is a JSON MIME.
54
+ * JSON MIME examples:
55
+ * application/json
56
+ * application/json; charset=UTF8
57
+ * APPLICATION/JSON
58
+ * application/vnd.company+json
59
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
60
+ * @return True if the given MIME is JSON, false otherwise.
61
+ */
62
+ protected isJsonMime(mime: string | null | undefined): boolean;
63
+ protected request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response>;
64
+ private createFetchParams;
65
+ private fetchApi;
66
+ /**
67
+ * Create a shallow clone of `this` by constructing a new instance
68
+ * and then shallow cloning data members.
69
+ */
70
+ private clone;
71
+ }
72
+ export declare class ResponseError extends Error {
73
+ response: Response;
74
+ name: "ResponseError";
75
+ constructor(response: Response, msg?: string);
76
+ }
77
+ export declare class FetchError extends Error {
78
+ cause: Error;
79
+ name: "FetchError";
80
+ constructor(cause: Error, msg?: string);
81
+ }
82
+ export declare class RequiredError extends Error {
83
+ field: string;
84
+ name: "RequiredError";
85
+ constructor(field: string, msg?: string);
86
+ }
87
+ export declare const COLLECTION_FORMATS: {
88
+ csv: string;
89
+ ssv: string;
90
+ tsv: string;
91
+ pipes: string;
92
+ };
93
+ export type FetchAPI = WindowOrWorkerGlobalScope['fetch'];
94
+ export type Json = any;
95
+ export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';
96
+ export type HTTPHeaders = {
97
+ [key: string]: string;
98
+ };
99
+ export type HTTPQuery = {
100
+ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery;
101
+ };
102
+ export type HTTPBody = Json | FormData | URLSearchParams;
103
+ export type HTTPRequestInit = {
104
+ headers?: HTTPHeaders;
105
+ method: HTTPMethod;
106
+ credentials?: RequestCredentials;
107
+ body?: HTTPBody;
108
+ };
109
+ export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
110
+ export type InitOverrideFunction = (requestContext: {
111
+ init: HTTPRequestInit;
112
+ context: RequestOpts;
113
+ }) => Promise<RequestInit>;
114
+ export interface FetchParams {
115
+ url: string;
116
+ init: RequestInit;
117
+ }
118
+ export interface RequestOpts {
119
+ path: string;
120
+ method: HTTPMethod;
121
+ headers: HTTPHeaders;
122
+ query?: HTTPQuery;
123
+ body?: HTTPBody;
124
+ }
125
+ export declare function querystring(params: HTTPQuery, prefix?: string): string;
126
+ export declare function canConsumeForm(consumes: Consume[]): boolean;
127
+ export interface Consume {
128
+ contentType: string;
129
+ }
130
+ export interface RequestContext {
131
+ fetch: FetchAPI;
132
+ url: string;
133
+ init: RequestInit;
134
+ }
135
+ export interface ResponseContext {
136
+ fetch: FetchAPI;
137
+ url: string;
138
+ init: RequestInit;
139
+ response: Response;
140
+ }
141
+ export interface ErrorContext {
142
+ fetch: FetchAPI;
143
+ url: string;
144
+ init: RequestInit;
145
+ error: unknown;
146
+ response?: Response;
147
+ }
148
+ export interface Middleware {
149
+ pre?(context: RequestContext): Promise<FetchParams | void>;
150
+ post?(context: ResponseContext): Promise<Response | void>;
151
+ onError?(context: ErrorContext): Promise<Response | void>;
152
+ }
153
+ export interface ApiResponse<T> {
154
+ raw: Response;
155
+ value(): Promise<T>;
156
+ }
157
+ export interface ResponseTransformer<T> {
158
+ (json: any): T;
159
+ }
160
+ export declare class JSONApiResponse<T> {
161
+ raw: Response;
162
+ private transformer;
163
+ constructor(raw: Response, transformer?: ResponseTransformer<T>);
164
+ value(): Promise<T>;
165
+ }
166
+ export declare class VoidApiResponse {
167
+ raw: Response;
168
+ constructor(raw: Response);
169
+ value(): Promise<void>;
170
+ }
171
+ export declare class BlobApiResponse {
172
+ raw: Response;
173
+ constructor(raw: Response);
174
+ value(): Promise<Blob>;
175
+ }
176
+ export declare class TextApiResponse {
177
+ raw: Response;
178
+ constructor(raw: Response);
179
+ value(): Promise<string>;
180
+ }
@@ -0,0 +1 @@
1
+ export type OmitTypeId<T> = Omit<T, 'type' | 'id' | 'connection_id'>;
@@ -0,0 +1,3 @@
1
+ import { Secret, SignOptions } from "jsonwebtoken";
2
+ export declare function JWTUserToken(apiSecret: Secret, userId: string, extraData?: {}, jwtOptions?: SignOptions): string;
3
+ export declare function JWTServerToken(apiSecret: Secret, jwtOptions?: SignOptions): string;
package/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./src/gen/chat/models";
2
+ export * from './src/gen/video/models';
3
+ export * from "./src/StreamClient";
4
+ export * from "./src/StreamVideoClient";
5
+ export * from "./src/StreamCall";
6
+ export * from "./src/StreamChatClient";
7
+ export * from "./src/StreamChannel";
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@stream-io/node-sdk",
3
+ "version": "0.1.0",
4
+ "description": "",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.es.js",
7
+ "types": "dist/index.d.ts",
8
+ "author": "https://getstream.io",
9
+ "license": "See license in LICENSE",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/GetStream/stream-node.git"
13
+ },
14
+ "scripts": {
15
+ "test": "vitest",
16
+ "start": "rollup -w -c",
17
+ "build": "rollup -c",
18
+ "generate:open-api": "./generate-openapi.sh protocol",
19
+ "generate:open-api:dev": "./generate-openapi.sh chat"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "src",
24
+ "index.ts",
25
+ "package.json",
26
+ "README.md",
27
+ "LICENSE",
28
+ ".readme-assets"
29
+ ],
30
+ "devDependencies": {
31
+ "@openapitools/openapi-generator-cli": "^2.7.0",
32
+ "@rollup/plugin-replace": "^5.0.2",
33
+ "@rollup/plugin-typescript": "^11.1.4",
34
+ "@types/jsonwebtoken": "^9.0.3",
35
+ "@types/uuid": "^9.0.4",
36
+ "dotenv": "^16.3.1",
37
+ "rollup": "^3.29.3",
38
+ "typescript": "^5.2.2",
39
+ "uuid": "^9.0.1",
40
+ "vite": "^4.4.9",
41
+ "vitest": "^0.34.5",
42
+ "vitest-mock-extended": "^1.2.1"
43
+ },
44
+ "dependencies": {
45
+ "jsonwebtoken": "^9.0.2"
46
+ }
47
+ }
@@ -0,0 +1,161 @@
1
+ import { StreamClient } from "./StreamClient";
2
+ import {
3
+ DefaultApi,
4
+ GetCallRequest,
5
+ VideoPinRequest,
6
+ VideoUnpinRequest,
7
+ VideoBlockUserRequest,
8
+ VideoGetOrCreateCallRequest,
9
+ VideoGoLiveRequest,
10
+ VideoMuteUsersRequest,
11
+ VideoUnblockUserRequest,
12
+ VideoUpdateCallRequest,
13
+ VideoUpdateCallMembersRequest,
14
+ VideoUpdateUserPermissionsRequest,
15
+ VideoQueryMembersRequest,
16
+ } from "./gen/video";
17
+ import { OmitTypeId } from "./types";
18
+
19
+ export class StreamCall {
20
+ private readonly baseRequest: { type: string; id: string };
21
+ private readonly apiClient: DefaultApi;
22
+
23
+ constructor(
24
+ private streamClient: StreamClient,
25
+ private type: string,
26
+ private id: string
27
+ ) {
28
+ this.baseRequest = { id: this.id, type: this.type };
29
+ const configuration = this.streamClient.getConfiguration({
30
+ basePath:
31
+ this.streamClient.basePath || "https://video.stream-io-api.com/video",
32
+ });
33
+ this.apiClient = new DefaultApi(configuration);
34
+ }
35
+
36
+ accept = () => {
37
+ return this.apiClient.acceptCall(this.baseRequest);
38
+ };
39
+
40
+ blockUser = (videoBlockUserRequest: VideoBlockUserRequest) => {
41
+ return this.apiClient.blockUser({
42
+ ...this.baseRequest,
43
+ videoBlockUserRequest,
44
+ });
45
+ };
46
+
47
+ endCall = () => {
48
+ return this.apiClient.endCall({ ...this.baseRequest });
49
+ };
50
+
51
+ get = (request: OmitTypeId<GetCallRequest>) => {
52
+ return this.apiClient.getCall({ ...request, ...this.baseRequest });
53
+ };
54
+
55
+ getOrCreate = (videoGetOrCreateCallRequest?: VideoGetOrCreateCallRequest) => {
56
+ return this.apiClient.getOrCreateCall({
57
+ ...this.baseRequest,
58
+ videoGetOrCreateCallRequest: videoGetOrCreateCallRequest || {},
59
+ });
60
+ };
61
+
62
+ create = (getOrCreateCallRequest?: VideoGetOrCreateCallRequest) => {
63
+ return this.getOrCreate(getOrCreateCallRequest);
64
+ };
65
+
66
+ goLive = (videoGoLiveRequest?: VideoGoLiveRequest) => {
67
+ return this.apiClient.goLive({
68
+ ...this.baseRequest,
69
+ videoGoLiveRequest: videoGoLiveRequest || null,
70
+ });
71
+ };
72
+
73
+ listRecordings = () => {
74
+ return this.apiClient.listRecordings({
75
+ ...this.baseRequest,
76
+ });
77
+ };
78
+
79
+ muteUsers = (videoMuteUsersRequest: VideoMuteUsersRequest) => {
80
+ return this.apiClient.muteUsers({ ...this.baseRequest, videoMuteUsersRequest });
81
+ };
82
+
83
+ queryMembers = (request?: OmitTypeId<VideoQueryMembersRequest>) => {
84
+ return this.apiClient.queryMembers({
85
+ videoQueryMembersRequest: { ...(request || {}), ...this.baseRequest },
86
+ });
87
+ };
88
+
89
+ sendCustomEvent = (event: { [key: string]: any }) => {
90
+ return this.apiClient.sendEvent({
91
+ videoSendEventRequest: { custom: event },
92
+ ...this.baseRequest,
93
+ });
94
+ };
95
+
96
+ startHLSBroadcasting = () => {
97
+ return this.apiClient.startHLSBroadcasting({ ...this.baseRequest });
98
+ };
99
+
100
+ startRecording = () => {
101
+ return this.apiClient.startRecording({ ...this.baseRequest });
102
+ };
103
+
104
+ startTranscription = () => {
105
+ return this.apiClient.startTranscription({ ...this.baseRequest });
106
+ };
107
+
108
+ stopHLSBroadcasting = () => {
109
+ return this.apiClient.stopHLSBroadcasting({ ...this.baseRequest });
110
+ };
111
+
112
+ stopLive = () => {
113
+ return this.apiClient.stopLive({ ...this.baseRequest });
114
+ };
115
+
116
+ stopRecording = () => {
117
+ return this.apiClient.stopRecording({ ...this.baseRequest });
118
+ };
119
+
120
+ stopTranscription = () => {
121
+ return this.apiClient.stopTranscription({ ...this.baseRequest });
122
+ };
123
+
124
+ unblockUser = (videoUnblockUserRequest: VideoUnblockUserRequest) => {
125
+ return this.apiClient.unblockUser({
126
+ videoUnblockUserRequest,
127
+ ...this.baseRequest,
128
+ });
129
+ };
130
+
131
+ update = (videoUpdateCallRequest: VideoUpdateCallRequest) => {
132
+ return this.apiClient.updateCall({
133
+ videoUpdateCallRequest,
134
+ ...this.baseRequest,
135
+ });
136
+ };
137
+
138
+ updateCallMembers = (videoUpdateCallMembersRequest: VideoUpdateCallMembersRequest) => {
139
+ return this.apiClient.updateCallMembers({
140
+ videoUpdateCallMembersRequest,
141
+ ...this.baseRequest,
142
+ });
143
+ };
144
+
145
+ updateUserPermissions = (
146
+ videoUpdateUserPermissionsRequest: VideoUpdateUserPermissionsRequest
147
+ ) => {
148
+ return this.apiClient.updateUserPermissions({
149
+ videoUpdateUserPermissionsRequest,
150
+ ...this.baseRequest,
151
+ });
152
+ };
153
+
154
+ pinVideo = (videoPinRequest: VideoPinRequest) => {
155
+ return this.apiClient.videoPin({ videoPinRequest, ...this.baseRequest });
156
+ };
157
+
158
+ unpinVideo = (videoUnpinRequest: VideoUnpinRequest) => {
159
+ return this.apiClient.videoUnpin({ videoUnpinRequest, ...this.baseRequest });
160
+ };
161
+ }
@@ -0,0 +1,165 @@
1
+ import { StreamClient } from "./StreamClient";
2
+ import { ChannelGetOrCreateRequest, ChannelsApi, DeleteChannelRequest, DeleteFileRequest, DeleteImageRequest, DeleteMessageRequest, DeleteReactionRequest, EventRequest, EventsApi, GetManyMessagesRequest, GetMessageRequest, GetOGRequest, GetReactionsRequest, GetRepliesRequest, HideChannelRequest, MarkReadRequest, MarkUnreadRequest, MessagesApi, MuteChannelRequest, QueryMembersRequest, SendMessageRequest, SendReactionRequest, ShowChannelRequest, TranslateMessageRequest, TruncateChannelRequest, UnmuteChannelRequest, UpdateChannelPartialRequest, UpdateChannelRequest, UpdateMessagePartialRequest, UpdateMessageRequest, UploadFileRequest, UploadImageRequest } from "./gen/chat";
3
+ import { OmitTypeId } from "./types";
4
+
5
+ export class StreamChannel {
6
+ private readonly channelsApi: ChannelsApi;
7
+ private readonly messagesApi: MessagesApi;
8
+ private readonly eventsApi: EventsApi;
9
+
10
+ constructor(
11
+ private streamClient: StreamClient,
12
+ public readonly type: string,
13
+ public id?: string
14
+ ) {
15
+ const configuration = this.streamClient.getConfiguration();
16
+ //@ts-expect-error typing problem
17
+ this.channelsApi = new ChannelsApi(configuration);
18
+ //@ts-expect-error typing problem
19
+ this.messagesApi = new MessagesApi(configuration);
20
+ //@ts-expect-error typing problem
21
+ this.eventsApi = new EventsApi(configuration);
22
+ }
23
+
24
+ get cid() {
25
+ return `${this.baseRequest.type}:${this.baseRequest.id}`
26
+ }
27
+
28
+ delete = (request?: OmitTypeId<DeleteChannelRequest>) => {
29
+ return this.channelsApi.deleteChannel({...this.baseRequest, ...(request || {})});
30
+ }
31
+
32
+ update = (updateChannelRequest: OmitTypeId<UpdateChannelRequest>) => {
33
+ return this.channelsApi.updateChannel({...this.baseRequest, updateChannelRequest});
34
+ }
35
+
36
+ updatePartial = (updateChannelPartialRequest: OmitTypeId<UpdateChannelPartialRequest>) => {
37
+ return this.channelsApi.updateChannelPartial({...this.baseRequest, updateChannelPartialRequest});
38
+ }
39
+
40
+ getOrCreate = async (channelGetOrCreateRequest?: ChannelGetOrCreateRequest) => {
41
+ if (this.id) {
42
+ return this.channelsApi.getOrCreateChannel({...this.baseRequest, channelGetOrCreateRequest: channelGetOrCreateRequest || {}});
43
+ } else {
44
+ throw new Error(`This operation isn't yet implemented`);
45
+ // if (!channelGetOrCreateRequest?.data?.members) {
46
+ // throw new Error('You need to provide members to create a channel without ID');
47
+ // }
48
+ // const response = await this.channelsApi.getOrCreateChannelType1({type: this.type, channelGetOrCreateRequest});
49
+ // this.id = response.channel?.id;
50
+ // return response;
51
+ }
52
+ }
53
+
54
+ markRead = (markReadRequest: MarkReadRequest) => {
55
+ return this.channelsApi.markRead({...this.baseRequest, markReadRequest});
56
+ }
57
+
58
+ markUnread = (markUnreadRequest: MarkUnreadRequest) => {
59
+ return this.channelsApi.markUnread({...this.baseRequest, markUnreadRequest});
60
+ }
61
+
62
+ show = (showChannelRequest: ShowChannelRequest) => {
63
+ return this.channelsApi.showChannel({...this.baseRequest, showChannelRequest});
64
+ }
65
+
66
+ hide = (hideChannelRequest: HideChannelRequest) => {
67
+ return this.channelsApi.hideChannel({...this.baseRequest, hideChannelRequest});
68
+ }
69
+
70
+ truncate = (truncateChannelRequest: TruncateChannelRequest ) => {
71
+ return this.channelsApi.truncateChannel({...this.baseRequest, truncateChannelRequest});
72
+ }
73
+
74
+ queryMembers = (request: OmitTypeId<QueryMembersRequest>) => {
75
+ return this.channelsApi.queryMembers({payload: {...this.baseRequest, ...request}});
76
+ }
77
+
78
+ mute = (muteChannelRequest: Omit<MuteChannelRequest, 'channel_cids'>) => {
79
+ return this.channelsApi.muteChannel({muteChannelRequest: {...muteChannelRequest, channel_cids: [this.cid]}});
80
+ }
81
+
82
+ unmute = (unmuteChannelRequest: Omit<UnmuteChannelRequest, 'channel_cids' | 'channel_cid'>) => {
83
+ return this.channelsApi.unmuteChannel({unmuteChannelRequest: {...unmuteChannelRequest, channel_cid: this.cid, channel_cids: []}});
84
+ }
85
+
86
+ // TODO: there is probably an issue with the generated code here
87
+ // uploadFile = (options: Omit<OmitTypeId<UploadFileRequest>, 'file'>, file: Buffer) => {
88
+ // return this.messagesApi.uploadFile({...options, ...this.baseRequest, file: file as any as string});
89
+ // }
90
+
91
+ // deleteFile = (request: OmitTypeId<DeleteFileRequest>) => {
92
+ // return this.messagesApi.deleteFile({...request, ...this.baseRequest});
93
+ // }
94
+
95
+ // uploadImage = (request: OmitTypeId<UploadImageRequest>) => {
96
+ // return this.messagesApi.uploadImage({...request, ...this.baseRequest});
97
+ // }
98
+
99
+ // deleteImage = (request: OmitTypeId<DeleteImageRequest>) => {
100
+ // return this.messagesApi.deleteImage({...request, ...this.baseRequest});
101
+ // }
102
+
103
+ sendMessage = (sendMessageRequest: SendMessageRequest) => {
104
+ return this.messagesApi.sendMessage({...this.baseRequest, sendMessageRequest});
105
+ }
106
+
107
+ deleteMessage = (request: DeleteMessageRequest) => {
108
+ return this.messagesApi.deleteMessage(request);
109
+ }
110
+
111
+ updateMessage = (id: string, updateMessageRequest: UpdateMessageRequest) => {
112
+ return this.messagesApi.updateMessage({id, updateMessageRequest});
113
+ }
114
+
115
+ updateMessagePartial = (id: string, updateMessagePartialRequest: UpdateMessagePartialRequest) => {
116
+ return this.messagesApi.updateMessagePartial({id, updateMessagePartialRequest});
117
+ }
118
+
119
+ getMessage = (request: GetMessageRequest) => {
120
+ return this.messagesApi.getMessage(request);
121
+ }
122
+
123
+ getManyMessages = (request: OmitTypeId<GetManyMessagesRequest>) => {
124
+ return this.messagesApi.getManyMessages({...request, ...this.baseRequest});
125
+ }
126
+
127
+ translateMessage = (id: string, translateMessageRequest: TranslateMessageRequest) => {
128
+ return this.messagesApi.translateMessage({id, translateMessageRequest});
129
+ }
130
+
131
+ getMessagesAround = (request: GetRepliesRequest) => {
132
+ return this.messagesApi.getReplies(request);
133
+ }
134
+
135
+ getOpenGraphData = (request: GetOGRequest) => {
136
+ return this.messagesApi.getOG(request);
137
+ }
138
+
139
+ sendMessageReaction = (messageId: string, sendReactionRequest: SendReactionRequest) => {
140
+ return this.messagesApi.sendReaction({id: messageId, sendReactionRequest});
141
+ }
142
+
143
+ deleteMessageReaction = (messageId: string, request: Omit<DeleteReactionRequest, 'id'>) => {
144
+ return this.messagesApi.deleteReaction({...request, id: messageId});
145
+ }
146
+
147
+ getMessageReactions = (messageId: string, request?: Omit<GetReactionsRequest, 'id'>) => {
148
+ return this.messagesApi.getReactions({...(request || {}), id: messageId});
149
+ }
150
+
151
+ sendCustomEvent = (event: EventRequest) => {
152
+ return this.eventsApi.sendEvent({...this.baseRequest, sendEventRequest: {event}});
153
+ }
154
+
155
+ private get baseRequest() {
156
+ if (!this.id) {
157
+ throw new Error('You need to initialize the channel with `getOrCreate`');
158
+ }
159
+
160
+ return {
161
+ id: this.id,
162
+ type: this.type
163
+ }
164
+ }
165
+ }
@@ -0,0 +1,102 @@
1
+ import { StreamChannel } from "./StreamChannel";
2
+ import { StreamClient } from "./StreamClient";
3
+ import { ChannelTypesApi, ChannelsApi, CreateBlockListRequest, CreateChannelTypeRequest, CreateCommandRequest, CustomCommandsApi, DeleteBlockListRequest, DeleteChannelTypeRequest, DeleteCommandRequest, ExportChannelsRequest, GetBlockListRequest, GetChannelTypeRequest, GetCommandRequest, GetExportChannelsStatusRequest, QueryChannelsRequest, SearchRequest, SettingsApi, UpdateBlockListRequest, UpdateChannelTypeRequest, UpdateCommandRequest } from "./gen/chat";
4
+
5
+ export class StreamChatClient {
6
+ private settingsApi: SettingsApi;
7
+ private channelTypesApi: ChannelTypesApi;
8
+ private channelsApi: ChannelsApi;
9
+ private commandsApi: CustomCommandsApi;
10
+
11
+ constructor(private streamClient: StreamClient) {
12
+ const configuration = this.streamClient.getConfiguration();
13
+ //@ts-expect-error typing problem
14
+ this.settingsApi = new SettingsApi(configuration);
15
+ //@ts-expect-error typing problem
16
+ this.channelTypesApi = new ChannelTypesApi(configuration);
17
+ //@ts-expect-error typing problem
18
+ this.channelsApi = new ChannelsApi(configuration);
19
+ //@ts-expect-error typing problem
20
+ this.commandsApi = new CustomCommandsApi(configuration);
21
+ }
22
+
23
+ channel = (type: string, id?: string) => {
24
+ return new StreamChannel(this.streamClient, type, id);
25
+ }
26
+
27
+ createBlockList = (createBlockListRequest: CreateBlockListRequest) => {
28
+ return this.settingsApi.createBlockList({createBlockListRequest});
29
+ }
30
+
31
+ listBlockLists = () => {
32
+ return this.settingsApi.listBlockLists();
33
+ }
34
+
35
+ getBlockList = (request: GetBlockListRequest) => {
36
+ return this.settingsApi.getBlockList(request);
37
+ }
38
+
39
+ updateBlockList = (name: string, updateBlockListRequest: UpdateBlockListRequest) => {
40
+ return this.settingsApi.updateBlockList({name, updateBlockListRequest});
41
+ }
42
+
43
+ deleteBlockList = (request: DeleteBlockListRequest) => {
44
+ return this.settingsApi.deleteBlockList(request);
45
+ }
46
+
47
+ createChannelType = (createChannelTypeRequest: CreateChannelTypeRequest) => {
48
+ return this.channelTypesApi.createChannelType({createChannelTypeRequest});
49
+ }
50
+
51
+ deleteChannelType = (request: DeleteChannelTypeRequest) => {
52
+ return this.channelTypesApi.deleteChannelType(request);
53
+ }
54
+
55
+ getChannelType = (request: GetChannelTypeRequest) => {
56
+ return this.channelTypesApi.getChannelType(request);
57
+ }
58
+
59
+ listChannelTypes = () => {
60
+ return this.channelTypesApi.listChannelTypes();
61
+ }
62
+
63
+ updateChannelType = (name: string, updateChannelTypeRequest: UpdateChannelTypeRequest) => {
64
+ return this.channelTypesApi.updateChannelType({name, updateChannelTypeRequest});
65
+ }
66
+
67
+ queryChannels = (queryChannelsRequest?: QueryChannelsRequest) => {
68
+ return this.channelsApi.queryChannels({queryChannelsRequest: queryChannelsRequest || null});
69
+ }
70
+
71
+ searchMessages = (payload?: SearchRequest) => {
72
+ return this.channelsApi.search({payload: payload});
73
+ }
74
+
75
+ exportChannels = (exportChannelsRequest?: ExportChannelsRequest) => {
76
+ return this.channelsApi.exportChannels({exportChannelsRequest: exportChannelsRequest || null});
77
+ }
78
+
79
+ getExportStatus = (request: GetExportChannelsStatusRequest) => {
80
+ return this.channelsApi.getExportChannelsStatus(request);
81
+ }
82
+
83
+ listCommands = () => {
84
+ return this.commandsApi.listCommands();
85
+ }
86
+
87
+ createCommand = (createCommandRequest: CreateCommandRequest) => {
88
+ return this.commandsApi.createCommand({createCommandRequest});
89
+ }
90
+
91
+ getCommand = (getCommandRequest: GetCommandRequest) => {
92
+ return this.commandsApi.getCommand(getCommandRequest);
93
+ }
94
+
95
+ updateCommand = (name: string, updateCommandRequest: UpdateCommandRequest) => {
96
+ return this.commandsApi.updateCommand({name, updateCommandRequest})
97
+ }
98
+
99
+ deleteCommand = (request: DeleteCommandRequest) => {
100
+ return this.commandsApi.deleteCommand(request);
101
+ }
102
+ }