finej3 1.0.15 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +171 -111
  3. package/dist/cjs/clients/client.d.ts +94 -0
  4. package/dist/cjs/clients/client.js +52 -51
  5. package/dist/cjs/clients/client.js.map +1 -1
  6. package/dist/cjs/clients/main.d.ts +442 -0
  7. package/dist/cjs/clients/main.js +270 -331
  8. package/dist/cjs/clients/main.js.map +1 -1
  9. package/dist/cjs/clients/search.d.ts +101 -0
  10. package/dist/cjs/clients/search.js +39 -48
  11. package/dist/cjs/clients/search.js.map +1 -1
  12. package/dist/cjs/core/http.d.ts +43 -0
  13. package/dist/cjs/core/http.js +41 -21
  14. package/dist/cjs/core/http.js.map +1 -1
  15. package/dist/cjs/index.d.ts +48 -0
  16. package/dist/cjs/index.js +4 -2
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/types/client.d.ts +239 -0
  19. package/dist/cjs/types/main.d.ts +1270 -0
  20. package/dist/cjs/types/search.d.ts +331 -0
  21. package/dist/esm/clients/client.d.ts +76 -60
  22. package/dist/esm/clients/client.d.ts.map +1 -1
  23. package/dist/esm/clients/client.js +52 -51
  24. package/dist/esm/clients/client.js.map +1 -1
  25. package/dist/esm/clients/main.d.ts +358 -463
  26. package/dist/esm/clients/main.d.ts.map +1 -1
  27. package/dist/esm/clients/main.js +270 -331
  28. package/dist/esm/clients/main.js.map +1 -1
  29. package/dist/esm/clients/search.d.ts +81 -66
  30. package/dist/esm/clients/search.d.ts.map +1 -1
  31. package/dist/esm/clients/search.js +39 -48
  32. package/dist/esm/clients/search.js.map +1 -1
  33. package/dist/esm/core/http.d.ts +24 -42
  34. package/dist/esm/core/http.d.ts.map +1 -1
  35. package/dist/esm/core/http.js +40 -21
  36. package/dist/esm/core/http.js.map +1 -1
  37. package/dist/esm/index.d.ts +11 -10
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js +2 -1
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/types/client.d.ts +217 -117
  42. package/dist/esm/types/client.d.ts.map +1 -1
  43. package/dist/esm/types/main.d.ts +916 -1034
  44. package/dist/esm/types/main.d.ts.map +1 -1
  45. package/dist/esm/types/search.d.ts +287 -236
  46. package/dist/esm/types/search.d.ts.map +1 -1
  47. package/package.json +48 -43
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 fine_wei
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 fine_wei
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,111 +1,171 @@
1
- # finej3
2
-
3
- 剑网 3 API 的 TypeScript SDK,包含主站、搜索和客户端服务。支持 Node.js 18+、ESM、CommonJS 和 TypeScript 类型声明,无运行时依赖。
4
-
5
- ## 安装
6
-
7
- ```sh
8
- npm install finej3
9
- ```
10
-
11
- ## 使用
12
-
13
- 所有接口需要站点访问令牌 `token`,推栏相关接口还需要有效的 `ticket`。下面的示例从环境变量读取凭证;SDK 不会自动加载 `.env` 文件。
14
-
15
- ```ts
16
- import { createJx3 } from 'finej3';
17
-
18
- const { token, ticket } = process.env;
19
- if (!token || !ticket) {
20
- throw new Error('请先配置 token 和 ticket 环境变量');
21
- }
22
-
23
- const { api } = createJx3({ token, ticket });
24
- const response = await api.wblzsSomeone({
25
- id: '1425022970254655488',
26
- });
27
-
28
- if (response.code !== 200) {
29
- throw new Error(response.msg);
30
- }
31
-
32
- console.log(response.data.detail);
33
- console.log(response.data.result);
34
- ```
35
-
36
- 订单编号等大整数 ID 应使用字符串,避免 JavaScript 数字精度丢失。
37
-
38
- CommonJS 可通过 `const { createJx3 } = require('finej3')` 加载。
39
-
40
- `createJx3` 返回三个客户端:
41
-
42
- - `api`:主站接口,响应结构为 `{ code, msg, data, time }`。
43
- - `search`:搜索服务,响应结构为 `{ status, detail }`。
44
- - `client`:客户端服务,响应结构为 `{ status, detail }`。
45
-
46
- 业务错误原样返回,应检查 `code` 或 `status` 是否为 `200`。网络失败、超时或非法 JSON 响应会抛出异常;缺少必要的凭证也会抛出异常。
47
-
48
- 公共配置支持 `timeoutMs`(默认 30000 毫秒)、自定义 `fetch`,以及通过 `baseUrl: { api, search, client }` 分别覆盖服务地址。需要 `ticket` 的方法可以在调用参数中覆盖公共配置中的值。
49
-
50
- ## 1.0.15 副本掉落与试炼翻牌模拟
51
-
52
- 新增两个主站方法,均只需 LV.2 及以上的站点 `token`。
53
-
54
- - `api.raidDrop({ name: '25yx闲风雾城' })` 调用 `GET /raid/drop` 模拟副本掉落。省略参数时,默认副本为 `25yx闲风雾城`。成功响应的 `data` 类型为 `RaidDropData`,其中 `dugeon` 是副本名,`awards[i]` 是首领 `boss[i]` 的掉落列表。
55
- - `api.raidFlip({ name: '1234' })` 调用 `GET /raid/flip` 依次模拟第 1 至 4 层翻牌。省略参数时,默认模拟第 1 至 3 层。成功响应的 `data` 类型为 `RaidFlipData`,其中 `result` 按试炼层、牌、奖励条目分组,每条奖励的 `v` 是物品,`count` 是数量。
56
-
57
- ## 1.0.14 角色徽章
58
-
59
- 新增 `api.tuilanBadge()`,通过 `GET /tuilan/badge` 查询角色徽章。需要 LV.2 及以上的站点 `token` 和推栏 `ticket`。
60
-
61
- ```ts
62
- const badges = await api.tuilanBadge({ server: '梦江南', name: '角色名' });
63
- if (badges.code === 200) {
64
- for (const badge of badges.data.badge_data) {
65
- console.log(badge.name, badge.value);
66
- }
67
- }
68
- ```
69
-
70
- 返回类型为 `Jx3Envelope<TuilanBadgeData>`,其中 `badge_data` 是 `TuilanBadgeItem[]`。`value` 是展示用字符串,例如装备分 `"11551"` 或段位 `"零段"`。
71
-
72
- ## 1.0.13 类型补齐
73
-
74
- `rankWanted` 的公开和私密榜单条目补齐 `forceName: string`、`tongName: string`、`campId: number | null` 和 `campName: string | null`。保留接口返回的空字符串及 `null`;本次更新不改变请求行为或运行时响应。
75
-
76
- ## 1.0.12 新增接口
77
-
78
- 新增聊天内容查询和万宝楼角色信息查询,均需要 LV.2 及以上的站点 `token`。
79
-
80
- ```ts
81
- const chats = await api.chatContent({
82
- server: '梦江南',
83
- name: '马男',
84
- limit: 20,
85
- page: 1,
86
- });
87
- // chats.code === 200 时,chats.data 为聊天记录数组。
88
- // limit 默认 20,page 默认 1;服务端合并去重并按时间倒序返回。
89
-
90
- const roles = await api.wblzsRole({ id: '1430213266303164416' });
91
- // roles.code === 200 且 roles.data.code === 200 时,
92
- // roles.data.data 为角色列表,保留上游字段名和历史记录。
93
- ```
94
-
95
- ## 1.0.11 方法迁移
96
-
97
- 万宝楼找人方法 `wanbaolouOrder` 已更名为 `wblzsSomeone`,对应请求地址 `/wblzs/someone`。请更新原有调用,使用 `{ id: '订单编号' }` 传参;返回类型仍为 `WanbaolouOrderData`,包含订单详情 `detail` 和候选角色列表 `result`。
98
-
99
- ## 发布前校验
100
-
101
- ```sh
102
- npm run prepublishOnly
103
- ```
104
-
105
- 该命令依次执行类型检查、ESM/CommonJS 构建、本地测试和打包检查。发布内容为 `dist` 产物、包元数据、README 和 MIT 许可证。
106
-
107
- ## 源码恢复记录
108
-
109
- 2026-11-01 从 npm 的 `finej3@1.0.12` 发布包恢复本项目:使用发布的 JavaScript 实现和 TypeScript 声明重建 `src`,以现存旧副本补回构建配置及脚本,并补回类型检查和接口回归测试。恢复基线重新编译后的 16 个 JavaScript 文件、8 个声明文件均与发布版通过语法树比对(忽略注释和排版)。
110
-
111
- 发布包的源码映射不含原始源码,因此原始排版、未保留的注释、完整测试、Git 历史和未发布改动不能据此还原。原发布包 SHA-512 校验值为 `ITHOEz3LhZluo/2yK2mwCV6F3g4QWWYI42csparA18ySMLuEhYYWCphJPRS0kjMMNSKM3gsDyydXvSJz+EjZYQ==`。
1
+ # finej3
2
+
3
+ 剑网 3 API 的 TypeScript SDK,无运行时依赖,支持 Node.js 18+、ESM、CommonJS 和类型声明。
4
+
5
+ 当前实现面向 `nico.nicemoe.cn` 的新版 HTTP API,共包含主站 88 个、搜索服务 12 个、客户端服务 15 个方法。不包含 WebSocket 推送。
6
+
7
+ ## 2.1.0 版本说明
8
+
9
+ - 新增 `calcdCalculate`、`chatContent`、`raidRecords`、`roleBatch`、`simulateRaid`、`simulateTrial`,共支持 115 个 HTTP 接口。
10
+ - 批量角色查询使用 POST JSON 传递字符串 ID 数组。
11
+ - 为计算和模拟结果补充上游错误类型,并验证六个新增接口的实际调用。
12
+
13
+ ## 2.0.0 版本说明
14
+
15
+ 本版本包含破坏性变更,从 1.x 升级前请按下方迁移说明调整调用。
16
+
17
+ - 迁移至新版主站、搜索和客户端服务,共支持 109 个 HTTP 接口。
18
+ - 统一使用 `{ status, detail }` 响应和请求头 token 鉴权,提供 `isSuccess` 类型收窄函数。
19
+ - 更新接口名称、参数和响应类型,保留可空字段、空数组及批量查询的失败分支。
20
+ - 分别提供 ESM / CommonJS 类型声明,验证 `Node16`、`NodeNext` 消费者兼容性。
21
+
22
+ ## 安装与使用
23
+
24
+ ```sh
25
+ npm install finej3
26
+ ```
27
+
28
+ ```ts
29
+ import { createJx3, isSuccess } from 'finej3';
30
+
31
+ const { api, search, client } = createJx3({
32
+ token: process.env.JX3API_TOKEN,
33
+ ticket: process.env.JX3API_TICKET,
34
+ });
35
+
36
+ const response = await api.chatRecords({
37
+ server: '梦江南',
38
+ name: '马男',
39
+ limit: 20,
40
+ page: 1,
41
+ });
42
+
43
+ if (!isSuccess(response)) {
44
+ throw new Error(response.detail);
45
+ }
46
+ if (!Array.isArray(response.detail.list)) {
47
+ throw new Error('接口返回了空对象');
48
+ }
49
+ for (const message of response.detail.list) {
50
+ console.log(message.roleName, message.message);
51
+ }
52
+ ```
53
+
54
+ CommonJS 使用 `const { createJx3, isSuccess } = require('finej3')`。
55
+
56
+ ESM 和 CommonJS 分别提供对应的类型声明,支持 TypeScript 的 `Node16` 和 `NodeNext` 模块解析。CommonJS TypeScript 文件也可使用 `import sdk = require('finej3')`。
57
+
58
+ SDK 不自动读取环境变量或加载 `.env`。公开接口可省略 `token`;受保护接口使用请求头 `token`。推栏接口支持公共 `ticket`,也允许单次调用覆盖。订单号等大整数 ID 使用字符串。
59
+
60
+ ## 响应与错误
61
+
62
+ 三个客户端都原样返回 `{ status, detail }`。`status === 200` 表示成功,业务错误的 `detail` 为字符串。错误码范围未被文档限定,使用 `isSuccess(response)` 在 TypeScript 中安全收窄分支。
63
+
64
+ 部分成功响应允许 `detail` 为 `{}` 或 `null`,类型中保留这些情况。榜单在查询全服时返回数组,指定服务器时返回分组对象;空字符串也表示全服,因此方法不会仅凭 `server: string` 就断言一定返回单对象。
65
+
66
+ 批量在线和副本查询可能外层成功、单个角色失败。对每个条目分别使用 `isSuccess(item)` 判断;失败条目的 `detail` 是错误字符串。
67
+
68
+ 网络失败、超时、非法 JSON 或不符合响应信封的内容会抛出异常。业务错误原样返回。默认超时为 30 秒,可通过 `timeoutMs` 调整。
69
+
70
+ ## 服务与配置
71
+
72
+ | 客户端 | 默认入口 |
73
+ | --- | --- |
74
+ | `api` | `https://nico.nicemoe.cn` |
75
+ | `search` | `https://nico.nicemoe.cn/search/submit` |
76
+ | `client` | `https://nico.nicemoe.cn/client/submit` |
77
+
78
+ 可传入自定义 `fetch`,或通过 `baseUrl: { api, search, client }` 分别覆盖入口。`api` 是 URL 前缀;另外两项是完整的 POST 提交地址,SDK 不再追加路径。
79
+
80
+ ## 补充接口
81
+
82
+ | 方法 | 用途与参数 |
83
+ | --- | --- |
84
+ | `api.calcdCalculate({ server, name, page?, cycle? })` | DPS 计算,`page` 支持 `pvedps` 和 `界pvedps` |
85
+ | `api.chatContent({ server, name, limit?, page? })` | 合并补充记录后去重分页,返回聊天记录数组 |
86
+ | `api.raidRecords({ server, name })` | 主站团队副本进度 |
87
+ | `api.roleBatch({ ids })` | 批量角色资料,`ids` 为非空字符串数组,通过 POST JSON 发送 |
88
+ | `api.simulateRaid({ name? })` | 副本掉落模拟 |
89
+ | `api.simulateTrial({ name? })` | 试炼翻牌模拟,默认层数序列为 `"123"` |
90
+
91
+ `chatContent` 返回合并后的记录数组,`chatRecords` 返回 `{ list, total }` 分页对象。批量角色查询只返回已匹配的角色,结果数量可能少于请求的 ID 数量。
92
+
93
+ DPS 计算和副本模拟会透传上游结果,外层 `status: 200` 的 `detail` 仍可能包含 `{ code, msg, req_id }` 错误。类型中保留这一分支,调用方需要继续判断计算结果或掉落数据是否存在。
94
+
95
+ ```ts
96
+ const response = await api.simulateRaid({ name: '25人普通洛阳之战' });
97
+ if (!isSuccess(response)) throw new Error(response.detail);
98
+ if ('awards' in response.detail && Array.isArray(response.detail.awards)) {
99
+ console.log(response.detail.dugeon, response.detail.awards);
100
+ } else {
101
+ console.log('msg' in response.detail ? response.detail.msg : '上游未返回掉落数据');
102
+ }
103
+ ```
104
+
105
+ 2026-11-13 实测时,文档默认副本名 `25yx闲风雾城` 返回上游 404,以上示例名称成功返回掉落数据。
106
+
107
+ ## 从 1.x 迁移到 2.x
108
+
109
+ 此更新包含破坏性变更。将 `code/msg/data/time` 改为 `status/detail`,更新调用名称和字段读取;新服务不会被转换回旧响应格式。
110
+
111
+ | 原调用 | 新调用 |
112
+ | --- | --- |
113
+ | `api.chatContent` | 保留该方法,合并后的聊天记录位于 `detail` 数组 |
114
+ | `api.cardPreset` | `api.cardDetail` |
115
+ | `api.duowanStatistics` | `api.voiceChannels` |
116
+ | `api.soarNext` | `api.soarRecords` |
117
+ | `api.raidDrop` / `raidFlip` | `api.simulateRaid` / `simulateTrial` |
118
+ | `api.rankArena` / `rankChampionship` | `api.rankLadder` / `rankContest` |
119
+ | `api.rankConstable` / `rankOutlaw` | `api.rankJianghu({ name: '捕快荣誉榜' / '江湖浪客榜' })` |
120
+ | `api.rankStatistics` | 按榜单使用 `rankRecords`、`rankGuild`、`rankCastle` 或 `rankBattle` |
121
+ | `api.rankTrials({ name })` | `api.rankTrials({ kungfu })` |
122
+ | `api.trialBosses({ season, floor })` | `api.trialBosses({ floor })`,仅查询当前赛季 |
123
+ | `api.tuilanAchievement` | `search.achievement`,不需要 ticket |
124
+ | `api.schoolMatrix` / `schoolSkills` / `schoolTalent` | `search.kungfuMatrixList` / `kungfuSkillList` / `kungfuTalentList`,使用 `kungfu` 参数 |
125
+ | `client.roleShowCard` / `roleShowCards` | `client.roleCardRecord` / `roleCardRecords` |
126
+ | `client.roleShowCardCached` / `roleShowCardRandom` / `roleShowCardRecords` | `client.roleCardCached` / `roleCardRandom` / `roleCardList` |
127
+ | `client.roleEquipList` / `roleCdList` / `rolesCdList` | `client.roleEquipmentDetail` / `roleRaidRecords` / `rolesRaidRecords` |
128
+ | `client.tradeItemSearch` | `client.market`,页码从 0 开始 |
129
+ | `search.tiebaScammerCheck` / `tiebaKeywordCheck` / `tieba818Check` | `search.tiebaFraudCheck` / `tiebaTextCheck` / `tiebaEventCheck` |
130
+
131
+ 榜单保留新接口的原始条目字段,例如 `szName`、`dwForceID`,榜单名称字段为 `label`。装备接口区分默认原始格式与 `format: 'calcd'` 的展开格式,包含新返回的赛季和附魔效果。
132
+
133
+ `chatContent` 和 `raidRecords` 已按补充文档恢复,奖励模拟使用上表的新方法名。`siteIndex` 已移除。按本次升级范围,不实现两个 `/active/update/*` 接口、四个 `/trade/item/alias*` 接口及 `/sound/converter`。
134
+
135
+ ## 类型依据与验证
136
+
137
+ 响应类型依据官方 OpenAPI 及 2026-11-13 在梦江南等查询范围取得的多角色、多参数样本整理。保留原始字段名、观察到的可选字段及可空值,不以 `any` 或 `unknown` 代替未确认的业务结构。
138
+
139
+ `chituRecords` 的业务数据按用户确认沿用旧版,包括可空的 `time`、`window`、`note`,仅外层改用 `status/detail`。`tiebaSummary` 的线上请求目前返回上游错误;其字段按用户确认沿用原类型,尚未验证新版成功响应。样本不能保证覆盖未来新增字段和所有业务分支。
140
+
141
+ 官方文档:[主站](https://nico.nicemoe.cn/openapi)、[搜索](https://nico.nicemoe.cn/doc/json/openapi.search.json)、[客户端](https://nico.nicemoe.cn/doc/json/openapi.client.json)。
142
+
143
+ ## 开发与测试
144
+
145
+ 开发脚本使用 Node.js 22+。
146
+
147
+ ```sh
148
+ npm ci
149
+ npm run typecheck
150
+ npm run build
151
+ npm test
152
+ npm run verify-package
153
+ ```
154
+
155
+ `npm run prepublishOnly` 依次运行以上检查,不执行发布。`npm test` 使用本地 HTTP 服务验证全部 115 个方法的路由、参数和鉴权,并检查错误响应、空值、超时及自定义入口;运行前需要构建。
156
+
157
+ `npm run verify-package` 还会通过包名编译 `.mts` / `.cts` 消费者,检查两种模块解析模式下的类型入口,并确认声明文件包含在发布包中。
158
+
159
+ 实时查询测试使用忽略的 `.env` 文件:
160
+
161
+ ```dotenv
162
+ JX3API_TOKEN=你的访问令牌
163
+ JX3API_TICKET=你的推栏凭证
164
+ # 可选:JX3API_SERVER、JX3API_ROLE
165
+ ```
166
+
167
+ 运行 `npm run smoke`。默认服务器为梦江南,角色为捞汁小海螺;不会调用写接口,也不打印凭证或完整响应。
168
+
169
+ ## 源码恢复记录
170
+
171
+ 项目于 2026-11-01 从 npm 的 `finej3@1.0.12` 发布包恢复 TypeScript 源码和构建配置。恢复基线的编译产物与原发布版通过语法树比对;原始排版、完整测试及未发布改动无法从发布包还原。
@@ -0,0 +1,94 @@
1
+ import { HttpClient, type Jx3Envelope, type Jx3Options } from '../core/http.js';
2
+ import type * as T from '../types/client.js';
3
+ /** 新版客户端服务入口。 */
4
+ export declare const CLIENT_BASE_URL = "https://nico.nicemoe.cn/client/submit";
5
+ /** 响应保留 { status, detail };使用 isSuccess 判断成功后读取业务数据。 */
6
+ export declare class Jx3ClientApi extends HttpClient {
7
+ constructor(options?: Jx3Options);
8
+ /** 阵营事件。 */
9
+ campHistory(params: {
10
+ camp: 1 | 2;
11
+ cursor?: string;
12
+ month?: number | null;
13
+ server: string;
14
+ year?: number | null;
15
+ }): Promise<Jx3Envelope<T.CampHistoryData>>;
16
+ /** 据点历史。 */
17
+ castleHistory(params: {
18
+ cursor?: string;
19
+ month?: number | null;
20
+ server: string;
21
+ year?: number | null;
22
+ }): Promise<Jx3Envelope<T.CastleHistoryData>>;
23
+ /** 万宝楼。 */
24
+ cookie(params: {
25
+ server: string;
26
+ }): Promise<Jx3Envelope<T.CookieData>>;
27
+ /** 设计站。 */
28
+ design(params: {
29
+ body_type?: number;
30
+ cover_size_type?: number;
31
+ data_type?: number;
32
+ face_type?: number;
33
+ page?: number;
34
+ server: string;
35
+ upload_source?: string;
36
+ }): Promise<Jx3Envelope<T.DesignData>>;
37
+ /** 交易行。 */
38
+ market(params: {
39
+ keyword: string;
40
+ page?: number;
41
+ quality?: number;
42
+ server: string;
43
+ type_idx?: number;
44
+ }): Promise<Jx3Envelope<T.ClientTradeItemSearchData>>;
45
+ /** 历史名片。 */
46
+ roleCardCached(params: {
47
+ name: string;
48
+ server: string;
49
+ }): Promise<Jx3Envelope<T.ShowCard | null>>;
50
+ /** 名片列表。 */
51
+ roleCardList(params: {
52
+ name: string;
53
+ server: string;
54
+ }): Promise<Jx3Envelope<T.ShowCardHistoryItem[] | null>>;
55
+ /** 随机名片。 */
56
+ roleCardRandom(params: {
57
+ body?: string | null;
58
+ force?: string | null;
59
+ server: string;
60
+ }): Promise<Jx3Envelope<T.ShowCard | null>>;
61
+ /** 当前名片。 */
62
+ roleCardRecord(params: {
63
+ name: string;
64
+ server: string;
65
+ }): Promise<Jx3Envelope<T.ShowCard | null>>;
66
+ /** 多槽名片。 */
67
+ roleCardRecords(params: {
68
+ name: string;
69
+ server: string;
70
+ }): Promise<Jx3Envelope<T.ShowCard[] | null>>;
71
+ /** 装备详情。 */
72
+ roleEquipmentDetail(params: {
73
+ name: string;
74
+ server: string;
75
+ }): Promise<Jx3Envelope<T.RoleEquipListData | null>>;
76
+ /** 角色在线。 */
77
+ roleOnlineStatus(params: {
78
+ name: string;
79
+ server: string;
80
+ }): Promise<Jx3Envelope<T.RoleOnlineStatus | null>>;
81
+ /** 副本记录。 */
82
+ roleRaidRecords(params: {
83
+ name: string;
84
+ server: string;
85
+ }): Promise<Jx3Envelope<T.RaidProgress[] | null>>;
86
+ /** 批量在线。 */
87
+ rolesOnlineStatus(params: {
88
+ roles: [T.RoleRef, ...T.RoleRef[]];
89
+ }): Promise<Jx3Envelope<T.RolesOnlineStatusData | null>>;
90
+ /** 批量副本。 */
91
+ rolesRaidRecords(params: {
92
+ roles: [T.RoleRef, ...T.RoleRef[]];
93
+ }): Promise<Jx3Envelope<T.RolesRaidRecordsData | null>>;
94
+ }
@@ -2,71 +2,72 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Jx3ClientApi = exports.CLIENT_BASE_URL = void 0;
4
4
  const http_js_1 = require("../core/http.js");
5
- /** 客户端服务官方地址 */
6
- exports.CLIENT_BASE_URL = "https://submit.client.nicemoe.cn";
7
- /**
8
- * 客户端服务(submit.client.nicemoe.cn,POST + JSON body,单入口 action 分发)。
9
- * 响应信封 `{ status, detail }` 原样返回,不解包、业务错误不抛异常(自行判断 status;
10
- * 业务错误时 detail 为错误描述字符串)。
11
- *
12
- * 部分接口(design / tradeItemSearch,以及 roleEquipList 的装备数据)依赖目标服务器
13
- * 有已注册的游戏客户端在线,否则返回 status=503「无可用客户端」。
14
- * 传 `baseUrl` 可指向自建代理 / 镜像,缺省用 {@link CLIENT_BASE_URL}。
15
- */
5
+ /** 新版客户端服务入口。 */
6
+ exports.CLIENT_BASE_URL = 'https://nico.nicemoe.cn/client/submit';
7
+ /** 响应保留 { status, detail };使用 isSuccess 判断成功后读取业务数据。 */
16
8
  class Jx3ClientApi extends http_js_1.HttpClient {
17
- constructor(options) {
9
+ constructor(options = {}) {
18
10
  super(exports.CLIENT_BASE_URL, options);
19
11
  }
20
- /** 角色名片 */
21
- roleShowCard(params) {
22
- return this.post('role_show_card', { ...params });
12
+ /** 阵营事件。 */
13
+ campHistory(params) {
14
+ return this.post('camp_history', { ...params });
23
15
  }
24
- /** 全部名片 */
25
- roleShowCards(params) {
26
- return this.post('role_show_cards', { ...params });
16
+ /** 据点历史。 */
17
+ castleHistory(params) {
18
+ return this.post('castle_history', { ...params });
27
19
  }
28
- /** 名片缓存 */
29
- roleShowCardCached(params) {
30
- return this.post('role_show_card_cached', { ...params });
20
+ /** 万宝楼。 */
21
+ cookie(params) {
22
+ return this.post('cookie', { ...params });
31
23
  }
32
- /** 随机名片(可按势力 / 体型筛选) */
33
- roleShowCardRandom(params) {
34
- return this.post('role_show_card_random', { ...params });
24
+ /** 设计站。 */
25
+ design(params) {
26
+ return this.post('design', { ...params });
35
27
  }
36
- /** 历史名片 */
37
- roleShowCardRecords(params) {
38
- return this.post('role_show_card_records', { ...params });
28
+ /** 交易行。 */
29
+ market(params) {
30
+ return this.post('market', { ...params });
39
31
  }
40
- /** 在线状态 */
41
- roleOnlineStatus(params) {
42
- return this.post('role_online_status', { ...params });
32
+ /** 历史名片。 */
33
+ roleCardCached(params) {
34
+ return this.post('role_card_cached', { ...params });
43
35
  }
44
- /** 批量在线(最多 10 个角色;逐项判断 status,失败项 detail 为空对象) */
45
- rolesOnlineStatus(params) {
46
- return this.post('roles_online_status', { ...params });
36
+ /** 名片列表。 */
37
+ roleCardList(params) {
38
+ return this.post('role_card_list', { ...params });
47
39
  }
48
- /** 装备列表(装备数据需要该服务器有在线游戏客户端) */
49
- roleEquipList(params) {
50
- return this.post('role_equip_list', { ...params });
40
+ /** 随机名片。 */
41
+ roleCardRandom(params) {
42
+ return this.post('role_card_random', { ...params });
51
43
  }
52
- /** 副本进度 */
53
- roleCdList(params) {
54
- return this.post('role_cd_list', { ...params });
44
+ /** 当前名片。 */
45
+ roleCardRecord(params) {
46
+ return this.post('role_card_record', { ...params });
55
47
  }
56
- /** 批量副本(最多 10 个角色) */
57
- rolesCdList(params) {
58
- return this.post('roles_cd_list', { ...params });
48
+ /** 多槽名片。 */
49
+ roleCardRecords(params) {
50
+ return this.post('role_card_records', { ...params });
59
51
  }
60
- /**
61
- * 交易行物品搜索(需要在线游戏客户端)。
62
- * quality:-1=任意 / 1..6=白绿蓝紫橙金;type_idx:物品分类索引,4=全部;page 为 1-indexed。
63
- */
64
- tradeItemSearch(params) {
65
- return this.post('trade_item_search', { ...params });
52
+ /** 装备详情。 */
53
+ roleEquipmentDetail(params) {
54
+ return this.post('role_equipment_detail', { ...params });
66
55
  }
67
- /** 设计站点推荐(未实测:需要在线游戏客户端) */
68
- design(params) {
69
- return this.post('design', { ...params });
56
+ /** 角色在线。 */
57
+ roleOnlineStatus(params) {
58
+ return this.post('role_online_status', { ...params });
59
+ }
60
+ /** 副本记录。 */
61
+ roleRaidRecords(params) {
62
+ return this.post('role_raid_records', { ...params });
63
+ }
64
+ /** 批量在线。 */
65
+ rolesOnlineStatus(params) {
66
+ return this.post('roles_online_status', { ...params });
67
+ }
68
+ /** 批量副本。 */
69
+ rolesRaidRecords(params) {
70
+ return this.post('roles_raid_records', { ...params });
70
71
  }
71
72
  }
72
73
  exports.Jx3ClientApi = Jx3ClientApi;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/clients/client.ts"],"names":[],"mappings":";;;AAAA,6CAAoF;AAEpF,gBAAgB;AACH,QAAA,eAAe,GAAG,kCAAkC,CAAC;AAClE;;;;;;;;GAQG;AACH,MAAa,YAAa,SAAQ,oBAAU;IAC1C,YAAY,OAAmB;QAC7B,KAAK,CAAC,uBAAe,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,WAAW;IACX,YAAY,CAAC,MAGZ;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,WAAW;IACX,aAAa,CAAC,MAGb;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,WAAW;IACX,kBAAkB,CAAC,MAGlB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,wBAAwB;IACxB,kBAAkB,CAAC,MAIlB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,WAAW;IACX,mBAAmB,CAAC,MAGnB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,WAAW;IACX,gBAAgB,CAAC,MAGhB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,kDAAkD;IAClD,iBAAiB,CAAC,MAEjB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,+BAA+B;IAC/B,aAAa,CAAC,MAGb;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,WAAW;IACX,UAAU,CAAC,MAGV;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,sBAAsB;IACtB,WAAW,CAAC,MAEX;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD;;;OAGG;IACH,eAAe,CAAC,MAMf;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,4BAA4B;IAC5B,MAAM,CAAC,MAAsB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AA1FD,oCA0FC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/clients/client.ts"],"names":[],"mappings":";;;AAAA,6CAAkG;AAGlG,iBAAiB;AACJ,QAAA,eAAe,GAAG,uCAAuC,CAAC;AAEvE,wDAAwD;AACxD,MAAa,YAAa,SAAQ,oBAAU;IAC1C,YAAY,UAAsB,EAAE;QAClC,KAAK,CAAC,uBAAe,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,YAAY;IACZ,WAAW,CAAC,MAMX;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,YAAY;IACZ,aAAa,CAAC,MAKb;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,WAAW;IACX,MAAM,CAAC,MAEN;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW;IACX,MAAM,CAAC,MAQN;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW;IACX,MAAM,CAAC,MAMN;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY;IACZ,cAAc,CAAC,MAGd;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;IACZ,YAAY,CAAC,MAGZ;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,YAAY;IACZ,cAAc,CAAC,MAId;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;IACZ,cAAc,CAAC,MAGd;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;IACZ,eAAe,CAAC,MAGf;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;IACZ,mBAAmB,CAAC,MAGnB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY;IACZ,gBAAgB,CAAC,MAGhB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,YAAY;IACZ,eAAe,CAAC,MAGf;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;IACZ,iBAAiB,CAAC,MAEjB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,YAAY;IACZ,gBAAgB,CAAC,MAEhB;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAvID,oCAuIC"}