配置每次落盘都打顶层 patchbay: 标记(盐加版本的哈希)。内核忽略未知 顶层键(yaml.Unmarshal 没开严格模式,config/config.go:612)。刻意不对 内容做哈希:本项目只接管部分段落,手改其余段落是正常用法,内容哈希 会把合法手改判成无效。上传配置时靠标记分流:有标记的确认后替换, 没有的用更重的措辞确认导入;两者都走 config-store 完整保护链路 (新端点 POST /api/config/import)。自动备份列表从界面撤下,改成 下载当前配置 + 拖放上传。 内核参数一组编辑五个老式顶层端口和 keep-alive-interval(config.go:444, 整数秒),走带基准指纹的保存链路。资源一组接 POST /configs/geo (同步接口,透传给了 300 秒超时)。测速地址成为本地偏好,延迟测试 读它;prefs 模块顶层的浏览器全局加了存在性守卫——api.ts 开始引用 prefs,而 bun test 环境没有 localStorage。 退出登录挪到侧栏底部;密度设置从设置页撤下(侧栏按钮还在); 免责声明和关于做成子页(左上角返回),登录页输入框下加同一份 免责声明的弹层入口。
24 lines
936 B
TypeScript
24 lines
936 B
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
import { MARKER_KEY, hasValidMarker, withMarker } from './config-marker.ts'
|
|
import type { ConfigObject } from '../vendor/config-editor/index.ts'
|
|
|
|
describe('配置标记', () => {
|
|
test('打上标记后校验通过,其余键不动', () => {
|
|
const data: ConfigObject = { 'mixed-port': 7890 }
|
|
const marked = withMarker(data)
|
|
expect(hasValidMarker(marked)).toBe(true)
|
|
expect(marked['mixed-port']).toBe(7890)
|
|
})
|
|
|
|
test('没有标记、标记形状不对、sig 对不上都算无效', () => {
|
|
expect(hasValidMarker({})).toBe(false)
|
|
expect(hasValidMarker({ [MARKER_KEY]: 'yes' })).toBe(false)
|
|
expect(hasValidMarker({ [MARKER_KEY]: { v: 1, sig: 'deadbeef' } })).toBe(false)
|
|
})
|
|
|
|
test('打两次标记结果一样(落盘链路的内容不变检查靠它短路)', () => {
|
|
const once = withMarker({})
|
|
expect(withMarker(once)).toEqual(once)
|
|
})
|
|
})
|