@cjwddz/mirror 0.0.5 → 0.0.6
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/dist/cli/host-impl.d.ts +6 -0
- package/dist/cli/host-impl.d.ts.map +1 -1
- package/dist/cli/host-impl.js +143 -23
- package/dist/cli/host-impl.js.map +1 -1
- package/dist/cli/link.d.ts.map +1 -1
- package/dist/cli/link.js +207 -77
- package/dist/cli/link.js.map +1 -1
- package/dist/core/protocol.d.ts +2 -0
- package/dist/core/protocol.d.ts.map +1 -1
- package/dist/core/protocol.js.map +1 -1
- package/dist/core/workspace.d.ts +14 -2
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +130 -12
- package/dist/core/workspace.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/host-impl.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ interface HostOptions {
|
|
|
6
6
|
workspaceDir: string;
|
|
7
7
|
ignore?: string[];
|
|
8
8
|
token?: string;
|
|
9
|
+
metadataDir?: string;
|
|
9
10
|
}
|
|
10
11
|
export declare class Host {
|
|
11
12
|
private transport;
|
|
@@ -13,6 +14,7 @@ export declare class Host {
|
|
|
13
14
|
private workspace;
|
|
14
15
|
private processManager;
|
|
15
16
|
private currentClientId;
|
|
17
|
+
private currentClientWorkspacePath;
|
|
16
18
|
private sessionToken;
|
|
17
19
|
private options;
|
|
18
20
|
private snapshotFiles;
|
|
@@ -26,12 +28,16 @@ export declare class Host {
|
|
|
26
28
|
private handleHello;
|
|
27
29
|
private handleSnapshotStart;
|
|
28
30
|
private fileCount;
|
|
31
|
+
private receivedFileCount;
|
|
32
|
+
private writtenFileCount;
|
|
33
|
+
private skippedFileCount;
|
|
29
34
|
private handleFile;
|
|
30
35
|
private handleSnapshotEnd;
|
|
31
36
|
private handleFileDiff;
|
|
32
37
|
private handleExec;
|
|
33
38
|
private sendError;
|
|
34
39
|
private cleanup;
|
|
40
|
+
private disconnect;
|
|
35
41
|
stop(): Promise<void>;
|
|
36
42
|
}
|
|
37
43
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-impl.d.ts","sourceRoot":"","sources":["../../src/cli/host-impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"host-impl.d.ts","sourceRoot":"","sources":["../../src/cli/host-impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,0BAA0B,CAAuB;IACzD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,aAAa,CAA6D;IAClF,OAAO,CAAC,oBAAoB,CAAkB;gBAElC,OAAO,EAAE,WAAW;IAShC,OAAO,CAAC,aAAa;IAIf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B,OAAO,CAAC,WAAW;YAoBL,gBAAgB;YA2DhB,aAAa;YAyBb,WAAW;YAuCX,mBAAmB;IAsCjC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;YAEf,UAAU;YAqCV,iBAAiB;YA6FjB,cAAc;YAmCd,UAAU;IAuExB,OAAO,CAAC,SAAS;YAUH,OAAO;YAsBP,UAAU;IAsBlB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
|
package/dist/cli/host-impl.js
CHANGED
|
@@ -14,6 +14,7 @@ export class Host {
|
|
|
14
14
|
workspace = null;
|
|
15
15
|
processManager;
|
|
16
16
|
currentClientId = null;
|
|
17
|
+
currentClientWorkspacePath = null;
|
|
17
18
|
sessionToken;
|
|
18
19
|
options;
|
|
19
20
|
snapshotFiles = new Map();
|
|
@@ -63,10 +64,11 @@ export class Host {
|
|
|
63
64
|
const clientAddress = socket?.remoteAddress ?? 'unknown';
|
|
64
65
|
const clientPort = socket?.remotePort ?? 'unknown';
|
|
65
66
|
console.log(`[${new Date().toISOString()}] 客户端连接: ${clientAddress}:${clientPort}`);
|
|
66
|
-
//
|
|
67
|
-
if (this.currentClientId) {
|
|
68
|
-
console.log(`[${new Date().toISOString()}]
|
|
69
|
-
|
|
67
|
+
// 清理旧连接(如果有活跃连接)
|
|
68
|
+
if (this.currentClientId && this.stateMachine.getState() !== HostState.EMPTY) {
|
|
69
|
+
console.log(`[${new Date().toISOString()}] 检测到旧连接,断开旧连接: ${this.currentClientId}`);
|
|
70
|
+
// 断开旧连接时保留工作区
|
|
71
|
+
await this.disconnect();
|
|
70
72
|
}
|
|
71
73
|
ws.on('message', async (data) => {
|
|
72
74
|
try {
|
|
@@ -90,11 +92,18 @@ export class Host {
|
|
|
90
92
|
});
|
|
91
93
|
ws.on('close', async () => {
|
|
92
94
|
console.log(`[${new Date().toISOString()}] 客户端断开连接: ${this.currentClientId || 'unknown'}`);
|
|
93
|
-
|
|
95
|
+
// 断开连接时保留工作区
|
|
96
|
+
await this.disconnect();
|
|
97
|
+
// 清除 currentClientId 和 currentClientWorkspacePath,以便下次连接时判断
|
|
98
|
+
this.currentClientId = null;
|
|
99
|
+
this.currentClientWorkspacePath = null;
|
|
94
100
|
});
|
|
95
101
|
ws.on('error', async (error) => {
|
|
96
102
|
console.error(`[${new Date().toISOString()}] WebSocket 错误:`, error);
|
|
97
|
-
|
|
103
|
+
// 错误时也保留工作区
|
|
104
|
+
await this.disconnect();
|
|
105
|
+
this.currentClientId = null;
|
|
106
|
+
this.currentClientWorkspacePath = null;
|
|
98
107
|
});
|
|
99
108
|
}
|
|
100
109
|
async handleMessage(ws, message) {
|
|
@@ -129,8 +138,23 @@ export class Host {
|
|
|
129
138
|
ws.close();
|
|
130
139
|
return;
|
|
131
140
|
}
|
|
132
|
-
|
|
133
|
-
|
|
141
|
+
const newClientId = message.clientId;
|
|
142
|
+
const newClientWorkspacePath = message.workspacePath || null;
|
|
143
|
+
// 检查工作区元数据中的工作目录路径(用于判断是否为同一工作目录)
|
|
144
|
+
const workspacePath = this.workspace?.getWorkspacePath();
|
|
145
|
+
// 如果是不同工作目录连接,清理旧工作区
|
|
146
|
+
if (this.workspace && workspacePath !== newClientWorkspacePath) {
|
|
147
|
+
console.log(`[${new Date().toISOString()}] 检测到不同工作目录,清理旧工作区 (旧: ${workspacePath || 'unknown'}, 新: ${newClientWorkspacePath || 'unknown'})`);
|
|
148
|
+
await this.cleanup();
|
|
149
|
+
}
|
|
150
|
+
else if (this.workspace && workspacePath === newClientWorkspacePath) {
|
|
151
|
+
// 同一个工作目录重连,复用工作区
|
|
152
|
+
console.log(`[${new Date().toISOString()}] 检测到同一工作目录重连,复用工作区 (${newClientWorkspacePath || 'unknown'})`);
|
|
153
|
+
// 断开连接时已经保存了元数据,这里不需要额外操作
|
|
154
|
+
}
|
|
155
|
+
this.currentClientId = newClientId;
|
|
156
|
+
this.currentClientWorkspacePath = newClientWorkspacePath;
|
|
157
|
+
console.log(`[${new Date().toISOString()}] HELLO 成功,客户端 ID: ${newClientId}, 工作目录: ${newClientWorkspacePath || 'unknown'}, 版本: ${message.clientVersion || 'unknown'}`);
|
|
134
158
|
this.stateMachine.transitionTo(HostState.SYNCING);
|
|
135
159
|
this.snapshotFiles.clear();
|
|
136
160
|
this.isSnapshotInProgress = false;
|
|
@@ -140,15 +164,29 @@ export class Host {
|
|
|
140
164
|
this.sendError(ws, 'Invalid state for SNAPSHOT_START');
|
|
141
165
|
return;
|
|
142
166
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
167
|
+
const totalFiles = message.totalFiles || 0;
|
|
168
|
+
console.log(`[${new Date().toISOString()}] 开始接收快照,版本: ${message.version}${totalFiles > 0 ? `,预计文件数: ${totalFiles}` : ''}`);
|
|
169
|
+
// 创建或复用 workspace(传入 clientId 和工作目录路径以便复用)
|
|
170
|
+
// 元数据文件保存在工作区目录之外,避免污染同步目录
|
|
171
|
+
if (!this.workspace) {
|
|
172
|
+
this.workspace = await Workspace.create(this.options.workspaceDir, false, this.currentClientId || null, this.currentClientWorkspacePath || null, this.options.metadataDir // 传递元数据目录
|
|
173
|
+
);
|
|
174
|
+
if (this.currentClientId) {
|
|
175
|
+
await this.workspace.setClientInfo(this.currentClientId, this.currentClientWorkspacePath || null);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
146
178
|
console.log(`[${new Date().toISOString()}] 工作空间路径: ${this.workspace.getPath()}`);
|
|
147
179
|
this.isSnapshotInProgress = true;
|
|
148
180
|
this.snapshotFiles.clear();
|
|
149
|
-
this.fileCount =
|
|
181
|
+
this.fileCount = totalFiles; // 设置文件总数
|
|
182
|
+
this.receivedFileCount = 0; // 重置接收计数
|
|
183
|
+
this.writtenFileCount = 0; // 重置写入计数
|
|
184
|
+
this.skippedFileCount = 0; // 重置跳过计数
|
|
150
185
|
}
|
|
151
|
-
fileCount = 0; //
|
|
186
|
+
fileCount = 0; // 文件计数器(用于显示总文件数)
|
|
187
|
+
receivedFileCount = 0; // 已接收文件数
|
|
188
|
+
writtenFileCount = 0; // 已写入文件数
|
|
189
|
+
skippedFileCount = 0; // 已跳过文件数(hash相同)
|
|
152
190
|
async handleFile(ws, message) {
|
|
153
191
|
if (!this.isSnapshotInProgress || !this.workspace) {
|
|
154
192
|
this.sendError(ws, 'SNAPSHOT not in progress');
|
|
@@ -162,11 +200,19 @@ export class Host {
|
|
|
162
200
|
this.sendError(ws, `Hash mismatch for ${message.path}`);
|
|
163
201
|
return;
|
|
164
202
|
}
|
|
203
|
+
// 检查文件是否已存在且 hash 相同(增量同步)
|
|
204
|
+
const isSkipped = this.workspace.hasFile(message.path, hash);
|
|
205
|
+
if (isSkipped) {
|
|
206
|
+
this.skippedFileCount++;
|
|
207
|
+
}
|
|
208
|
+
// 记录到快照中(无论是否需要写入)
|
|
165
209
|
this.snapshotFiles.set(message.path, { hash, content });
|
|
166
|
-
this.
|
|
167
|
-
// 每 10
|
|
168
|
-
if (this.
|
|
169
|
-
|
|
210
|
+
this.receivedFileCount++;
|
|
211
|
+
// 每 10 个文件显示一次接收进度
|
|
212
|
+
if (this.receivedFileCount % 10 === 0 || this.receivedFileCount === this.fileCount) {
|
|
213
|
+
const skippedInfo = this.skippedFileCount > 0 ? ` (跳过 ${this.skippedFileCount})` : '';
|
|
214
|
+
const totalInfo = this.fileCount > 0 ? `/${this.fileCount}` : '';
|
|
215
|
+
process.stdout.write(`\r[${new Date().toISOString()}] 已接收 ${this.receivedFileCount}${totalInfo} 个文件${skippedInfo}...`);
|
|
170
216
|
}
|
|
171
217
|
}
|
|
172
218
|
async handleSnapshotEnd(ws, message) {
|
|
@@ -174,19 +220,69 @@ export class Host {
|
|
|
174
220
|
this.sendError(ws, 'SNAPSHOT not in progress');
|
|
175
221
|
return;
|
|
176
222
|
}
|
|
177
|
-
//
|
|
223
|
+
// 清除接收进度显示
|
|
178
224
|
process.stdout.write('\r');
|
|
179
225
|
console.log(`[${new Date().toISOString()}] 快照接收完成,版本: ${message.version},文件数: ${this.snapshotFiles.size}`);
|
|
180
|
-
//
|
|
181
|
-
|
|
182
|
-
|
|
226
|
+
// 准备写入文件
|
|
227
|
+
const filesToWrite = [];
|
|
228
|
+
const fileHashes = {};
|
|
229
|
+
// 获取旧的文件列表(用于删除已移除的文件)
|
|
230
|
+
const oldFiles = this.workspace.getOldFiles();
|
|
231
|
+
const newFilePaths = new Set();
|
|
232
|
+
for (const [path, { hash, content }] of this.snapshotFiles) {
|
|
233
|
+
fileHashes[path] = hash;
|
|
234
|
+
newFilePaths.add(path);
|
|
235
|
+
// 只写入需要更新的文件(hash 不同的)
|
|
236
|
+
if (!this.workspace.hasFile(path, hash)) {
|
|
237
|
+
filesToWrite.push([path, content]);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// 找出需要删除的文件(在旧文件中但不在新快照中)
|
|
241
|
+
const filesToDelete = [];
|
|
242
|
+
for (const oldPath of Object.keys(oldFiles)) {
|
|
243
|
+
if (!newFilePaths.has(oldPath)) {
|
|
244
|
+
filesToDelete.push(oldPath);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const totalFiles = this.snapshotFiles.size;
|
|
248
|
+
const needWriteCount = filesToWrite.length;
|
|
249
|
+
const actualSkippedCount = totalFiles - needWriteCount;
|
|
250
|
+
// 删除已移除的文件
|
|
251
|
+
if (filesToDelete.length > 0) {
|
|
252
|
+
console.log(`[${new Date().toISOString()}] 检测到 ${filesToDelete.length} 个文件已移除,开始删除...`);
|
|
253
|
+
for (const path of filesToDelete) {
|
|
254
|
+
await this.workspace.deleteFile(path);
|
|
255
|
+
}
|
|
256
|
+
console.log(`[${new Date().toISOString()}] 已删除 ${filesToDelete.length} 个文件`);
|
|
257
|
+
}
|
|
258
|
+
if (needWriteCount > 0) {
|
|
259
|
+
console.log(`[${new Date().toISOString()}] 开始写入文件: ${needWriteCount}/${totalFiles} 需要更新...`);
|
|
260
|
+
// 写入文件并显示进度
|
|
261
|
+
for (let i = 0; i < filesToWrite.length; i++) {
|
|
262
|
+
const [path, content] = filesToWrite[i];
|
|
263
|
+
await this.workspace.writeFile(path, content);
|
|
264
|
+
this.writtenFileCount++;
|
|
265
|
+
// 每写入 10 个文件或最后一个文件时显示进度
|
|
266
|
+
if ((i + 1) % 10 === 0 || i === filesToWrite.length - 1) {
|
|
267
|
+
process.stdout.write(`\r[${new Date().toISOString()}] 已写入 ${this.writtenFileCount}/${needWriteCount} 个文件...`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// 清除写入进度显示
|
|
271
|
+
process.stdout.write('\r');
|
|
183
272
|
}
|
|
273
|
+
// 更新文件列表元数据
|
|
274
|
+
await this.workspace.updateFileList(fileHashes);
|
|
184
275
|
this.workspace.setVersion(message.version);
|
|
185
276
|
this.stateMachine.transitionTo(HostState.READY);
|
|
186
277
|
this.isSnapshotInProgress = false;
|
|
278
|
+
const skippedInfo = actualSkippedCount > 0 ? ` (跳过 ${actualSkippedCount} 个未变更文件)` : '';
|
|
279
|
+
console.log(`[${new Date().toISOString()}] 工作空间已就绪,可以执行命令${skippedInfo}`);
|
|
280
|
+
// 重置计数器
|
|
187
281
|
this.snapshotFiles.clear();
|
|
188
282
|
this.fileCount = 0;
|
|
189
|
-
|
|
283
|
+
this.receivedFileCount = 0;
|
|
284
|
+
this.writtenFileCount = 0;
|
|
285
|
+
this.skippedFileCount = 0;
|
|
190
286
|
}
|
|
191
287
|
async handleFileDiff(ws, message) {
|
|
192
288
|
if (!this.workspace) {
|
|
@@ -279,7 +375,7 @@ export class Host {
|
|
|
279
375
|
async cleanup() {
|
|
280
376
|
// 清理进程
|
|
281
377
|
await this.processManager.killAll();
|
|
282
|
-
// 清理 workspace
|
|
378
|
+
// 清理 workspace(完全删除)
|
|
283
379
|
if (this.workspace) {
|
|
284
380
|
await this.workspace.cleanup();
|
|
285
381
|
this.workspace = null;
|
|
@@ -287,8 +383,32 @@ export class Host {
|
|
|
287
383
|
// 重置状态
|
|
288
384
|
this.stateMachine.reset();
|
|
289
385
|
this.currentClientId = null;
|
|
386
|
+
this.currentClientWorkspacePath = null;
|
|
387
|
+
this.snapshotFiles.clear();
|
|
388
|
+
this.isSnapshotInProgress = false;
|
|
389
|
+
this.fileCount = 0;
|
|
390
|
+
this.receivedFileCount = 0;
|
|
391
|
+
this.writtenFileCount = 0;
|
|
392
|
+
this.skippedFileCount = 0;
|
|
393
|
+
}
|
|
394
|
+
async disconnect() {
|
|
395
|
+
// 断开连接时保留工作区
|
|
396
|
+
// 清理进程
|
|
397
|
+
await this.processManager.killAll();
|
|
398
|
+
// 保存工作区元数据,但不删除工作区
|
|
399
|
+
if (this.workspace) {
|
|
400
|
+
await this.workspace.disconnect();
|
|
401
|
+
// 不设置为 null,以便重连时复用
|
|
402
|
+
}
|
|
403
|
+
// 重置状态(但保留 workspace、currentClientId 和 currentClientWorkspacePath,以便识别重连)
|
|
404
|
+
this.stateMachine.reset();
|
|
290
405
|
this.snapshotFiles.clear();
|
|
291
406
|
this.isSnapshotInProgress = false;
|
|
407
|
+
this.fileCount = 0;
|
|
408
|
+
this.receivedFileCount = 0;
|
|
409
|
+
this.writtenFileCount = 0;
|
|
410
|
+
this.skippedFileCount = 0;
|
|
411
|
+
// 注意:不断开连接时不清除 currentClientId 和 currentClientWorkspacePath
|
|
292
412
|
}
|
|
293
413
|
async stop() {
|
|
294
414
|
await this.cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-impl.js","sourceRoot":"","sources":["../../src/cli/host-impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAU5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASnD,MAAM,OAAO,IAAI;IACP,SAAS,CAAqB;IAC9B,YAAY,CAAe;IAC3B,SAAS,GAAqB,IAAI,CAAC;IACnC,cAAc,CAAiB;IAC/B,eAAe,GAAkB,IAAI,CAAC;IACtC,YAAY,CAAS;IACrB,OAAO,CAAc;IACrB,aAAa,GAAmD,IAAI,GAAG,EAAE,CAAC;IAC1E,oBAAoB,GAAY,KAAK,CAAC;IAE9C,YAAY,OAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,yBAAyB;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC;IAEO,aAAa;QACnB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAE/B,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,IAAI,IAAI,UAAU,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IAC/E,CAAC;IAEO,WAAW;QACjB,YAAY;QACZ,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,8BAA8B;gBAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC/C,OAAO,KAAK,CAAC,OAAO,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAAa;QAC1C,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,KAElD,CAAC;QACd,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,SAAS,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,SAAS,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,aAAa,IAAI,UAAU,EAAE,CAAC,CAAC;QAEnF,QAAQ;QACR,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QAED,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAY,CAAC;gBACvD,uBAAuB;gBACvB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACjC,MAAM,OAAO,GAAG,OAA0B,CAAC;wBAC3C,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,GAAG,CACvF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC9D,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,eAAe,IAAI,SAAS,EAAE,CAC9E,CAAC;YACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,EAAa,EAAE,OAAgB;QACzD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBACnC,MAAM;YACR;gBACE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yBAA0B,OAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,EAAa,EAAE,OAAqB;QAC5D,WAAW;QACX,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACpC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;QACxC,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,sBAAsB,OAAO,CAAC,QAAQ,SAAS,OAAO,CAAC,aAAa,IAAI,SAAS,EAAE,CAChH,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,EAAa,EAAE,OAA6B;QAC5E,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,kCAAkC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,gBAAgB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,+BAA+B;QAC/B,IAAI,CAAC,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS;IAC/B,CAAC;IAEO,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ;IAEvB,KAAK,CAAC,UAAU,CAAC,EAAa,EAAE,OAAoB;QAC1D,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAElC,UAAU;QACV,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,gBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,iBAAiB;QACjB,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,SAAS,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,EAAa,EAAE,OAA2B;QACxE,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,SAAS;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,gBAAgB,OAAO,CAAC,OAAO,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAC9F,CAAC;QACF,SAAS;QACT,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EAAa,EAAE,OAAwB;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAE3C,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO;YACP,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACvD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YACvC,gBAAgB;YAChB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,gCAAgC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,EAAa,EAAE,OAAoB;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yBAAyB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,OAAO;QACP,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC3D,IAAI,CAAC,SAAS,CACZ,EAAE,EACF,8BAA8B,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,OAAO,CAAC,OAAO,EAAE,CAC3F,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,MAAM,GAAG,CACrF,CAAC;QACF,OAAO;QACP,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAChD,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CACzB,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO;QACP,UAAU,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YACjC,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,QAAQ;gBAChB,IAAI;aACL,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;QACP,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,MAAM,eAAe,IAAI,CAAC,QAAQ,GAAG,CACnH,CAAC;YACF,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,IAAI,CAAC,QAAQ;aACpB,CAAC,CACH,CAAC;YAEF,OAAO;YACP,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAElD,mBAAmB;YACnB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAC3C,CAAC;YAED,cAAc;YACd,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,EAAa,EAAE,OAAe,EAAE,IAAa;QAC7D,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,OAAO;YACb,OAAO;YACP,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,OAAO;QACP,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAEpC,eAAe;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,OAAO;QACP,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"host-impl.js","sourceRoot":"","sources":["../../src/cli/host-impl.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/cli/link.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/cli/link.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8L5D;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAsDzD"}
|
package/dist/cli/link.js
CHANGED
|
@@ -39,44 +39,90 @@ export async function linkCommand(url) {
|
|
|
39
39
|
console.warn(`提示: 使用域名连接时,如果配置了 HTTPS,请使用 wss:// 协议`);
|
|
40
40
|
console.warn(`例如: mirror link wss://${parsed.host}${portPart}?token=${parsed.token}`);
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
// 连接配置
|
|
43
|
+
const connectionConfig = {
|
|
44
|
+
wsUrl,
|
|
45
|
+
clientId,
|
|
46
|
+
token: parsed.token,
|
|
47
|
+
clientVersion,
|
|
48
|
+
cwd,
|
|
49
|
+
};
|
|
50
|
+
// 连接状态管理
|
|
51
|
+
let isManualDisconnect = false;
|
|
52
|
+
let currentTransport = null;
|
|
53
|
+
let currentWatcher = null;
|
|
54
|
+
let reconnectAttempts = 0;
|
|
55
|
+
// 建立连接并同步
|
|
56
|
+
async function establishConnection() {
|
|
57
|
+
const transport = new WebSocketTransport();
|
|
58
|
+
await transport.connect(connectionConfig.wsUrl);
|
|
45
59
|
console.log('Connected to host');
|
|
46
|
-
// 设置连接状态监听
|
|
47
|
-
const ws = transport.getWebSocket();
|
|
48
|
-
if (ws) {
|
|
49
|
-
ws.on('close', (code, reason) => {
|
|
50
|
-
console.error(`\n连接已断开 (code: ${code}, reason: ${reason?.toString() || 'none'})`);
|
|
51
|
-
process.exit(1);
|
|
52
|
-
});
|
|
53
|
-
ws.on('error', (error) => {
|
|
54
|
-
console.error('\n连接错误:', error);
|
|
55
|
-
process.exit(1);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
60
|
// 发送 HELLO
|
|
59
61
|
transport.send({
|
|
60
62
|
type: 'HELLO',
|
|
61
|
-
clientId,
|
|
62
|
-
token:
|
|
63
|
-
clientVersion: clientVersion,
|
|
63
|
+
clientId: connectionConfig.clientId,
|
|
64
|
+
token: connectionConfig.token,
|
|
65
|
+
clientVersion: connectionConfig.clientVersion,
|
|
66
|
+
workspacePath: connectionConfig.cwd,
|
|
64
67
|
});
|
|
65
|
-
//
|
|
68
|
+
// 等待连接建立
|
|
66
69
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
67
70
|
// 开始全量同步
|
|
68
|
-
await performSnapshot(transport, cwd);
|
|
71
|
+
await performSnapshot(transport, connectionConfig.cwd);
|
|
69
72
|
console.log('快照同步完成,准备进入交互模式...');
|
|
70
73
|
// 检查连接状态
|
|
71
|
-
const
|
|
72
|
-
if (!
|
|
74
|
+
const ws = transport.getWebSocket();
|
|
75
|
+
if (!ws || ws.readyState !== 1) {
|
|
76
|
+
transport.close();
|
|
73
77
|
throw new Error('WebSocket 连接在同步后断开');
|
|
74
78
|
}
|
|
75
79
|
// 设置文件监听
|
|
76
|
-
const watcher = setupFileWatcher(cwd, transport);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
+
const watcher = setupFileWatcher(connectionConfig.cwd, transport);
|
|
81
|
+
return { transport, watcher };
|
|
82
|
+
}
|
|
83
|
+
// 重连逻辑
|
|
84
|
+
async function reconnect() {
|
|
85
|
+
if (isManualDisconnect) {
|
|
86
|
+
throw new Error('Manual disconnect, no reconnect');
|
|
87
|
+
}
|
|
88
|
+
console.log('\n连接已断开,正在尝试重新连接...');
|
|
89
|
+
// 清理旧连接
|
|
90
|
+
if (currentWatcher) {
|
|
91
|
+
currentWatcher.close();
|
|
92
|
+
currentWatcher = null;
|
|
93
|
+
}
|
|
94
|
+
if (currentTransport) {
|
|
95
|
+
currentTransport.close();
|
|
96
|
+
currentTransport = null;
|
|
97
|
+
}
|
|
98
|
+
// 等待后重连(指数退避,最多等待30秒)
|
|
99
|
+
const delay = Math.min(3000 * Math.pow(1.5, reconnectAttempts), 30000);
|
|
100
|
+
reconnectAttempts++;
|
|
101
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
102
|
+
try {
|
|
103
|
+
const { transport, watcher } = await establishConnection();
|
|
104
|
+
currentTransport = transport;
|
|
105
|
+
currentWatcher = watcher;
|
|
106
|
+
reconnectAttempts = 0; // 重置重连计数
|
|
107
|
+
console.log('重连成功');
|
|
108
|
+
return { transport, watcher };
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error('重连失败:', error instanceof Error ? error.message : String(error));
|
|
112
|
+
// 继续重试(无限重试,除非主动断开)
|
|
113
|
+
return reconnect();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
// 初始连接
|
|
118
|
+
const { transport, watcher } = await establishConnection();
|
|
119
|
+
currentTransport = transport;
|
|
120
|
+
currentWatcher = watcher;
|
|
121
|
+
// 进入交互式终端(支持重连)
|
|
122
|
+
// 重连逻辑在交互式终端内部处理
|
|
123
|
+
await startInteractiveTerminalWithReconnect(transport, cwd, reconnect);
|
|
124
|
+
// 清理(主动断开)
|
|
125
|
+
isManualDisconnect = true;
|
|
80
126
|
watcher.close();
|
|
81
127
|
transport.close();
|
|
82
128
|
}
|
|
@@ -111,7 +157,24 @@ export async function linkCommand(url) {
|
|
|
111
157
|
console.error(` - 域名是否正确: ${parsed.host}`);
|
|
112
158
|
console.error(' - DNS 配置是否正确');
|
|
113
159
|
}
|
|
114
|
-
|
|
160
|
+
// 如果不是主动断开,尝试重连
|
|
161
|
+
if (!isManualDisconnect) {
|
|
162
|
+
try {
|
|
163
|
+
const { transport, watcher } = await reconnect();
|
|
164
|
+
currentTransport = transport;
|
|
165
|
+
currentWatcher = watcher;
|
|
166
|
+
await startInteractiveTerminalWithReconnect(transport, cwd, reconnect);
|
|
167
|
+
isManualDisconnect = true;
|
|
168
|
+
watcher.close();
|
|
169
|
+
transport.close();
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
115
178
|
}
|
|
116
179
|
}
|
|
117
180
|
export async function getPackageVersion() {
|
|
@@ -196,18 +259,22 @@ let currentVersion = 0;
|
|
|
196
259
|
async function performSnapshot(transport, cwd) {
|
|
197
260
|
currentVersion = 1;
|
|
198
261
|
try {
|
|
199
|
-
//
|
|
262
|
+
// 先收集所有文件
|
|
263
|
+
console.log('正在扫描文件...');
|
|
264
|
+
const files = await collectFiles(cwd, cwd);
|
|
265
|
+
const totalFiles = files.length;
|
|
266
|
+
console.log(`准备同步 ${totalFiles} 个文件...`);
|
|
267
|
+
// 发送 SNAPSHOT_START(包含文件总数)
|
|
200
268
|
transport.send({
|
|
201
269
|
type: 'SNAPSHOT_START',
|
|
202
270
|
version: currentVersion,
|
|
271
|
+
totalFiles,
|
|
203
272
|
});
|
|
204
|
-
//
|
|
205
|
-
const files = await collectFiles(cwd, cwd);
|
|
206
|
-
console.log(`准备同步 ${files.length} 个文件...`);
|
|
207
|
-
// 发送所有文件
|
|
273
|
+
// 发送所有文件,并显示进度
|
|
208
274
|
let successCount = 0;
|
|
209
275
|
let errorCount = 0;
|
|
210
|
-
for (
|
|
276
|
+
for (let i = 0; i < files.length; i++) {
|
|
277
|
+
const file = files[i];
|
|
211
278
|
try {
|
|
212
279
|
const { content, hash } = await readFileWithHash(file);
|
|
213
280
|
const relativePath = getRelativePath(file, cwd);
|
|
@@ -218,14 +285,20 @@ async function performSnapshot(transport, cwd) {
|
|
|
218
285
|
content: content.toString('base64'),
|
|
219
286
|
});
|
|
220
287
|
successCount++;
|
|
288
|
+
// 每 10 个文件或最后一个文件时显示进度
|
|
289
|
+
if ((i + 1) % 10 === 0 || i === files.length - 1) {
|
|
290
|
+
process.stdout.write(`\r已发送 ${i + 1}/${totalFiles} 个文件... (成功: ${successCount}, 失败: ${errorCount})`);
|
|
291
|
+
}
|
|
221
292
|
}
|
|
222
293
|
catch (error) {
|
|
223
|
-
console.error(
|
|
294
|
+
console.error(`\nFailed to send file ${file}:`, error);
|
|
224
295
|
errorCount++;
|
|
225
296
|
// 继续处理其他文件,不中断整个同步过程
|
|
226
297
|
}
|
|
227
298
|
}
|
|
228
|
-
|
|
299
|
+
// 清除进度显示
|
|
300
|
+
process.stdout.write('\r');
|
|
301
|
+
console.log(`文件发送完成: ${successCount} 成功, ${errorCount} 失败`);
|
|
229
302
|
// 发送 SNAPSHOT_END
|
|
230
303
|
transport.send({
|
|
231
304
|
type: 'SNAPSHOT_END',
|
|
@@ -297,47 +370,100 @@ function setupFileWatcher(cwd, transport) {
|
|
|
297
370
|
});
|
|
298
371
|
return watcher;
|
|
299
372
|
}
|
|
300
|
-
async function
|
|
373
|
+
async function startInteractiveTerminalWithReconnect(transport, _cwd, reconnectFn) {
|
|
374
|
+
return startInteractiveTerminal(transport, _cwd, reconnectFn);
|
|
375
|
+
}
|
|
376
|
+
async function startInteractiveTerminal(transport, _cwd, reconnectFn) {
|
|
301
377
|
return new Promise((resolve) => {
|
|
302
378
|
const rl = readline.createInterface({
|
|
303
379
|
input: process.stdin,
|
|
304
380
|
output: process.stdout,
|
|
305
381
|
prompt: '> ',
|
|
306
382
|
});
|
|
383
|
+
let currentTransport = transport;
|
|
307
384
|
let currentExecId = null;
|
|
308
385
|
let isExecuting = false;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
386
|
+
let isReconnecting = false;
|
|
387
|
+
// 设置消息监听器
|
|
388
|
+
function setupMessageHandlers(t) {
|
|
389
|
+
// 清除旧的消息处理器(通过创建新的 transport 实例来避免)
|
|
390
|
+
// 这里我们直接使用新的 transport
|
|
391
|
+
t.onMessage('EXEC_OUTPUT', (msg) => {
|
|
392
|
+
const outputMsg = msg;
|
|
393
|
+
if (outputMsg.execId === currentExecId) {
|
|
394
|
+
if (outputMsg.data) {
|
|
395
|
+
process.stdout.write(outputMsg.data);
|
|
396
|
+
}
|
|
316
397
|
}
|
|
398
|
+
});
|
|
399
|
+
t.onMessage('EXEC_EXIT', (msg) => {
|
|
400
|
+
const exitMsg = msg;
|
|
401
|
+
if (exitMsg.execId === currentExecId) {
|
|
402
|
+
currentExecId = null;
|
|
403
|
+
isExecuting = false;
|
|
404
|
+
rl.prompt();
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
t.onMessage('ERROR', (msg) => {
|
|
408
|
+
const errorMsg = msg;
|
|
409
|
+
console.error(`\nError: ${errorMsg.message}`);
|
|
410
|
+
if (currentExecId) {
|
|
411
|
+
currentExecId = null;
|
|
412
|
+
isExecuting = false;
|
|
413
|
+
rl.prompt();
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
// 初始设置
|
|
418
|
+
setupMessageHandlers(currentTransport);
|
|
419
|
+
// 重连处理
|
|
420
|
+
async function handleReconnect() {
|
|
421
|
+
if (!reconnectFn || isReconnecting) {
|
|
422
|
+
return;
|
|
317
423
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
424
|
+
isReconnecting = true;
|
|
425
|
+
console.log('\n检测到连接断开,等待重连...');
|
|
426
|
+
try {
|
|
427
|
+
const { transport: newTransport } = await reconnectFn();
|
|
428
|
+
currentTransport = newTransport;
|
|
429
|
+
setupMessageHandlers(newTransport);
|
|
430
|
+
isReconnecting = false;
|
|
431
|
+
console.log('重连成功,可以继续使用');
|
|
324
432
|
rl.prompt();
|
|
325
433
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
console.error(`\nError: ${errorMsg.message}`);
|
|
330
|
-
if (currentExecId) {
|
|
331
|
-
currentExecId = null;
|
|
332
|
-
isExecuting = false;
|
|
434
|
+
catch (error) {
|
|
435
|
+
console.error('重连失败:', error instanceof Error ? error.message : String(error));
|
|
436
|
+
isReconnecting = false;
|
|
333
437
|
rl.prompt();
|
|
334
438
|
}
|
|
335
|
-
}
|
|
439
|
+
}
|
|
440
|
+
// 监听连接断开
|
|
441
|
+
const ws = currentTransport.getWebSocket();
|
|
442
|
+
if (ws) {
|
|
443
|
+
ws.on('close', async () => {
|
|
444
|
+
if (reconnectFn) {
|
|
445
|
+
await handleReconnect();
|
|
446
|
+
}
|
|
447
|
+
else {
|
|
448
|
+
rl.close();
|
|
449
|
+
resolve();
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
ws.on('error', async () => {
|
|
453
|
+
if (reconnectFn) {
|
|
454
|
+
await handleReconnect();
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
rl.close();
|
|
458
|
+
resolve();
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}
|
|
336
462
|
rl.prompt();
|
|
337
|
-
rl.on('line', (line) => {
|
|
463
|
+
rl.on('line', async (line) => {
|
|
338
464
|
const command = line.trim();
|
|
339
465
|
if (!command) {
|
|
340
|
-
if (!isExecuting) {
|
|
466
|
+
if (!isExecuting && !isReconnecting) {
|
|
341
467
|
rl.prompt();
|
|
342
468
|
}
|
|
343
469
|
return;
|
|
@@ -348,23 +474,31 @@ async function startInteractiveTerminal(transport, _cwd) {
|
|
|
348
474
|
return;
|
|
349
475
|
}
|
|
350
476
|
if (isExecuting) {
|
|
351
|
-
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
if (isReconnecting) {
|
|
480
|
+
console.log('正在重连中,请稍候...');
|
|
481
|
+
rl.prompt();
|
|
352
482
|
return;
|
|
353
483
|
}
|
|
354
484
|
// 检查连接状态
|
|
355
|
-
const ws =
|
|
485
|
+
const ws = currentTransport.getWebSocket();
|
|
356
486
|
if (!ws || ws.readyState !== 1) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
487
|
+
console.error('\n错误: WebSocket 连接已断开');
|
|
488
|
+
if (reconnectFn) {
|
|
489
|
+
await handleReconnect();
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
console.error('请重新连接');
|
|
493
|
+
rl.prompt();
|
|
494
|
+
}
|
|
361
495
|
return;
|
|
362
496
|
}
|
|
363
497
|
const execId = randomUUID();
|
|
364
498
|
currentExecId = execId;
|
|
365
499
|
isExecuting = true;
|
|
366
500
|
try {
|
|
367
|
-
|
|
501
|
+
currentTransport.send({
|
|
368
502
|
type: 'EXEC',
|
|
369
503
|
execId,
|
|
370
504
|
version: currentVersion,
|
|
@@ -375,22 +509,18 @@ async function startInteractiveTerminal(transport, _cwd) {
|
|
|
375
509
|
console.error('\n发送命令失败:', error instanceof Error ? error.message : String(error));
|
|
376
510
|
currentExecId = null;
|
|
377
511
|
isExecuting = false;
|
|
378
|
-
|
|
512
|
+
// 如果发送失败,尝试重连
|
|
513
|
+
if (reconnectFn) {
|
|
514
|
+
await handleReconnect();
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
rl.prompt();
|
|
518
|
+
}
|
|
379
519
|
}
|
|
380
520
|
});
|
|
381
521
|
rl.on('close', () => {
|
|
382
522
|
resolve();
|
|
383
523
|
});
|
|
384
|
-
// 监听连接断开
|
|
385
|
-
const ws = transport.getWebSocket();
|
|
386
|
-
if (ws) {
|
|
387
|
-
const onClose = () => {
|
|
388
|
-
rl.close();
|
|
389
|
-
resolve();
|
|
390
|
-
};
|
|
391
|
-
ws.on('close', onClose);
|
|
392
|
-
ws.on('error', onClose);
|
|
393
|
-
}
|
|
394
524
|
});
|
|
395
525
|
}
|
|
396
526
|
//# sourceMappingURL=link.js.map
|
package/dist/cli/link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/cli/link.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/cli/link.ts"],"names":[],"mappings":"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"}
|
package/dist/core/protocol.d.ts
CHANGED
|
@@ -10,10 +10,12 @@ export interface HelloMessage extends BaseMessage {
|
|
|
10
10
|
clientId: string;
|
|
11
11
|
token: string;
|
|
12
12
|
clientVersion: string;
|
|
13
|
+
workspacePath?: string;
|
|
13
14
|
}
|
|
14
15
|
export interface SnapshotStartMessage extends BaseMessage {
|
|
15
16
|
type: 'SNAPSHOT_START';
|
|
16
17
|
version: number;
|
|
18
|
+
totalFiles?: number;
|
|
17
19
|
}
|
|
18
20
|
export interface FileMessage extends BaseMessage {
|
|
19
21
|
type: 'FILE';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,WAAW,GACX,MAAM,GACN,aAAa,GACb,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,WAAW,GACX,MAAM,GACN,aAAa,GACb,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,OAAO,GACf,YAAY,GACZ,oBAAoB,GACpB,WAAW,GACX,kBAAkB,GAClB,eAAe,GACf,WAAW,GACX,iBAAiB,GACjB,eAAe,GACf,YAAY,CAAC;AAEjB,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,OAAO,CAOtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/core/protocol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyFH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,MAAM,IAAI,GAAG;QACb,OAAQ,GAAyB,CAAC,IAAI,KAAK,QAAQ,CACpD,CAAC;AACJ,CAAC"}
|
package/dist/core/workspace.d.ts
CHANGED
|
@@ -5,8 +5,19 @@ export declare class Workspace {
|
|
|
5
5
|
private path;
|
|
6
6
|
private currentVersion;
|
|
7
7
|
private pendingDiffs;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
private metadataPath;
|
|
9
|
+
private metadata;
|
|
10
|
+
constructor(path: string, metadataDir?: string);
|
|
11
|
+
static create(workspaceDir: string, createTemp?: boolean, clientId?: string | null, clientWorkspacePath?: string | null, metadataDir?: string): Promise<Workspace>;
|
|
12
|
+
private loadMetadata;
|
|
13
|
+
private saveMetadata;
|
|
14
|
+
setClientInfo(clientId: string, workspacePath: string | null): Promise<void>;
|
|
15
|
+
getClientId(): string | null;
|
|
16
|
+
getWorkspacePath(): string | null;
|
|
17
|
+
getOldFiles(): Record<string, string>;
|
|
18
|
+
updateFileList(files: Record<string, string>): Promise<void>;
|
|
19
|
+
getFileHash(path: string): string | undefined;
|
|
20
|
+
hasFile(path: string, hash: string): boolean;
|
|
10
21
|
getPath(): string;
|
|
11
22
|
getCurrentVersion(): number;
|
|
12
23
|
setVersion(version: number): void;
|
|
@@ -27,5 +38,6 @@ export declare class Workspace {
|
|
|
27
38
|
clearPendingDiffs(): void;
|
|
28
39
|
applyPendingDiffs(): Promise<void>;
|
|
29
40
|
cleanup(): Promise<void>;
|
|
41
|
+
disconnect(): Promise<void>;
|
|
30
42
|
}
|
|
31
43
|
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAA8E;IAClG,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;WAoBjC,MAAM,CACjB,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAe,EAC3B,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,mBAAmB,GAAE,MAAM,GAAG,IAAW,EACzC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,CAAC;YAmDP,YAAY;YAYZ,YAAY;IAMpB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAelF,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI/B,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI5C,OAAO,IAAI,MAAM;IAIjB,iBAAiB,IAAI,MAAM;IAI3B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU3B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI3F,eAAe,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIzF,iBAAiB,IAAI,IAAI;IAInB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIlC"}
|
package/dist/core/workspace.js
CHANGED
|
@@ -1,38 +1,140 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workspace 管理
|
|
3
3
|
*/
|
|
4
|
-
import { mkdtemp, rm, readdir } from 'fs/promises';
|
|
4
|
+
import { mkdtemp, rm, readdir, readFile } from 'fs/promises';
|
|
5
5
|
import { join } from 'path';
|
|
6
6
|
import { writeFile, mkdir, unlink } from 'fs/promises';
|
|
7
7
|
import { existsSync } from 'fs';
|
|
8
|
+
import { createHash } from 'crypto';
|
|
9
|
+
import { tmpdir } from 'os';
|
|
8
10
|
export class Workspace {
|
|
9
11
|
path;
|
|
10
12
|
currentVersion = 0;
|
|
11
13
|
pendingDiffs = [];
|
|
12
|
-
|
|
14
|
+
metadataPath;
|
|
15
|
+
metadata = null;
|
|
16
|
+
constructor(path, metadataDir) {
|
|
13
17
|
this.path = path;
|
|
18
|
+
// 元数据文件保存在工作区目录之外,避免污染同步目录
|
|
19
|
+
// 基于工作区路径生成唯一的元数据文件名
|
|
20
|
+
const hash = createHash('sha256').update(path).digest('hex').substring(0, 16);
|
|
21
|
+
if (metadataDir) {
|
|
22
|
+
// 使用指定的元数据目录
|
|
23
|
+
if (!existsSync(metadataDir)) {
|
|
24
|
+
mkdir(metadataDir, { recursive: true }).catch(() => {
|
|
25
|
+
// 如果创建失败,使用临时目录作为后备
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
this.metadataPath = join(metadataDir, `.mirror-metadata-${hash}.json`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// 后备方案:使用系统临时目录
|
|
32
|
+
this.metadataPath = join(tmpdir(), `.mirror-metadata-${hash}.json`);
|
|
33
|
+
}
|
|
14
34
|
}
|
|
15
|
-
static async create(workspaceDir, createTemp = false) {
|
|
35
|
+
static async create(workspaceDir, createTemp = false, clientId = null, clientWorkspacePath = null, metadataDir) {
|
|
16
36
|
if (createTemp) {
|
|
17
37
|
// 创建临时目录
|
|
18
38
|
const workspacePath = await mkdtemp(join(workspaceDir, 'mirror-'));
|
|
19
|
-
return new Workspace(workspacePath);
|
|
39
|
+
return new Workspace(workspacePath, metadataDir);
|
|
20
40
|
}
|
|
21
41
|
else {
|
|
22
|
-
//
|
|
42
|
+
// 直接使用 workspaceDir,不需要子目录(服务端只支持单个客户端)
|
|
43
|
+
const actualWorkspacePath = workspaceDir;
|
|
23
44
|
// 检查目录是否存在
|
|
24
|
-
if (!existsSync(
|
|
25
|
-
await mkdir(
|
|
45
|
+
if (!existsSync(actualWorkspacePath)) {
|
|
46
|
+
await mkdir(actualWorkspacePath, { recursive: true });
|
|
26
47
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
const workspace = new Workspace(actualWorkspacePath, metadataDir);
|
|
49
|
+
// 尝试加载元数据
|
|
50
|
+
await workspace.loadMetadata();
|
|
51
|
+
// 如果元数据存在且工作目录路径匹配,复用工作区
|
|
52
|
+
if (workspace.metadata &&
|
|
53
|
+
workspace.metadata.workspacePath === clientWorkspacePath &&
|
|
54
|
+
workspace.metadata.clientId === clientId) {
|
|
55
|
+
workspace.currentVersion = workspace.metadata.version;
|
|
56
|
+
return workspace;
|
|
57
|
+
}
|
|
58
|
+
// 如果元数据存在但工作目录路径不匹配,说明是不同的工作目录,清理
|
|
59
|
+
if (workspace.metadata && workspace.metadata.workspacePath !== clientWorkspacePath) {
|
|
60
|
+
console.log(`检测到不同工作目录: 旧=${workspace.metadata.workspacePath}, 新=${clientWorkspacePath},清理工作区`);
|
|
61
|
+
await workspace.cleanup();
|
|
62
|
+
await mkdir(actualWorkspacePath, { recursive: true });
|
|
63
|
+
workspace.metadata = null;
|
|
64
|
+
}
|
|
65
|
+
else if (!workspace.metadata) {
|
|
66
|
+
// 没有元数据,检查目录是否为空
|
|
67
|
+
const entries = await readdir(actualWorkspacePath);
|
|
30
68
|
if (entries.length > 0) {
|
|
31
|
-
|
|
69
|
+
// 目录不为空,清理(可能是旧数据)
|
|
70
|
+
await workspace.cleanup();
|
|
71
|
+
await mkdir(actualWorkspacePath, { recursive: true });
|
|
32
72
|
}
|
|
33
73
|
}
|
|
34
|
-
return
|
|
74
|
+
return workspace;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async loadMetadata() {
|
|
78
|
+
if (existsSync(this.metadataPath)) {
|
|
79
|
+
try {
|
|
80
|
+
const content = await readFile(this.metadataPath, 'utf-8');
|
|
81
|
+
this.metadata = JSON.parse(content);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// 元数据文件损坏,忽略
|
|
85
|
+
this.metadata = null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async saveMetadata() {
|
|
90
|
+
if (this.metadata) {
|
|
91
|
+
await writeFile(this.metadataPath, JSON.stringify(this.metadata, null, 2), 'utf-8');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async setClientInfo(clientId, workspacePath) {
|
|
95
|
+
if (!this.metadata) {
|
|
96
|
+
this.metadata = {
|
|
97
|
+
clientId,
|
|
98
|
+
workspacePath,
|
|
99
|
+
version: 0,
|
|
100
|
+
files: {},
|
|
101
|
+
};
|
|
35
102
|
}
|
|
103
|
+
else {
|
|
104
|
+
this.metadata.clientId = clientId;
|
|
105
|
+
this.metadata.workspacePath = workspacePath;
|
|
106
|
+
}
|
|
107
|
+
await this.saveMetadata();
|
|
108
|
+
}
|
|
109
|
+
getClientId() {
|
|
110
|
+
return this.metadata?.clientId || null;
|
|
111
|
+
}
|
|
112
|
+
getWorkspacePath() {
|
|
113
|
+
return this.metadata?.workspacePath || null;
|
|
114
|
+
}
|
|
115
|
+
getOldFiles() {
|
|
116
|
+
return this.metadata?.files || {};
|
|
117
|
+
}
|
|
118
|
+
async updateFileList(files) {
|
|
119
|
+
if (!this.metadata) {
|
|
120
|
+
this.metadata = {
|
|
121
|
+
clientId: null,
|
|
122
|
+
workspacePath: null,
|
|
123
|
+
version: this.currentVersion,
|
|
124
|
+
files,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.metadata.files = files;
|
|
129
|
+
this.metadata.version = this.currentVersion;
|
|
130
|
+
}
|
|
131
|
+
await this.saveMetadata();
|
|
132
|
+
}
|
|
133
|
+
getFileHash(path) {
|
|
134
|
+
return this.metadata?.files[path];
|
|
135
|
+
}
|
|
136
|
+
hasFile(path, hash) {
|
|
137
|
+
return this.metadata?.files[path] === hash;
|
|
36
138
|
}
|
|
37
139
|
getPath() {
|
|
38
140
|
return this.path;
|
|
@@ -42,6 +144,12 @@ export class Workspace {
|
|
|
42
144
|
}
|
|
43
145
|
setVersion(version) {
|
|
44
146
|
this.currentVersion = version;
|
|
147
|
+
if (this.metadata) {
|
|
148
|
+
this.metadata.version = version;
|
|
149
|
+
this.saveMetadata().catch(() => {
|
|
150
|
+
// 忽略保存错误
|
|
151
|
+
});
|
|
152
|
+
}
|
|
45
153
|
}
|
|
46
154
|
async writeFile(relativePath, content) {
|
|
47
155
|
const fullPath = join(this.path, relativePath);
|
|
@@ -86,11 +194,21 @@ export class Workspace {
|
|
|
86
194
|
}
|
|
87
195
|
async cleanup() {
|
|
88
196
|
try {
|
|
197
|
+
// 清理工作区目录
|
|
89
198
|
await rm(this.path, { recursive: true, force: true });
|
|
199
|
+
// 清理元数据文件
|
|
200
|
+
if (existsSync(this.metadataPath)) {
|
|
201
|
+
await unlink(this.metadataPath);
|
|
202
|
+
}
|
|
203
|
+
this.metadata = null;
|
|
90
204
|
}
|
|
91
205
|
catch (error) {
|
|
92
206
|
// 忽略清理错误
|
|
93
207
|
}
|
|
94
208
|
}
|
|
209
|
+
async disconnect() {
|
|
210
|
+
// 断开连接时保留工作区,只保存元数据
|
|
211
|
+
await this.saveMetadata();
|
|
212
|
+
}
|
|
95
213
|
}
|
|
96
214
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"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"}
|