@yunzai-ng/core 0.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 (357) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +51 -0
  3. package/dist/adapter/accounts.d.ts +174 -0
  4. package/dist/adapter/accounts.d.ts.map +1 -0
  5. package/dist/adapter/accounts.js +653 -0
  6. package/dist/adapter/accounts.js.map +1 -0
  7. package/dist/adapter/bots.d.ts +142 -0
  8. package/dist/adapter/bots.d.ts.map +1 -0
  9. package/dist/adapter/bots.js +454 -0
  10. package/dist/adapter/bots.js.map +1 -0
  11. package/dist/adapter/host.d.ts +114 -0
  12. package/dist/adapter/host.d.ts.map +1 -0
  13. package/dist/adapter/host.js +90 -0
  14. package/dist/adapter/host.js.map +1 -0
  15. package/dist/adapter/login.d.ts +174 -0
  16. package/dist/adapter/login.d.ts.map +1 -0
  17. package/dist/adapter/login.js +345 -0
  18. package/dist/adapter/login.js.map +1 -0
  19. package/dist/adapter/registry.d.ts +102 -0
  20. package/dist/adapter/registry.d.ts.map +1 -0
  21. package/dist/adapter/registry.js +150 -0
  22. package/dist/adapter/registry.js.map +1 -0
  23. package/dist/config/core-config.d.ts +151 -0
  24. package/dist/config/core-config.d.ts.map +1 -0
  25. package/dist/config/core-config.js +338 -0
  26. package/dist/config/core-config.js.map +1 -0
  27. package/dist/config/schema.d.ts +449 -0
  28. package/dist/config/schema.d.ts.map +1 -0
  29. package/dist/config/schema.js +871 -0
  30. package/dist/config/schema.js.map +1 -0
  31. package/dist/config/store.d.ts +184 -0
  32. package/dist/config/store.d.ts.map +1 -0
  33. package/dist/config/store.js +428 -0
  34. package/dist/config/store.js.map +1 -0
  35. package/dist/config/yaml.d.ts +23 -0
  36. package/dist/config/yaml.d.ts.map +1 -0
  37. package/dist/config/yaml.js +108 -0
  38. package/dist/config/yaml.js.map +1 -0
  39. package/dist/http/client.d.ts +82 -0
  40. package/dist/http/client.d.ts.map +1 -0
  41. package/dist/http/client.js +658 -0
  42. package/dist/http/client.js.map +1 -0
  43. package/dist/index.d.ts +77 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +94 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/kernel/app.d.ts +244 -0
  48. package/dist/kernel/app.d.ts.map +1 -0
  49. package/dist/kernel/app.js +654 -0
  50. package/dist/kernel/app.js.map +1 -0
  51. package/dist/kernel/kv-sink.d.ts +34 -0
  52. package/dist/kernel/kv-sink.d.ts.map +1 -0
  53. package/dist/kernel/kv-sink.js +25 -0
  54. package/dist/kernel/kv-sink.js.map +1 -0
  55. package/dist/kernel/policy.d.ts +77 -0
  56. package/dist/kernel/policy.d.ts.map +1 -0
  57. package/dist/kernel/policy.js +99 -0
  58. package/dist/kernel/policy.js.map +1 -0
  59. package/dist/kernel/runtime.d.ts +117 -0
  60. package/dist/kernel/runtime.d.ts.map +1 -0
  61. package/dist/kernel/runtime.js +197 -0
  62. package/dist/kernel/runtime.js.map +1 -0
  63. package/dist/kernel/sql-sink.d.ts +36 -0
  64. package/dist/kernel/sql-sink.d.ts.map +1 -0
  65. package/dist/kernel/sql-sink.js +114 -0
  66. package/dist/kernel/sql-sink.js.map +1 -0
  67. package/dist/logger/format.d.ts +67 -0
  68. package/dist/logger/format.d.ts.map +1 -0
  69. package/dist/logger/format.js +218 -0
  70. package/dist/logger/format.js.map +1 -0
  71. package/dist/logger/index.d.ts +97 -0
  72. package/dist/logger/index.d.ts.map +1 -0
  73. package/dist/logger/index.js +363 -0
  74. package/dist/logger/index.js.map +1 -0
  75. package/dist/logger/rotate.d.ts +47 -0
  76. package/dist/logger/rotate.d.ts.map +1 -0
  77. package/dist/logger/rotate.js +242 -0
  78. package/dist/logger/rotate.js.map +1 -0
  79. package/dist/message/segment.d.ts +255 -0
  80. package/dist/message/segment.d.ts.map +1 -0
  81. package/dist/message/segment.js +510 -0
  82. package/dist/message/segment.js.map +1 -0
  83. package/dist/message/split.d.ts +34 -0
  84. package/dist/message/split.d.ts.map +1 -0
  85. package/dist/message/split.js +79 -0
  86. package/dist/message/split.js.map +1 -0
  87. package/dist/message/target.d.ts +29 -0
  88. package/dist/message/target.d.ts.map +1 -0
  89. package/dist/message/target.js +34 -0
  90. package/dist/message/target.js.map +1 -0
  91. package/dist/pipeline/cooldown.d.ts +84 -0
  92. package/dist/pipeline/cooldown.d.ts.map +1 -0
  93. package/dist/pipeline/cooldown.js +94 -0
  94. package/dist/pipeline/cooldown.js.map +1 -0
  95. package/dist/pipeline/dispatch.d.ts +98 -0
  96. package/dist/pipeline/dispatch.d.ts.map +1 -0
  97. package/dist/pipeline/dispatch.js +323 -0
  98. package/dist/pipeline/dispatch.js.map +1 -0
  99. package/dist/pipeline/event.d.ts +130 -0
  100. package/dist/pipeline/event.d.ts.map +1 -0
  101. package/dist/pipeline/event.js +538 -0
  102. package/dist/pipeline/event.js.map +1 -0
  103. package/dist/pipeline/middleware.d.ts +63 -0
  104. package/dist/pipeline/middleware.d.ts.map +1 -0
  105. package/dist/pipeline/middleware.js +174 -0
  106. package/dist/pipeline/middleware.js.map +1 -0
  107. package/dist/pipeline/prompt.d.ts +80 -0
  108. package/dist/pipeline/prompt.d.ts.map +1 -0
  109. package/dist/pipeline/prompt.js +155 -0
  110. package/dist/pipeline/prompt.js.map +1 -0
  111. package/dist/pipeline/router.d.ts +98 -0
  112. package/dist/pipeline/router.d.ts.map +1 -0
  113. package/dist/pipeline/router.js +489 -0
  114. package/dist/pipeline/router.js.map +1 -0
  115. package/dist/platform/detect.d.ts +24 -0
  116. package/dist/platform/detect.d.ts.map +1 -0
  117. package/dist/platform/detect.js +178 -0
  118. package/dist/platform/detect.js.map +1 -0
  119. package/dist/platform/paths.d.ts +38 -0
  120. package/dist/platform/paths.d.ts.map +1 -0
  121. package/dist/platform/paths.js +129 -0
  122. package/dist/platform/paths.js.map +1 -0
  123. package/dist/platform/system.d.ts +71 -0
  124. package/dist/platform/system.d.ts.map +1 -0
  125. package/dist/platform/system.js +242 -0
  126. package/dist/platform/system.js.map +1 -0
  127. package/dist/plugin/context.d.ts +92 -0
  128. package/dist/plugin/context.d.ts.map +1 -0
  129. package/dist/plugin/context.js +573 -0
  130. package/dist/plugin/context.js.map +1 -0
  131. package/dist/plugin/define.d.ts +92 -0
  132. package/dist/plugin/define.d.ts.map +1 -0
  133. package/dist/plugin/define.js +82 -0
  134. package/dist/plugin/define.js.map +1 -0
  135. package/dist/plugin/discover.d.ts +106 -0
  136. package/dist/plugin/discover.d.ts.map +1 -0
  137. package/dist/plugin/discover.js +254 -0
  138. package/dist/plugin/discover.js.map +1 -0
  139. package/dist/plugin/events.d.ts +109 -0
  140. package/dist/plugin/events.d.ts.map +1 -0
  141. package/dist/plugin/events.js +209 -0
  142. package/dist/plugin/events.js.map +1 -0
  143. package/dist/plugin/hooks.d.ts +266 -0
  144. package/dist/plugin/hooks.d.ts.map +1 -0
  145. package/dist/plugin/hooks.js +84 -0
  146. package/dist/plugin/hooks.js.map +1 -0
  147. package/dist/plugin/host.d.ts +160 -0
  148. package/dist/plugin/host.d.ts.map +1 -0
  149. package/dist/plugin/host.js +546 -0
  150. package/dist/plugin/host.js.map +1 -0
  151. package/dist/plugin/market.d.ts +264 -0
  152. package/dist/plugin/market.d.ts.map +1 -0
  153. package/dist/plugin/market.js +700 -0
  154. package/dist/plugin/market.js.map +1 -0
  155. package/dist/plugin/services.d.ts +116 -0
  156. package/dist/plugin/services.d.ts.map +1 -0
  157. package/dist/plugin/services.js +213 -0
  158. package/dist/plugin/services.js.map +1 -0
  159. package/dist/plugin/tar.d.ts +65 -0
  160. package/dist/plugin/tar.d.ts.map +1 -0
  161. package/dist/plugin/tar.js +277 -0
  162. package/dist/plugin/tar.js.map +1 -0
  163. package/dist/render/registry.d.ts +127 -0
  164. package/dist/render/registry.d.ts.map +1 -0
  165. package/dist/render/registry.js +306 -0
  166. package/dist/render/registry.js.map +1 -0
  167. package/dist/scheduler/index.d.ts +67 -0
  168. package/dist/scheduler/index.d.ts.map +1 -0
  169. package/dist/scheduler/index.js +279 -0
  170. package/dist/scheduler/index.js.map +1 -0
  171. package/dist/server/api.d.ts +179 -0
  172. package/dist/server/api.d.ts.map +1 -0
  173. package/dist/server/api.js +602 -0
  174. package/dist/server/api.js.map +1 -0
  175. package/dist/server/auth.d.ts +83 -0
  176. package/dist/server/auth.d.ts.map +1 -0
  177. package/dist/server/auth.js +178 -0
  178. package/dist/server/auth.js.map +1 -0
  179. package/dist/server/browse.d.ts +60 -0
  180. package/dist/server/browse.d.ts.map +1 -0
  181. package/dist/server/browse.js +187 -0
  182. package/dist/server/browse.js.map +1 -0
  183. package/dist/server/files.d.ts +27 -0
  184. package/dist/server/files.d.ts.map +1 -0
  185. package/dist/server/files.js +76 -0
  186. package/dist/server/files.js.map +1 -0
  187. package/dist/server/index.d.ts +189 -0
  188. package/dist/server/index.d.ts.map +1 -0
  189. package/dist/server/index.js +1123 -0
  190. package/dist/server/index.js.map +1 -0
  191. package/dist/server/table.d.ts +105 -0
  192. package/dist/server/table.d.ts.map +1 -0
  193. package/dist/server/table.js +289 -0
  194. package/dist/server/table.js.map +1 -0
  195. package/dist/store/index.d.ts +50 -0
  196. package/dist/store/index.d.ts.map +1 -0
  197. package/dist/store/index.js +120 -0
  198. package/dist/store/index.js.map +1 -0
  199. package/dist/store/json.d.ts +73 -0
  200. package/dist/store/json.d.ts.map +1 -0
  201. package/dist/store/json.js +174 -0
  202. package/dist/store/json.js.map +1 -0
  203. package/dist/store/kv.d.ts +126 -0
  204. package/dist/store/kv.d.ts.map +1 -0
  205. package/dist/store/kv.js +232 -0
  206. package/dist/store/kv.js.map +1 -0
  207. package/dist/store/level.d.ts +103 -0
  208. package/dist/store/level.d.ts.map +1 -0
  209. package/dist/store/level.js +119 -0
  210. package/dist/store/level.js.map +1 -0
  211. package/dist/store/memory.d.ts +61 -0
  212. package/dist/store/memory.d.ts.map +1 -0
  213. package/dist/store/memory.js +94 -0
  214. package/dist/store/memory.js.map +1 -0
  215. package/dist/store/sql.d.ts +142 -0
  216. package/dist/store/sql.d.ts.map +1 -0
  217. package/dist/store/sql.js +246 -0
  218. package/dist/store/sql.js.map +1 -0
  219. package/dist/testing/fake.d.ts +109 -0
  220. package/dist/testing/fake.d.ts.map +1 -0
  221. package/dist/testing/fake.js +196 -0
  222. package/dist/testing/fake.js.map +1 -0
  223. package/dist/testing/index.d.ts +16 -0
  224. package/dist/testing/index.d.ts.map +1 -0
  225. package/dist/testing/index.js +16 -0
  226. package/dist/testing/index.js.map +1 -0
  227. package/dist/testing/mock-adapter.d.ts +205 -0
  228. package/dist/testing/mock-adapter.d.ts.map +1 -0
  229. package/dist/testing/mock-adapter.js +309 -0
  230. package/dist/testing/mock-adapter.js.map +1 -0
  231. package/dist/util/deep.d.ts +108 -0
  232. package/dist/util/deep.d.ts.map +1 -0
  233. package/dist/util/deep.js +275 -0
  234. package/dist/util/deep.js.map +1 -0
  235. package/dist/util/defer.d.ts +107 -0
  236. package/dist/util/defer.d.ts.map +1 -0
  237. package/dist/util/defer.js +163 -0
  238. package/dist/util/defer.js.map +1 -0
  239. package/dist/util/dispose.d.ts +88 -0
  240. package/dist/util/dispose.d.ts.map +1 -0
  241. package/dist/util/dispose.js +143 -0
  242. package/dist/util/dispose.js.map +1 -0
  243. package/dist/util/duration.d.ts +28 -0
  244. package/dist/util/duration.d.ts.map +1 -0
  245. package/dist/util/duration.js +77 -0
  246. package/dist/util/duration.js.map +1 -0
  247. package/dist/util/fs.d.ts +110 -0
  248. package/dist/util/fs.d.ts.map +1 -0
  249. package/dist/util/fs.js +269 -0
  250. package/dist/util/fs.js.map +1 -0
  251. package/dist/util/id.d.ts +49 -0
  252. package/dist/util/id.d.ts.map +1 -0
  253. package/dist/util/id.js +87 -0
  254. package/dist/util/id.js.map +1 -0
  255. package/dist/util/lru.d.ts +74 -0
  256. package/dist/util/lru.d.ts.map +1 -0
  257. package/dist/util/lru.js +156 -0
  258. package/dist/util/lru.js.map +1 -0
  259. package/dist/util/queue.d.ts +64 -0
  260. package/dist/util/queue.d.ts.map +1 -0
  261. package/dist/util/queue.js +147 -0
  262. package/dist/util/queue.js.map +1 -0
  263. package/dist/util/text.d.ts +86 -0
  264. package/dist/util/text.d.ts.map +1 -0
  265. package/dist/util/text.js +182 -0
  266. package/dist/util/text.js.map +1 -0
  267. package/package.json +44 -0
  268. package/src/adapter/accounts.ts +758 -0
  269. package/src/adapter/bots.ts +582 -0
  270. package/src/adapter/host.ts +224 -0
  271. package/src/adapter/login.ts +481 -0
  272. package/src/adapter/registry.ts +202 -0
  273. package/src/config/core-config.test.ts +60 -0
  274. package/src/config/core-config.ts +401 -0
  275. package/src/config/schema.test.ts +179 -0
  276. package/src/config/schema.ts +1036 -0
  277. package/src/config/store.test.ts +245 -0
  278. package/src/config/store.ts +506 -0
  279. package/src/config/yaml.ts +119 -0
  280. package/src/http/client.test.ts +568 -0
  281. package/src/http/client.ts +777 -0
  282. package/src/index.ts +106 -0
  283. package/src/kernel/app.test.ts +267 -0
  284. package/src/kernel/app.ts +843 -0
  285. package/src/kernel/kv-sink.ts +58 -0
  286. package/src/kernel/policy.ts +120 -0
  287. package/src/kernel/runtime.test.ts +542 -0
  288. package/src/kernel/runtime.ts +307 -0
  289. package/src/kernel/sql-sink.ts +154 -0
  290. package/src/logger/format.ts +259 -0
  291. package/src/logger/index.ts +427 -0
  292. package/src/logger/rotate.ts +265 -0
  293. package/src/message/segment.test.ts +335 -0
  294. package/src/message/segment.ts +569 -0
  295. package/src/message/split.ts +97 -0
  296. package/src/message/target.ts +48 -0
  297. package/src/pipeline/cooldown.ts +136 -0
  298. package/src/pipeline/dispatch.ts +419 -0
  299. package/src/pipeline/event.ts +735 -0
  300. package/src/pipeline/middleware.test.ts +426 -0
  301. package/src/pipeline/middleware.ts +199 -0
  302. package/src/pipeline/prompt.ts +212 -0
  303. package/src/pipeline/router.test.ts +432 -0
  304. package/src/pipeline/router.ts +575 -0
  305. package/src/platform/detect.ts +178 -0
  306. package/src/platform/paths.ts +147 -0
  307. package/src/platform/system.test.ts +102 -0
  308. package/src/platform/system.ts +289 -0
  309. package/src/plugin/context.test.ts +459 -0
  310. package/src/plugin/context.ts +757 -0
  311. package/src/plugin/define.test.ts +120 -0
  312. package/src/plugin/define.ts +142 -0
  313. package/src/plugin/discover.test.ts +253 -0
  314. package/src/plugin/discover.ts +353 -0
  315. package/src/plugin/events.test.ts +162 -0
  316. package/src/plugin/events.ts +266 -0
  317. package/src/plugin/hooks.ts +373 -0
  318. package/src/plugin/host.test.ts +696 -0
  319. package/src/plugin/host.ts +738 -0
  320. package/src/plugin/market.test.ts +781 -0
  321. package/src/plugin/market.ts +870 -0
  322. package/src/plugin/services.test.ts +135 -0
  323. package/src/plugin/services.ts +261 -0
  324. package/src/plugin/tar.test.ts +158 -0
  325. package/src/plugin/tar.ts +309 -0
  326. package/src/render/registry.test.ts +127 -0
  327. package/src/render/registry.ts +439 -0
  328. package/src/scheduler/index.ts +357 -0
  329. package/src/server/api.test.ts +802 -0
  330. package/src/server/api.ts +869 -0
  331. package/src/server/auth.ts +201 -0
  332. package/src/server/browse.test.ts +193 -0
  333. package/src/server/browse.ts +240 -0
  334. package/src/server/files.ts +97 -0
  335. package/src/server/index.test.ts +566 -0
  336. package/src/server/index.ts +1386 -0
  337. package/src/server/table.ts +351 -0
  338. package/src/store/index.ts +156 -0
  339. package/src/store/json.ts +198 -0
  340. package/src/store/kv.test.ts +307 -0
  341. package/src/store/kv.ts +256 -0
  342. package/src/store/level.ts +167 -0
  343. package/src/store/memory.ts +109 -0
  344. package/src/store/sql.test.ts +204 -0
  345. package/src/store/sql.ts +324 -0
  346. package/src/testing/fake.ts +297 -0
  347. package/src/testing/index.ts +15 -0
  348. package/src/testing/mock-adapter.ts +588 -0
  349. package/src/util/deep.ts +272 -0
  350. package/src/util/defer.ts +211 -0
  351. package/src/util/dispose.ts +169 -0
  352. package/src/util/duration.ts +82 -0
  353. package/src/util/fs.ts +279 -0
  354. package/src/util/id.ts +94 -0
  355. package/src/util/lru.ts +185 -0
  356. package/src/util/queue.ts +167 -0
  357. package/src/util/text.ts +189 -0
@@ -0,0 +1,449 @@
1
+ /**
2
+ * 模块职责:配置 schema 构造器(校验 + WebUI 表单描述,一份声明两处产出)
3
+ * 依赖方向:依赖类型包与 util/deep、util/duration
4
+ * 生命周期:schema 对象不可变,可自由复用与共享
5
+ * 注意事项:**为什么自己写而不用 zod**:面板要把 schema 降级成表单描述,而 zod 只能读 `_def`
6
+ * 反推、版本一升就碎;内核要跑在 Termux 上,少一个运行时依赖就少一次装包失败;
7
+ * 配置是人手写的 YAML,需要「字符串 '8080' 当端口」这类宽容转换,而 zod 的 coerce
8
+ * 是全局开关、粒度不够。
9
+ *
10
+ * 三条刻意的语义:**数组整体替换**不逐元素合并(见 util/deep);**缺失的对象节点按
11
+ * 子字段默认值物化**,故用户只写关心的几个键即可;**未识别的键保留但报 warn**,
12
+ * 不静默丢弃 —— 静默丢弃会让拼错的配置项改半天没反应。
13
+ */
14
+ import type { SchemaDescriptor, SchemaEnumItem, SchemaIssue, SchemaWidget } from "@yunzai-ng/types";
15
+ export type { IssueSeverity, SchemaIssue } from "@yunzai-ng/types";
16
+ /** 校验结果 */
17
+ export type ParseResult<T> = {
18
+ /** 校验通过 */
19
+ ok: true;
20
+ /** 已填充默认值、已强制转换的结果 */
21
+ value: T;
22
+ /** 非致命问题(如未识别的键) */
23
+ issues: SchemaIssue[];
24
+ } | {
25
+ /** 校验失败 */
26
+ ok: false;
27
+ /** 全部问题 */
28
+ issues: SchemaIssue[];
29
+ };
30
+ /** 校验失败抛出的错误 */
31
+ export declare class SchemaError extends Error {
32
+ /** 错误名 */
33
+ readonly name = "SchemaError";
34
+ /** 全部问题 */
35
+ readonly issues: readonly SchemaIssue[];
36
+ /**
37
+ * @param issues 校验问题列表
38
+ */
39
+ constructor(issues: readonly SchemaIssue[]);
40
+ }
41
+ /** 表单元信息 */
42
+ interface SchemaMeta {
43
+ /** 表单标签 */
44
+ title?: string;
45
+ /** 说明文案 */
46
+ description?: string;
47
+ /** 是否敏感 */
48
+ secret?: boolean;
49
+ /** 是否只读 */
50
+ readonly?: boolean;
51
+ /** 控件类型 */
52
+ widget?: SchemaWidget;
53
+ /** 分组 */
54
+ group?: string;
55
+ /** 排序权重 */
56
+ order?: number;
57
+ /** 占位符 */
58
+ placeholder?: string;
59
+ /** 条件显隐 */
60
+ showWhen?: Record<string, unknown>;
61
+ }
62
+ /** 内部定义结构 */
63
+ interface SchemaDef {
64
+ /** 节点类型 */
65
+ kind: "string" | "number" | "boolean" | "enum" | "literal" | "array" | "object" | "record" | "unknown";
66
+ /** 表单元信息 */
67
+ meta: SchemaMeta;
68
+ /** 是否可缺省 */
69
+ optional?: boolean;
70
+ /** 是否有默认值 */
71
+ hasDefault?: boolean;
72
+ /** 默认值 */
73
+ defaultValue?: unknown;
74
+ /** 下界(数值大小 / 字符串长度 / 数组长度) */
75
+ min?: number;
76
+ /** 上界 */
77
+ max?: number;
78
+ /** 字符串正则 */
79
+ pattern?: RegExp;
80
+ /** 字符串是否自动去首尾空白,缺省 true */
81
+ trim?: boolean;
82
+ /**
83
+ * 字符串节点是否允许保留数值形态
84
+ *
85
+ * 仅 `duration()` 使用:时长既可写 `"30s"` 也可写 `30000`,两种写法都要
86
+ * 原样保留 —— 若统一转成字符串,配置文件里的 `cooldown: 0` 会被改写成
87
+ * `cooldown: '0'`,用户会以为框架在乱改自己的文件。
88
+ */
89
+ allowNumber?: boolean;
90
+ /** 数值是否必须为整数 */
91
+ int?: boolean;
92
+ /** 数值步长(仅表单提示) */
93
+ step?: number;
94
+ /** 枚举候选 */
95
+ enumItems?: SchemaEnumItem[];
96
+ /** 字面量值 */
97
+ literalValue?: unknown;
98
+ /** 数组元素 schema */
99
+ element?: Schema<any>;
100
+ /** 单值是否自动包成数组 */
101
+ wrapSingle?: boolean;
102
+ /** 对象字段表 */
103
+ shape?: Record<string, Schema<any>>;
104
+ /** 是否拒绝未识别的键 */
105
+ strict?: boolean;
106
+ /** record 的值 schema */
107
+ valueSchema?: Schema<any>;
108
+ /** 自定义校验 */
109
+ checks?: {
110
+ message: string;
111
+ test: (value: never) => boolean;
112
+ }[];
113
+ }
114
+ /**
115
+ * 配置 schema 节点
116
+ *
117
+ * 不可变:全部 fluent 方法均返回新实例,因此可安全地抽取公共片段以供复用。
118
+ */
119
+ export declare class Schema<T> {
120
+ #private;
121
+ /**
122
+ * @param def 内部定义;请通过 `s.*` 工厂函数创建,不要直接 new
123
+ */
124
+ constructor(def: SchemaDef);
125
+ /**
126
+ * 设置表单标签
127
+ * @param text 标签文案
128
+ * @returns 新 schema
129
+ */
130
+ title(text: string): Schema<T>;
131
+ /**
132
+ * 设置说明文案
133
+ * @param text 说明
134
+ * @returns 新 schema
135
+ */
136
+ desc(text: string): Schema<T>;
137
+ /**
138
+ * 设置分组(WebUI 折叠区块)
139
+ * @param name 分组名
140
+ * @returns 新 schema
141
+ */
142
+ group(name: string): Schema<T>;
143
+ /**
144
+ * 设置排序权重,小的在前
145
+ * @param weight 权重
146
+ * @returns 新 schema
147
+ */
148
+ order(weight: number): Schema<T>;
149
+ /**
150
+ * 指定控件类型
151
+ * @param widget 控件
152
+ * @returns 新 schema
153
+ */
154
+ widget(widget: SchemaWidget): Schema<T>;
155
+ /**
156
+ * 标记为敏感字段
157
+ *
158
+ * WebUI 读取时脱敏、日志中不打印。CK、token、密码必须标。
159
+ * @returns 新 schema
160
+ */
161
+ secret(): Schema<T>;
162
+ /**
163
+ * 标记为只读
164
+ * @returns 新 schema
165
+ */
166
+ readonly(): Schema<T>;
167
+ /**
168
+ * 设置输入框占位符
169
+ * @param text 占位文案
170
+ * @returns 新 schema
171
+ */
172
+ placeholder(text: string): Schema<T>;
173
+ /**
174
+ * 设置条件显隐
175
+ * @param cond 同级字段取值条件,如 `{ mode: "ws-reverse" }`;值写成数组表示"取其中之一"
176
+ * @returns 新 schema
177
+ */
178
+ showWhen(cond: Record<string, unknown>): Schema<T>;
179
+ /**
180
+ * 标记为可缺省
181
+ * @returns 新 schema,输出类型带上 undefined
182
+ */
183
+ optional(): Schema<T | undefined>;
184
+ /**
185
+ * 设置默认值
186
+ *
187
+ * 有默认值的字段在输出类型里仍是必填 —— 因为解析后一定有值。
188
+ * @param value 默认值
189
+ * @returns 新 schema
190
+ */
191
+ default(value: T): Schema<T>;
192
+ /**
193
+ * 追加自定义校验
194
+ * @param message 不通过时的中文提示
195
+ * @param test 返回 true 表示通过
196
+ * @returns 新 schema
197
+ */
198
+ check(message: string, test: (value: T) => boolean): Schema<T>;
199
+ /**
200
+ * 下界:数值最小值 / 字符串最短长度 / 数组最少元素
201
+ * @param value 下界
202
+ * @returns 新 schema
203
+ */
204
+ min(value: number): Schema<T>;
205
+ /**
206
+ * 上界:数值最大值 / 字符串最长长度 / 数组最多元素
207
+ * @param value 上界
208
+ * @returns 新 schema
209
+ */
210
+ max(value: number): Schema<T>;
211
+ /**
212
+ * 字符串正则约束
213
+ * @param regex 正则
214
+ * @param message 自定义提示
215
+ * @returns 新 schema
216
+ */
217
+ pattern(regex: RegExp, message?: string): Schema<T>;
218
+ /**
219
+ * 要求整数
220
+ * @returns 新 schema
221
+ */
222
+ int(): Schema<T>;
223
+ /**
224
+ * 数值步长(表单提示用)
225
+ * @param value 步长
226
+ * @returns 新 schema
227
+ */
228
+ step(value: number): Schema<T>;
229
+ /**
230
+ * 对象:拒绝未识别的键
231
+ *
232
+ * 缺省行为是"保留并 warn",适配器这类结构明确的配置可以开严格模式。
233
+ * @returns 新 schema
234
+ */
235
+ strict(): Schema<T>;
236
+ /**
237
+ * 数组:允许单值自动包成数组
238
+ *
239
+ * 让 `masterQQ: 123` 与 `masterQQ: [123]` 都能用 —— 旧配置最常见的困惑点。
240
+ * @returns 新 schema
241
+ */
242
+ single(): Schema<T>;
243
+ /**
244
+ * 解析并校验
245
+ * @param input 待校验值
246
+ * @returns 结果对象;失败时带全部问题,不抛错
247
+ */
248
+ safeParse(input: unknown): ParseResult<T>;
249
+ /**
250
+ * 解析并校验,失败抛错
251
+ * @param input 待校验值
252
+ * @returns 校验后的值(已填默认、已强制转换)
253
+ * @throws SchemaError 校验失败
254
+ */
255
+ parse(input: unknown): T;
256
+ /**
257
+ * 只取默认值,不需要输入
258
+ *
259
+ * 用于生成初始配置文件。
260
+ * @returns 全部默认值构成的对象
261
+ * @throws SchemaError 当 schema 里有无默认值的必填项
262
+ */
263
+ defaults(): T;
264
+ /**
265
+ * 降级为 WebUI 表单描述
266
+ * @returns 表单描述结构体
267
+ */
268
+ describe(): SchemaDescriptor;
269
+ /**
270
+ * 对象 schema:取子字段 schema
271
+ * @param key 字段名
272
+ * @returns 子 schema;不是对象或字段不存在时 undefined
273
+ */
274
+ /**
275
+ *
276
+ */
277
+ field(key: string): Schema<any> | undefined;
278
+ /**
279
+ * 收集全部标了 `secret()` 的字段路径
280
+ *
281
+ * 日志脱敏与 WebUI 读取脱敏都用它,保证"标一次、处处生效"。
282
+ * @returns 点分路径列表
283
+ */
284
+ secretPaths(): string[];
285
+ }
286
+ /** 从 schema 反推 TS 类型 */
287
+ /**
288
+ *
289
+ */
290
+ export type Infer<S> = S extends Schema<infer T> ? T : never;
291
+ /** 让交叉类型在编辑器提示里展开成扁平对象 */
292
+ type Simplify<T> = {
293
+ [K in keyof T]: T[K];
294
+ } & {};
295
+ /** 对象 schema 的字段表 */
296
+ /**
297
+ *
298
+ */
299
+ export type Shape = Record<string, Schema<any>>;
300
+ /** 可缺省的键(输出类型含 undefined 的那些) */
301
+ type OptionalKeys<S extends Shape> = {
302
+ [K in keyof S]: undefined extends Infer<S[K]> ? K : never;
303
+ }[keyof S];
304
+ /** 对象 schema 的输出类型 */
305
+ export type ObjectOutput<S extends Shape> = Simplify<{
306
+ [K in Exclude<keyof S, OptionalKeys<S>>]: Infer<S[K]>;
307
+ } & {
308
+ [K in OptionalKeys<S>]?: Infer<S[K]>;
309
+ }>;
310
+ /**
311
+ * 字符串
312
+ * @returns 字符串 schema
313
+ */
314
+ declare function string(): Schema<string>;
315
+ /**
316
+ * 数字
317
+ * @returns 数字 schema
318
+ */
319
+ declare function number(): Schema<number>;
320
+ /**
321
+ * 布尔
322
+ * @returns 布尔 schema
323
+ */
324
+ declare function boolean(): Schema<boolean>;
325
+ /**
326
+ * 字面量
327
+ * @param value 唯一允许的值
328
+ * @returns 字面量 schema
329
+ */
330
+ declare function literal<const V extends string | number | boolean>(value: V): Schema<V>;
331
+ /**
332
+ * 枚举
333
+ * @param values 候选值
334
+ * @param labels 值到展示文案的映射
335
+ * @returns 枚举 schema
336
+ */
337
+ declare function enumOf<const V extends readonly (string | number | boolean)[]>(values: V, labels?: Partial<Record<string, string>>): Schema<V[number]>;
338
+ /**
339
+ * 带说明的枚举(WebUI 下拉框里显示 label 与 description)
340
+ * @param items 候选项
341
+ * @returns 枚举 schema
342
+ */
343
+ declare function select<const V extends readonly SchemaEnumItem[]>(items: V): Schema<V[number]["value"]>;
344
+ /**
345
+ * 数组
346
+ * @param element 元素 schema
347
+ * @returns 数组 schema
348
+ */
349
+ declare function array<S extends Schema<unknown>>(element: S): Schema<Infer<S>[]>;
350
+ /**
351
+ * 对象
352
+ * @param shape 字段表
353
+ * @returns 对象 schema
354
+ */
355
+ declare function object<S extends Shape>(shape: S): Schema<ObjectOutput<S>>;
356
+ /**
357
+ * 字典(键任意、值同构)
358
+ * @param valueSchema 值 schema
359
+ * @returns 字典 schema
360
+ */
361
+ declare function record<S extends Schema<unknown>>(valueSchema: S): Schema<Record<string, Infer<S>>>;
362
+ /**
363
+ * 任意值(不校验)
364
+ *
365
+ * 兼容出口:插件存在确实无法描述的结构时使用,但 WebUI 仅能提供 JSON 编辑框。
366
+ * @returns 任意值 schema
367
+ */
368
+ declare function unknownValue(): Schema<unknown>;
369
+ /**
370
+ * 时长(`"30s"` / `"7d"` / 毫秒数)
371
+ *
372
+ * 数值写法与字符串写法都原样保留,不互相转换 —— 见 `SchemaDef.allowNumber`。
373
+ * @returns 时长 schema
374
+ */
375
+ declare function duration(): Schema<string | number>;
376
+ /**
377
+ * cron 表达式
378
+ * @returns cron schema
379
+ */
380
+ declare function cron(): Schema<string>;
381
+ /**
382
+ * 端口号
383
+ * @returns 端口 schema
384
+ */
385
+ declare function port(): Schema<number>;
386
+ /**
387
+ * 密码 / 令牌(自动脱敏)
388
+ * @returns 敏感字符串 schema
389
+ */
390
+ declare function password(): Schema<string>;
391
+ /**
392
+ * 多行文本
393
+ * @returns 文本域 schema
394
+ */
395
+ declare function text(): Schema<string>;
396
+ /**
397
+ * 字符串标签数组(WebUI 用 tag 输入框)
398
+ * @returns 标签数组 schema
399
+ */
400
+ declare function tags(): Schema<string[]>;
401
+ /**
402
+ * id 列表(QQ 号 / 群号,允许写单个值)
403
+ * @returns id 数组 schema
404
+ */
405
+ declare function ids(): Schema<string[]>;
406
+ /**
407
+ * 目录路径
408
+ * @returns 目录 schema
409
+ */
410
+ declare function dir(): Schema<string>;
411
+ /**
412
+ * 文件路径
413
+ * @returns 文件 schema
414
+ */
415
+ declare function file(): Schema<string>;
416
+ /**
417
+ * schema 构造器集合
418
+ *
419
+ * 用法:
420
+ * ```ts
421
+ * const conf = s.object({
422
+ * port: s.port().default(3000).title("监听端口"),
423
+ * mode: s.enum(["ws", "ws-reverse"]).default("ws-reverse").title("连接方式")
424
+ * })
425
+ * type Conf = Infer<typeof conf>
426
+ * ```
427
+ */
428
+ export declare const s: {
429
+ readonly string: typeof string;
430
+ readonly number: typeof number;
431
+ readonly boolean: typeof boolean;
432
+ readonly literal: typeof literal;
433
+ readonly enum: typeof enumOf;
434
+ readonly select: typeof select;
435
+ readonly array: typeof array;
436
+ readonly object: typeof object;
437
+ readonly record: typeof record;
438
+ readonly unknown: typeof unknownValue;
439
+ readonly duration: typeof duration;
440
+ readonly cron: typeof cron;
441
+ readonly port: typeof port;
442
+ readonly password: typeof password;
443
+ readonly text: typeof text;
444
+ readonly tags: typeof tags;
445
+ readonly ids: typeof ids;
446
+ readonly dir: typeof dir;
447
+ readonly file: typeof file;
448
+ };
449
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}