✨ feat(vscode): 代码阅读的 React 组件卡片:原子图标,名称后面跟具名导出 / 默认导出 / 客户端组件 / 记忆化 / 转发 ref 小标签,属性表按属性一行(类型取字段、默认值、必填、说明,来自 XxxProps 可点,导入的类型经工作区索引查),"use client" 和组件上的 JSDoc 不再单独成块

This commit is contained in:
cruldra committed 2026-10-03 03:11:46 +08:00
1 parent 1a32a51e75
commit 15f3a6600d
14 files changed
+666 -34

No files matched your search

@@ -88,6 +88,11 @@ describe('库规则:启用', () => {
expect(list.map(view => view.kind)).toEqual(['import', 'class'])
expect(reports).toEqual([])
})
it('libraries 是空的规则不看导入:这种语言的文件都启用', async () => {
expect(await activates('import os', { ...cardRule('any'), libraries: [] })).toBe(true)
expect(await activates('x = 1', { ...cardRule('any'), libraries: [] })).toBe(true)
})
})
describe('库规则:认领', () => {
@@ -177,6 +182,17 @@ describe('库规则:认领', () => {
])
})
it('略去的块不出块,后面的块 id 接着往下数;还有子块的块不能略去,记下来、照常显示', async () => {
const omitting = (kind: string): LibraryRule => ({ ...cardRule('omit'), claim: block => block.kind === kind ? { omit: true } : undefined })
const list = await views(MODEL, [omitting('import')])
expect(list.map(view => [view.id, view.kind])).toEqual([['0', 'class']])
expect(list[0].children.map(child => child.id)).toEqual(['0.0', '0.1', '0.2', '0.3'])
const reports: string[] = []
expect((await views(MODEL, [omitting('class')], reports)).map(view => view.kind)).toEqual(['import', 'class'])
expect(reports).toEqual(['库规则 omit 给第 3 行的 class 块的替身不合约定,这块照常显示:要略去的块还有子块'])
})
it('认成契约里现成的属性表块:种类、属性表、筛选属性照语言插件报的这种块,编辑范围是整个类;并进来的不是子块时照常显示', async () => {
const asEnum = (absorbs: (block: CodeBlock) => CodeBlock[]): LibraryRule => ({
...cardRule('lib'),