cc98-cli 0.1.0 → 0.3.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.
- package/CHANGELOG.md +44 -0
- package/README.md +46 -179
- package/dist/api/client.d.ts +29 -15
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +163 -31
- package/dist/api/client.js.map +1 -1
- package/dist/api/endpoints.d.ts +14 -0
- package/dist/api/endpoints.d.ts.map +1 -1
- package/dist/api/endpoints.js +21 -1
- package/dist/api/endpoints.js.map +1 -1
- package/dist/api/types.d.ts +12 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cli/commands/board.d.ts.map +1 -1
- package/dist/cli/commands/board.js +15 -0
- package/dist/cli/commands/board.js.map +1 -1
- package/dist/cli/commands/cache.d.ts +2 -0
- package/dist/cli/commands/cache.d.ts.map +1 -0
- package/dist/cli/commands/cache.js +68 -0
- package/dist/cli/commands/cache.js.map +1 -0
- package/dist/cli/commands/me.d.ts.map +1 -1
- package/dist/cli/commands/me.js +18 -3
- package/dist/cli/commands/me.js.map +1 -1
- package/dist/cli/commands/message.d.ts.map +1 -1
- package/dist/cli/commands/message.js +10 -0
- package/dist/cli/commands/message.js.map +1 -1
- package/dist/cli/commands/post.d.ts.map +1 -1
- package/dist/cli/commands/post.js +12 -0
- package/dist/cli/commands/post.js.map +1 -1
- package/dist/cli/commands/topic.d.ts.map +1 -1
- package/dist/cli/commands/topic.js +41 -5
- package/dist/cli/commands/topic.js.map +1 -1
- package/dist/cli/commands/update.d.ts +2 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +24 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/user.d.ts.map +1 -1
- package/dist/cli/commands/user.js +12 -0
- package/dist/cli/commands/user.js.map +1 -1
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +18 -2
- package/dist/cli/router.js.map +1 -1
- package/dist/storage/cache-store.d.ts +45 -2
- package/dist/storage/cache-store.d.ts.map +1 -1
- package/dist/storage/cache-store.js +158 -5
- package/dist/storage/cache-store.js.map +1 -1
- package/dist/storage/token-store.js +1 -1
- package/dist/storage/token-store.js.map +1 -1
- package/dist/tui/app-new.d.ts +2 -0
- package/dist/tui/app-new.d.ts.map +1 -0
- package/dist/tui/app-new.js +2589 -0
- package/dist/tui/app-new.js.map +1 -0
- package/dist/tui/app-old.d.ts +2 -0
- package/dist/tui/app-old.d.ts.map +1 -0
- package/dist/tui/app-old.js +2589 -0
- package/dist/tui/app-old.js.map +1 -0
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +14 -1055
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/borders.d.ts +183 -0
- package/dist/tui/borders.d.ts.map +1 -0
- package/dist/tui/borders.js +143 -0
- package/dist/tui/borders.js.map +1 -0
- package/dist/tui/cached-client.d.ts +43 -1
- package/dist/tui/cached-client.d.ts.map +1 -1
- package/dist/tui/cached-client.js +108 -2
- package/dist/tui/cached-client.js.map +1 -1
- package/dist/tui/components/content.d.ts +11 -0
- package/dist/tui/components/content.d.ts.map +1 -0
- package/dist/tui/components/content.js +129 -0
- package/dist/tui/components/content.js.map +1 -0
- package/dist/tui/components/header.d.ts +7 -0
- package/dist/tui/components/header.d.ts.map +1 -0
- package/dist/tui/components/header.js +38 -0
- package/dist/tui/components/header.js.map +1 -0
- package/dist/tui/components/index.d.ts +8 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +9 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/components/layout.d.ts +3 -0
- package/dist/tui/components/layout.d.ts.map +1 -0
- package/dist/tui/components/layout.js +464 -0
- package/dist/tui/components/layout.js.map +1 -0
- package/dist/tui/components/overview.d.ts +7 -0
- package/dist/tui/components/overview.d.ts.map +1 -0
- package/dist/tui/components/overview.js +20 -0
- package/dist/tui/components/overview.js.map +1 -0
- package/dist/tui/components/sidebar.d.ts +7 -0
- package/dist/tui/components/sidebar.d.ts.map +1 -0
- package/dist/tui/components/sidebar.js +58 -0
- package/dist/tui/components/sidebar.js.map +1 -0
- package/dist/tui/components/status.d.ts +8 -0
- package/dist/tui/components/status.d.ts.map +1 -0
- package/dist/tui/components/status.js +36 -0
- package/dist/tui/components/status.js.map +1 -0
- package/dist/tui/components/types.d.ts +17 -0
- package/dist/tui/components/types.d.ts.map +1 -0
- package/dist/tui/components/types.js +3 -0
- package/dist/tui/components/types.js.map +1 -0
- package/dist/tui/components/utils.d.ts +5 -0
- package/dist/tui/components/utils.d.ts.map +1 -0
- package/dist/tui/components/utils.js +68 -0
- package/dist/tui/components/utils.js.map +1 -0
- package/dist/tui/controller.d.ts +61 -0
- package/dist/tui/controller.d.ts.map +1 -0
- package/dist/tui/controller.js +1118 -0
- package/dist/tui/controller.js.map +1 -0
- package/dist/tui/helpers.d.ts +25 -0
- package/dist/tui/helpers.d.ts.map +1 -0
- package/dist/tui/helpers.js +240 -0
- package/dist/tui/helpers.js.map +1 -0
- package/dist/tui/keymap/actions.d.ts +9 -0
- package/dist/tui/keymap/actions.d.ts.map +1 -0
- package/dist/tui/keymap/actions.js +208 -0
- package/dist/tui/keymap/actions.js.map +1 -0
- package/dist/tui/keymap/bindings.d.ts +5 -0
- package/dist/tui/keymap/bindings.d.ts.map +1 -0
- package/dist/tui/keymap/bindings.js +138 -0
- package/dist/tui/keymap/bindings.js.map +1 -0
- package/dist/tui/keymap/index.d.ts +4 -0
- package/dist/tui/keymap/index.d.ts.map +1 -0
- package/dist/tui/keymap/index.js +5 -0
- package/dist/tui/keymap/index.js.map +1 -0
- package/dist/tui/keymap/types.d.ts +17 -0
- package/dist/tui/keymap/types.d.ts.map +1 -0
- package/dist/tui/keymap/types.js +3 -0
- package/dist/tui/keymap/types.js.map +1 -0
- package/dist/tui/navigation.d.ts +4 -0
- package/dist/tui/navigation.d.ts.map +1 -0
- package/dist/tui/navigation.js +20 -0
- package/dist/tui/navigation.js.map +1 -0
- package/dist/tui/renderer.d.ts +6 -0
- package/dist/tui/renderer.d.ts.map +1 -0
- package/dist/tui/renderer.js +302 -0
- package/dist/tui/renderer.js.map +1 -0
- package/dist/tui/state/index.d.ts +3 -0
- package/dist/tui/state/index.d.ts.map +1 -0
- package/dist/tui/state/index.js +4 -0
- package/dist/tui/state/index.js.map +1 -0
- package/dist/tui/state/store.d.ts +4 -0
- package/dist/tui/state/store.d.ts.map +1 -0
- package/dist/tui/state/store.js +61 -0
- package/dist/tui/state/store.js.map +1 -0
- package/dist/tui/state/types.d.ts +137 -0
- package/dist/tui/state/types.d.ts.map +1 -0
- package/dist/tui/state/types.js +3 -0
- package/dist/tui/state/types.js.map +1 -0
- package/dist/tui/topic-reader.d.ts +10 -0
- package/dist/tui/topic-reader.d.ts.map +1 -0
- package/dist/tui/topic-reader.js +167 -0
- package/dist/tui/topic-reader.js.map +1 -0
- package/dist/update.d.ts +17 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +88 -0
- package/dist/update.js.map +1 -0
- package/dist/version.d.ts +6 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/images/tui.jpg +0 -0
- package/package.json +4 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
### 改进
|
|
6
|
+
|
|
7
|
+
- 重构 TUI:删除旧的单文件实现,拆分为入口、控制器、渲染器、组件、状态、导航和帖子阅读器模块。
|
|
8
|
+
- TUI 异步副作用集中到 `TuiController`,修复重构后预览、进入主题、搜索、返回和退出渲染容易断裂的问题。
|
|
9
|
+
- 增强 TUI 数据归一化,兼容 CC98 API 响应中的大小写字段和嵌套主题/用户数据。
|
|
10
|
+
- 更新 TUI 状态栏提示,按当前上下文显示更短的操作提示。
|
|
11
|
+
|
|
12
|
+
### 修复
|
|
13
|
+
|
|
14
|
+
- 修复 `mapLimit` 并发限制实现错误。
|
|
15
|
+
- 修复退出后异步加载仍可能继续渲染终端的问题。
|
|
16
|
+
|
|
17
|
+
## v0.2.0 - 2026-05-26
|
|
18
|
+
|
|
19
|
+
这次更新主要改进 TUI 的浏览体验,并补上本地缓存和更新检查能力。
|
|
20
|
+
|
|
21
|
+
### 新增
|
|
22
|
+
|
|
23
|
+
- 新增 `cc98 update`,可检查 GitHub Release 上的最新版本。
|
|
24
|
+
- 新增 `cc98 cache` 命令,支持查看缓存统计、清理过期缓存和清空缓存。
|
|
25
|
+
- TUI 新增设置页,支持缓存清理、快捷键帮助和检查更新。
|
|
26
|
+
- 帖子阅读新增楼层概念,支持数字加 Enter 跳转楼层,`【` / `】` 在楼层之间切换。
|
|
27
|
+
- 帖子阅读右栏新增当前楼层、当前行、图片、链接、评分和热门回复信息。
|
|
28
|
+
|
|
29
|
+
### 改进
|
|
30
|
+
|
|
31
|
+
- 优化 TUI 左栏、中栏和右栏的信息架构,每个栏目拥有独立的右侧说明。
|
|
32
|
+
- 优化消息、设置等栏目标题和选中态显示。
|
|
33
|
+
- 优化帖子内 `j/k` 行滚动,保留逐行查看内容的能力。
|
|
34
|
+
- 增强本地缓存,加入文件缓存统计、过期清理和内存缓存上限。
|
|
35
|
+
|
|
36
|
+
### 修复
|
|
37
|
+
|
|
38
|
+
- 修复进入设置后按键处理错误导致无法执行设置项的问题。
|
|
39
|
+
- 修复版面帖子列表操作菜单中的返回动作无效的问题。
|
|
40
|
+
- 修复 token 刷新后可能把当前账号错误保存为 `default` 的问题。
|
|
41
|
+
|
|
42
|
+
## v0.1.0 - 2026-05-26
|
|
43
|
+
|
|
44
|
+
- 初始版本,提供 CC98 CLI 和 TUI 基础浏览能力。
|
package/README.md
CHANGED
|
@@ -1,36 +1,29 @@
|
|
|
1
|
-
# CC98
|
|
1
|
+
# CC98-CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
CC98 的命令行客户端,包含面向脚本使用的 CLI 和适合日常浏览的 TUI。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- 直接运行 `cc98`:进入终端界面。
|
|
6
|
+
- 带参数运行 `cc98 <command>`:执行 CLI,默认输出 JSON。
|
|
7
|
+
- 当前主要面向读取场景,TUI 会尽量按需加载和缓存,减少请求。
|
|
6
8
|
|
|
7
|
-
##
|
|
9
|
+
## 概要
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
- TUI:支持十大、收藏版面帖子流、最新、版面、关注动态、消息、我的信息。
|
|
11
|
-
- 读帖:只按需加载第一页,`n` / `Space` 手动加载下一页。
|
|
12
|
-
- 图片:默认只渲染链接占位,不自动下载图片。
|
|
13
|
-
- 缓存:对首页、版面、帖子、私信、用户信息做本地 TTL 缓存,减少对服务器压力。
|
|
14
|
-
- 账号:支持多账号本地 token 存储和切换。
|
|
11
|
+
vibe coding 累了的话,不妨在终端里水水 98。
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
这是一个个人兴趣项目,基于 CC98 的公开接口实现,与 CC98 官方无关。请合理使用本工具,避免违反 CC98 的用户协议。
|
|
17
14
|
|
|
18
|
-
##
|
|
15
|
+
## 预览
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
<p align="center">
|
|
18
|
+
<img src="images/tui.jpg" alt="CC98-CLI TUI 截图" width="900">
|
|
19
|
+
</p>
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
npm install -g cc98-cli
|
|
24
|
-
```
|
|
21
|
+
## 安装
|
|
25
22
|
|
|
26
|
-
|
|
23
|
+
需要 Node.js 20+。
|
|
27
24
|
|
|
28
25
|
```bash
|
|
29
|
-
|
|
30
|
-
cd CC98-CLI
|
|
31
|
-
npm install
|
|
32
|
-
npm run build
|
|
33
|
-
npm link
|
|
26
|
+
npm install -g cc98-cli
|
|
34
27
|
```
|
|
35
28
|
|
|
36
29
|
## 登录
|
|
@@ -39,156 +32,68 @@ npm link
|
|
|
39
32
|
cc98 login
|
|
40
33
|
```
|
|
41
34
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```text
|
|
45
|
-
~/.cc98-cli/tokens.json
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
多账号相关命令:
|
|
35
|
+
多账号:
|
|
49
36
|
|
|
50
37
|
```bash
|
|
51
38
|
cc98 account list
|
|
52
|
-
cc98 account current
|
|
53
39
|
cc98 account use <name>
|
|
54
|
-
cc98 account
|
|
40
|
+
cc98 --account <name> me
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
cc98 --account <name> topic <topic-id>
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## TUI 使用
|
|
43
|
+
## TUI
|
|
64
44
|
|
|
65
45
|
```bash
|
|
66
46
|
cc98
|
|
67
47
|
```
|
|
68
48
|
|
|
69
|
-
|
|
49
|
+
常用按键:
|
|
70
50
|
|
|
71
51
|
```text
|
|
52
|
+
j/k 或 ↑/↓ 上下移动
|
|
53
|
+
l 或 → 进入下一层
|
|
54
|
+
h 或 ← 返回上一层
|
|
55
|
+
Enter 确认执行
|
|
56
|
+
r 刷新
|
|
57
|
+
o 打开操作菜单
|
|
58
|
+
? 显示帮助
|
|
59
|
+
n 或 Space 加载更多
|
|
72
60
|
q 退出
|
|
73
|
-
h / 左方向键 返回左栏
|
|
74
|
-
l / Enter / 右方向键 进入内容或打开选中项
|
|
75
|
-
j / 下方向键 向下
|
|
76
|
-
k / 上方向键 向上
|
|
77
|
-
r 刷新当前视图
|
|
78
|
-
n / Space 读取下一页帖子或更早私信
|
|
79
|
-
Esc / Backspace 返回上一级列表
|
|
80
61
|
```
|
|
81
62
|
|
|
82
|
-
|
|
63
|
+
左栏导航包含:十大、收藏、最新、版面、关注、消息、通知、我的、更多、设置。
|
|
83
64
|
|
|
84
|
-
|
|
85
|
-
十大 热门话题
|
|
86
|
-
收藏 收藏版面的帖子流
|
|
87
|
-
最新 全站新帖
|
|
88
|
-
版面 全部版面,并可进入具体版面主题列表
|
|
89
|
-
关注 关注用户动态
|
|
90
|
-
消息 私信联系人和历史
|
|
91
|
-
我的 当前账号信息
|
|
92
|
-
```
|
|
65
|
+
当前 TUI 已拆分为入口、控制器、渲染器、组件、状态和帖子阅读器几个模块。`src/tui/app.ts` 只负责终端生命周期和依赖组装,具体按键处理与异步加载在 `controller.ts`,布局渲染在 `renderer.ts` 和 `components/`。
|
|
93
66
|
|
|
94
|
-
## CLI
|
|
67
|
+
## CLI
|
|
95
68
|
|
|
96
|
-
|
|
69
|
+
CLI 默认输出 JSON,适合配合 `jq` 或脚本使用。
|
|
97
70
|
|
|
98
71
|
```bash
|
|
99
|
-
cc98
|
|
72
|
+
cc98 me
|
|
100
73
|
cc98 topic <topic-id>
|
|
101
74
|
cc98 board <board-id>
|
|
102
75
|
cc98 search <keyword>
|
|
76
|
+
cc98 message recent
|
|
77
|
+
cc98 update
|
|
103
78
|
```
|
|
104
79
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
cc98 forum index
|
|
109
|
-
cc98 forum boards
|
|
110
|
-
cc98 forum card-stat
|
|
111
|
-
|
|
112
|
-
cc98 board list
|
|
113
|
-
cc98 board info <board-id>
|
|
114
|
-
cc98 board topics <board-id> [--from n] [--size n] [--best]
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
说明:`forum card-stat` 对接的是 `card.cc98.org` 的接口,该站点使用独立 Web OIDC cookie session,普通 CC98 API token 可能会收到 `401`。
|
|
118
|
-
|
|
119
|
-
### 帖子
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
cc98 topic <topic-id> [--from n] [--size n]
|
|
123
|
-
cc98 topic <topic-id> --meta
|
|
124
|
-
cc98 topic <topic-id> --posts
|
|
125
|
-
cc98 topic new [--from n] [--size n]
|
|
126
|
-
cc98 topic random [--size n]
|
|
127
|
-
cc98 topic recent [--me | --user id] [--from n] [--size n]
|
|
128
|
-
cc98 topic favorite [--group id] [--order n] [--from n] [--size n]
|
|
129
|
-
cc98 topic is-favorite <topic-id>
|
|
130
|
-
cc98 topic vote <topic-id>
|
|
131
|
-
cc98 topic basic <ids...>
|
|
132
|
-
cc98 topic search <keyword> [--from n] [--size n]
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### 用户
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
cc98 me
|
|
139
|
-
cc98 user me
|
|
140
|
-
cc98 user profile <user-id>
|
|
141
|
-
cc98 user basic <ids...>
|
|
142
|
-
cc98 user list <ids...>
|
|
143
|
-
cc98 user followers [--from n] [--size n]
|
|
144
|
-
cc98 user followees [--from n] [--size n]
|
|
145
|
-
cc98 user moment [--from n] [--size n]
|
|
146
|
-
cc98 user favorite-updates [--from n] [--size n]
|
|
147
|
-
cc98 user favorite-groups
|
|
148
|
-
cc98 user search <name>
|
|
149
|
-
cc98 user unread
|
|
150
|
-
cc98 user browse-history [--from n] [--size n]
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### 消息
|
|
80
|
+
查看完整命令:
|
|
154
81
|
|
|
155
82
|
```bash
|
|
156
|
-
cc98
|
|
157
|
-
cc98
|
|
158
|
-
cc98
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
### 通知
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
cc98 notice system [--from n] [--size n]
|
|
165
|
-
cc98 notice at [--from n] [--size n]
|
|
166
|
-
cc98 notice reply [--from n] [--size n]
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### 帖子相关状态
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
cc98 post reaction-state <post-id>
|
|
173
|
-
cc98 post rate-reasons <type>
|
|
83
|
+
cc98 --help
|
|
84
|
+
cc98 topic --help
|
|
85
|
+
cc98 user --help
|
|
86
|
+
cc98 update --help
|
|
174
87
|
```
|
|
175
88
|
|
|
176
|
-
##
|
|
89
|
+
## 本地数据
|
|
177
90
|
|
|
178
|
-
|
|
91
|
+
登录信息和缓存保存在:
|
|
179
92
|
|
|
180
93
|
```text
|
|
181
|
-
~/.cc98-cli/
|
|
94
|
+
~/.cc98-cli/
|
|
182
95
|
```
|
|
183
96
|
|
|
184
|
-
TUI 会尽量避免不必要请求:
|
|
185
|
-
|
|
186
|
-
- 首页和十大:短 TTL。
|
|
187
|
-
- 全部版面:长 TTL。
|
|
188
|
-
- 版面帖子、新帖、关注动态、私信:短 TTL。
|
|
189
|
-
- 帖子正文:第一页短 TTL,后续页更长 TTL。
|
|
190
|
-
- 图片:默认不下载,只显示链接占位。
|
|
191
|
-
|
|
192
97
|
## 开发
|
|
193
98
|
|
|
194
99
|
```bash
|
|
@@ -198,49 +103,11 @@ npm run build
|
|
|
198
103
|
node dist/main.js
|
|
199
104
|
```
|
|
200
105
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
node dist/main.js --help
|
|
205
|
-
node dist/main.js topic <topic-id>
|
|
206
|
-
```
|
|
106
|
+
## 致谢
|
|
207
107
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
首次发布需要:
|
|
211
|
-
|
|
212
|
-
1. 一个 npm 账号。
|
|
213
|
-
2. 本机登录 npm:
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
npm login
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
3. 确认包名没有被占用:
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
npm view cc98-cli
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
如果返回 `404 Not Found`,通常表示包名还没有被占用。
|
|
226
|
-
|
|
227
|
-
4. 构建并发布:
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
npm run check
|
|
231
|
-
npm run build
|
|
232
|
-
npm publish --access public
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
如果 npm 账号开启了 2FA,发布时会要求输入 OTP。
|
|
236
|
-
|
|
237
|
-
后续版本发布需要先修改 `package.json` 的 `version`,推荐用:
|
|
238
|
-
|
|
239
|
-
```bash
|
|
240
|
-
npm version patch
|
|
241
|
-
npm publish --access public
|
|
242
|
-
```
|
|
108
|
+
- [Ansherly](https://github.com/Ansherly):感谢前辈的积极鼓励!
|
|
109
|
+
- [CC98-Desktop](https://github.com/Ansherly/CC98-Desktop):部分 TUI 信息架构参考了该桌面客户端的交互设计。
|
|
243
110
|
|
|
244
|
-
##
|
|
111
|
+
## License
|
|
245
112
|
|
|
246
113
|
MIT
|
package/dist/api/client.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ interface RequestOptions {
|
|
|
4
4
|
}
|
|
5
5
|
export declare class Cc98Client {
|
|
6
6
|
private readonly tokenStore;
|
|
7
|
+
private refreshPromise;
|
|
7
8
|
constructor(options: ClientOptions);
|
|
8
9
|
loginWithPassword(username: string, password: string): Promise<{
|
|
9
10
|
accessToken: string;
|
|
@@ -13,35 +14,48 @@ export declare class Cc98Client {
|
|
|
13
14
|
getMeWithAccessToken(accessToken: string): Promise<JsonObject>;
|
|
14
15
|
getForumIndex(options?: RequestOptions): Promise<unknown>;
|
|
15
16
|
getAllBoards(options?: RequestOptions): Promise<unknown>;
|
|
16
|
-
getCardStat(): Promise<unknown>;
|
|
17
|
-
getUserProfile(userId: number): Promise<unknown>;
|
|
17
|
+
getCardStat(options?: RequestOptions): Promise<unknown>;
|
|
18
|
+
getUserProfile(userId: number, options?: RequestOptions): Promise<unknown>;
|
|
18
19
|
getBasicUsers(ids: number[], options?: RequestOptions): Promise<unknown>;
|
|
19
|
-
getUsers(ids: number[]): Promise<unknown>;
|
|
20
|
+
getUsers(ids: number[], options?: RequestOptions): Promise<unknown>;
|
|
20
21
|
getFriendIds(type: "follower" | "followee", from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
21
22
|
getMoment(from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
22
23
|
getFavoriteUpdates(from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
23
|
-
getFavoriteGroups(): Promise<unknown>;
|
|
24
|
+
getFavoriteGroups(options?: RequestOptions): Promise<unknown>;
|
|
24
25
|
getRecentChats(from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
25
26
|
getChatHistory(userId: number, from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
26
|
-
searchUsers(name: string): Promise<unknown>;
|
|
27
|
+
searchUsers(name: string, options?: RequestOptions): Promise<unknown>;
|
|
27
28
|
getUnreadCount(options?: RequestOptions): Promise<unknown>;
|
|
28
|
-
getNotices(type: "system" | "at" | "reply", from?: number, size?: number): Promise<unknown>;
|
|
29
|
-
getBrowseHistory(from?: number, size?: number): Promise<unknown>;
|
|
29
|
+
getNotices(type: "system" | "at" | "reply", from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
30
|
+
getBrowseHistory(from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
30
31
|
getTopic(topicId: number, options?: RequestOptions): Promise<JsonObject>;
|
|
31
32
|
getTopicPosts(topicId: number, from?: number, size?: number, options?: RequestOptions): Promise<JsonObject[]>;
|
|
32
|
-
isTopicFavorite(topicId: number): Promise<unknown>;
|
|
33
|
+
isTopicFavorite(topicId: number, options?: RequestOptions): Promise<unknown>;
|
|
33
34
|
getNewTopics(from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
34
|
-
getRandomTopics(size?: number): Promise<unknown>;
|
|
35
|
-
getFavoriteTopics(from?: number, size?: number, order?: number, groupId?: number): Promise<unknown>;
|
|
36
|
-
getTopicVote(topicId: number): Promise<unknown>;
|
|
35
|
+
getRandomTopics(size?: number, options?: RequestOptions): Promise<unknown>;
|
|
36
|
+
getFavoriteTopics(from?: number, size?: number, order?: number, groupId?: number, options?: RequestOptions): Promise<unknown>;
|
|
37
|
+
getTopicVote(topicId: number, options?: RequestOptions): Promise<unknown>;
|
|
37
38
|
getBasicTopics(ids: number[]): Promise<unknown>;
|
|
38
|
-
getRecentTopics(userId: number | undefined, from?: number, size?: number): Promise<unknown>;
|
|
39
|
+
getRecentTopics(userId: number | undefined, from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
39
40
|
getBoardInfo(boardId: number, options?: RequestOptions): Promise<unknown>;
|
|
40
41
|
getBoardTopics(boardId: number, from?: number, size?: number, best?: boolean, options?: RequestOptions): Promise<unknown>;
|
|
41
|
-
searchTopics(keyword: string, from?: number, size?: number): Promise<unknown>;
|
|
42
|
-
getPostReactionState(postId: number): Promise<unknown>;
|
|
43
|
-
getPostRateReasons(type: number): Promise<unknown>;
|
|
42
|
+
searchTopics(keyword: string, from?: number, size?: number, options?: RequestOptions): Promise<unknown>;
|
|
43
|
+
getPostReactionState(postId: number, options?: RequestOptions): Promise<unknown>;
|
|
44
|
+
getPostRateReasons(type: number, options?: RequestOptions): Promise<unknown>;
|
|
45
|
+
createTopic(boardId: number, title: string, content: string, contentType?: number): Promise<unknown>;
|
|
46
|
+
replyTopic(topicId: number, content: string, contentType?: number): Promise<unknown>;
|
|
47
|
+
addFavorite(topicId: number, groupId?: number): Promise<unknown>;
|
|
48
|
+
removeFavorite(topicId: number): Promise<unknown>;
|
|
49
|
+
addBoardFavorite(boardId: number): Promise<unknown>;
|
|
50
|
+
removeBoardFavorite(boardId: number): Promise<unknown>;
|
|
51
|
+
followUser(userId: number): Promise<unknown>;
|
|
52
|
+
unfollowUser(userId: number): Promise<unknown>;
|
|
53
|
+
sendMessage(userId: number, content: string): Promise<unknown>;
|
|
54
|
+
signin(): Promise<unknown>;
|
|
55
|
+
reactToPost(postId: number, isLike: boolean): Promise<unknown>;
|
|
44
56
|
private request;
|
|
57
|
+
private tryRefreshToken;
|
|
58
|
+
private doRefreshToken;
|
|
45
59
|
}
|
|
46
60
|
export {};
|
|
47
61
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKvE,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|