@sandvichxyz/pecans 1.0.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 (163) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +34 -0
  3. package/dist/account/index.d.ts +7 -0
  4. package/dist/account/index.d.ts.map +1 -0
  5. package/dist/account/index.js +24 -0
  6. package/dist/account/index.js.map +1 -0
  7. package/dist/answer/index.d.ts +11 -0
  8. package/dist/answer/index.d.ts.map +1 -0
  9. package/dist/answer/index.js +35 -0
  10. package/dist/answer/index.js.map +1 -0
  11. package/dist/auth/index.d.ts +6 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/auth/index.js +16 -0
  14. package/dist/auth/index.js.map +1 -0
  15. package/dist/client.d.ts +42 -0
  16. package/dist/client.d.ts.map +1 -0
  17. package/dist/client.js +150 -0
  18. package/dist/client.js.map +1 -0
  19. package/dist/drawing/index.d.ts +8 -0
  20. package/dist/drawing/index.d.ts.map +1 -0
  21. package/dist/drawing/index.js +28 -0
  22. package/dist/drawing/index.js.map +1 -0
  23. package/dist/enums.d.ts +11 -0
  24. package/dist/enums.d.ts.map +1 -0
  25. package/dist/enums.js +17 -0
  26. package/dist/enums.js.map +1 -0
  27. package/dist/extensions/ask.d.ts +10 -0
  28. package/dist/extensions/ask.d.ts.map +1 -0
  29. package/dist/extensions/ask.js +25 -0
  30. package/dist/extensions/ask.js.map +1 -0
  31. package/dist/forum/index.d.ts +10 -0
  32. package/dist/forum/index.d.ts.map +1 -0
  33. package/dist/forum/index.js +42 -0
  34. package/dist/forum/index.js.map +1 -0
  35. package/dist/generated/client.d.ts +36 -0
  36. package/dist/generated/client.d.ts.map +1 -0
  37. package/dist/generated/client.js +115 -0
  38. package/dist/generated/client.js.map +1 -0
  39. package/dist/generated/decoders.d.ts +6 -0
  40. package/dist/generated/decoders.d.ts.map +1 -0
  41. package/dist/generated/decoders.js +41 -0
  42. package/dist/generated/decoders.js.map +1 -0
  43. package/dist/generated/enums.d.ts +11 -0
  44. package/dist/generated/enums.d.ts.map +1 -0
  45. package/dist/generated/enums.js +17 -0
  46. package/dist/generated/enums.js.map +1 -0
  47. package/dist/generated/index.d.ts +20 -0
  48. package/dist/generated/index.d.ts.map +1 -0
  49. package/dist/generated/index.js +37 -0
  50. package/dist/generated/index.js.map +1 -0
  51. package/dist/generated/modules/account.d.ts +7 -0
  52. package/dist/generated/modules/account.d.ts.map +1 -0
  53. package/dist/generated/modules/account.js +30 -0
  54. package/dist/generated/modules/account.js.map +1 -0
  55. package/dist/generated/modules/answer.d.ts +11 -0
  56. package/dist/generated/modules/answer.d.ts.map +1 -0
  57. package/dist/generated/modules/answer.js +50 -0
  58. package/dist/generated/modules/answer.js.map +1 -0
  59. package/dist/generated/modules/ask.d.ts +30 -0
  60. package/dist/generated/modules/ask.d.ts.map +1 -0
  61. package/dist/generated/modules/ask.js +61 -0
  62. package/dist/generated/modules/ask.js.map +1 -0
  63. package/dist/generated/modules/auth.d.ts +7 -0
  64. package/dist/generated/modules/auth.d.ts.map +1 -0
  65. package/dist/generated/modules/auth.js +27 -0
  66. package/dist/generated/modules/auth.js.map +1 -0
  67. package/dist/generated/modules/dashboard.d.ts +11 -0
  68. package/dist/generated/modules/dashboard.d.ts.map +1 -0
  69. package/dist/generated/modules/dashboard.js +20 -0
  70. package/dist/generated/modules/dashboard.js.map +1 -0
  71. package/dist/generated/modules/drawing.d.ts +33 -0
  72. package/dist/generated/modules/drawing.d.ts.map +1 -0
  73. package/dist/generated/modules/drawing.js +69 -0
  74. package/dist/generated/modules/drawing.js.map +1 -0
  75. package/dist/generated/modules/feed.d.ts +22 -0
  76. package/dist/generated/modules/feed.d.ts.map +1 -0
  77. package/dist/generated/modules/feed.js +43 -0
  78. package/dist/generated/modules/feed.js.map +1 -0
  79. package/dist/generated/modules/forum.d.ts +26 -0
  80. package/dist/generated/modules/forum.d.ts.map +1 -0
  81. package/dist/generated/modules/forum.js +101 -0
  82. package/dist/generated/modules/forum.js.map +1 -0
  83. package/dist/generated/modules/images.d.ts +27 -0
  84. package/dist/generated/modules/images.d.ts.map +1 -0
  85. package/dist/generated/modules/images.js +53 -0
  86. package/dist/generated/modules/images.js.map +1 -0
  87. package/dist/generated/modules/messages.d.ts +9 -0
  88. package/dist/generated/modules/messages.d.ts.map +1 -0
  89. package/dist/generated/modules/messages.js +45 -0
  90. package/dist/generated/modules/messages.js.map +1 -0
  91. package/dist/generated/modules/navbar.d.ts +11 -0
  92. package/dist/generated/modules/navbar.d.ts.map +1 -0
  93. package/dist/generated/modules/navbar.js +20 -0
  94. package/dist/generated/modules/navbar.js.map +1 -0
  95. package/dist/generated/modules/notify.d.ts +14 -0
  96. package/dist/generated/modules/notify.d.ts.map +1 -0
  97. package/dist/generated/modules/notify.js +38 -0
  98. package/dist/generated/modules/notify.js.map +1 -0
  99. package/dist/generated/modules/profile.d.ts +34 -0
  100. package/dist/generated/modules/profile.d.ts.map +1 -0
  101. package/dist/generated/modules/profile.js +69 -0
  102. package/dist/generated/modules/profile.js.map +1 -0
  103. package/dist/generated/modules/qa.d.ts +12 -0
  104. package/dist/generated/modules/qa.d.ts.map +1 -0
  105. package/dist/generated/modules/qa.js +23 -0
  106. package/dist/generated/modules/qa.js.map +1 -0
  107. package/dist/generated/modules/settings.d.ts +23 -0
  108. package/dist/generated/modules/settings.d.ts.map +1 -0
  109. package/dist/generated/modules/settings.js +44 -0
  110. package/dist/generated/modules/settings.js.map +1 -0
  111. package/dist/generated/modules/stories.d.ts +18 -0
  112. package/dist/generated/modules/stories.d.ts.map +1 -0
  113. package/dist/generated/modules/stories.js +35 -0
  114. package/dist/generated/modules/stories.js.map +1 -0
  115. package/dist/generated/types.d.ts +528 -0
  116. package/dist/generated/types.d.ts.map +1 -0
  117. package/dist/generated/types.js +4 -0
  118. package/dist/generated/types.js.map +1 -0
  119. package/dist/index.d.ts +3 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +19 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/messages/index.d.ts +9 -0
  124. package/dist/messages/index.d.ts.map +1 -0
  125. package/dist/messages/index.js +33 -0
  126. package/dist/messages/index.js.map +1 -0
  127. package/dist/module.d.ts +7 -0
  128. package/dist/module.d.ts.map +1 -0
  129. package/dist/module.js +27 -0
  130. package/dist/module.js.map +1 -0
  131. package/dist/notify/index.d.ts +8 -0
  132. package/dist/notify/index.d.ts.map +1 -0
  133. package/dist/notify/index.js +19 -0
  134. package/dist/notify/index.js.map +1 -0
  135. package/dist/runtime/call.d.ts +19 -0
  136. package/dist/runtime/call.d.ts.map +1 -0
  137. package/dist/runtime/call.js +26 -0
  138. package/dist/runtime/call.js.map +1 -0
  139. package/dist/runtime/client.d.ts +26 -0
  140. package/dist/runtime/client.d.ts.map +1 -0
  141. package/dist/runtime/client.js +87 -0
  142. package/dist/runtime/client.js.map +1 -0
  143. package/dist/runtime/index.d.ts +5 -0
  144. package/dist/runtime/index.d.ts.map +1 -0
  145. package/dist/runtime/index.js +21 -0
  146. package/dist/runtime/index.js.map +1 -0
  147. package/dist/runtime/join.d.ts +2 -0
  148. package/dist/runtime/join.d.ts.map +1 -0
  149. package/dist/runtime/join.js +14 -0
  150. package/dist/runtime/join.js.map +1 -0
  151. package/dist/runtime/module.d.ts +7 -0
  152. package/dist/runtime/module.d.ts.map +1 -0
  153. package/dist/runtime/module.js +27 -0
  154. package/dist/runtime/module.js.map +1 -0
  155. package/dist/runtime/types.d.ts +19 -0
  156. package/dist/runtime/types.d.ts.map +1 -0
  157. package/dist/runtime/types.js +3 -0
  158. package/dist/runtime/types.js.map +1 -0
  159. package/dist/types.d.ts +19 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +3 -0
  162. package/dist/types.js.map +1 -0
  163. package/package.json +36 -0
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # pecans
2
+
3
+ Pretty easy Two Cans & String API wrapper.
4
+
5
+ ```sh
6
+ npm install @sandvichxyz/pecans
7
+ ```
8
+
9
+ ## Quick start
10
+
11
+ ```ts
12
+ import { Client } from "@sandvichxyz/pecans";
13
+
14
+ const client = new Client(process.env.TC_AUTH);
15
+
16
+ const res = await client.messages.folderView();
17
+ for (const msg of res.messages) {
18
+ console.log(msg.preview);
19
+ }
20
+ ```
21
+
22
+ ## Batching
23
+
24
+ The Two Cans & String HTTP API accepts several RPC calls in one HTTP request.
25
+ `client.batch` replicates this behavior with individually typed responses. For
26
+ example, the following sends two requests in one HTTP call:
27
+
28
+ ```ts
29
+ const [inbox, hits] = await client.batch(
30
+ client.messages.folderView(),
31
+ client.forum.search("hello"),
32
+ );
33
+ // inbox: FolderViewResponse, hits: ForumSearchResponse
34
+ ```
@@ -0,0 +1,7 @@
1
+ import { Module } from "../module";
2
+ import { TCResponse } from "../generated/types";
3
+ export declare class AccountModule extends Module {
4
+ register(email: string, username: string, password: string): Promise<TCResponse>;
5
+ activate(token: string): Promise<TCResponse>;
6
+ }
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/account/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qBAAa,aAAc,SAAQ,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAchF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAQ5D"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountModule = void 0;
4
+ /* Generated by pecans-spec. Do not edit. */
5
+ const module_1 = require("../module");
6
+ class AccountModule extends module_1.Module {
7
+ async register(email, username, password) {
8
+ return await this.client._call("account.register", {
9
+ "email": email,
10
+ "username": username,
11
+ "password1": password,
12
+ "password2": password,
13
+ "age": true,
14
+ "tos": true,
15
+ });
16
+ }
17
+ async activate(token) {
18
+ return await this.client._call("account.activate", {
19
+ "token": token,
20
+ });
21
+ }
22
+ }
23
+ exports.AccountModule = AccountModule;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/account/index.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,sCAAmC;AAGnC,MAAa,aAAc,SAAQ,eAAM;IAC9B,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;QACnE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,kBAAkB,EAClB;YACI,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,QAAQ;YACrB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;SACd,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC/B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,kBAAkB,EAClB;YACI,OAAO,EAAE,KAAK;SACjB,CACJ,CAAC;IACN,CAAC;CACJ;AAvBD,sCAuBC"}
@@ -0,0 +1,11 @@
1
+ import { Module } from "../module";
2
+ import { AnswerQueueQuestionResponse, AnswerReplyResponse, QuestionFetchResponse, TCResponse } from "../generated/types";
3
+ import { DismissAction } from "../enums";
4
+ export declare class AnswerModule extends Module {
5
+ fetchNext(): Promise<QuestionFetchResponse>;
6
+ dismissQuestion(questionId: number, action: DismissAction): Promise<TCResponse>;
7
+ pollVote(questionId: number, optionNum: number): Promise<TCResponse>;
8
+ queueQuestion(questionId: number): Promise<AnswerQueueQuestionResponse>;
9
+ reply(questionId: number, text: string): Promise<AnswerReplyResponse>;
10
+ }
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/answer/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACzH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,qBAAa,YAAa,SAAQ,MAAM;IACvB,SAAS,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAO3C,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAU/E,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUpE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IASvE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CASrF"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnswerModule = void 0;
4
+ /* Generated by pecans-spec. Do not edit. */
5
+ const module_1 = require("../module");
6
+ class AnswerModule extends module_1.Module {
7
+ async fetchNext() {
8
+ return await this.client._call("answer.getnext", {});
9
+ }
10
+ async dismissQuestion(questionId, action) {
11
+ return await this.client._call("answer.dismissquestion", {
12
+ "questionId": questionId,
13
+ "action": action,
14
+ });
15
+ }
16
+ async pollVote(questionId, optionNum) {
17
+ return await this.client._call("answer.pollvote", {
18
+ "questionId": questionId,
19
+ "optionNum": optionNum,
20
+ });
21
+ }
22
+ async queueQuestion(questionId) {
23
+ return await this.client._call("answer.queuequestion", {
24
+ "questionId": questionId,
25
+ });
26
+ }
27
+ async reply(questionId, text) {
28
+ return await this.client._call("answer.reply", {
29
+ "questionId": questionId,
30
+ "text": text,
31
+ });
32
+ }
33
+ }
34
+ exports.AnswerModule = AnswerModule;
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/answer/index.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,sCAAmC;AAInC,MAAa,YAAa,SAAQ,eAAM;IAC7B,KAAK,CAAC,SAAS;QAClB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,gBAAgB,EAChB,EAAE,CACL,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,MAAqB;QAClE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,wBAAwB,EACxB;YACI,YAAY,EAAE,UAAU;YACxB,QAAQ,EAAE,MAAM;SACnB,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,SAAiB;QACvD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,iBAAiB,EACjB;YACI,YAAY,EAAE,UAAU;YACxB,WAAW,EAAE,SAAS;SACzB,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,UAAkB;QACzC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,sBAAsB,EACtB;YACI,YAAY,EAAE,UAAU;SAC3B,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,UAAkB,EAAE,IAAY;QAC/C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,cAAc,EACd;YACI,YAAY,EAAE,UAAU;YACxB,MAAM,EAAE,IAAI;SACf,CACJ,CAAC;IACN,CAAC;CACJ;AA9CD,oCA8CC"}
@@ -0,0 +1,6 @@
1
+ import { Module } from "../module";
2
+ import { LoginResponse } from "../generated/types";
3
+ export declare class AuthModule extends Module {
4
+ login(username: string, password: string, client?: string): Promise<LoginResponse>;
5
+ }
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,UAAW,SAAQ,MAAM;IACrB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAUzG"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthModule = void 0;
4
+ /* Generated by pecans-spec. Do not edit. */
5
+ const module_1 = require("../module");
6
+ class AuthModule extends module_1.Module {
7
+ async login(username, password, client = "web") {
8
+ return await this.client._call("auth.login", {
9
+ "nameOrEmail": username,
10
+ "password": password,
11
+ "client": client,
12
+ });
13
+ }
14
+ }
15
+ exports.AuthModule = AuthModule;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,sCAAmC;AAGnC,MAAa,UAAW,SAAQ,eAAM;IAC3B,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,QAAgB,EAAE,SAAiB,KAAK;QACzE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,YAAY,EACZ;YACI,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,MAAM;SACnB,CACJ,CAAC;IACN,CAAC;CACJ;AAXD,gCAWC"}
@@ -0,0 +1,42 @@
1
+ import { TCProfile } from "./generated/types";
2
+ import { AccountModule } from "./account";
3
+ import { AnswerModule } from "./answer";
4
+ import { AuthModule } from "./auth";
5
+ import { DrawingModule } from "./drawing";
6
+ import { ForumModule } from "./forum";
7
+ import { MessagesModule } from "./messages";
8
+ import { NotifyModule } from "./notify";
9
+ export declare class ResponseParseError {
10
+ readonly name: string;
11
+ readonly message: string;
12
+ readonly responseText: string;
13
+ readonly cause?: unknown;
14
+ constructor(responseText: string, cause?: unknown);
15
+ }
16
+ export declare class Client {
17
+ #private;
18
+ static readonly BASE_URI = "https://api.twocansandstring.com/api";
19
+ static readonly VERSION = "1.68";
20
+ profileCache: {
21
+ [key: string]: TCProfile;
22
+ };
23
+ authToken?: string;
24
+ agent: string;
25
+ shouldTrimErrors: boolean;
26
+ get account(): AccountModule;
27
+ get answer(): AnswerModule;
28
+ get auth(): AuthModule;
29
+ get drawing(): DrawingModule;
30
+ get forum(): ForumModule;
31
+ get messages(): MessagesModule;
32
+ get notify(): NotifyModule;
33
+ get isBatching(): boolean;
34
+ constructor(auth?: string);
35
+ /** @internal */
36
+ _call<T>(methodName: string, args: {
37
+ [key: string]: any;
38
+ }): Promise<T>;
39
+ beginBatch(): void;
40
+ endBatch(): Promise<void>;
41
+ }
42
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,kBAAkB;IAC3B,SAAgB,IAAI,EAAE,MAAM,CAAwB;IACpD,SAAgB,OAAO,EAAE,MAAM,CAA0C;IACzE,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM3D;AAQD,qBAAa,MAAM;;IACf,MAAM,CAAC,QAAQ,CAAC,QAAQ,0CAA0C;IAClE,MAAM,CAAC,QAAQ,CAAC,OAAO,UAAU;IAY1B,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAM;IAEhD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,EAAE,MAAM,CAAY;IAEzB,gBAAgB,EAAE,OAAO,CAAQ;IAExC,IAAW,OAAO,IAAI,aAAa,CAElC;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,IAAW,OAAO,IAAI,aAAa,CAElC;IAED,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,QAAQ,IAAI,cAAc,CAEpC;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;gBAEkB,IAAI,CAAC,EAAE,MAAM;IAWhC,gBAAgB;IACT,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAatE,UAAU,IAAI,IAAI;IAIZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA4DzC"}
package/dist/client.js ADDED
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var _Client_instances, _a, _Client_account, _Client_answer, _Client_auth, _Client_drawing, _Client_forum, _Client_messages, _Client_notify, _Client_activeBatch, _Client_build, _Client_send;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Client = exports.ResponseParseError = void 0;
16
+ const account_1 = require("./account");
17
+ const answer_1 = require("./answer");
18
+ const auth_1 = require("./auth");
19
+ const drawing_1 = require("./drawing");
20
+ const forum_1 = require("./forum");
21
+ const messages_1 = require("./messages");
22
+ const notify_1 = require("./notify");
23
+ class ResponseParseError {
24
+ constructor(responseText, cause) {
25
+ this.name = "ResponseParseError";
26
+ this.message = "Failed to parse API response as JSON";
27
+ this.responseText = responseText;
28
+ if (cause !== undefined) {
29
+ this.cause = cause;
30
+ }
31
+ }
32
+ }
33
+ exports.ResponseParseError = ResponseParseError;
34
+ class Client {
35
+ get account() {
36
+ return __classPrivateFieldGet(this, _Client_account, "f");
37
+ }
38
+ get answer() {
39
+ return __classPrivateFieldGet(this, _Client_answer, "f");
40
+ }
41
+ get auth() {
42
+ return __classPrivateFieldGet(this, _Client_auth, "f");
43
+ }
44
+ get drawing() {
45
+ return __classPrivateFieldGet(this, _Client_drawing, "f");
46
+ }
47
+ get forum() {
48
+ return __classPrivateFieldGet(this, _Client_forum, "f");
49
+ }
50
+ get messages() {
51
+ return __classPrivateFieldGet(this, _Client_messages, "f");
52
+ }
53
+ get notify() {
54
+ return __classPrivateFieldGet(this, _Client_notify, "f");
55
+ }
56
+ get isBatching() {
57
+ return __classPrivateFieldGet(this, _Client_activeBatch, "f") !== null;
58
+ }
59
+ constructor(auth) {
60
+ _Client_instances.add(this);
61
+ _Client_account.set(this, void 0);
62
+ _Client_answer.set(this, void 0);
63
+ _Client_auth.set(this, void 0);
64
+ _Client_drawing.set(this, void 0);
65
+ _Client_forum.set(this, void 0);
66
+ _Client_messages.set(this, void 0);
67
+ _Client_notify.set(this, void 0);
68
+ _Client_activeBatch.set(this, null);
69
+ this.profileCache = {};
70
+ this.agent = "pecans";
71
+ this.shouldTrimErrors = true;
72
+ this.authToken = auth;
73
+ __classPrivateFieldSet(this, _Client_account, new account_1.AccountModule(this), "f");
74
+ __classPrivateFieldSet(this, _Client_answer, new answer_1.AnswerModule(this), "f");
75
+ __classPrivateFieldSet(this, _Client_auth, new auth_1.AuthModule(this), "f");
76
+ __classPrivateFieldSet(this, _Client_drawing, new drawing_1.DrawingModule(this), "f");
77
+ __classPrivateFieldSet(this, _Client_forum, new forum_1.ForumModule(this), "f");
78
+ __classPrivateFieldSet(this, _Client_messages, new messages_1.MessagesModule(this), "f");
79
+ __classPrivateFieldSet(this, _Client_notify, new notify_1.NotifyModule(this), "f");
80
+ }
81
+ /** @internal */
82
+ _call(methodName, args) {
83
+ const methodCall = { fn: methodName, payload: args };
84
+ if (__classPrivateFieldGet(this, _Client_activeBatch, "f") !== null) {
85
+ const batch = __classPrivateFieldGet(this, _Client_activeBatch, "f");
86
+ return new Promise((resolve, reject) => {
87
+ batch.push({ methodCall, resolve: resolve, reject });
88
+ });
89
+ }
90
+ return __classPrivateFieldGet(this, _Client_instances, "m", _Client_send).call(this, [methodCall]).then((res) => __classPrivateFieldGet(this, _Client_instances, "m", _Client_build).call(this, res, 0));
91
+ }
92
+ beginBatch() {
93
+ __classPrivateFieldSet(this, _Client_activeBatch, __classPrivateFieldGet(this, _Client_activeBatch, "f") ?? [], "f");
94
+ }
95
+ async endBatch() {
96
+ const batch = __classPrivateFieldGet(this, _Client_activeBatch, "f");
97
+ __classPrivateFieldSet(this, _Client_activeBatch, null, "f");
98
+ if (batch === null || batch.length === 0) {
99
+ return;
100
+ }
101
+ try {
102
+ const res = await __classPrivateFieldGet(this, _Client_instances, "m", _Client_send).call(this, batch.map((call) => call.methodCall));
103
+ batch.forEach((call, index) => call.resolve(__classPrivateFieldGet(this, _Client_instances, "m", _Client_build).call(this, res, index)));
104
+ }
105
+ catch (reason) {
106
+ batch.forEach((call) => call.reject(reason));
107
+ }
108
+ }
109
+ }
110
+ exports.Client = Client;
111
+ _a = Client, _Client_account = new WeakMap(), _Client_answer = new WeakMap(), _Client_auth = new WeakMap(), _Client_drawing = new WeakMap(), _Client_forum = new WeakMap(), _Client_messages = new WeakMap(), _Client_notify = new WeakMap(), _Client_activeBatch = new WeakMap(), _Client_instances = new WeakSet(), _Client_build = function _Client_build(res, index) {
112
+ res?.profiles?.forEach((profile) => {
113
+ this.profileCache[profile.id] = profile;
114
+ });
115
+ return {
116
+ ok: res?.ok ?? false,
117
+ ...(res?.responses?.[index] ?? {}),
118
+ profiles: res?.profiles,
119
+ };
120
+ }, _Client_send = async function _Client_send(requests) {
121
+ const headers = {
122
+ "Content-Type": "application/json",
123
+ "User-Agent": this.agent,
124
+ };
125
+ if (this.authToken != undefined) {
126
+ headers["Cookie"] = "twocansandstring_com_auth2=" + this.authToken;
127
+ }
128
+ const res = await fetch(_a.BASE_URI, {
129
+ method: "POST",
130
+ headers,
131
+ body: JSON.stringify({ auth: this.authToken, requests }),
132
+ });
133
+ if (!res.ok) {
134
+ return Promise.reject();
135
+ }
136
+ if (this.shouldTrimErrors) {
137
+ let text = await res.text();
138
+ text = text.replace(/^(?:.*\n)*{/, "{");
139
+ try {
140
+ return JSON.parse(text);
141
+ }
142
+ catch (cause) {
143
+ throw new ResponseParseError(text, cause);
144
+ }
145
+ }
146
+ return (await res.json());
147
+ };
148
+ Client.BASE_URI = "https://api.twocansandstring.com/api";
149
+ Client.VERSION = "1.68";
150
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Module } from "../module";
2
+ import { SaveDrawingResponse, TCResponse, ViewDrawingDataResponse } from "../generated/types";
3
+ export declare class DrawingModule extends Module {
4
+ saveDrawing(data: string, makeActive?: boolean): Promise<SaveDrawingResponse>;
5
+ viewDrawingData(imageId: string): Promise<ViewDrawingDataResponse>;
6
+ sendDrawing(imageId: string, receiver: string): Promise<TCResponse>;
7
+ }
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drawing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE9F,qBAAa,aAAc,SAAQ,MAAM;IACxB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWpF,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAUlE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CASnF"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DrawingModule = void 0;
4
+ /* Generated by pecans-spec. Do not edit. */
5
+ const module_1 = require("../module");
6
+ class DrawingModule extends module_1.Module {
7
+ async saveDrawing(data, makeActive = false) {
8
+ return await this.client._call("legacy.drawing", {
9
+ "data": data,
10
+ "makeActive": makeActive,
11
+ "action": "save",
12
+ });
13
+ }
14
+ async viewDrawingData(imageId) {
15
+ return await this.client._call("legacy.drawing", {
16
+ "imageId": imageId,
17
+ "action": "initial-image-data",
18
+ });
19
+ }
20
+ async sendDrawing(imageId, receiver) {
21
+ return await this.client._call("drawing.send", {
22
+ "imageId": imageId,
23
+ "receiver": receiver,
24
+ });
25
+ }
26
+ }
27
+ exports.DrawingModule = DrawingModule;
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drawing/index.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,sCAAmC;AAGnC,MAAa,aAAc,SAAQ,eAAM;IAC9B,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,aAAsB,KAAK;QAC9D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,gBAAgB,EAChB;YACI,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,UAAU;YACxB,QAAQ,EAAE,MAAM;SACnB,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAe;QACxC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,gBAAgB,EAChB;YACI,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,oBAAoB;SACjC,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,QAAgB;QACtD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,cAAc,EACd;YACI,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,QAAQ;SACvB,CACJ,CAAC;IACN,CAAC;CACJ;AA/BD,sCA+BC"}
@@ -0,0 +1,11 @@
1
+ export declare enum Feature {
2
+ FEED = "feed",
3
+ ASK = "ask",
4
+ FORUM = "forum",
5
+ CHAT = "chat"
6
+ }
7
+ export declare enum DismissAction {
8
+ SNOOZE = "SNOOZE",
9
+ DISCARD = "DISCARD"
10
+ }
11
+ //# sourceMappingURL=enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AACA,oBAAY,OAAO;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;CAChB;AAED,oBAAY,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;CACtB"}
package/dist/enums.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DismissAction = exports.Feature = void 0;
4
+ /* Generated by pecans-spec. Do not edit. */
5
+ var Feature;
6
+ (function (Feature) {
7
+ Feature["FEED"] = "feed";
8
+ Feature["ASK"] = "ask";
9
+ Feature["FORUM"] = "forum";
10
+ Feature["CHAT"] = "chat";
11
+ })(Feature || (exports.Feature = Feature = {}));
12
+ var DismissAction;
13
+ (function (DismissAction) {
14
+ DismissAction["SNOOZE"] = "SNOOZE";
15
+ DismissAction["DISCARD"] = "DISCARD";
16
+ })(DismissAction || (exports.DismissAction = DismissAction = {}));
17
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,IAAY,OAKX;AALD,WAAY,OAAO;IACf,wBAAa,CAAA;IACb,sBAAW,CAAA;IACX,0BAAe,CAAA;IACf,wBAAa,CAAA;AACjB,CAAC,EALW,OAAO,uBAAP,OAAO,QAKlB;AAED,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;AACvB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB"}
@@ -0,0 +1,10 @@
1
+ import type { Client } from "../generated/client";
2
+ import type { QuestionData, QuestionMetadata } from "../generated/types";
3
+ /** List all question metadata. */
4
+ export declare function listQuestions(client: Client): Promise<QuestionMetadata[]>;
5
+ /**
6
+ * Fetch question bodies for the given metadata and join each to its header by
7
+ * id. Throws if the API returns a body without matching metadata.
8
+ */
9
+ export declare function fetchQuestions(client: Client, metadata: QuestionMetadata[]): Promise<QuestionData[]>;
10
+ //# sourceMappingURL=ask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../src/extensions/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,kCAAkC;AAClC,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG/E;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAAE,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CAUzB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listQuestions = listQuestions;
4
+ exports.fetchQuestions = fetchQuestions;
5
+ /** List all question metadata. */
6
+ async function listQuestions(client) {
7
+ const res = await client.ask.listData();
8
+ return res.questions ?? [];
9
+ }
10
+ /**
11
+ * Fetch question bodies for the given metadata and join each to its header by
12
+ * id. Throws if the API returns a body without matching metadata.
13
+ */
14
+ async function fetchQuestions(client, metadata) {
15
+ const byId = new Map(metadata.map((m) => [m.id, m]));
16
+ const res = await client.ask.qtext(metadata.map((m) => m.id));
17
+ return (res.questions ?? []).map((q) => {
18
+ const header = byId.get(q.id);
19
+ if (!header) {
20
+ throw new Error(`no metadata for question ${q.id}`);
21
+ }
22
+ return { body: q.text, header };
23
+ });
24
+ }
25
+ //# sourceMappingURL=ask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/extensions/ask.ts"],"names":[],"mappings":";;AAIA,sCAGC;AAMD,wCAaC;AAvBD,kCAAkC;AAC3B,KAAK,UAAU,aAAa,CAAC,MAAc;IAC9C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxC,OAAO,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,cAAc,CAChC,MAAc,EACd,QAA4B;IAE5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Module } from "../module";
2
+ import { ForumSearchResponse, TCResponse, ViewPostsResponse } from "../generated/types";
3
+ export declare class ForumModule extends Module {
4
+ viewPosts(threadId: number, fetchType: string, postId?: number, reverse?: boolean, includePost?: boolean): Promise<ViewPostsResponse>;
5
+ replyThread(text: string, threadId: number): Promise<TCResponse>;
6
+ readThread(postId: number, threadId: number): Promise<TCResponse>;
7
+ editPost(postId: number, text: string): Promise<TCResponse>;
8
+ search(query: string): Promise<ForumSearchResponse>;
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forum/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAExF,qBAAa,WAAY,SAAQ,MAAM;IACtB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,EAAE,OAAO,GAAE,OAAe,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAcrJ,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUhE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUjE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAU3D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAQnE"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForumModule = void 0;
4
+ /* Generated by pecans-spec. Do not edit. */
5
+ const module_1 = require("../module");
6
+ class ForumModule extends module_1.Module {
7
+ async viewPosts(threadId, fetchType, postId = 0, reverse = false, includePost = true) {
8
+ return await this.client._call("forum.viewposts", {
9
+ "threadId": threadId,
10
+ "type": fetchType,
11
+ "postId": postId,
12
+ "getSomeBackscroll": reverse,
13
+ "includePost": includePost,
14
+ "includeThreadMetadata": true,
15
+ });
16
+ }
17
+ async replyThread(text, threadId) {
18
+ return await this.client._call("forum.replythread", {
19
+ "text": text,
20
+ "threadId": threadId,
21
+ });
22
+ }
23
+ async readThread(postId, threadId) {
24
+ return await this.client._call("forum.readthread", {
25
+ "postId": postId,
26
+ "threadId": threadId,
27
+ });
28
+ }
29
+ async editPost(postId, text) {
30
+ return await this.client._call("forum.editpost", {
31
+ "postId": postId,
32
+ "text": text,
33
+ });
34
+ }
35
+ async search(query) {
36
+ return await this.client._call("forum.search", {
37
+ "query": query,
38
+ });
39
+ }
40
+ }
41
+ exports.ForumModule = ForumModule;
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forum/index.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,sCAAmC;AAGnC,MAAa,WAAY,SAAQ,eAAM;IAC5B,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,SAAiB,EAAE,SAAiB,CAAC,EAAE,UAAmB,KAAK,EAAE,cAAuB,IAAI;QACjI,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,iBAAiB,EACjB;YACI,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,MAAM;YAChB,mBAAmB,EAAE,OAAO;YAC5B,aAAa,EAAE,WAAW;YAC1B,uBAAuB,EAAE,IAAI;SAChC,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,QAAgB;QACnD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,mBAAmB,EACnB;YACI,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,QAAQ;SACvB,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,QAAgB;QACpD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,kBAAkB,EAClB;YACI,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,QAAQ;SACvB,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAY;QAC9C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,gBAAgB,EAChB;YACI,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,IAAI;SACf,CACJ,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa;QAC7B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC1B,cAAc,EACd;YACI,OAAO,EAAE,KAAK;SACjB,CACJ,CAAC;IACN,CAAC;CACJ;AArDD,kCAqDC"}
@@ -0,0 +1,36 @@
1
+ import { BaseClient } from "../runtime";
2
+ import { AccountModule } from "./modules/account";
3
+ import { AnswerModule } from "./modules/answer";
4
+ import { AskModule } from "./modules/ask";
5
+ import { AuthModule } from "./modules/auth";
6
+ import { DashboardModule } from "./modules/dashboard";
7
+ import { DrawingModule } from "./modules/drawing";
8
+ import { FeedModule } from "./modules/feed";
9
+ import { ForumModule } from "./modules/forum";
10
+ import { ImagesModule } from "./modules/images";
11
+ import { MessagesModule } from "./modules/messages";
12
+ import { NavbarModule } from "./modules/navbar";
13
+ import { NotifyModule } from "./modules/notify";
14
+ import { ProfileModule } from "./modules/profile";
15
+ import { QaModule } from "./modules/qa";
16
+ import { SettingsModule } from "./modules/settings";
17
+ export declare class Client extends BaseClient {
18
+ #private;
19
+ constructor(auth?: string);
20
+ get account(): AccountModule;
21
+ get answer(): AnswerModule;
22
+ get ask(): AskModule;
23
+ get auth(): AuthModule;
24
+ get dashboard(): DashboardModule;
25
+ get drawing(): DrawingModule;
26
+ get feed(): FeedModule;
27
+ get forum(): ForumModule;
28
+ get images(): ImagesModule;
29
+ get messages(): MessagesModule;
30
+ get navbar(): NavbarModule;
31
+ get notify(): NotifyModule;
32
+ get profile(): ProfileModule;
33
+ get qa(): QaModule;
34
+ get settings(): SettingsModule;
35
+ }
36
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/generated/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,MAAO,SAAQ,UAAU;;gBAiBf,IAAI,CAAC,EAAE,MAAM;IAmBhC,IAAW,OAAO,IAAI,aAAa,CAElC;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,GAAG,IAAI,SAAS,CAE1B;IAED,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,IAAW,SAAS,IAAI,eAAe,CAEtC;IAED,IAAW,OAAO,IAAI,aAAa,CAElC;IAED,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,QAAQ,IAAI,cAAc,CAEpC;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,OAAO,IAAI,aAAa,CAElC;IAED,IAAW,EAAE,IAAI,QAAQ,CAExB;IAED,IAAW,QAAQ,IAAI,cAAc,CAEpC;CACJ"}