prototurk-sdk 0.0.1
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 +189 -0
- package/dist/client/Client.d.ts +61 -0
- package/dist/client/Client.d.ts.map +1 -0
- package/dist/client/Client.js +95 -0
- package/dist/client/Client.js.map +1 -0
- package/dist/client/ClientUser.d.ts +22 -0
- package/dist/client/ClientUser.d.ts.map +1 -0
- package/dist/client/ClientUser.js +19 -0
- package/dist/client/ClientUser.js.map +1 -0
- package/dist/gateway/EventPoller.d.ts +23 -0
- package/dist/gateway/EventPoller.d.ts.map +1 -0
- package/dist/gateway/EventPoller.js +99 -0
- package/dist/gateway/EventPoller.js.map +1 -0
- package/dist/gateway/GatewayEvents.d.ts +28 -0
- package/dist/gateway/GatewayEvents.d.ts.map +1 -0
- package/dist/gateway/GatewayEvents.js +2 -0
- package/dist/gateway/GatewayEvents.js.map +1 -0
- package/dist/gateway/WebhookHandler.d.ts +13 -0
- package/dist/gateway/WebhookHandler.d.ts.map +1 -0
- package/dist/gateway/WebhookHandler.js +51 -0
- package/dist/gateway/WebhookHandler.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/managers/DMManager.d.ts +37 -0
- package/dist/managers/DMManager.d.ts.map +1 -0
- package/dist/managers/DMManager.js +50 -0
- package/dist/managers/DMManager.js.map +1 -0
- package/dist/managers/PostManager.d.ts +45 -0
- package/dist/managers/PostManager.d.ts.map +1 -0
- package/dist/managers/PostManager.js +60 -0
- package/dist/managers/PostManager.js.map +1 -0
- package/dist/managers/UploadManager.d.ts +30 -0
- package/dist/managers/UploadManager.d.ts.map +1 -0
- package/dist/managers/UploadManager.js +57 -0
- package/dist/managers/UploadManager.js.map +1 -0
- package/dist/managers/UserManager.d.ts +13 -0
- package/dist/managers/UserManager.d.ts.map +1 -0
- package/dist/managers/UserManager.js +21 -0
- package/dist/managers/UserManager.js.map +1 -0
- package/dist/rest/APIError.d.ts +6 -0
- package/dist/rest/APIError.d.ts.map +1 -0
- package/dist/rest/APIError.js +11 -0
- package/dist/rest/APIError.js.map +1 -0
- package/dist/rest/RESTManager.d.ts +15 -0
- package/dist/rest/RESTManager.d.ts.map +1 -0
- package/dist/rest/RESTManager.js +62 -0
- package/dist/rest/RESTManager.js.map +1 -0
- package/dist/structures/Base.d.ts +6 -0
- package/dist/structures/Base.d.ts.map +1 -0
- package/dist/structures/Base.js +7 -0
- package/dist/structures/Base.js.map +1 -0
- package/dist/structures/DMConversation.d.ts +33 -0
- package/dist/structures/DMConversation.d.ts.map +1 -0
- package/dist/structures/DMConversation.js +28 -0
- package/dist/structures/DMConversation.js.map +1 -0
- package/dist/structures/DMMessage.d.ts +31 -0
- package/dist/structures/DMMessage.d.ts.map +1 -0
- package/dist/structures/DMMessage.js +31 -0
- package/dist/structures/DMMessage.js.map +1 -0
- package/dist/structures/Post.d.ts +63 -0
- package/dist/structures/Post.d.ts.map +1 -0
- package/dist/structures/Post.js +42 -0
- package/dist/structures/Post.js.map +1 -0
- package/dist/structures/User.d.ts +33 -0
- package/dist/structures/User.d.ts.map +1 -0
- package/dist/structures/User.js +29 -0
- package/dist/structures/User.js.map +1 -0
- package/dist/util/Collection.d.ts +14 -0
- package/dist/util/Collection.d.ts.map +1 -0
- package/dist/util/Collection.js +50 -0
- package/dist/util/Collection.js.map +1 -0
- package/dist/util/Constants.d.ts +44 -0
- package/dist/util/Constants.d.ts.map +1 -0
- package/dist/util/Constants.js +47 -0
- package/dist/util/Constants.js.map +1 -0
- package/package.json +27 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./client/Client";
|
|
2
|
+
export * from "./client/ClientUser";
|
|
3
|
+
export * from "./gateway/EventPoller";
|
|
4
|
+
export * from "./gateway/WebhookHandler";
|
|
5
|
+
export * from "./managers/DMManager";
|
|
6
|
+
export * from "./managers/PostManager";
|
|
7
|
+
export * from "./managers/UserManager";
|
|
8
|
+
export * from "./managers/UploadManager";
|
|
9
|
+
export * from "./rest/APIError";
|
|
10
|
+
export * from "./rest/RESTManager";
|
|
11
|
+
export * from "./structures/Base";
|
|
12
|
+
export * from "./structures/DMConversation";
|
|
13
|
+
export * from "./structures/DMMessage";
|
|
14
|
+
export * from "./structures/Post";
|
|
15
|
+
export * from "./structures/User";
|
|
16
|
+
export * from "./gateway/GatewayEvents";
|
|
17
|
+
export * from "./util/Collection";
|
|
18
|
+
export * from "./util/Constants";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAExC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./client/Client";
|
|
2
|
+
export * from "./client/ClientUser";
|
|
3
|
+
export * from "./gateway/EventPoller";
|
|
4
|
+
export * from "./gateway/WebhookHandler";
|
|
5
|
+
export * from "./managers/DMManager";
|
|
6
|
+
export * from "./managers/PostManager";
|
|
7
|
+
export * from "./managers/UserManager";
|
|
8
|
+
export * from "./managers/UploadManager";
|
|
9
|
+
export * from "./rest/APIError";
|
|
10
|
+
export * from "./rest/RESTManager";
|
|
11
|
+
export * from "./structures/Base";
|
|
12
|
+
export * from "./structures/DMConversation";
|
|
13
|
+
export * from "./structures/DMMessage";
|
|
14
|
+
export * from "./structures/Post";
|
|
15
|
+
export * from "./structures/User";
|
|
16
|
+
export * from "./gateway/GatewayEvents";
|
|
17
|
+
export * from "./util/Collection";
|
|
18
|
+
export * from "./util/Constants";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAExC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Client } from "../client/Client";
|
|
2
|
+
import { DMConversation, type DMConversationData } from "../structures/DMConversation";
|
|
3
|
+
import { DMMessage, type DMMessageData } from "../structures/DMMessage";
|
|
4
|
+
import type { MessageOptions } from "../structures/Post";
|
|
5
|
+
import { Collection } from "../util/Collection";
|
|
6
|
+
export interface DMConversationListResponse {
|
|
7
|
+
items: DMConversationData[];
|
|
8
|
+
nextCursor: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface DMMessageListResponse {
|
|
11
|
+
items: DMMessageData[];
|
|
12
|
+
nextCursor: string | null;
|
|
13
|
+
}
|
|
14
|
+
export declare class DMManager {
|
|
15
|
+
readonly client: Client;
|
|
16
|
+
conversationsCache: Collection<string, DMConversation>;
|
|
17
|
+
constructor(client: Client);
|
|
18
|
+
/**
|
|
19
|
+
* List inbox conversations.
|
|
20
|
+
*/
|
|
21
|
+
fetchConversations(options?: {
|
|
22
|
+
limit?: number;
|
|
23
|
+
cursor?: string;
|
|
24
|
+
}): Promise<DMConversationListResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* List messages in a DM conversation.
|
|
27
|
+
*/
|
|
28
|
+
fetchMessages(conversationId: string, options?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
cursor?: string;
|
|
31
|
+
}): Promise<DMMessageListResponse>;
|
|
32
|
+
/**
|
|
33
|
+
* Reply in an existing DM conversation.
|
|
34
|
+
*/
|
|
35
|
+
createMessage(conversationId: string, content: string | MessageOptions): Promise<DMMessage>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=DMManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DMManager.d.ts","sourceRoot":"","sources":["../../src/managers/DMManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACH,cAAc,EACd,KAAK,kBAAkB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,0BAA0B;IACvC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qBAAa,SAAS;IAClB,SAAgB,MAAM,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBAElD,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACU,kBAAkB,CAAC,OAAO,CAAC,EAAE;QACtC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAcvC;;OAEG;IACU,aAAa,CACtB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,qBAAqB,CAAC;IAOjC;;OAEG;IACU,aAAa,CACtB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GAAG,cAAc,GACjC,OAAO,CAAC,SAAS,CAAC;CAwBxB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { DMConversation, } from "../structures/DMConversation";
|
|
2
|
+
import { DMMessage } from "../structures/DMMessage";
|
|
3
|
+
import { Endpoints } from "../util/Constants";
|
|
4
|
+
import { Collection } from "../util/Collection";
|
|
5
|
+
export class DMManager {
|
|
6
|
+
client;
|
|
7
|
+
conversationsCache;
|
|
8
|
+
constructor(client) {
|
|
9
|
+
this.client = client;
|
|
10
|
+
this.conversationsCache = new Collection();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* List inbox conversations.
|
|
14
|
+
*/
|
|
15
|
+
async fetchConversations(options) {
|
|
16
|
+
const data = await this.client.rest.get(Endpoints.DM_CONVERSATIONS, options);
|
|
17
|
+
for (const convData of data.items) {
|
|
18
|
+
const conv = new DMConversation(this.client, convData);
|
|
19
|
+
this.conversationsCache.set(conv.id, conv);
|
|
20
|
+
}
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* List messages in a DM conversation.
|
|
25
|
+
*/
|
|
26
|
+
async fetchMessages(conversationId, options) {
|
|
27
|
+
return this.client.rest.get(`${Endpoints.DM_CONVERSATIONS}/${conversationId}/messages`, options);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Reply in an existing DM conversation.
|
|
31
|
+
*/
|
|
32
|
+
async createMessage(conversationId, content) {
|
|
33
|
+
const payload = typeof content === "string" ? { text: content } : content;
|
|
34
|
+
const data = await this.client.rest.post(`${Endpoints.DM_CONVERSATIONS}/${conversationId}/messages`, payload);
|
|
35
|
+
// Prototurk API CreateMessageResponse doesn't return the full message struct,
|
|
36
|
+
// but we can try to return a constructed structure or we might need to fetch it.
|
|
37
|
+
const message = new DMMessage(this.client, {
|
|
38
|
+
id: data.id,
|
|
39
|
+
conversationId: data.conversationId,
|
|
40
|
+
createdAt: data.createdAt,
|
|
41
|
+
text: payload.text || "", // text might be empty if only images are sent
|
|
42
|
+
fromBot: true,
|
|
43
|
+
authorUsername: this.client.user?.username || "unknown",
|
|
44
|
+
replyToId: null,
|
|
45
|
+
images: payload.imageKeys ? [] : [], // We don't have the full image struct here without a fetch
|
|
46
|
+
});
|
|
47
|
+
return message;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=DMManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DMManager.js","sourceRoot":"","sources":["../../src/managers/DMManager.ts"],"names":[],"mappings":"AACA,OAAO,EACH,cAAc,GAEjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAsB,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAYhD,MAAM,OAAO,SAAS;IACF,MAAM,CAAS;IACxB,kBAAkB,CAAqC;IAE9D,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,UAAU,EAA0B,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAAC,OAG/B;QACG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACnC,SAAS,CAAC,gBAAgB,EAC1B,OAAO,CACV,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACtB,cAAsB,EACtB,OAA6C;QAE7C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACvB,GAAG,SAAS,CAAC,gBAAgB,IAAI,cAAc,WAAW,EAC1D,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACtB,cAAsB,EACtB,OAAgC;QAEhC,MAAM,OAAO,GACT,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAIrC,GAAG,SAAS,CAAC,gBAAgB,IAAI,cAAc,WAAW,EAAE,OAAO,CAAC,CAAC;QAExE,8EAA8E;QAC9E,iFAAiF;QACjF,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;YACvC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,8CAA8C;YACxE,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS;YACvD,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,2DAA2D;SACnG,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Client } from "../client/Client";
|
|
2
|
+
import { Post, type PostData, type MessageOptions } from "../structures/Post";
|
|
3
|
+
import { Collection } from "../util/Collection";
|
|
4
|
+
export interface PostListResponse {
|
|
5
|
+
items: PostData[];
|
|
6
|
+
nextCursor: string | null;
|
|
7
|
+
}
|
|
8
|
+
export declare class PostManager {
|
|
9
|
+
readonly client: Client;
|
|
10
|
+
cache: Collection<string, Post>;
|
|
11
|
+
constructor(client: Client);
|
|
12
|
+
/**
|
|
13
|
+
* Fetch a single post by ID.
|
|
14
|
+
*/
|
|
15
|
+
fetch(id: string): Promise<Post>;
|
|
16
|
+
/**
|
|
17
|
+
* Create a new top-level post.
|
|
18
|
+
*/
|
|
19
|
+
create(content: string | MessageOptions): Promise<Post>;
|
|
20
|
+
/**
|
|
21
|
+
* List comments for a post.
|
|
22
|
+
*/
|
|
23
|
+
fetchComments(postId: string, options?: {
|
|
24
|
+
limit?: number;
|
|
25
|
+
cursor?: string;
|
|
26
|
+
}): Promise<PostListResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Create a comment on a post.
|
|
29
|
+
*/
|
|
30
|
+
createComment(postId: string, content: string | MessageOptions): Promise<Post>;
|
|
31
|
+
/**
|
|
32
|
+
* List the public feed.
|
|
33
|
+
*/
|
|
34
|
+
fetchFeed(options?: {
|
|
35
|
+
limit?: number;
|
|
36
|
+
cursor?: string;
|
|
37
|
+
}): Promise<PostListResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Search public posts.
|
|
40
|
+
*/
|
|
41
|
+
search(q: string, options?: {
|
|
42
|
+
limit?: number;
|
|
43
|
+
}): Promise<PostListResponse>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=PostManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostManager.d.ts","sourceRoot":"","sources":["../../src/managers/PostManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qBAAa,WAAW;IACpB,SAAgB,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAE3B,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACU,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE;;OAEG;IACU,aAAa,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,gBAAgB,CAAC;IAO5B;;OAEG;IACU,aAAa,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,cAAc,GACjC,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;IACU,SAAS,CAAC,OAAO,CAAC,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI7B;;OAEG;IACU,MAAM,CACf,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,OAAO,CAAC,gBAAgB,CAAC;CAM/B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Post } from "../structures/Post";
|
|
2
|
+
import { Endpoints } from "../util/Constants";
|
|
3
|
+
import { Collection } from "../util/Collection";
|
|
4
|
+
export class PostManager {
|
|
5
|
+
client;
|
|
6
|
+
cache;
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.cache = new Collection();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Fetch a single post by ID.
|
|
13
|
+
*/
|
|
14
|
+
async fetch(id) {
|
|
15
|
+
const data = await this.client.rest.get(`${Endpoints.POSTS}/${id}`);
|
|
16
|
+
const post = new Post(this.client, data.post);
|
|
17
|
+
this.cache.set(post.id, post);
|
|
18
|
+
return post;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a new top-level post.
|
|
22
|
+
*/
|
|
23
|
+
async create(content) {
|
|
24
|
+
const payload = typeof content === "string" ? { text: content } : content;
|
|
25
|
+
const data = await this.client.rest.post(Endpoints.POSTS, payload);
|
|
26
|
+
// The create response doesn't return the full post object, just id and url.
|
|
27
|
+
// We should fetch it to return the full Post object.
|
|
28
|
+
return this.fetch(data.id);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* List comments for a post.
|
|
32
|
+
*/
|
|
33
|
+
async fetchComments(postId, options) {
|
|
34
|
+
return this.client.rest.get(`${Endpoints.POSTS}/${postId}/comments`, options);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create a comment on a post.
|
|
38
|
+
*/
|
|
39
|
+
async createComment(postId, content) {
|
|
40
|
+
const payload = typeof content === "string" ? { text: content } : content;
|
|
41
|
+
const data = await this.client.rest.post(`${Endpoints.POSTS}/${postId}/comments`, payload);
|
|
42
|
+
return this.fetch(data.id);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* List the public feed.
|
|
46
|
+
*/
|
|
47
|
+
async fetchFeed(options) {
|
|
48
|
+
return this.client.rest.get(Endpoints.FEED, options);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Search public posts.
|
|
52
|
+
*/
|
|
53
|
+
async search(q, options) {
|
|
54
|
+
return this.client.rest.get(Endpoints.SEARCH, {
|
|
55
|
+
q,
|
|
56
|
+
...options,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=PostManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostManager.js","sourceRoot":"","sources":["../../src/managers/PostManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAsC,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,MAAM,OAAO,WAAW;IACJ,MAAM,CAAS;IACxB,KAAK,CAA2B;IAEvC,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,EAAgB,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,EAAU;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACnC,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,EAAE,CAC7B,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,OAAgC;QAChD,MAAM,OAAO,GACT,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CACpC,SAAS,CAAC,KAAK,EACf,OAAO,CACV,CAAC;QACF,4EAA4E;QAC5E,qDAAqD;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACtB,MAAc,EACd,OAA6C;QAE7C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACvB,GAAG,SAAS,CAAC,KAAK,IAAI,MAAM,WAAW,EACvC,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACtB,MAAc,EACd,OAAgC;QAEhC,MAAM,OAAO,GACT,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CACpC,GAAG,SAAS,CAAC,KAAK,IAAI,MAAM,WAAW,EACvC,OAAO,CACV,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,OAGtB;QACG,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAmB,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CACf,CAAS,EACT,OAA4B;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAmB,SAAS,CAAC,MAAM,EAAE;YAC5D,CAAC;YACD,GAAG,OAAO;SACb,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Client } from '../client/Client';
|
|
2
|
+
export interface UploadResponse {
|
|
3
|
+
key: string;
|
|
4
|
+
url: string;
|
|
5
|
+
thumbUrl: string | null;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
bytes: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class UploadManager {
|
|
11
|
+
readonly client: Client;
|
|
12
|
+
constructor(client: Client);
|
|
13
|
+
/**
|
|
14
|
+
* Upload an image from a remote URL.
|
|
15
|
+
* @param url The URL of the image.
|
|
16
|
+
*/
|
|
17
|
+
uploadFromUrl(url: string): Promise<UploadResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Upload an image from base64 encoded bytes.
|
|
20
|
+
* @param dataBase64 Base64 encoded image data.
|
|
21
|
+
* @param contentType MIME type of the image (e.g. 'image/png').
|
|
22
|
+
*/
|
|
23
|
+
uploadFromBase64(dataBase64: string, contentType: string): Promise<UploadResponse>;
|
|
24
|
+
/**
|
|
25
|
+
* Upload an image from a local file using multipart/form-data.
|
|
26
|
+
* @param filePath Path to the local file.
|
|
27
|
+
*/
|
|
28
|
+
uploadFromFile(filePath: string): Promise<UploadResponse>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=UploadManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadManager.d.ts","sourceRoot":"","sources":["../../src/managers/UploadManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IACxB,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE,MAAM;IAI1B;;;OAGG;IACU,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIhE;;;;OAIG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/F;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAgCvE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Endpoints, API_BASE_URL } from '../util/Constants';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
export class UploadManager {
|
|
4
|
+
client;
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Upload an image from a remote URL.
|
|
10
|
+
* @param url The URL of the image.
|
|
11
|
+
*/
|
|
12
|
+
async uploadFromUrl(url) {
|
|
13
|
+
return this.client.rest.post(Endpoints.UPLOADS, { url });
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Upload an image from base64 encoded bytes.
|
|
17
|
+
* @param dataBase64 Base64 encoded image data.
|
|
18
|
+
* @param contentType MIME type of the image (e.g. 'image/png').
|
|
19
|
+
*/
|
|
20
|
+
async uploadFromBase64(dataBase64, contentType) {
|
|
21
|
+
return this.client.rest.post(Endpoints.UPLOADS, { dataBase64, contentType });
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Upload an image from a local file using multipart/form-data.
|
|
25
|
+
* @param filePath Path to the local file.
|
|
26
|
+
*/
|
|
27
|
+
async uploadFromFile(filePath) {
|
|
28
|
+
const fileBuffer = await fs.promises.readFile(filePath);
|
|
29
|
+
const blob = new Blob([fileBuffer]);
|
|
30
|
+
const formData = new FormData();
|
|
31
|
+
formData.append('file', blob, filePath.split(/[\\/]/).pop());
|
|
32
|
+
const token = this.client.rest.getToken();
|
|
33
|
+
if (!token)
|
|
34
|
+
throw new Error('Token is not set');
|
|
35
|
+
// Custom request to avoid JSON serialization in RESTManager
|
|
36
|
+
const response = await fetch(`${API_BASE_URL}${Endpoints.UPLOADS}`, {
|
|
37
|
+
method: 'POST',
|
|
38
|
+
headers: {
|
|
39
|
+
'Authorization': `Bearer ${token}`
|
|
40
|
+
},
|
|
41
|
+
body: formData
|
|
42
|
+
});
|
|
43
|
+
let data;
|
|
44
|
+
try {
|
|
45
|
+
data = await response.json();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
data = null;
|
|
49
|
+
}
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
const { APIError } = await import('../rest/APIError');
|
|
52
|
+
throw new APIError(data?.error || response.statusText, data?.code || 'UNKNOWN_ERROR', response.status);
|
|
53
|
+
}
|
|
54
|
+
return data;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=UploadManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadManager.js","sourceRoot":"","sources":["../../src/managers/UploadManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAWzB,MAAM,OAAO,aAAa;IACR,MAAM,CAAS;IAE/B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,aAAa,CAAC,GAAW;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAiB,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,UAAkB,EAAE,WAAmB;QACnE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAiB,SAAS,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,QAAgB;QAC1C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAE7D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAEhD,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,KAAK,EAAE;aACnC;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,IAAI,IAAS,CAAC;QACd,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACtD,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzG,CAAC;QAED,OAAO,IAAsB,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Client } from "../client/Client";
|
|
2
|
+
import { User } from "../structures/User";
|
|
3
|
+
import { Collection } from "../util/Collection";
|
|
4
|
+
export declare class UserManager {
|
|
5
|
+
readonly client: Client;
|
|
6
|
+
cache: Collection<string, User>;
|
|
7
|
+
constructor(client: Client);
|
|
8
|
+
/**
|
|
9
|
+
* Fetch a user profile by username.
|
|
10
|
+
*/
|
|
11
|
+
fetch(username: string): Promise<User>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=UserManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserManager.d.ts","sourceRoot":"","sources":["../../src/managers/UserManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAiB,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qBAAa,WAAW;IACpB,SAAgB,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAE3B,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACU,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { User } from "../structures/User";
|
|
2
|
+
import { Endpoints } from "../util/Constants";
|
|
3
|
+
import { Collection } from "../util/Collection";
|
|
4
|
+
export class UserManager {
|
|
5
|
+
client;
|
|
6
|
+
cache; // Keyed by username
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.cache = new Collection();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Fetch a user profile by username.
|
|
13
|
+
*/
|
|
14
|
+
async fetch(username) {
|
|
15
|
+
const data = await this.client.rest.get(`${Endpoints.USERS}/${username}`);
|
|
16
|
+
const user = new User(this.client, data.profile);
|
|
17
|
+
this.cache.set(user.username, user);
|
|
18
|
+
return user;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=UserManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserManager.js","sourceRoot":"","sources":["../../src/managers/UserManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAiB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,OAAO,WAAW;IACJ,MAAM,CAAS;IACxB,KAAK,CAA2B,CAAC,oBAAoB;IAE5D,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,EAAgB,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACnC,GAAG,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE,CACnC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"APIError.d.ts","sourceRoot":"","sources":["../../src/rest/APIError.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAM1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"APIError.js","sourceRoot":"","sources":["../../src/rest/APIError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACb,MAAM,CAAS;IAEtB,YAAY,OAAe,EAAE,IAAY,EAAE,MAAc;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface RequestOptions {
|
|
2
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
3
|
+
body?: any;
|
|
4
|
+
query?: Record<string, any>;
|
|
5
|
+
headers?: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export declare class RESTManager {
|
|
8
|
+
private token;
|
|
9
|
+
setToken(token: string): void;
|
|
10
|
+
getToken(): string | null;
|
|
11
|
+
request<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
12
|
+
get<T>(endpoint: string, query?: Record<string, any>): Promise<T>;
|
|
13
|
+
post<T>(endpoint: string, body?: any): Promise<T>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=RESTManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RESTManager.d.ts","sourceRoot":"","sources":["../../src/rest/RESTManager.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAuB;IAE7B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,QAAQ,IAAI,MAAM,GAAG,IAAI;IAInB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAoDlF,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAG5C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { API_BASE_URL } from '../util/Constants';
|
|
2
|
+
import { APIError } from './APIError';
|
|
3
|
+
export class RESTManager {
|
|
4
|
+
token = null;
|
|
5
|
+
setToken(token) {
|
|
6
|
+
this.token = token;
|
|
7
|
+
}
|
|
8
|
+
getToken() {
|
|
9
|
+
return this.token;
|
|
10
|
+
}
|
|
11
|
+
async request(endpoint, options = {}) {
|
|
12
|
+
if (!this.token) {
|
|
13
|
+
throw new Error('Token is not set');
|
|
14
|
+
}
|
|
15
|
+
const { method = 'GET', body, query, headers = {} } = options;
|
|
16
|
+
let url = `${API_BASE_URL}${endpoint}`;
|
|
17
|
+
if (query) {
|
|
18
|
+
const searchParams = new URLSearchParams();
|
|
19
|
+
for (const [key, value] of Object.entries(query)) {
|
|
20
|
+
if (value !== undefined && value !== null) {
|
|
21
|
+
searchParams.append(key, String(value));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const queryString = searchParams.toString();
|
|
25
|
+
if (queryString) {
|
|
26
|
+
url += `?${queryString}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const fetchOptions = {
|
|
30
|
+
method,
|
|
31
|
+
headers: {
|
|
32
|
+
'Authorization': `Bearer ${this.token}`,
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
...headers,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
if (body) {
|
|
38
|
+
fetchOptions.body = JSON.stringify(body);
|
|
39
|
+
}
|
|
40
|
+
const response = await fetch(url, fetchOptions);
|
|
41
|
+
let data;
|
|
42
|
+
try {
|
|
43
|
+
data = await response.json();
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
data = null;
|
|
47
|
+
}
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
const errorMessage = data?.error || response.statusText;
|
|
50
|
+
const errorCode = data?.code || 'UNKNOWN_ERROR';
|
|
51
|
+
throw new APIError(errorMessage, errorCode, response.status);
|
|
52
|
+
}
|
|
53
|
+
return data;
|
|
54
|
+
}
|
|
55
|
+
get(endpoint, query) {
|
|
56
|
+
return this.request(endpoint, { method: 'GET', query });
|
|
57
|
+
}
|
|
58
|
+
post(endpoint, body) {
|
|
59
|
+
return this.request(endpoint, { method: 'POST', body });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=RESTManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RESTManager.js","sourceRoot":"","sources":["../../src/rest/RESTManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC,MAAM,OAAO,WAAW;IACd,KAAK,GAAkB,IAAI,CAAC;IAE7B,QAAQ,CAAC,KAAa;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAU,QAAgB,EAAE,UAA0B,EAAE;QAC1E,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAC9D,IAAI,GAAG,GAAG,GAAG,YAAY,GAAG,QAAQ,EAAE,CAAC;QAEvC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1C,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,WAAW,EAAE,CAAC;gBAChB,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAgB;YAChC,MAAM;YACN,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACvC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO;aACX;SACF,CAAC;QAEF,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,IAAS,CAAC;QAEd,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC;YACxD,MAAM,SAAS,GAAG,IAAI,EAAE,IAAI,IAAI,eAAe,CAAC;YAChD,MAAM,IAAI,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAS,CAAC;IACnB,CAAC;IAEM,GAAG,CAAI,QAAgB,EAAE,KAA2B;QACzD,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEM,IAAI,CAAI,QAAgB,EAAE,IAAU;QACzC,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../src/structures/Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,8BAAsB,IAAI;IACxB,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE,MAAM;CAG3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base.js","sourceRoot":"","sources":["../../src/structures/Base.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,IAAI;IACR,MAAM,CAAS;IAE/B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Base } from "./Base";
|
|
2
|
+
import { Client } from "../client/Client";
|
|
3
|
+
import type { AuthorData, MessageOptions } from "./Post";
|
|
4
|
+
export interface DMConversationLastMessage {
|
|
5
|
+
text: string;
|
|
6
|
+
fromBot: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface DMConversationData {
|
|
9
|
+
id: string;
|
|
10
|
+
peer: AuthorData;
|
|
11
|
+
lastMessageAt: string;
|
|
12
|
+
lastMessage: DMConversationLastMessage;
|
|
13
|
+
}
|
|
14
|
+
export declare class DMConversation extends Base {
|
|
15
|
+
id: string;
|
|
16
|
+
peer: AuthorData;
|
|
17
|
+
lastMessageAt: Date;
|
|
18
|
+
lastMessage: DMConversationLastMessage;
|
|
19
|
+
constructor(client: Client, data: DMConversationData);
|
|
20
|
+
/**
|
|
21
|
+
* Fetches messages in this conversation.
|
|
22
|
+
*/
|
|
23
|
+
fetchMessages(options?: {
|
|
24
|
+
limit?: number;
|
|
25
|
+
cursor?: string;
|
|
26
|
+
}): Promise<import("..").DMMessageListResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Sends a message in this conversation.
|
|
29
|
+
* @param content The message text or options.
|
|
30
|
+
*/
|
|
31
|
+
send(content: string | MessageOptions): Promise<import("./DMMessage").DMMessage>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=DMConversation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DMConversation.d.ts","sourceRoot":"","sources":["../../src/structures/DMConversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,yBAAyB,CAAC;CAC1C;AAED,qBAAa,cAAe,SAAQ,IAAI;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,IAAI,CAAC;IACpB,WAAW,EAAE,yBAAyB,CAAC;gBAElC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAQpD;;OAEG;IACU,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAIxE;;;OAGG;IACU,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAGrD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Base } from "./Base";
|
|
2
|
+
export class DMConversation extends Base {
|
|
3
|
+
id;
|
|
4
|
+
peer;
|
|
5
|
+
lastMessageAt;
|
|
6
|
+
lastMessage;
|
|
7
|
+
constructor(client, data) {
|
|
8
|
+
super(client);
|
|
9
|
+
this.id = data.id;
|
|
10
|
+
this.peer = data.peer;
|
|
11
|
+
this.lastMessageAt = new Date(data.lastMessageAt);
|
|
12
|
+
this.lastMessage = data.lastMessage;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Fetches messages in this conversation.
|
|
16
|
+
*/
|
|
17
|
+
async fetchMessages(options) {
|
|
18
|
+
return this.client.dms.fetchMessages(this.id, options);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sends a message in this conversation.
|
|
22
|
+
* @param content The message text or options.
|
|
23
|
+
*/
|
|
24
|
+
async send(content) {
|
|
25
|
+
return this.client.dms.createMessage(this.id, content);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=DMConversation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DMConversation.js","sourceRoot":"","sources":["../../src/structures/DMConversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAgB9B,MAAM,OAAO,cAAe,SAAQ,IAAI;IAC7B,EAAE,CAAS;IACX,IAAI,CAAa;IACjB,aAAa,CAAO;IACpB,WAAW,CAA4B;IAE9C,YAAY,MAAc,EAAE,IAAwB;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,OAA6C;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI,CAAC,OAAgC;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACJ"}
|