feat(git-sync): vendor IO engine (pull/push/git/settings) with GitSyncClient seam (Phase A.3)
Vendor the IO engine from docmost-sync into packages/git-sync/src/engine: - git.ts (VaultGit, execFile shell-out — verbatim) - pull.ts (readExisting, computePullActions, applyPullActions) - push.ts (classifyRenameMoves, computePushActions, applyPushActions, runPush) - settings.ts adapted (pure parseSettings + Settings type; no process.env binding — the server builds Settings from EnvironmentService later), config-errors.ts. CLI main()/import.meta entrypoints dropped (server drives in-process). Client seam: new engine/client.types.ts defines GitSyncClient; pull.ts/push.ts now use Pick<GitSyncClient, ...> instead of the non-vendored DocmostClient. Engine logic byte-identical except a zod4-compat fix in config-errors (zod4 dropped the issue.received==='undefined' signal; match /received undefined/ on the message). Ported the engine unit tests (compute/apply pull+push actions, classify-rename- moves, run-push, settings, config-errors) incl. real-git temp-repo tests: 431 pass / 3 expected-fail (was 314/3). REST/CLI-coupled upstream tests skipped (noted). CJS build clean. No apps/server wiring yet (next step). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1 +1 @@
|
||||
{"version":"4.1.6","results":[[":test/node-ops.test.ts",{"duration":55.050974999999994,"failed":false}],[":test/markdown-converter.test.ts",{"duration":34.13685399999997,"failed":false}],[":test/diff.test.ts",{"duration":49.63132299999995,"failed":false}],[":test/node-ops-extra.test.ts",{"duration":49.444255,"failed":false}],[":test/reconcile.test.ts",{"duration":14.958778999999993,"failed":false}],[":test/canonicalize.test.ts",{"duration":15.778381999999965,"failed":false}],[":test/markdown-roundtrip.property.test.ts",{"duration":8319.439738000001,"failed":false}],[":test/stabilize.test.ts",{"duration":150.99475900000016,"failed":false}],[":test/canonicalize-extra.test.ts",{"duration":155.9570060000001,"failed":false}],[":test/loop-guard.test.ts",{"duration":8.774560999999949,"failed":false}],[":test/markdown-document.test.ts",{"duration":8.800682999999935,"failed":false}],[":test/sanitize.test.ts",{"duration":13.741441000000009,"failed":false}],[":test/markdown-converter-golden.test.ts",{"duration":16.489082999999994,"failed":false}],[":test/roundtrip-corpus.test.ts",{"duration":298.84454900000014,"failed":false}],[":test/layout.test.ts",{"duration":13.172171000000048,"failed":false}],[":test/markdown-document-envelope.test.ts",{"duration":17.021231,"failed":false}],[":test/roundtrip.test.ts",{"duration":97.44139999999993,"failed":false}]]}
|
||||
{"version":"4.1.6","results":[[":test/node-ops.test.ts",{"duration":56.38882699999999,"failed":false}],[":test/markdown-converter.test.ts",{"duration":40.668915000000084,"failed":false}],[":test/diff.test.ts",{"duration":49.456359999999904,"failed":false}],[":test/node-ops-extra.test.ts",{"duration":63.93989399999998,"failed":false}],[":test/reconcile.test.ts",{"duration":13.678699999999992,"failed":false}],[":test/canonicalize.test.ts",{"duration":17.350126000000046,"failed":false}],[":test/markdown-roundtrip.property.test.ts",{"duration":8429.205451,"failed":false}],[":test/stabilize.test.ts",{"duration":176.2395210000002,"failed":false}],[":test/canonicalize-extra.test.ts",{"duration":186.62702600000011,"failed":false}],[":test/loop-guard.test.ts",{"duration":10.596054999999978,"failed":false}],[":test/markdown-document.test.ts",{"duration":9.079204000000118,"failed":false}],[":test/sanitize.test.ts",{"duration":26.067102999999975,"failed":false}],[":test/markdown-converter-golden.test.ts",{"duration":16.916695000000004,"failed":false}],[":test/roundtrip-corpus.test.ts",{"duration":333.193577,"failed":false}],[":test/layout.test.ts",{"duration":12.358113000000003,"failed":false}],[":test/markdown-document-envelope.test.ts",{"duration":19.542911000000004,"failed":false}],[":test/roundtrip.test.ts",{"duration":118.45819199999983,"failed":false}],[":test/compute-push-actions.test.ts",{"duration":13.49065500000006,"failed":false}],[":test/apply-pull-actions.test.ts",{"duration":213.97865000000002,"failed":false}],[":test/git.test.ts",{"duration":2389.5195719999997,"failed":false}],[":test/run-push.test.ts",{"duration":24.829793999999993,"failed":false}],[":test/compute-pull-actions.test.ts",{"duration":13.413110999999844,"failed":false}],[":test/apply-push-actions.test.ts",{"duration":36.624465999999984,"failed":false}],[":test/classify-rename-moves.test.ts",{"duration":10.711434000000054,"failed":false}],[":test/git-merge.test.ts",{"duration":332.99638500000003,"failed":false}],[":test/read-existing.test.ts",{"duration":10.29277900000011,"failed":false}],[":test/config-errors-invalid.test.ts",{"duration":24.780978000000005,"failed":false}],[":test/run-push-realgit.test.ts",{"duration":276.9070680000002,"failed":false}],[":test/settings.test.ts",{"duration":17.865966000000014,"failed":false}],[":test/config-errors.test.ts",{"duration":17.732034,"failed":false}]]}
|
||||
1
packages/git-sync/node_modules/zod
generated
vendored
Symbolic link
1
packages/git-sync/node_modules/zod
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod
|
||||
Reference in New Issue
Block a user