dsh-config-manager 0.1.12 → 0.1.13
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 +30 -0
- package/README.zh-CN.md +30 -0
- package/lib/adapters/test-helpers.d.ts +4 -2
- package/lib/adapters/test-helpers.js +11 -3
- package/lib/adapters/test-helpers.js.map +1 -1
- package/lib/cli/index.d.ts +44 -0
- package/lib/cli/index.js +230 -0
- package/lib/cli/index.js.map +1 -0
- package/lib/client.d.ts +260 -5
- package/lib/client.js +2519 -820
- package/lib/client.js.map +1 -1
- package/lib/core/analyzer.d.ts +18 -1
- package/lib/core/analyzer.js +29 -0
- package/lib/core/analyzer.js.map +1 -1
- package/lib/core/backup.d.ts +3 -1
- package/lib/core/backup.js +70 -0
- package/lib/core/backup.js.map +1 -1
- package/lib/core/exporter.d.ts +11 -0
- package/lib/core/exporter.js +11 -0
- package/lib/core/exporter.js.map +1 -1
- package/lib/core/importer.d.ts +3 -0
- package/lib/core/importer.js +1 -0
- package/lib/core/importer.js.map +1 -1
- package/lib/core/index.d.ts +1 -0
- package/lib/core/index.js +1 -0
- package/lib/core/index.js.map +1 -1
- package/lib/core/restore.d.ts +92 -0
- package/lib/core/restore.js +505 -0
- package/lib/core/restore.js.map +1 -0
- package/lib/core/run-registry.d.ts +65 -0
- package/lib/core/run-registry.js +120 -0
- package/lib/core/run-registry.js.map +1 -0
- package/lib/core/types.d.ts +20 -0
- package/lib/core/types.js.map +1 -1
- package/lib/index.d.ts +45 -0
- package/lib/index.js +442 -8
- package/lib/index.js.map +1 -1
- package/lib/sync/fs.d.ts +18 -0
- package/lib/sync/fs.js +47 -0
- package/lib/sync/fs.js.map +1 -0
- package/lib/sync/git/git-transport.d.ts +87 -0
- package/lib/sync/git/git-transport.js +333 -0
- package/lib/sync/git/git-transport.js.map +1 -0
- package/lib/sync/layout.d.ts +29 -0
- package/lib/sync/layout.js +166 -0
- package/lib/sync/layout.js.map +1 -0
- package/lib/sync/sync-config.d.ts +16 -0
- package/lib/sync/sync-config.js +67 -0
- package/lib/sync/sync-config.js.map +1 -0
- package/lib/sync/sync-engine.d.ts +96 -0
- package/lib/sync/sync-engine.js +236 -0
- package/lib/sync/sync-engine.js.map +1 -0
- package/lib/sync/sync-state.d.ts +31 -0
- package/lib/sync/sync-state.js +103 -0
- package/lib/sync/sync-state.js.map +1 -0
- package/lib/sync/transport.d.ts +50 -0
- package/lib/sync/transport.js +22 -0
- package/lib/sync/transport.js.map +1 -0
- package/package.json +4 -1
- package/src/adapters/test-helpers.ts +10 -3
- package/src/cli/index.ts +278 -0
- package/src/client/ConfigManagerSection.tsx +49 -14
- package/src/client/api.ts +53 -5
- package/src/client/client-types.ts +0 -6
- package/src/client/common/ProgressBar.tsx +31 -19
- package/src/client/common/progress-view-edge.test.ts +60 -0
- package/src/client/common/progress-view.test.ts +79 -0
- package/src/client/common/progress-view.ts +94 -0
- package/src/client/config-manager.module.css +99 -20
- package/src/client/export/ExportView.tsx +63 -49
- package/src/client/import/ImportWizardView.tsx +107 -66
- package/src/client/index.ts +22 -0
- package/src/client/locales.ts +53 -0
- package/src/client/run-store.test.ts +500 -0
- package/src/client/run-store.ts +772 -0
- package/src/client/snapshots/SnapshotsPanel.tsx +240 -0
- package/src/client/sync/SyncSettingsView.tsx +261 -0
- package/src/client/sync/sync-api.test.ts +117 -0
- package/src/client/sync/sync-api.ts +132 -0
- package/src/client/sync/sync-locales.ts +77 -0
- package/src/client/sync/sync-view.test.ts +211 -0
- package/src/client/sync/sync-view.ts +202 -0
- package/src/core/analyzer.ts +50 -1
- package/src/core/backup.ts +78 -2
- package/src/core/exporter.ts +21 -0
- package/src/core/importer.ts +4 -0
- package/src/core/index.ts +5 -0
- package/src/core/restore.ts +587 -0
- package/src/core/run-progress.test.ts +237 -0
- package/src/core/run-registry.test.ts +139 -0
- package/src/core/run-registry.ts +166 -0
- package/src/core/smoke.test.ts +5 -0
- package/src/core/types.ts +22 -0
- package/src/index.ts +476 -8
- package/src/security/security.test.ts +5 -0
- package/src/sync/fs.ts +46 -0
- package/src/sync/git/git-transport.test.ts +456 -0
- package/src/sync/git/git-transport.ts +390 -0
- package/src/sync/layout.test.ts +226 -0
- package/src/sync/layout.ts +183 -0
- package/src/sync/sync-config.ts +72 -0
- package/src/sync/sync-engine.test.ts +299 -0
- package/src/sync/sync-engine.ts +318 -0
- package/src/sync/sync-state.test.ts +118 -0
- package/src/sync/sync-state.ts +123 -0
- package/src/sync/transport.test.ts +110 -0
- package/src/sync/transport.ts +73 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* m-sync-transport:SyncTransport 抽象层。
|
|
3
|
+
* 纯类型 + 纯 helper,零副作用、零 fs —— 传输通道实现(git 等)由后续波次提供。
|
|
4
|
+
* 与核心引擎同原则:只依赖 src/schema/types.ts 的纯类型,不 import 任何 DSH 运行时包。
|
|
5
|
+
*/
|
|
6
|
+
import type { Manifest, SectionData, SectionId } from '../schema/types.ts';
|
|
7
|
+
import { hashSection } from './sync-state.ts';
|
|
8
|
+
|
|
9
|
+
/** manifest 摘要:快照列表展示 / 变更判断所需的轻量来源信息 */
|
|
10
|
+
export interface ManifestSummary {
|
|
11
|
+
schemaVersion: number;
|
|
12
|
+
dshVersion: string;
|
|
13
|
+
platform: string;
|
|
14
|
+
/** 快照包含的分区(按 manifest.sections 中为 true 的键) */
|
|
15
|
+
sectionIds: SectionId[];
|
|
16
|
+
containsSecrets: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** 快照元信息:list() 条目 / upload() 返回值 */
|
|
20
|
+
export interface SyncSnapshotMeta {
|
|
21
|
+
id: string;
|
|
22
|
+
createdAt: string; // ISO-8601 UTC
|
|
23
|
+
/** 各分区内容 hash(sectionId → hashSection 结果),用于变更检测 */
|
|
24
|
+
sections: Partial<Record<SectionId, string>>;
|
|
25
|
+
manifest: ManifestSummary;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** 快照载荷:upload() 入参 / download() 返回 */
|
|
29
|
+
export interface SyncSnapshot {
|
|
30
|
+
id: string;
|
|
31
|
+
createdAt: string; // ISO-8601 UTC
|
|
32
|
+
manifest: ManifestSummary;
|
|
33
|
+
/** JSON 分区数据 + 文件类分区(FilesSection) */
|
|
34
|
+
sections: Partial<Record<SectionId, SectionData>>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 远端快照传输通道契约。
|
|
39
|
+
* 实现约定:同 id 重复 upload 视为覆盖(幂等友好);download 对不存在的 id 必须抛错。
|
|
40
|
+
*/
|
|
41
|
+
export interface SyncTransport {
|
|
42
|
+
readonly type: string;
|
|
43
|
+
/** 列出远端已有快照(按 createdAt 升序) */
|
|
44
|
+
list(): Promise<SyncSnapshotMeta[]>;
|
|
45
|
+
/** 上传快照,返回其元信息(含各分区 hash) */
|
|
46
|
+
upload(snapshot: SyncSnapshot): Promise<SyncSnapshotMeta>;
|
|
47
|
+
/** 下载快照完整载荷 */
|
|
48
|
+
download(id: string): Promise<SyncSnapshot>;
|
|
49
|
+
/** 删除远端快照(不存在视为成功) */
|
|
50
|
+
delete(id: string): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** 由快照计算元信息:sections hash 记录 + manifest 摘要透传 */
|
|
54
|
+
export function computeSnapshotMeta(snapshot: SyncSnapshot): SyncSnapshotMeta {
|
|
55
|
+
const sections: SyncSnapshotMeta['sections'] = {};
|
|
56
|
+
for (const [id, data] of Object.entries(snapshot.sections)) {
|
|
57
|
+
sections[id as SectionId] = hashSection(data as SectionData);
|
|
58
|
+
}
|
|
59
|
+
return { id: snapshot.id, createdAt: snapshot.createdAt, sections, manifest: snapshot.manifest };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** 从导出 Manifest 提取摘要 */
|
|
63
|
+
export function manifestSummaryFrom(manifest: Manifest): ManifestSummary {
|
|
64
|
+
return {
|
|
65
|
+
schemaVersion: manifest.schemaVersion,
|
|
66
|
+
dshVersion: manifest.source.dshVersion,
|
|
67
|
+
platform: manifest.source.platform,
|
|
68
|
+
sectionIds: Object.entries(manifest.sections)
|
|
69
|
+
.filter(([, included]) => included)
|
|
70
|
+
.map(([id]) => id) as SectionId[],
|
|
71
|
+
containsSecrets: manifest.security.containsSecrets,
|
|
72
|
+
};
|
|
73
|
+
}
|