cc98-cli 0.2.0 → 0.4.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 (150) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +4 -2
  3. package/dist/api/client.d.ts +40 -15
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +179 -38
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/api/endpoints.d.ts +14 -0
  8. package/dist/api/endpoints.d.ts.map +1 -1
  9. package/dist/api/endpoints.js +21 -1
  10. package/dist/api/endpoints.js.map +1 -1
  11. package/dist/api/types.d.ts +13 -0
  12. package/dist/api/types.d.ts.map +1 -1
  13. package/dist/api/webvpn.d.ts +68 -0
  14. package/dist/api/webvpn.d.ts.map +1 -0
  15. package/dist/api/webvpn.js +311 -0
  16. package/dist/api/webvpn.js.map +1 -0
  17. package/dist/cli/commands/board.d.ts.map +1 -1
  18. package/dist/cli/commands/board.js +16 -1
  19. package/dist/cli/commands/board.js.map +1 -1
  20. package/dist/cli/commands/forum.js +1 -1
  21. package/dist/cli/commands/forum.js.map +1 -1
  22. package/dist/cli/commands/login.js +1 -1
  23. package/dist/cli/commands/login.js.map +1 -1
  24. package/dist/cli/commands/logout.js +2 -2
  25. package/dist/cli/commands/logout.js.map +1 -1
  26. package/dist/cli/commands/me.d.ts.map +1 -1
  27. package/dist/cli/commands/me.js +18 -3
  28. package/dist/cli/commands/me.js.map +1 -1
  29. package/dist/cli/commands/message.d.ts.map +1 -1
  30. package/dist/cli/commands/message.js +11 -1
  31. package/dist/cli/commands/message.js.map +1 -1
  32. package/dist/cli/commands/notice.js +1 -1
  33. package/dist/cli/commands/notice.js.map +1 -1
  34. package/dist/cli/commands/post.d.ts.map +1 -1
  35. package/dist/cli/commands/post.js +13 -1
  36. package/dist/cli/commands/post.js.map +1 -1
  37. package/dist/cli/commands/search.js +1 -1
  38. package/dist/cli/commands/search.js.map +1 -1
  39. package/dist/cli/commands/topic.d.ts.map +1 -1
  40. package/dist/cli/commands/topic.js +42 -6
  41. package/dist/cli/commands/topic.js.map +1 -1
  42. package/dist/cli/commands/user.d.ts.map +1 -1
  43. package/dist/cli/commands/user.js +13 -1
  44. package/dist/cli/commands/user.js.map +1 -1
  45. package/dist/cli/commands/vpn.d.ts +2 -0
  46. package/dist/cli/commands/vpn.d.ts.map +1 -0
  47. package/dist/cli/commands/vpn.js +200 -0
  48. package/dist/cli/commands/vpn.js.map +1 -0
  49. package/dist/cli/context.d.ts +2 -2
  50. package/dist/cli/context.d.ts.map +1 -1
  51. package/dist/cli/context.js +20 -2
  52. package/dist/cli/context.js.map +1 -1
  53. package/dist/cli/router.d.ts.map +1 -1
  54. package/dist/cli/router.js +13 -2
  55. package/dist/cli/router.js.map +1 -1
  56. package/dist/main.js +0 -0
  57. package/dist/storage/image-cache.d.ts +32 -0
  58. package/dist/storage/image-cache.d.ts.map +1 -0
  59. package/dist/storage/image-cache.js +90 -0
  60. package/dist/storage/image-cache.js.map +1 -0
  61. package/dist/storage/vpn-store.d.ts +39 -0
  62. package/dist/storage/vpn-store.d.ts.map +1 -0
  63. package/dist/storage/vpn-store.js +94 -0
  64. package/dist/storage/vpn-store.js.map +1 -0
  65. package/dist/tui/app.d.ts.map +1 -1
  66. package/dist/tui/app.js +27 -1725
  67. package/dist/tui/app.js.map +1 -1
  68. package/dist/tui/borders.d.ts +183 -0
  69. package/dist/tui/borders.d.ts.map +1 -0
  70. package/dist/tui/borders.js +143 -0
  71. package/dist/tui/borders.js.map +1 -0
  72. package/dist/tui/cached-client.d.ts +23 -0
  73. package/dist/tui/cached-client.d.ts.map +1 -1
  74. package/dist/tui/cached-client.js +88 -0
  75. package/dist/tui/cached-client.js.map +1 -1
  76. package/dist/tui/components/content.d.ts +11 -0
  77. package/dist/tui/components/content.d.ts.map +1 -0
  78. package/dist/tui/components/content.js +129 -0
  79. package/dist/tui/components/content.js.map +1 -0
  80. package/dist/tui/components/header.d.ts +7 -0
  81. package/dist/tui/components/header.d.ts.map +1 -0
  82. package/dist/tui/components/header.js +38 -0
  83. package/dist/tui/components/header.js.map +1 -0
  84. package/dist/tui/components/index.d.ts +8 -0
  85. package/dist/tui/components/index.d.ts.map +1 -0
  86. package/dist/tui/components/index.js +9 -0
  87. package/dist/tui/components/index.js.map +1 -0
  88. package/dist/tui/components/layout.d.ts +3 -0
  89. package/dist/tui/components/layout.d.ts.map +1 -0
  90. package/dist/tui/components/layout.js +453 -0
  91. package/dist/tui/components/layout.js.map +1 -0
  92. package/dist/tui/components/overview.d.ts +7 -0
  93. package/dist/tui/components/overview.d.ts.map +1 -0
  94. package/dist/tui/components/overview.js +30 -0
  95. package/dist/tui/components/overview.js.map +1 -0
  96. package/dist/tui/components/sidebar.d.ts +7 -0
  97. package/dist/tui/components/sidebar.d.ts.map +1 -0
  98. package/dist/tui/components/sidebar.js +57 -0
  99. package/dist/tui/components/sidebar.js.map +1 -0
  100. package/dist/tui/components/status.d.ts +8 -0
  101. package/dist/tui/components/status.d.ts.map +1 -0
  102. package/dist/tui/components/status.js +42 -0
  103. package/dist/tui/components/status.js.map +1 -0
  104. package/dist/tui/components/types.d.ts +17 -0
  105. package/dist/tui/components/types.d.ts.map +1 -0
  106. package/dist/tui/components/types.js +3 -0
  107. package/dist/tui/components/types.js.map +1 -0
  108. package/dist/tui/components/utils.d.ts +5 -0
  109. package/dist/tui/components/utils.d.ts.map +1 -0
  110. package/dist/tui/components/utils.js +68 -0
  111. package/dist/tui/components/utils.js.map +1 -0
  112. package/dist/tui/controller.d.ts +66 -0
  113. package/dist/tui/controller.d.ts.map +1 -0
  114. package/dist/tui/controller.js +1200 -0
  115. package/dist/tui/controller.js.map +1 -0
  116. package/dist/tui/helpers.d.ts +25 -0
  117. package/dist/tui/helpers.d.ts.map +1 -0
  118. package/dist/tui/helpers.js +249 -0
  119. package/dist/tui/helpers.js.map +1 -0
  120. package/dist/tui/navigation.d.ts +4 -0
  121. package/dist/tui/navigation.d.ts.map +1 -0
  122. package/dist/tui/navigation.js +19 -0
  123. package/dist/tui/navigation.js.map +1 -0
  124. package/dist/tui/renderer.d.ts +6 -0
  125. package/dist/tui/renderer.d.ts.map +1 -0
  126. package/dist/tui/renderer.js +305 -0
  127. package/dist/tui/renderer.js.map +1 -0
  128. package/dist/tui/state/index.d.ts +3 -0
  129. package/dist/tui/state/index.d.ts.map +1 -0
  130. package/dist/tui/state/index.js +4 -0
  131. package/dist/tui/state/index.js.map +1 -0
  132. package/dist/tui/state/store.d.ts +4 -0
  133. package/dist/tui/state/store.d.ts.map +1 -0
  134. package/dist/tui/state/store.js +62 -0
  135. package/dist/tui/state/store.js.map +1 -0
  136. package/dist/tui/state/types.d.ts +141 -0
  137. package/dist/tui/state/types.d.ts.map +1 -0
  138. package/dist/tui/state/types.js +3 -0
  139. package/dist/tui/state/types.js.map +1 -0
  140. package/dist/tui/topic-reader.d.ts +10 -0
  141. package/dist/tui/topic-reader.d.ts.map +1 -0
  142. package/dist/tui/topic-reader.js +178 -0
  143. package/dist/tui/topic-reader.js.map +1 -0
  144. package/dist/tui/ubb-renderer.d.ts.map +1 -1
  145. package/dist/tui/ubb-renderer.js +176 -12
  146. package/dist/tui/ubb-renderer.js.map +1 -1
  147. package/dist/version.d.ts +1 -1
  148. package/dist/version.js +1 -1
  149. package/package.json +2 -2
  150. /package/{docs/images → images}/tui.jpg +0 -0
@@ -0,0 +1,68 @@
1
+ export interface WebVpnLoginResult {
2
+ success: boolean;
3
+ message?: string;
4
+ needCaptcha?: boolean;
5
+ needConfirm?: boolean;
6
+ captchaId?: string;
7
+ }
8
+ export interface WebVpnStatus {
9
+ enabled: boolean;
10
+ loggedIn: boolean;
11
+ inCampusNetwork?: boolean;
12
+ }
13
+ export declare class WebVpnService {
14
+ private cookies;
15
+ private _loggedIn;
16
+ private _enabled;
17
+ constructor(cookies?: Record<string, string>);
18
+ get isLoggedIn(): boolean;
19
+ get isEnabled(): boolean;
20
+ set enabled(value: boolean);
21
+ loadCookies(cookies: Record<string, string>): void;
22
+ getCookies(): Record<string, string>;
23
+ /**
24
+ * 检查是否在校园网内
25
+ */
26
+ checkNetwork(): Promise<boolean>;
27
+ /**
28
+ * WebVPN 登录
29
+ */
30
+ login(username: string, password: string): Promise<WebVpnLoginResult>;
31
+ /**
32
+ * 确认登录(用于多设备确认)
33
+ */
34
+ confirmLogin(): Promise<WebVpnLoginResult>;
35
+ /**
36
+ * 注销
37
+ */
38
+ logout(): Promise<void>;
39
+ /**
40
+ * 将普通 URL 转换为 WebVPN URL
41
+ */
42
+ convertUrl(url: string): string;
43
+ /**
44
+ * 发送请求(自动处理 WebVPN URL 转换)
45
+ */
46
+ fetch(url: string, options?: RequestInit): Promise<Response>;
47
+ private fetchWithRedirects;
48
+ /**
49
+ * 获取状态
50
+ */
51
+ getStatus(): WebVpnStatus;
52
+ private getHeaders;
53
+ private updateCookies;
54
+ private get userAgent();
55
+ private get;
56
+ private post;
57
+ private parseLoginPage;
58
+ /**
59
+ * AES-CFB 加密(与 CC98-Desktop 兼容)
60
+ */
61
+ private aesEncrypt;
62
+ /**
63
+ * 构建加密密码(与 CC98-Desktop BuildPassword 兼容)
64
+ */
65
+ private buildPassword;
66
+ }
67
+ export declare function getWebVpnService(): WebVpnService;
68
+ //# sourceMappingURL=webvpn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webvpn.d.ts","sourceRoot":"","sources":["../../src/api/webvpn.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAM5C,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAUlD,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IActC;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmD3E;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAgBhD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA8B/B;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;YAIxD,kBAAkB;IA+BhC;;OAEG;IACH,SAAS,IAAI,YAAY;IASzB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,aAAa;IAiBrB,OAAO,KAAK,SAAS,GAEpB;YAEa,GAAG;YAIH,IAAI;IAQlB,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;OAEG;IACH,OAAO,CAAC,aAAa;CAatB;AA4BD,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
@@ -0,0 +1,311 @@
1
+ import { createCipheriv } from "node:crypto";
2
+ // WebVPN 配置
3
+ const WEBVPN_BASE = "https://webvpn.zju.edu.cn";
4
+ const MIRROR_URL = "https://mirrors.zju.edu.cn/api/is_campus_network";
5
+ // 加密密钥(来自 CC98-Desktop)
6
+ const URL_KEY = "wrdvpnisthebest!"; // 用于 URL 转换
7
+ const PWD_KEY = "wrdvpnisawesome!"; // 用于密码加密
8
+ export class WebVpnService {
9
+ cookies = new Map();
10
+ _loggedIn = false;
11
+ _enabled = false;
12
+ constructor(cookies) {
13
+ if (cookies) {
14
+ this.loadCookies(cookies);
15
+ }
16
+ }
17
+ get isLoggedIn() {
18
+ return this._loggedIn;
19
+ }
20
+ get isEnabled() {
21
+ return this._enabled;
22
+ }
23
+ set enabled(value) {
24
+ this._enabled = value;
25
+ }
26
+ loadCookies(cookies) {
27
+ this.cookies.clear();
28
+ for (const [name, value] of Object.entries(cookies)) {
29
+ if (name && value) {
30
+ this.cookies.set(name, value);
31
+ }
32
+ }
33
+ this._loggedIn = this.cookies.size > 0;
34
+ }
35
+ getCookies() {
36
+ return Object.fromEntries(this.cookies.entries());
37
+ }
38
+ /**
39
+ * 检查是否在校园网内
40
+ */
41
+ async checkNetwork() {
42
+ try {
43
+ const response = await fetch(MIRROR_URL, {
44
+ headers: {
45
+ "User-Agent": this.userAgent,
46
+ },
47
+ });
48
+ const text = await response.text();
49
+ return text === "1" || text === "2";
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ /**
56
+ * WebVPN 登录
57
+ */
58
+ async login(username, password) {
59
+ try {
60
+ // 1. 获取登录页面,提取 CSRF token
61
+ const loginPage = await this.get(`${WEBVPN_BASE}/login`);
62
+ const html = await loginPage.text();
63
+ const { csrf, captchaId } = this.parseLoginPage(html);
64
+ if (!csrf) {
65
+ return { success: false, message: "获取 CSRF token 失败" };
66
+ }
67
+ // 2. 加密密码
68
+ const encryptedPassword = this.buildPassword(PWD_KEY, password);
69
+ // 3. 提交登录
70
+ const formData = new URLSearchParams({
71
+ _csrf: csrf,
72
+ auth_type: "local",
73
+ sms_code: "",
74
+ captcha: "",
75
+ needCaptcha: "false",
76
+ captcha_id: captchaId || "",
77
+ username,
78
+ password: encryptedPassword,
79
+ });
80
+ const loginResponse = await this.post(`${WEBVPN_BASE}/do-login`, formData.toString(), {
81
+ "Content-Type": "application/x-www-form-urlencoded",
82
+ });
83
+ const result = await loginResponse.json();
84
+ if (result.success) {
85
+ this._loggedIn = true;
86
+ return { success: true };
87
+ }
88
+ if (result.error === "NEED_CONFIRM") {
89
+ return { success: false, needConfirm: true, message: "需要确认登录" };
90
+ }
91
+ if (result.error === "CAPTCHA_FAILED") {
92
+ return { success: false, needCaptcha: true, captchaId: String(result.description || ""), message: "需要验证码" };
93
+ }
94
+ return { success: false, message: String(result.message || result.error || "登录失败") };
95
+ }
96
+ catch (error) {
97
+ return { success: false, message: error instanceof Error ? error.message : "登录出错" };
98
+ }
99
+ }
100
+ /**
101
+ * 确认登录(用于多设备确认)
102
+ */
103
+ async confirmLogin() {
104
+ try {
105
+ const response = await this.post(`${WEBVPN_BASE}/do-confirm-login`, "");
106
+ const result = await response.json();
107
+ if (result.success) {
108
+ this._loggedIn = true;
109
+ return { success: true };
110
+ }
111
+ return { success: false, message: String(result.error || "确认失败") };
112
+ }
113
+ catch (error) {
114
+ return { success: false, message: error instanceof Error ? error.message : "确认出错" };
115
+ }
116
+ }
117
+ /**
118
+ * 注销
119
+ */
120
+ async logout() {
121
+ try {
122
+ await this.get(`${WEBVPN_BASE}/logout`);
123
+ this._loggedIn = false;
124
+ this.cookies.clear();
125
+ }
126
+ catch {
127
+ // 忽略错误
128
+ }
129
+ }
130
+ /**
131
+ * 将普通 URL 转换为 WebVPN URL
132
+ */
133
+ convertUrl(url) {
134
+ const uri = new URL(url);
135
+ if (uri.origin === WEBVPN_BASE) {
136
+ return url;
137
+ }
138
+ const scheme = uri.protocol.slice(0, -1); // "https:" → "https"
139
+ const host = uri.hostname;
140
+ const port = uri.port ? parseInt(uri.port) : 0;
141
+ // 处理协议和端口
142
+ const isSpecialPort = port > 0 &&
143
+ !(scheme === "http" && port === 80) &&
144
+ !(scheme === "https" && port === 443);
145
+ const property = isSpecialPort ? `${scheme}-${port}` : scheme;
146
+ // 加密 host
147
+ const encryptedHost = this.buildPassword(URL_KEY, host);
148
+ // 构建 WebVPN URL
149
+ const pathSegments = [property, encryptedHost];
150
+ const path = pathSegments.map(s => encodeURIComponent(s)).join("/");
151
+ // 保留原始路径和查询参数
152
+ const pathname = uri.pathname;
153
+ const search = uri.search;
154
+ return `${WEBVPN_BASE}/${path}${pathname}${search}`;
155
+ }
156
+ /**
157
+ * 发送请求(自动处理 WebVPN URL 转换)
158
+ */
159
+ async fetch(url, options = {}) {
160
+ return this.fetchWithRedirects(url, options, 0);
161
+ }
162
+ async fetchWithRedirects(url, options, redirectCount) {
163
+ if (redirectCount > 10) {
164
+ throw new Error("too many WebVPN redirects");
165
+ }
166
+ const targetUrl = this._enabled ? this.convertUrl(url) : url;
167
+ const headers = new Headers(this.getHeaders());
168
+ for (const [name, value] of new Headers(options.headers).entries()) {
169
+ headers.set(name, value);
170
+ }
171
+ const response = await fetch(targetUrl, {
172
+ ...options,
173
+ headers,
174
+ redirect: "manual",
175
+ });
176
+ // 处理重定向,手动跟踪以保留 cookies
177
+ if (response.status >= 300 && response.status < 400) {
178
+ const location = response.headers.get("location");
179
+ if (location) {
180
+ this.updateCookies(response);
181
+ const nextUrl = new URL(location, response.url || targetUrl).toString();
182
+ return this.fetchWithRedirects(nextUrl, redirectOptions(options, response.status), redirectCount + 1);
183
+ }
184
+ }
185
+ this.updateCookies(response);
186
+ return response;
187
+ }
188
+ /**
189
+ * 获取状态
190
+ */
191
+ getStatus() {
192
+ return {
193
+ enabled: this._enabled,
194
+ loggedIn: this._loggedIn,
195
+ };
196
+ }
197
+ // ========== 私有方法 ==========
198
+ getHeaders() {
199
+ const headers = {
200
+ "User-Agent": this.userAgent,
201
+ "Referer": WEBVPN_BASE,
202
+ };
203
+ // 添加 cookies
204
+ if (this.cookies.size > 0) {
205
+ const cookieStr = Array.from(this.cookies.entries())
206
+ .map(([k, v]) => `${k}=${v}`)
207
+ .join("; ");
208
+ headers["Cookie"] = cookieStr;
209
+ }
210
+ return headers;
211
+ }
212
+ updateCookies(response) {
213
+ const headers = response.headers;
214
+ const setCookies = headers.getSetCookie?.() || splitSetCookieHeader(headers.get("set-cookie"));
215
+ for (const cookie of setCookies) {
216
+ const [nameValue] = cookie.split(";");
217
+ if (nameValue) {
218
+ const separator = nameValue.indexOf("=");
219
+ if (separator < 1)
220
+ continue;
221
+ const name = nameValue.slice(0, separator);
222
+ const value = nameValue.slice(separator + 1);
223
+ if (name && value) {
224
+ this.cookies.set(name.trim(), value.trim());
225
+ }
226
+ }
227
+ }
228
+ }
229
+ get userAgent() {
230
+ return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36";
231
+ }
232
+ async get(url) {
233
+ return this.fetch(url, { method: "GET" });
234
+ }
235
+ async post(url, body, headers) {
236
+ return this.fetch(url, {
237
+ method: "POST",
238
+ body,
239
+ headers: headers || {},
240
+ });
241
+ }
242
+ parseLoginPage(html) {
243
+ const csrfMatch = html.match(/name="_csrf"[^>]*value="([^"]+)"/);
244
+ const captchaMatch = html.match(/name="captcha_id"[^>]*value="([^"]+)"/);
245
+ return {
246
+ csrf: csrfMatch?.[1] || "",
247
+ captchaId: captchaMatch?.[1] || "",
248
+ };
249
+ }
250
+ /**
251
+ * AES-CFB 加密(与 CC98-Desktop 兼容)
252
+ */
253
+ aesEncrypt(plaintext, key, iv) {
254
+ const keyBuffer = Buffer.from(key.padEnd(16, " ").slice(0, 16));
255
+ const ivBuffer = Buffer.from(iv.padEnd(16, " ").slice(0, 16));
256
+ // 补零到 16 字节倍数
257
+ const plainBytes = Buffer.from(plaintext, "utf8");
258
+ const padLen = 16 - (plainBytes.length % 16);
259
+ const padded = padLen === 16 ? plainBytes : Buffer.concat([plainBytes, Buffer.alloc(padLen)]);
260
+ const cipher = createCipheriv("aes-128-cfb", keyBuffer, ivBuffer, {
261
+ // @ts-expect-error Node.js CFB 模式需要设置 segmentSize
262
+ segmentSize: 128,
263
+ });
264
+ cipher.setAutoPadding(false);
265
+ const encrypted = Buffer.concat([cipher.update(padded), cipher.final()]);
266
+ return encrypted.toString("hex").toLowerCase();
267
+ }
268
+ /**
269
+ * 构建加密密码(与 CC98-Desktop BuildPassword 兼容)
270
+ */
271
+ buildPassword(prefix, plaintext) {
272
+ // 前缀转 ASCII hex
273
+ const prefixHex = Buffer.from(prefix, "ascii").toString("hex");
274
+ // 加密
275
+ const fullEncrypted = this.aesEncrypt(plaintext, prefix, prefix);
276
+ // 截取:2 * plaintext.length
277
+ const sliceLength = 2 * plaintext.length;
278
+ const encrypted = fullEncrypted.slice(0, Math.min(fullEncrypted.length, sliceLength));
279
+ return prefixHex + encrypted;
280
+ }
281
+ }
282
+ function splitSetCookieHeader(value) {
283
+ if (!value) {
284
+ return [];
285
+ }
286
+ return value.split(/,(?=\s*[^;,=\s]+=[^;,]*)/);
287
+ }
288
+ function redirectOptions(options, status) {
289
+ const method = options.method?.toUpperCase();
290
+ if ((status === 301 || status === 302 || status === 303) && method && method !== "GET" && method !== "HEAD") {
291
+ const headers = new Headers(options.headers);
292
+ headers.delete("content-type");
293
+ headers.delete("content-length");
294
+ return {
295
+ ...options,
296
+ method: "GET",
297
+ body: undefined,
298
+ headers,
299
+ };
300
+ }
301
+ return options;
302
+ }
303
+ // 单例
304
+ let defaultService;
305
+ export function getWebVpnService() {
306
+ if (!defaultService) {
307
+ defaultService = new WebVpnService();
308
+ }
309
+ return defaultService;
310
+ }
311
+ //# sourceMappingURL=webvpn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webvpn.js","sourceRoot":"","sources":["../../src/api/webvpn.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChE"}
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDhE"}
@@ -4,7 +4,7 @@ import { extractPageOptions, parsePositiveInteger, printJson } from "../parse.js
4
4
  export async function boardCommand(args) {
5
5
  const accountOption = extractAccountOption(args);
6
6
  const [subcommandOrId, ...rest] = accountOption.args;
7
- const { client } = createCliContext({ account: accountOption.account });
7
+ const { client } = await createCliContext({ account: accountOption.account });
8
8
  if (!subcommandOrId || subcommandOrId === "--help" || subcommandOrId === "-h" || subcommandOrId === "help") {
9
9
  printBoardHelp();
10
10
  return;
@@ -31,6 +31,20 @@ export async function boardCommand(args) {
31
31
  printJson(await client.getBoardTopics(boardId, page.from, page.size, best));
32
32
  return;
33
33
  }
34
+ case "favorite": {
35
+ const action = rest[0];
36
+ const boardId = parsePositiveInteger(rest[1], "board-id");
37
+ if (action === "add") {
38
+ printJson(await client.addBoardFavorite(boardId));
39
+ }
40
+ else if (action === "remove") {
41
+ printJson(await client.removeBoardFavorite(boardId));
42
+ }
43
+ else {
44
+ throw new Error("usage: cc98 board favorite add|remove <board-id>");
45
+ }
46
+ return;
47
+ }
34
48
  default:
35
49
  throw new Error(`unknown board command: ${subcommandOrId}`);
36
50
  }
@@ -56,6 +70,7 @@ Usage:
56
70
  cc98 board list
57
71
  cc98 board info <board-id>
58
72
  cc98 board topics <board-id> [--from n] [--size n] [--best]
73
+ cc98 board favorite add|remove <board-id>
59
74
  `);
60
75
  }
61
76
  //# sourceMappingURL=board.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { printJson } from "../parse.js";
4
4
  export async function forumCommand(args) {
5
5
  const accountOption = extractAccountOption(args);
6
6
  const [subcommand] = accountOption.args;
7
- const { client } = createCliContext({ account: accountOption.account });
7
+ const { client } = await createCliContext({ account: accountOption.account });
8
8
  switch (subcommand) {
9
9
  case undefined:
10
10
  case "--help":
@@ -1 +1 @@
1
- {"version":3,"file":"forum.js","sourceRoot":"","sources":["../../../src/cli/commands/forum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAExE,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,cAAc,EAAE,CAAC;YACjB,OAAO;QACT,KAAK,OAAO;YACV,SAAS,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YACxC,OAAO;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,SAAS,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACvC,OAAO;QACT,KAAK,WAAW;YACd,SAAS,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACtC,OAAO;QACT;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CAAC,GAAG,CAAC;;;;;;CAMb,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"forum.js","sourceRoot":"","sources":["../../../src/cli/commands/forum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAE9E,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,cAAc,EAAE,CAAC;YACjB,OAAO;QACT,KAAK,OAAO;YACV,SAAS,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YACxC,OAAO;QACT,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,SAAS,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACvC,OAAO;QACT,KAAK,WAAW;YACd,SAAS,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACtC,OAAO;QACT;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CAAC,GAAG,CAAC;;;;;;CAMb,CAAC,CAAC;AACH,CAAC"}
@@ -7,7 +7,7 @@ export async function loginCommand(args = []) {
7
7
  printLoginHelp();
8
8
  return;
9
9
  }
10
- const { client, tokenStore } = createCliContext();
10
+ const { client, tokenStore } = await createCliContext();
11
11
  const username = options.username ?? (await promptText("CC98 username: ")).trim();
12
12
  const password = options.passwordStdin
13
13
  ? (await readStdinText()).trimEnd()
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,12 @@ import { extractAccountOption } from "../options.js";
3
3
  export async function logoutCommand(args = []) {
4
4
  const { account, args: rest } = extractAccountOption(args);
5
5
  if (rest.includes("--all")) {
6
- const { tokenStore } = createCliContext();
6
+ const { tokenStore } = await createCliContext();
7
7
  await tokenStore.clear();
8
8
  console.log(JSON.stringify({ loggedOut: "all" }, null, 2));
9
9
  return;
10
10
  }
11
- const { tokenStore } = createCliContext({ account });
11
+ const { tokenStore } = await createCliContext({ account });
12
12
  const current = await tokenStore.getCurrentAccountName();
13
13
  if (!current) {
14
14
  console.log(JSON.stringify({ loggedOut: null }, null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/cli/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAiB,EAAE;IACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE3D,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC1C,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,qBAAqB,EAAE,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/cli/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAiB,EAAE;IACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE3D,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAChD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,qBAAqB,EAAE,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/me.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE"}
1
+ {"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/me.ts"],"names":[],"mappings":"AAIA,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBlE"}
@@ -1,9 +1,24 @@
1
1
  import { createCliContext } from "../context.js";
2
2
  import { extractAccountOption } from "../options.js";
3
+ import { printJson } from "../parse.js";
3
4
  export async function meCommand(args = []) {
4
- const { account } = extractAccountOption(args);
5
- const { client } = createCliContext({ account });
5
+ const accountOption = extractAccountOption(args);
6
+ const [subcommand] = accountOption.args;
7
+ const { client } = await createCliContext({ account: accountOption.account });
8
+ if (subcommand === "signin") {
9
+ printJson(await client.signin());
10
+ return;
11
+ }
12
+ if (subcommand === "--help" || subcommand === "-h" || subcommand === "help") {
13
+ console.log(`cc98 me
14
+
15
+ Usage:
16
+ cc98 me Show current user profile
17
+ cc98 me signin Sign in daily
18
+ `);
19
+ return;
20
+ }
6
21
  const me = await client.getMe();
7
- console.log(JSON.stringify(me, null, 2));
22
+ printJson(me);
8
23
  }
9
24
  //# sourceMappingURL=me.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"me.js","sourceRoot":"","sources":["../../../src/cli/commands/me.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAiB,EAAE;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"me.js","sourceRoot":"","sources":["../../../src/cli/commands/me.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAiB,EAAE;IACjD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAE9E,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,SAAS,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC;;;;;CAKf,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/message.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BlE"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/message.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsClE"}
@@ -4,7 +4,7 @@ import { extractPageOptions, parsePositiveInteger, printJson } from "../parse.js
4
4
  export async function messageCommand(args) {
5
5
  const accountOption = extractAccountOption(args);
6
6
  const [subcommand, ...rest] = accountOption.args;
7
- const { client } = createCliContext({ account: accountOption.account });
7
+ const { client } = await createCliContext({ account: accountOption.account });
8
8
  switch (subcommand) {
9
9
  case undefined:
10
10
  case "--help":
@@ -26,6 +26,15 @@ export async function messageCommand(args) {
26
26
  printJson(await client.getChatHistory(userId, page.from, page.size));
27
27
  return;
28
28
  }
29
+ case "send": {
30
+ const userId = parsePositiveInteger(rest[0], "user-id");
31
+ const content = rest.slice(1).join(" ").trim();
32
+ if (!content) {
33
+ throw new Error("usage: cc98 message send <user-id> <content>");
34
+ }
35
+ printJson(await client.sendMessage(userId, content));
36
+ return;
37
+ }
29
38
  default:
30
39
  throw new Error(`unknown message command: ${subcommand}`);
31
40
  }
@@ -37,6 +46,7 @@ Usage:
37
46
  cc98 message unread
38
47
  cc98 message recent [--from n] [--size n]
39
48
  cc98 message history <user-id> [--from n] [--size n]
49
+ cc98 message send <user-id> <content>
40
50
  `);
41
51
  }
42
52
  //# sourceMappingURL=message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/cli/commands/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAExE,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,gBAAgB,EAAE,CAAC;YACnB,OAAO;QACT,KAAK,QAAQ;YACX,SAAS,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;YACzC,OAAO;QACT,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,SAAS,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,SAAS,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;CAMb,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/cli/commands/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAE9E,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,gBAAgB,EAAE,CAAC;YACnB,OAAO;QACT,KAAK,QAAQ;YACX,SAAS,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;YACzC,OAAO;QACT,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,SAAS,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,SAAS,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,SAAS,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;CAOb,CAAC,CAAC;AACH,CAAC"}
@@ -12,7 +12,7 @@ export async function noticeCommand(args) {
12
12
  throw new Error("usage: cc98 notice <system|at|reply> [--from n] [--size n]");
13
13
  }
14
14
  const page = extractPageOptions(rest, { size: 10 });
15
- const { client } = createCliContext({ account: accountOption.account });
15
+ const { client } = await createCliContext({ account: accountOption.account });
16
16
  printJson(await client.getNotices(typeArg, page.from, page.size));
17
17
  }
18
18
  function isNoticeType(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"notice.js","sourceRoot":"","sources":["../../../src/cli/commands/notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI5D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IAE9C,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/E,eAAe,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,SAAS,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,CAAC;AACnE,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;CAMb,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"notice.js","sourceRoot":"","sources":["../../../src/cli/commands/notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI5D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IAE9C,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/E,eAAe,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,SAAS,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,CAAC;AACnE,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;CAMb,CAAC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/post.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB/D"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/post.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC/D"}