@tnotesjs/core 0.2.1 → 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/README.md +0 -1
- package/config/ConfigManager.ts +137 -0
- package/config/constants.ts +121 -0
- package/config/defaultConfig.ts +33 -4
- package/config/index.ts +31 -0
- package/config/templates.ts +49 -0
- package/core/GitManager.ts +513 -0
- package/core/NoteIndexCache.ts +200 -0
- package/core/NoteManager.ts +395 -0
- package/core/ProcessManager.ts +180 -0
- package/core/ReadmeGenerator.ts +215 -0
- package/core/TocGenerator.ts +212 -0
- package/core/index.ts +11 -0
- package/dist/{chunk-5Y5IYS6C.js → chunk-UJG3UU5X.js} +21 -5
- package/dist/{chunk-5QN44ES5.js → chunk-XCWFZLER.js} +48 -368
- package/dist/cli/index.js +26 -78
- package/dist/index.js +1 -1
- package/dist/vitepress/config/index.js +2 -2
- package/package.json +5 -2
- package/services/file-watcher/configChangeHandler.ts +64 -0
- package/services/file-watcher/eventScheduler.ts +179 -0
- package/services/file-watcher/folderChangeHandler.ts +325 -0
- package/services/file-watcher/fsWatcherAdapter.ts +128 -0
- package/services/file-watcher/globalUpdateCoordinator.ts +60 -0
- package/services/file-watcher/index.ts +7 -0
- package/services/file-watcher/internal.ts +79 -0
- package/services/file-watcher/readmeChangeHandler.ts +28 -0
- package/services/file-watcher/renameDetector.ts +120 -0
- package/services/file-watcher/service.ts +352 -0
- package/services/file-watcher/watchState.ts +194 -0
- package/services/git/index.ts +7 -0
- package/services/git/service.ts +114 -0
- package/services/index.ts +14 -0
- package/services/init-sub-repo/index.ts +2 -0
- package/services/init-sub-repo/initSubRepoLogic.test.ts +162 -0
- package/services/init-sub-repo/initSubRepoLogic.ts +303 -0
- package/services/init-sub-repo/service.ts +101 -0
- package/services/note/index.ts +7 -0
- package/services/note/service.ts +361 -0
- package/services/readme/index.ts +7 -0
- package/services/readme/service.ts +761 -0
- package/services/toc/index.ts +5 -0
- package/services/toc/moveTocInside.test.ts +73 -0
- package/services/toc/service.ts +759 -0
- package/services/vitepress/index.ts +7 -0
- package/services/vitepress/service.ts +339 -0
- package/types/config.ts +0 -3
- package/types/note.ts +0 -2
- package/utils/errorHandler.ts +174 -0
- package/utils/file.ts +17 -0
- package/utils/genHierarchicalSidebar.ts +69 -0
- package/utils/generateAnchor.ts +24 -0
- package/utils/getChangedIds.ts +35 -0
- package/utils/index.ts +71 -0
- package/utils/logger.ts +231 -0
- package/utils/markdown.ts +75 -0
- package/utils/migrateReadmeToToc.test.ts +111 -0
- package/utils/migrateReadmeToToc.ts +135 -0
- package/utils/parseArgs.ts +90 -0
- package/utils/parseReadmeCompletedNotes.test.ts +90 -0
- package/utils/parseReadmeCompletedNotes.ts +108 -0
- package/utils/portUtils.ts +113 -0
- package/utils/readmeHelpers.ts +190 -0
- package/utils/runCommand.ts +29 -0
- package/utils/tocHelpers.test.ts +278 -0
- package/utils/tocHelpers.ts +855 -0
- package/utils/tocNodeId.test.ts +60 -0
- package/utils/tocNodeId.ts +97 -0
- package/utils/validators.ts +102 -0
- package/vitepress/assets/icons/icon__cursor.svg +4 -0
- package/vitepress/assets/icons/index.ts +1 -0
- package/vitepress/components/Layout/AboutPanel.vue +0 -24
- package/vitepress/components/Layout/DocBeforeControls.vue +6 -14
- package/vitepress/components/Layout/DocFooter.vue +3 -3
- package/vitepress/components/Layout/Layout.vue +0 -30
- package/vitepress/components/Layout/composables/useVSCodeIntegration.ts +20 -11
- package/vitepress/components/Layout/homeReadme.data.ts +0 -48
- package/vitepress/components/MarkMap/MarkMap.vue +6 -13
- package/vitepress/components/Settings/Settings.vue +76 -73
- package/vitepress/components/SidebarCard/FolderTreeItems.vue +16 -6
- package/vitepress/components/SidebarCard/SidebarCard.vue +21 -27
- package/vitepress/components/composables/useLocalIde.ts +83 -0
- package/vitepress/components/constants.ts +5 -6
- package/vitepress/components/utils/vscodePaths.test.ts +22 -0
- package/vitepress/components/utils/vscodePaths.ts +24 -2
- package/vitepress/theme/styles/doc-layout.scss +4 -4
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* services/toc/moveTocInside.test.ts
|
|
3
|
+
*
|
|
4
|
+
* 验证 inside 落点将源子树插入目标行之后(第一个子项位置)。
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { describe, expect, it } from 'vitest'
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
adjustTocLineIndexAfterSubtreeRemoval,
|
|
11
|
+
getTocEntrySubtreeRange,
|
|
12
|
+
parseTocLine,
|
|
13
|
+
TOC_INDENT_SPACES,
|
|
14
|
+
} from '../../utils/tocHelpers'
|
|
15
|
+
|
|
16
|
+
function adjustSubtreeIndent(lines: string[], delta: number): string[] {
|
|
17
|
+
if (delta === 0) return lines
|
|
18
|
+
|
|
19
|
+
return lines.map((line) => {
|
|
20
|
+
const parsed = parseTocLine(line)
|
|
21
|
+
if (!parsed.isMatch) return line
|
|
22
|
+
|
|
23
|
+
const newIndent = Math.max(0, parsed.indentLevel + delta)
|
|
24
|
+
const withoutIndent = line.trimStart()
|
|
25
|
+
return `${' '.repeat(newIndent * TOC_INDENT_SPACES)}${withoutIndent}`
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function moveTocEntryInsideFirstChild(
|
|
30
|
+
lines: string[],
|
|
31
|
+
sourceTocLineIndex: number,
|
|
32
|
+
targetTocLineIndex: number,
|
|
33
|
+
): string[] {
|
|
34
|
+
const next = [...lines]
|
|
35
|
+
const { start, end } = getTocEntrySubtreeRange(next, sourceTocLineIndex)
|
|
36
|
+
const movingLines = next.splice(start, end - start)
|
|
37
|
+
|
|
38
|
+
const targetLineIndex = adjustTocLineIndexAfterSubtreeRemoval(
|
|
39
|
+
targetTocLineIndex,
|
|
40
|
+
start,
|
|
41
|
+
end,
|
|
42
|
+
)
|
|
43
|
+
const targetParsed = parseTocLine(next[targetLineIndex])
|
|
44
|
+
const insertIndex = targetLineIndex + 1
|
|
45
|
+
const newIndent = targetParsed.indentLevel + 1
|
|
46
|
+
|
|
47
|
+
const oldBaseIndent = parseTocLine(movingLines[0]).indentLevel
|
|
48
|
+
const indentDelta = newIndent - oldBaseIndent
|
|
49
|
+
const adjustedLines = adjustSubtreeIndent(movingLines, indentDelta)
|
|
50
|
+
|
|
51
|
+
next.splice(insertIndex, 0, ...adjustedLines)
|
|
52
|
+
return next
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
describe('moveTocEntry inside first child', () => {
|
|
56
|
+
it('inserts moved note immediately after parent when children exist', () => {
|
|
57
|
+
const lines = [
|
|
58
|
+
'- [x] 0019. Author',
|
|
59
|
+
' - [x] 0036. Workflow',
|
|
60
|
+
' - [ ] 0035. Norm',
|
|
61
|
+
'- [ ] 0039. new',
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
const result = moveTocEntryInsideFirstChild(lines, 3, 0)
|
|
65
|
+
|
|
66
|
+
expect(result).toEqual([
|
|
67
|
+
'- [x] 0019. Author',
|
|
68
|
+
' - [ ] 0039. new',
|
|
69
|
+
' - [x] 0036. Workflow',
|
|
70
|
+
' - [ ] 0035. Norm',
|
|
71
|
+
])
|
|
72
|
+
})
|
|
73
|
+
})
|