vvzvlad
|
c6edd73324
|
refactor(pull): extract tested vault-layout module; harden pull; close review findings
Address the Increment-1 code review (3 warnings + suggestions).
- layout: new pure src/layout.ts (buildVaultLayout) — page-tree -> vault paths,
sibling + full-path collision disambiguation (sanitized ~slugId suffix), parent
cycle guard; pull.ts is now a thin I/O loop
- layout: resolve orphan/root collisions at the NAME stage so an orphan ancestor
can't desync its children's folder segments (fixes review Major); covered by test
- pull: per-page try/catch (one bad page no longer aborts the mirror), bounded
concurrency (6), progress logging, process.exitCode=1 on partial mirror
- security: filename disambiguation suffix now passes through sanitizeTitle
- docs: AGENTS.md -> Increment 1 status/structure/run targets; pull.ts meta-block
comment; collectRecentSince JSDoc (lexicographic UTC-ISO precondition)
- tests: layout (9), markdown-document round-trip (no comments block, SPEC §3),
firstDivergence; export firstDivergence. 49 tests green.
|
2026-06-16 21:09:40 +03:00 |
|
vvzvlad
|
447d2508ae
|
feat(sync): scaffold monorepo, extract docmost-client, add Phase-0 harness + read-only pull
Lock the access-layer decision (REST only) and start implementation per SPEC.
- monorepo (npm workspaces): packages/docmost-client = DocmostClient + lib/*
copied 1:1 from docmost-mcp/src (backport target), plus bannered sync methods
(listTrash, restorePage, listAllSpacePages, exportPageBody, listRecentSince /
collectRecentSince cursor scan)
- engine stays the root app per AGENTS.md (src/, test/, build/, data/, settings.ts);
add roundtrip.ts (SPEC §11 idempotency harness), pull.ts (SPEC §6 read-only
Docmost->FS mirror), sanitize.ts (SPEC §12 filenames, path-traversal-safe)
- Dockerfile builds the workspace lib before the app; vitest gates CI
- exportPageBody never touches /comments (SPEC §3); serializeDocmostMarkdownBody
emits meta + body only
- SPEC: resolve access-layer (REST), reflect root-engine layout + REST pagination
- tests: sanitize (incl. dot-traversal), collectRecentSince (cutoff/dedup/cap),
stripBlockIds, markdown round-trip byte-stability
Note: raw ProseMirror round-trip is byte-stable in Markdown but not yet attribute-
idempotent (SPEC §11 Задача №0, before Phase 2).
|
2026-06-16 20:20:20 +03:00 |
|