@whispering233/ai-editor-server 0.0.33 → 0.0.38
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/client-dist/assets/{index-oxaM6dHH.css → index-IF0z2BR1.css} +1 -1
- package/client-dist/assets/{index-tfvJfexp.js → index-Sx1BGdOS.js} +196 -196
- package/client-dist/index.html +2 -2
- package/dist/backup.d.ts +135 -25
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +348 -68
- package/dist/backup.js.map +1 -1
- package/dist/cloud/auto-push.d.ts +39 -0
- package/dist/cloud/auto-push.d.ts.map +1 -0
- package/dist/cloud/auto-push.js +145 -0
- package/dist/cloud/auto-push.js.map +1 -0
- package/dist/cloud/device.d.ts +3 -0
- package/dist/cloud/device.d.ts.map +1 -0
- package/dist/cloud/device.js +15 -0
- package/dist/cloud/device.js.map +1 -0
- package/dist/cloud/state.d.ts +59 -0
- package/dist/cloud/state.d.ts.map +1 -0
- package/dist/cloud/state.js +162 -0
- package/dist/cloud/state.js.map +1 -0
- package/dist/cloud/sync.d.ts +102 -0
- package/dist/cloud/sync.d.ts.map +1 -0
- package/dist/cloud/sync.js +447 -0
- package/dist/cloud/sync.js.map +1 -0
- package/dist/cloud/webdav.d.ts +69 -0
- package/dist/cloud/webdav.d.ts.map +1 -0
- package/dist/cloud/webdav.js +326 -0
- package/dist/cloud/webdav.js.map +1 -0
- package/dist/device-name.d.ts +3 -0
- package/dist/device-name.d.ts.map +1 -0
- package/dist/device-name.js +13 -0
- package/dist/device-name.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/error.d.ts +8 -2
- package/dist/middleware/error.d.ts.map +1 -1
- package/dist/middleware/error.js +18 -1
- package/dist/middleware/error.js.map +1 -1
- package/dist/middleware/project.d.ts +27 -3
- package/dist/middleware/project.d.ts.map +1 -1
- package/dist/middleware/project.js +79 -6
- package/dist/middleware/project.js.map +1 -1
- package/dist/routes/cloud.d.ts +9 -0
- package/dist/routes/cloud.d.ts.map +1 -0
- package/dist/routes/cloud.js +206 -0
- package/dist/routes/cloud.js.map +1 -0
- package/dist/routes/delta.d.ts.map +1 -1
- package/dist/routes/delta.js +20 -2
- package/dist/routes/delta.js.map +1 -1
- package/dist/routes/project.d.ts.map +1 -1
- package/dist/routes/project.js +35 -18
- package/dist/routes/project.js.map +1 -1
- package/dist/routes/relation.d.ts.map +1 -1
- package/dist/routes/relation.js +33 -3
- package/dist/routes/relation.js.map +1 -1
- package/package.json +7 -7
package/client-dist/index.html
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
// localStorage 不可用(隐私模式等)时静默跳过,默认浅色
|
|
14
14
|
}
|
|
15
15
|
</script>
|
|
16
|
-
<script type="module" crossorigin src="/assets/index-
|
|
17
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
16
|
+
<script type="module" crossorigin src="/assets/index-Sx1BGdOS.js"></script>
|
|
17
|
+
<link rel="stylesheet" crossorigin href="/assets/index-IF0z2BR1.css">
|
|
18
18
|
</head>
|
|
19
19
|
<body>
|
|
20
20
|
<div id="root"></div>
|
package/dist/backup.d.ts
CHANGED
|
@@ -1,19 +1,39 @@
|
|
|
1
|
-
import { type BackupKind } from "@whispering233/ai-editor-shared";
|
|
1
|
+
import { type BackupKind, type BackupStats } from "@whispering233/ai-editor-shared";
|
|
2
2
|
import type { ProjectContext } from "./middleware/project.js";
|
|
3
3
|
/** 备份目录名(项目目录内 .backups/,随书籍移动自然携带) */
|
|
4
4
|
export declare const BACKUPS_DIR_NAME = ".backups";
|
|
5
|
+
/**
|
|
6
|
+
* 随备份 zip 整体打包的目录(目录名已登记在 `docs/api/20-api-backup.md`):
|
|
7
|
+
* `references/`(参考资料含 .trash/)与 `sessions/`(会话 JSONL)——两者语义一致:
|
|
8
|
+
* 白名单前缀 + 递归打包 + 参与变更判定 + 恢复时整体覆盖。
|
|
9
|
+
* `SESSIONS_DIR_NAME` 取自 agent 包的 pi 运行时(会话目录的唯一事实来源;pi 的 session 文件落在此目录)。
|
|
10
|
+
*/
|
|
11
|
+
export declare const PACKED_DIR_NAMES: readonly string[];
|
|
5
12
|
/** 备份包条目白名单判定(三文件 + 打包目录前缀——逐名比对天然防 zip 路径穿越;
|
|
6
13
|
* 目录子路径拒绝含 `..` 的条目防相对路径逃逸) */
|
|
7
14
|
export declare function isAllowedBackupEntry(name: string): boolean;
|
|
15
|
+
/** 并集合并计数(`POST /cloud/pull` 响应的 `merged`;见 `docs/design/40-cloud-sync.md` §4) */
|
|
16
|
+
export interface MergeCounts {
|
|
17
|
+
/** 本机独有(云端没有、基线也没有)→ 保留 */
|
|
18
|
+
kept: number;
|
|
19
|
+
/** 云端新增(本机没有、基线也没有)→ 写入 */
|
|
20
|
+
written: number;
|
|
21
|
+
/** 云端删除(本机有、基线有、云端没有)→ 删本机 */
|
|
22
|
+
removed: number;
|
|
23
|
+
}
|
|
8
24
|
/** 备份文件信息(GET /backups 列表项与 POST /backup 响应) */
|
|
9
25
|
export interface BackupFileInfo {
|
|
10
26
|
fileName: string;
|
|
11
27
|
size: number;
|
|
12
28
|
createdAt: string;
|
|
13
|
-
/**
|
|
29
|
+
/** 备份类型(由文件名类型段解析:auto = 自动/manual = 手动) */
|
|
14
30
|
kind: BackupKind;
|
|
15
|
-
/**
|
|
31
|
+
/** 用户自定义标签(由文件名解析,自动备份/快照无此字段) */
|
|
16
32
|
name?: string;
|
|
33
|
+
/** 来源设备(必填:唯一命名格式恒有此段) */
|
|
34
|
+
device: string;
|
|
35
|
+
/** 备份内容的未软删规模快照(必填:唯一命名格式恒有此段) */
|
|
36
|
+
stats: BackupStats;
|
|
17
37
|
}
|
|
18
38
|
/**
|
|
19
39
|
* 打包当前项目为 zip(export 同款管道):
|
|
@@ -25,15 +45,15 @@ export interface BackupFileInfo {
|
|
|
25
45
|
export declare function createBackupZip(project: ProjectContext): Uint8Array<ArrayBuffer>;
|
|
26
46
|
/**
|
|
27
47
|
* 立即备份当前项目(手动触发 / 自动定时器 / restore 覆盖前快照共用):
|
|
28
|
-
* 打包 → 写入 .backups
|
|
29
|
-
* 触发保留策略清理(失败不阻塞)。
|
|
48
|
+
* 打包 → 写入 .backups/<时间戳>-<自动|手动>-<设备>[-<标签>]-人物N-设定N-章N.zip
|
|
49
|
+
* (唯一命名格式,毫秒精度;同毫秒 +1ms 去重)→ 触发保留策略清理(失败不阻塞)。
|
|
30
50
|
* 写盘失败向上抛(errorHandler → 500 INTERNAL_ERROR,POST /backup 语义)。
|
|
31
51
|
*
|
|
32
|
-
* @param opts.kind 备份类型(缺省 "auto"):手动触发传 "manual"
|
|
33
|
-
* 自动备份/覆盖前快照不传(auto
|
|
52
|
+
* @param opts.kind 备份类型(缺省 "auto"):手动触发传 "manual"(文件名落「手动」段);
|
|
53
|
+
* 自动备份/覆盖前快照不传(auto,「自动」段)
|
|
34
54
|
* @param opts.name 手动备份自定义名称(仅带名称的手动/重命名场景传入):
|
|
35
55
|
* sanitizeBackupName 是名称校验/规范化**唯一执行点**——非法(含路径分隔符/超长/纯点)→
|
|
36
|
-
* 400 VALIDATION_ERROR;自动备份/覆盖前快照不传 name
|
|
56
|
+
* 400 VALIDATION_ERROR;自动备份/覆盖前快照不传 name,文件名无标签段。
|
|
37
57
|
* 注意:name 仅在 opts.name !== undefined 且 sanitize 通过后传入 formatBackupFileName。
|
|
38
58
|
*/
|
|
39
59
|
export declare function writeBackup(project: ProjectContext, opts?: {
|
|
@@ -41,22 +61,37 @@ export declare function writeBackup(project: ProjectContext, opts?: {
|
|
|
41
61
|
kind?: BackupKind;
|
|
42
62
|
}): BackupFileInfo;
|
|
43
63
|
/**
|
|
44
|
-
*
|
|
64
|
+
* 升级兜底(卡 A):`.backups/` 里**有文件但没有任何一份可解析**(旧命名残留形态)→
|
|
65
|
+
* 立即 `writeBackup(project, { kind: "auto" })` 生成一份新格式备份并返回 true;
|
|
66
|
+
* 已有可解析份(或目录为空/不存在)→ 什么都不做,返回 false(**不重复备份**)。
|
|
67
|
+
*
|
|
68
|
+
* 为什么需要:旧命名份不再被解析(列表/恢复/保留策略均不认),若磁盘上只剩旧命名且
|
|
69
|
+
* **自动备份频率关闭**,用户点「立即备份」前列表会是空的;这一调用保证最新数据马上有一份
|
|
70
|
+
* 新格式可列/可恢复的档。**不重命名旧份**——旧份无设备/统计信息,硬补会谎报(统计必须描述该备份的内容)。
|
|
45
71
|
*
|
|
72
|
+
* best-effort:任何异常只记日志并返回 false(打开项目不得因兜底备份失败而失败)。
|
|
73
|
+
*
|
|
74
|
+
* @returns 本次是否补了一份新格式备份
|
|
75
|
+
*/
|
|
76
|
+
export declare function ensureParseableBackup(project: ProjectContext): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* 重命名备份(POST /project/backup/rename):**只改名称段**,时间戳/类型/设备/统计保持。
|
|
46
79
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
80
|
+
*
|
|
81
|
+
* 1. fileName 白名单校验:仅接受 parseBackupFileName 可解析的唯一命名格式
|
|
82
|
+
* `<YYYYMMDD-HHmmssSSS>-<自动|手动>-<设备>[-<标签>]-人物N-设定N-章N.zip`(^$ 锚定 + 设备/标签
|
|
83
|
+
* 部分拒绝 /\\,天然防路径分隔符与 `..` 穿越;旧命名不可解析 ⇒ 无从改名)→ 非法 400 VALIDATION_ERROR
|
|
50
84
|
* 2. 文件不存在 → 404 VALIDATION_ERROR
|
|
51
85
|
* 3. 新名称解析:请求未传 name → 清除名称段;传空串/纯空白 → 清除名称段;
|
|
52
86
|
* 非空 → sanitizeBackupName 规范化(非法 → 400 VALIDATION_ERROR,文案同 writeBackup)
|
|
53
|
-
* 4. 新文件名 = formatBackupFileName(parsed.time, { kind
|
|
54
|
-
* kind 不随重命名改变(auto
|
|
87
|
+
* 4. 新文件名 = formatBackupFileName(parsed.time, { kind, name: 新名称, device, stats })——
|
|
88
|
+
* kind 不随重命名改变(auto 仍是「自动」段、manual 仍是「手动」段);**设备与统计段保持原份的值**
|
|
89
|
+
* (它们描述该备份的来源与内容,不拿当前项目状态凑)
|
|
55
90
|
* 5. 幂等:新文件名 === 原文件名(如重命名为相同名称)→ 不移动文件,直接返回当前条目
|
|
56
91
|
* (重新 stat 取 size;stat 失败 → 404「备份不存在」)
|
|
57
92
|
* 6. **目标冲突防御(oracle P1-1)**:新文件名已存在(≠ 原文件)→ 409
|
|
58
|
-
* BACKUP_TARGET_EXISTS——POSIX rename
|
|
59
|
-
*
|
|
93
|
+
* BACKUP_TARGET_EXISTS——POSIX rename 目标存在时静默替换,可达路径:同毫秒双 manual
|
|
94
|
+
* (`<T>-手动-设备-A.zip` 清标签后撞上 `<T>-手动-设备.zip`)等;显式拒绝
|
|
60
95
|
* 7. renameSync 同目录原子改名(失败向上抛 → 500);改名后统一 stat 取 size
|
|
61
96
|
* (改名瞬间被删等竞态 → 404「备份不存在」)
|
|
62
97
|
*
|
|
@@ -95,6 +130,52 @@ export declare function validateBackupPackage(zipData: Uint8Array): {
|
|
|
95
130
|
entries: Record<string, Uint8Array>;
|
|
96
131
|
projectId: string;
|
|
97
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* 三文件 + `data.db-wal` 伴生文件 + 两个打包目录,是否在 since 之后有变更
|
|
135
|
+
*(「任一 mtime 晚于上次备份时刻」):
|
|
136
|
+
* - 三文件:任一 mtime > since + 容差 → 有变更;**主文件缺失 → 视为有变更**(防御:不静默
|
|
137
|
+
* 跳过,让备份管道报错暴露损坏)
|
|
138
|
+
* - `data.db-wal`(F2):普通写事务只追加 `-wal`、主文件 mtime 不变;**wal 缺失 ≠ 变更**
|
|
139
|
+
* (无未 checkpoint 的写,属正常状态,否则每次 tick 都误备份)
|
|
140
|
+
* - `references/` 与 `sessions/`:目录内**任一文件** mtime 命中,或**目录自身** mtime 命中
|
|
141
|
+
* (F3:删除文件不刷新任何剩余文件的 mtime,只看文件会漏检删除);目录缺失(ENOENT)
|
|
142
|
+
* = 无文件、不算变更;其余错误防御视为有变更
|
|
143
|
+
* mtime 判定容差见 BACKUP_CHANGE_TOLERANCE_MS 注释。
|
|
144
|
+
*/
|
|
145
|
+
export declare function hasFileChangesSince(project: ProjectContext, since: Date): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* 「本机创作数据自 since 后有改动」判定(**云端三态专用**,与备份定时器的 `hasFileChangesSince`
|
|
148
|
+
* 口径刻意不同——见 `docs/design/40-cloud-sync.md` §3):
|
|
149
|
+
*
|
|
150
|
+
* - `project.json` / `outline.json` / `references/` / `sessions/`(含两目录自身 mtime):
|
|
151
|
+
* **严格** `mtime > since`。这些文件不会被备份/同步管道写入,容差在这里只有代价:
|
|
152
|
+
* `lastSyncAt` 是**不推进的固定基准**(只在下一次同步时前移),容差会把 `[since, since+1s]`
|
|
153
|
+
* 内的本机改动**永久漏判**(状态误报「已同步」,用户可能因此拉取覆盖它)。
|
|
154
|
+
* - `data.db` / `data.db-wal`:保留 `BACKUP_CHANGE_TOLERANCE_MS` 容差——备份/推送管道内的
|
|
155
|
+
* `wal_checkpoint` 会把 `data.db` mtime 刷到同步时刻,严格比较会自激误判「永远有改动」。
|
|
156
|
+
*/
|
|
157
|
+
export declare function hasLocalEditsSince(project: ProjectContext, since: Date): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* 「本机**创作数据**自 since 后有改动」判定(**自动推送专用**,卡 7;`docs/design/40-cloud-sync.md` §5):
|
|
160
|
+
* 与 `hasLocalEditsSince` 同一套 mtime 口径,但 `sessions/` **不参与**(会话是聊天产物,纯聊天时段
|
|
161
|
+
* 不该单独烧一次云盘配额——聊天记录会随下一次创作变更的 zip 一起上云,zip 永远含 `sessions/`),
|
|
162
|
+
* 并**纳入 `AGENTS.md`**(项目规则也是创作数据,改规则值得推一次)。
|
|
163
|
+
*/
|
|
164
|
+
export declare function hasAuthoringChangesSince(project: ProjectContext, since: Date): boolean;
|
|
165
|
+
/**
|
|
166
|
+
* 最新一份**可解析**备份的时间(旧命名不算;无 → null)。`hasUnbackedChanges` 的基准,
|
|
167
|
+
* 也用于「升级兜底后是否已有新格式档」的判断。
|
|
168
|
+
*/
|
|
169
|
+
export declare function latestParseableBackupTime(project: ProjectContext): Date | null;
|
|
170
|
+
/**
|
|
171
|
+
* 「本机有改动未进最新备份」(卡 B,`GET /cloud/status` 的 `local.backupStale`):
|
|
172
|
+
* 最新一份本地备份的时间早于最新创作改动(三文件 + `references/` + `sessions/`,口径同
|
|
173
|
+
* `hasLocalEditsSince`,`data.db`/`-wal` 带 1s 容差)。**没有任何可解析备份 → true**
|
|
174
|
+
*(那时推送会 404「没有可推送的备份」,语义上也是「还没有能代表当前的档」)。
|
|
175
|
+
*
|
|
176
|
+
* 用途:自动推送的守卫(有未备份改动时跳过,不做「按需备份」——备份归本地、云端只是镜像)。
|
|
177
|
+
*/
|
|
178
|
+
export declare function hasUnbackedChanges(project: ProjectContext): boolean;
|
|
98
179
|
/**
|
|
99
180
|
* 自动备份单次检查(定时器 tick 核心,纯同步、可单测):
|
|
100
181
|
*
|
|
@@ -108,11 +189,28 @@ export declare function validateBackupPackage(zipData: Uint8Array): {
|
|
|
108
189
|
* @returns 本次是否生成了备份
|
|
109
190
|
*/
|
|
110
191
|
export declare function maybeAutoBackup(project: ProjectContext): boolean;
|
|
192
|
+
/**
|
|
193
|
+
* tick 钩子(composition 层注入,卡 7):自动推送不新起定时器,挂在同一条 tick 链上——
|
|
194
|
+
* 本模块不 import `cloud/`(那会形成 backup → cloud → backup 的循环依赖),故由上层注册。
|
|
195
|
+
*/
|
|
196
|
+
export interface ProjectTickHooks {
|
|
197
|
+
/** tick 内自动备份之后调用(同步函数;抛错只记日志,不中断定时链) */
|
|
198
|
+
onTick?: (project: ProjectContext) => void;
|
|
199
|
+
/** **备份频率关闭**时的 tick 间隔(毫秒;null = 不排程)——自动推送的 2h 排程经此注入 */
|
|
200
|
+
fallbackIntervalMs?: () => number | null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* 注册 tick 钩子(`middleware/project.ts` 启动时调用一次;**整体替换**,测试可注入小间隔)。
|
|
204
|
+
* 用模块级注册而不是每次 `startAutoBackup` 传参:`overwriteProjectFiles` 尾部那次重启
|
|
205
|
+
*(restore / 导入 / 云拉取后)也必须带上同一套钩子。
|
|
206
|
+
*/
|
|
207
|
+
export declare function setProjectTick(hooks: ProjectTickHooks): void;
|
|
111
208
|
/**
|
|
112
209
|
* 启动/重启自动备份调度(open/切换项目时调用;restore 后频率可能变化也调用):
|
|
113
|
-
* 按当前项目频率 setTimeout 链——每 tick
|
|
210
|
+
* 按当前项目频率 setTimeout 链——每 tick 检查「有变更才备份」后按最新间隔重新排程
|
|
114
211
|
* (tick 内重读 config,restore 改变频率无需显式通知)。
|
|
115
|
-
* 频率关闭(null/0/非枚举)→
|
|
212
|
+
* 频率关闭(null/0/非枚举)→ 回落到 `tickHooks.fallbackIntervalMs()`(自动推送的 2h 兜底排程);
|
|
213
|
+
* 两者皆空 → 不排程(等价停止)。
|
|
116
214
|
*/
|
|
117
215
|
export declare function startAutoBackup(project: ProjectContext): void;
|
|
118
216
|
/** 停止自动备份调度(close 项目/服务关闭时调用;幂等) */
|
|
@@ -133,7 +231,11 @@ export declare function writeProjectFilesFromBackup(dir: string, entries: Record
|
|
|
133
231
|
keepId?: string;
|
|
134
232
|
name?: string;
|
|
135
233
|
snapshotFileName?: string;
|
|
136
|
-
|
|
234
|
+
/** 两个打包目录走**并集合并**(云拉取语义);缺省 = 整体覆盖(本地 restore / import 语义不变) */
|
|
235
|
+
mergePackedDirs?: {
|
|
236
|
+
baseEntries: readonly string[];
|
|
237
|
+
};
|
|
238
|
+
}): MergeCounts | undefined;
|
|
137
239
|
/**
|
|
138
240
|
* 自动迁移:project.json 存在非空 `prompt` 且项目目录无 →
|
|
139
241
|
* 将 prompt 内容**原样**写入 (原子写,同款),一次性——
|
|
@@ -172,7 +274,10 @@ export declare function migratePromptToAgents(project: ProjectContext): void;
|
|
|
172
274
|
export declare function overwriteProjectFiles(project: ProjectContext, entries: Record<string, Uint8Array>, opts?: {
|
|
173
275
|
name?: string;
|
|
174
276
|
snapshotFileName?: string;
|
|
175
|
-
|
|
277
|
+
mergePackedDirs?: {
|
|
278
|
+
baseEntries: readonly string[];
|
|
279
|
+
};
|
|
280
|
+
}): MergeCounts | undefined;
|
|
176
281
|
/**
|
|
177
282
|
* 为**未打开的书**生成覆盖前快照(import 覆盖书架其他书场景,「覆盖前自动快照」):
|
|
178
283
|
* 临时打开 data.db 连接走备份管道(wal_checkpoint 保证快照完整性),完成后关闭连接。
|
|
@@ -182,10 +287,10 @@ export declare function snapshotBookDir(dir: string): BackupFileInfo;
|
|
|
182
287
|
/**
|
|
183
288
|
* 从备份恢复当前项目(POST /project/backup/restore):
|
|
184
289
|
*
|
|
185
|
-
* 1. fileName 白名单校验:仅允许 `.backups/`
|
|
186
|
-
* `<YYYYMMDD-HHmmssSSS
|
|
187
|
-
*
|
|
188
|
-
*
|
|
290
|
+
* 1. fileName 白名单校验:仅允许 `.backups/` 下的**唯一命名格式**
|
|
291
|
+
* `<YYYYMMDD-HHmmssSSS>-<自动|手动>-<设备>[-<标签>]-人物N-设定N-章N.zip`(shared parseBackupFileName,
|
|
292
|
+
* ^$ 锚定 + 设备/标签部分拒绝 /\\,天然防路径分隔符与 `..` 穿越;旧命名不可解析 ⇒ 一并被拒);
|
|
293
|
+
* 格式合法但文件不存在 → 404
|
|
189
294
|
* 2. **覆盖前自动快照**:当前三文件打包为快照存入 .backups/(复用备份管道,
|
|
190
295
|
* 就是普通备份文件,自然参与保留策略——后悔药)
|
|
191
296
|
* 3. 备份包校验(validateBackupPackage:zip/白名单//user_version 三态,
|
|
@@ -198,7 +303,12 @@ export declare function snapshotBookDir(dir: string): BackupFileInfo;
|
|
|
198
303
|
*
|
|
199
304
|
* @throws HttpError 400(文件名非法/坏包)、404(备份不存在)、409 SCHEMA_VERSION_MISMATCH
|
|
200
305
|
*/
|
|
201
|
-
export declare function restoreBackup(project: ProjectContext, fileName: string
|
|
306
|
+
export declare function restoreBackup(project: ProjectContext, fileName: string, options?: {
|
|
307
|
+
mergePackedDirs?: {
|
|
308
|
+
baseEntries: readonly string[];
|
|
309
|
+
};
|
|
310
|
+
}): {
|
|
202
311
|
snapshot: Pick<BackupFileInfo, "fileName" | "createdAt">;
|
|
312
|
+
merged?: MergeCounts;
|
|
203
313
|
};
|
|
204
314
|
//# sourceMappingURL=backup.d.ts.map
|
package/dist/backup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
|