@limrun/api 0.18.3 → 0.19.1
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/CHANGELOG.md +13 -0
- package/folder-sync-watcher.d.mts +17 -0
- package/folder-sync-watcher.d.mts.map +1 -0
- package/folder-sync-watcher.d.ts +17 -0
- package/folder-sync-watcher.d.ts.map +1 -0
- package/folder-sync-watcher.js +91 -0
- package/folder-sync-watcher.js.map +1 -0
- package/folder-sync-watcher.mjs +87 -0
- package/folder-sync-watcher.mjs.map +1 -0
- package/folder-sync.d.mts +31 -0
- package/folder-sync.d.mts.map +1 -0
- package/folder-sync.d.ts +31 -0
- package/folder-sync.d.ts.map +1 -0
- package/folder-sync.js +450 -0
- package/folder-sync.js.map +1 -0
- package/folder-sync.mjs +445 -0
- package/folder-sync.mjs.map +1 -0
- package/ios-client.d.mts +13 -3
- package/ios-client.d.mts.map +1 -1
- package/ios-client.d.ts +13 -3
- package/ios-client.d.ts.map +1 -1
- package/ios-client.js +38 -0
- package/ios-client.js.map +1 -1
- package/ios-client.mjs +38 -0
- package/ios-client.mjs.map +1 -1
- package/package.json +21 -1
- package/resources/android-instances.d.mts +2 -2
- package/resources/android-instances.d.ts +2 -2
- package/resources/ios-instances.d.mts +2 -2
- package/resources/ios-instances.d.ts +2 -2
- package/src/folder-sync-watcher.ts +99 -0
- package/src/folder-sync.ts +569 -0
- package/src/ios-client.ts +67 -7
- package/src/resources/android-instances.ts +2 -2
- package/src/resources/ios-instances.ts +2 -2
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/folder-sync.mjs
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import crypto from 'crypto';
|
|
5
|
+
import { spawn } from 'child_process';
|
|
6
|
+
import { watchFolderTree } from "./folder-sync-watcher.mjs";
|
|
7
|
+
import { Readable } from 'stream';
|
|
8
|
+
import * as zlib from 'zlib';
|
|
9
|
+
const noopLogger = (_level, _msg) => {
|
|
10
|
+
// Intentionally empty: callers (e.g. ios-client.ts) should provide their own logger
|
|
11
|
+
// to control verbosity and integrate with the SDK's logging setup.
|
|
12
|
+
};
|
|
13
|
+
function nowMs() {
|
|
14
|
+
return Date.now();
|
|
15
|
+
}
|
|
16
|
+
function fmtMs(ms) {
|
|
17
|
+
if (ms < 1000)
|
|
18
|
+
return `${ms.toFixed(0)}ms`;
|
|
19
|
+
return `${(ms / 1000).toFixed(2)}s`;
|
|
20
|
+
}
|
|
21
|
+
function fmtBytes(bytes) {
|
|
22
|
+
if (bytes < 1024)
|
|
23
|
+
return `${bytes}B`;
|
|
24
|
+
const kib = bytes / 1024;
|
|
25
|
+
if (kib < 1024)
|
|
26
|
+
return `${kib.toFixed(1)}KiB`;
|
|
27
|
+
const mib = kib / 1024;
|
|
28
|
+
if (mib < 1024)
|
|
29
|
+
return `${mib.toFixed(1)}MiB`;
|
|
30
|
+
const gib = mib / 1024;
|
|
31
|
+
return `${gib.toFixed(2)}GiB`;
|
|
32
|
+
}
|
|
33
|
+
function genId(prefix) {
|
|
34
|
+
return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
35
|
+
}
|
|
36
|
+
function isENOENT(err) {
|
|
37
|
+
const e = err;
|
|
38
|
+
return e?.code === 'ENOENT' || e?.cause?.code === 'ENOENT';
|
|
39
|
+
}
|
|
40
|
+
function concurrencyLimit() {
|
|
41
|
+
// min(4, max(1, cpuCount-1))
|
|
42
|
+
const cpu = os.cpus()?.length ?? 1;
|
|
43
|
+
return Math.min(4, Math.max(1, cpu - 1));
|
|
44
|
+
}
|
|
45
|
+
async function mapLimit(items, limit, fn) {
|
|
46
|
+
const results = new Array(items.length);
|
|
47
|
+
let idx = 0;
|
|
48
|
+
const workers = new Array(Math.min(limit, items.length)).fill(0).map(async () => {
|
|
49
|
+
while (true) {
|
|
50
|
+
const my = idx++;
|
|
51
|
+
if (my >= items.length)
|
|
52
|
+
return;
|
|
53
|
+
const item = items[my];
|
|
54
|
+
results[my] = await fn(item);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
await Promise.all(workers);
|
|
58
|
+
return results;
|
|
59
|
+
}
|
|
60
|
+
function folderSyncHttpUrl(apiUrl) {
|
|
61
|
+
return `${apiUrl}/folder-sync`;
|
|
62
|
+
}
|
|
63
|
+
function u32be(n) {
|
|
64
|
+
const b = Buffer.allocUnsafe(4);
|
|
65
|
+
b.writeUInt32BE(n >>> 0, 0);
|
|
66
|
+
return b;
|
|
67
|
+
}
|
|
68
|
+
async function httpFolderSyncBatch(opts, meta, payloadFiles, compression) {
|
|
69
|
+
const url = folderSyncHttpUrl(opts.apiUrl);
|
|
70
|
+
const headers = {
|
|
71
|
+
// OpenAPI route expects application/octet-stream.
|
|
72
|
+
'Content-Type': 'application/octet-stream',
|
|
73
|
+
Authorization: `Bearer ${opts.token}`,
|
|
74
|
+
};
|
|
75
|
+
const metaBytes = Buffer.from(JSON.stringify(meta), 'utf-8');
|
|
76
|
+
const head = Buffer.concat([u32be(metaBytes.length), metaBytes]);
|
|
77
|
+
async function* gen() {
|
|
78
|
+
yield head;
|
|
79
|
+
for (const p of payloadFiles) {
|
|
80
|
+
const fd = await fs.promises.open(p.filePath, 'r');
|
|
81
|
+
try {
|
|
82
|
+
const st = await fd.stat();
|
|
83
|
+
let offset = 0;
|
|
84
|
+
while (offset < st.size) {
|
|
85
|
+
const len = Math.min(256 * 1024, st.size - offset);
|
|
86
|
+
const buf = Buffer.allocUnsafe(len);
|
|
87
|
+
const { bytesRead } = await fd.read(buf, 0, len, offset);
|
|
88
|
+
if (bytesRead <= 0)
|
|
89
|
+
break;
|
|
90
|
+
offset += bytesRead;
|
|
91
|
+
yield buf.subarray(0, bytesRead);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
await fd.close();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const sourceStream = Readable.from(gen());
|
|
100
|
+
let bodyStream;
|
|
101
|
+
if (compression === 'zstd') {
|
|
102
|
+
const createZstd = zlib.createZstdCompress;
|
|
103
|
+
if (!createZstd) {
|
|
104
|
+
throw new Error('zstd compression not available in this Node.js version');
|
|
105
|
+
}
|
|
106
|
+
bodyStream = sourceStream.pipe(createZstd({ level: 3 }));
|
|
107
|
+
headers['Content-Encoding'] = 'zstd';
|
|
108
|
+
}
|
|
109
|
+
else if (compression === 'gzip') {
|
|
110
|
+
const createGzip = zlib.createGzip;
|
|
111
|
+
if (!createGzip) {
|
|
112
|
+
throw new Error('gzip compression not available in this Node.js version');
|
|
113
|
+
}
|
|
114
|
+
bodyStream = sourceStream.pipe(createGzip({ level: 6 }));
|
|
115
|
+
headers['Content-Encoding'] = 'gzip';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
bodyStream = sourceStream;
|
|
119
|
+
}
|
|
120
|
+
const controller = new AbortController();
|
|
121
|
+
let streamError;
|
|
122
|
+
const onStreamError = (err) => {
|
|
123
|
+
streamError = err;
|
|
124
|
+
controller.abort();
|
|
125
|
+
};
|
|
126
|
+
sourceStream.on('error', onStreamError);
|
|
127
|
+
bodyStream.on('error', onStreamError);
|
|
128
|
+
const res = await fetch(url, {
|
|
129
|
+
method: 'POST',
|
|
130
|
+
headers,
|
|
131
|
+
body: bodyStream,
|
|
132
|
+
duplex: 'half',
|
|
133
|
+
signal: controller.signal,
|
|
134
|
+
}).catch((err) => {
|
|
135
|
+
if (streamError) {
|
|
136
|
+
throw streamError;
|
|
137
|
+
}
|
|
138
|
+
throw err;
|
|
139
|
+
});
|
|
140
|
+
const text = await res.text();
|
|
141
|
+
if (!res.ok) {
|
|
142
|
+
throw new Error(`folder-sync http failed: ${res.status} ${text}`);
|
|
143
|
+
}
|
|
144
|
+
return JSON.parse(text);
|
|
145
|
+
}
|
|
146
|
+
async function sha256FileHex(filePath) {
|
|
147
|
+
return await new Promise((resolve, reject) => {
|
|
148
|
+
const hash = crypto.createHash('sha256');
|
|
149
|
+
const stream = fs.createReadStream(filePath);
|
|
150
|
+
stream.on('data', (chunk) => hash.update(chunk));
|
|
151
|
+
stream.on('error', reject);
|
|
152
|
+
stream.on('end', () => resolve(hash.digest('hex')));
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async function walkFiles(root) {
|
|
156
|
+
const out = [];
|
|
157
|
+
const stack = [root];
|
|
158
|
+
const rootResolved = path.resolve(root);
|
|
159
|
+
while (stack.length) {
|
|
160
|
+
const dir = stack.pop();
|
|
161
|
+
const entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
162
|
+
for (const ent of entries) {
|
|
163
|
+
if (ent.name === '.DS_Store')
|
|
164
|
+
continue;
|
|
165
|
+
const abs = path.join(dir, ent.name);
|
|
166
|
+
if (ent.isDirectory()) {
|
|
167
|
+
stack.push(abs);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (!ent.isFile())
|
|
171
|
+
continue;
|
|
172
|
+
const st = await fs.promises.stat(abs);
|
|
173
|
+
const rel = path.relative(rootResolved, abs).split(path.sep).join('/');
|
|
174
|
+
const sha256 = await sha256FileHex(abs);
|
|
175
|
+
// Preserve POSIX permission bits (including +x). Mask out file-type bits.
|
|
176
|
+
const mode = st.mode & 0o7777;
|
|
177
|
+
out.push({ path: rel, size: st.size, sha256, absPath: abs, mode });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
out.sort((a, b) => a.path.localeCompare(b.path));
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
let xdelta3Ready = null;
|
|
184
|
+
async function ensureXdelta3() {
|
|
185
|
+
if (!xdelta3Ready) {
|
|
186
|
+
xdelta3Ready = new Promise((resolve, reject) => {
|
|
187
|
+
const p = spawn('xdelta3', ['-V']);
|
|
188
|
+
p.on('error', reject);
|
|
189
|
+
p.on('exit', (code) => {
|
|
190
|
+
if (code === 0)
|
|
191
|
+
resolve();
|
|
192
|
+
else
|
|
193
|
+
reject(new Error(`xdelta3 not available (exit=${code})`));
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return await xdelta3Ready;
|
|
198
|
+
}
|
|
199
|
+
async function runXdelta3Encode(basis, target, outPatch) {
|
|
200
|
+
await new Promise((resolve, reject) => {
|
|
201
|
+
const p = spawn('xdelta3', ['-e', '-s', basis, target, outPatch], {
|
|
202
|
+
stdio: ['ignore', 'ignore', 'pipe'],
|
|
203
|
+
});
|
|
204
|
+
let stderr = '';
|
|
205
|
+
p.stderr.on('data', (d) => (stderr += d.toString()));
|
|
206
|
+
p.on('error', reject);
|
|
207
|
+
p.on('exit', (code) => {
|
|
208
|
+
if (code === 0)
|
|
209
|
+
resolve();
|
|
210
|
+
else
|
|
211
|
+
reject(new Error(`xdelta3 encode failed (exit=${code}): ${stderr.trim()}`));
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
function localBasisCacheRoot(opts, localFolderPath) {
|
|
216
|
+
const hostKey = opts.apiUrl.replace(/[:/]+/g, '_');
|
|
217
|
+
const resolved = path.resolve(localFolderPath);
|
|
218
|
+
const base = path.basename(resolved);
|
|
219
|
+
const hash = crypto.createHash('sha1').update(resolved).digest('hex').slice(0, 8);
|
|
220
|
+
const rootOverride = opts.basisCacheDir ?
|
|
221
|
+
path.resolve(process.cwd(), opts.basisCacheDir)
|
|
222
|
+
: path.join(process.cwd(), '.lim-metadata-cache');
|
|
223
|
+
// Include folder identity to avoid collisions between different roots.
|
|
224
|
+
return path.join(rootOverride, 'folder-sync', hostKey, opts.udid, `${base}-${hash}`);
|
|
225
|
+
}
|
|
226
|
+
async function cachePut(cacheRoot, relPath, srcFile) {
|
|
227
|
+
const dst = path.join(cacheRoot, relPath.split('/').join(path.sep));
|
|
228
|
+
await fs.promises.mkdir(path.dirname(dst), { recursive: true });
|
|
229
|
+
await fs.promises.copyFile(srcFile, dst);
|
|
230
|
+
}
|
|
231
|
+
function cacheGet(cacheRoot, relPath) {
|
|
232
|
+
return path.join(cacheRoot, relPath.split('/').join(path.sep));
|
|
233
|
+
}
|
|
234
|
+
export async function syncApp(localFolderPath, opts) {
|
|
235
|
+
if (!opts.watch) {
|
|
236
|
+
return await syncFolderOnce(localFolderPath, opts);
|
|
237
|
+
}
|
|
238
|
+
// Initial sync, then watch for changes and re-run sync in the background.
|
|
239
|
+
const first = await syncFolderOnce(localFolderPath, opts, 'startup');
|
|
240
|
+
let inFlight = false;
|
|
241
|
+
let queued = false;
|
|
242
|
+
const run = async (reason) => {
|
|
243
|
+
if (inFlight) {
|
|
244
|
+
queued = true;
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
inFlight = true;
|
|
248
|
+
try {
|
|
249
|
+
await syncFolderOnce(localFolderPath, opts, reason);
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
inFlight = false;
|
|
253
|
+
if (queued) {
|
|
254
|
+
queued = false;
|
|
255
|
+
void run('queued-changes');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
const watcherLog = (level, msg) => {
|
|
260
|
+
(opts.log ?? noopLogger)(level, `syncApp: ${msg}`);
|
|
261
|
+
};
|
|
262
|
+
const watcher = await watchFolderTree({
|
|
263
|
+
rootPath: localFolderPath,
|
|
264
|
+
log: watcherLog,
|
|
265
|
+
onChange: (reason) => {
|
|
266
|
+
void run(reason);
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
return {
|
|
270
|
+
...first,
|
|
271
|
+
stopWatching: () => {
|
|
272
|
+
watcher.close();
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
// Back-compat alias (older callers)
|
|
277
|
+
export async function syncFolder(localFolderPath, opts) {
|
|
278
|
+
return await syncApp(localFolderPath, opts);
|
|
279
|
+
}
|
|
280
|
+
async function syncFolderOnce(localFolderPath, opts, reason, attempt = 0) {
|
|
281
|
+
const totalStart = nowMs();
|
|
282
|
+
const log = opts.log ?? noopLogger;
|
|
283
|
+
const slog = (level, msg) => log(level, `syncApp: ${msg}`);
|
|
284
|
+
const maxPatchBytes = opts.maxPatchBytes ?? 4 * 1024 * 1024;
|
|
285
|
+
const tEnsureStart = nowMs();
|
|
286
|
+
await ensureXdelta3();
|
|
287
|
+
const tEnsureMs = nowMs() - tEnsureStart;
|
|
288
|
+
const tWalkStart = nowMs();
|
|
289
|
+
const files = await walkFiles(localFolderPath);
|
|
290
|
+
const tWalkMs = nowMs() - tWalkStart;
|
|
291
|
+
const fileMap = new Map(files.map((f) => [f.path, f]));
|
|
292
|
+
const syncId = genId('sync');
|
|
293
|
+
const rootName = path.basename(path.resolve(localFolderPath));
|
|
294
|
+
const preferredCompression = zlib.createZstdCompress ? 'zstd' : 'gzip';
|
|
295
|
+
const cacheRoot = localBasisCacheRoot(opts, localFolderPath);
|
|
296
|
+
await fs.promises.mkdir(cacheRoot, { recursive: true });
|
|
297
|
+
// Track how many bytes we actually transmit to the server (single HTTP request).
|
|
298
|
+
let bytesSentFull = 0;
|
|
299
|
+
let bytesSentDelta = 0;
|
|
300
|
+
let httpSendMsTotal = 0;
|
|
301
|
+
let deltaEncodeMsTotal = 0;
|
|
302
|
+
// Build payload list by comparing against local basis cache (single-flight/watch assumes server matches cache).
|
|
303
|
+
const encodeLimit = concurrencyLimit();
|
|
304
|
+
const changed = [];
|
|
305
|
+
for (const f of files) {
|
|
306
|
+
const basisPath = cacheGet(cacheRoot, f.path);
|
|
307
|
+
if (!fs.existsSync(basisPath)) {
|
|
308
|
+
changed.push(f);
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
const basisSha = await sha256FileHex(basisPath);
|
|
312
|
+
if (basisSha !== f.sha256.toLowerCase()) {
|
|
313
|
+
changed.push(f);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const encodedPayloads = await mapLimit(changed, encodeLimit, async (f) => {
|
|
317
|
+
const basisPath = cacheGet(cacheRoot, f.path);
|
|
318
|
+
if (fs.existsSync(basisPath)) {
|
|
319
|
+
const basisSha = await sha256FileHex(basisPath);
|
|
320
|
+
const tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'limulator-xdelta3-'));
|
|
321
|
+
const patchPath = path.join(tmpDir, 'patch.xdelta3');
|
|
322
|
+
const encodeStart = nowMs();
|
|
323
|
+
await runXdelta3Encode(basisPath, f.absPath, patchPath);
|
|
324
|
+
const encodeMs = nowMs() - encodeStart;
|
|
325
|
+
deltaEncodeMsTotal += encodeMs;
|
|
326
|
+
const st = await fs.promises.stat(patchPath);
|
|
327
|
+
if (st.size <= maxPatchBytes) {
|
|
328
|
+
slog('debug', `delta(file): ${path.posix.basename(f.path)} patchSize=${st.size} encode=${fmtMs(encodeMs)}`);
|
|
329
|
+
bytesSentDelta += st.size;
|
|
330
|
+
return {
|
|
331
|
+
payload: {
|
|
332
|
+
kind: 'delta',
|
|
333
|
+
path: f.path,
|
|
334
|
+
basisSha256: basisSha.toLowerCase(),
|
|
335
|
+
targetSha256: f.sha256.toLowerCase(),
|
|
336
|
+
length: st.size,
|
|
337
|
+
},
|
|
338
|
+
filePath: patchPath,
|
|
339
|
+
cleanupDir: tmpDir,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
// Patch too big, fall back to full
|
|
343
|
+
try {
|
|
344
|
+
await fs.promises.rm(tmpDir, { recursive: true, force: true });
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
// ignore
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
slog('debug', `full(file): ${f.path} size=${f.size}`);
|
|
351
|
+
bytesSentFull += f.size;
|
|
352
|
+
return {
|
|
353
|
+
payload: { kind: 'full', path: f.path, targetSha256: f.sha256.toLowerCase(), length: f.size },
|
|
354
|
+
filePath: f.absPath,
|
|
355
|
+
};
|
|
356
|
+
});
|
|
357
|
+
const meta = {
|
|
358
|
+
id: syncId,
|
|
359
|
+
rootName,
|
|
360
|
+
install: opts.install ?? true,
|
|
361
|
+
...(opts.launchMode ? { launchMode: opts.launchMode } : {}),
|
|
362
|
+
files: files.map((f) => ({ path: f.path, size: f.size, sha256: f.sha256.toLowerCase(), mode: f.mode })),
|
|
363
|
+
payloads: encodedPayloads.map((p) => p.payload),
|
|
364
|
+
};
|
|
365
|
+
const hasDelta = encodedPayloads.some((p) => p.payload.kind === 'delta');
|
|
366
|
+
const compression = hasDelta ? 'identity' : preferredCompression;
|
|
367
|
+
slog('info', `sync started files=${files.length}${reason ? ` reason=${reason}` : ''} compression=${compression}`);
|
|
368
|
+
const sendStart = nowMs();
|
|
369
|
+
let resp;
|
|
370
|
+
try {
|
|
371
|
+
resp = await httpFolderSyncBatch(opts, meta, encodedPayloads.map((p) => ({ filePath: p.filePath })), compression);
|
|
372
|
+
}
|
|
373
|
+
catch (err) {
|
|
374
|
+
if (attempt < 1 && isENOENT(err)) {
|
|
375
|
+
slog('warn', `sync retrying after missing file during upload (ENOENT)`);
|
|
376
|
+
return await syncFolderOnce(localFolderPath, opts, reason, attempt + 1);
|
|
377
|
+
}
|
|
378
|
+
throw err;
|
|
379
|
+
}
|
|
380
|
+
httpSendMsTotal += nowMs() - sendStart;
|
|
381
|
+
// Retry once if server needs full for some paths (basis mismatch).
|
|
382
|
+
if (!resp.ok && resp.needFull && resp.needFull.length > 0) {
|
|
383
|
+
const need = new Set(resp.needFull);
|
|
384
|
+
const retryPayloads = [];
|
|
385
|
+
for (const p of need) {
|
|
386
|
+
const entry = fileMap.get(p);
|
|
387
|
+
if (!entry)
|
|
388
|
+
continue;
|
|
389
|
+
retryPayloads.push({
|
|
390
|
+
payload: {
|
|
391
|
+
kind: 'full',
|
|
392
|
+
path: entry.path,
|
|
393
|
+
targetSha256: entry.sha256.toLowerCase(),
|
|
394
|
+
length: entry.size,
|
|
395
|
+
},
|
|
396
|
+
filePath: entry.absPath,
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
if (retryPayloads.length > 0) {
|
|
400
|
+
slog('warn', `server requested full for ${retryPayloads.length} files; retrying once`);
|
|
401
|
+
const retryMeta = {
|
|
402
|
+
...meta,
|
|
403
|
+
id: genId('sync'),
|
|
404
|
+
payloads: retryPayloads.map((p) => p.payload),
|
|
405
|
+
};
|
|
406
|
+
const retryStart = nowMs();
|
|
407
|
+
resp = await httpFolderSyncBatch(opts, retryMeta, retryPayloads.map((p) => ({ filePath: p.filePath })), preferredCompression);
|
|
408
|
+
httpSendMsTotal += nowMs() - retryStart;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
// Cleanup patch temp dirs
|
|
412
|
+
await Promise.all(encodedPayloads.map(async (p) => {
|
|
413
|
+
if (!p.cleanupDir)
|
|
414
|
+
return;
|
|
415
|
+
try {
|
|
416
|
+
await fs.promises.rm(p.cleanupDir, { recursive: true, force: true });
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
// ignore
|
|
420
|
+
}
|
|
421
|
+
}));
|
|
422
|
+
// Sync work includes: local hashing + planning + transfers (but excludes finalize/install wait).
|
|
423
|
+
const syncWorkMs = nowMs() - totalStart;
|
|
424
|
+
if (!resp.ok) {
|
|
425
|
+
throw new Error(resp.error ?? 'sync failed');
|
|
426
|
+
}
|
|
427
|
+
const tookMs = nowMs() - totalStart;
|
|
428
|
+
const totalBytes = bytesSentFull + bytesSentDelta;
|
|
429
|
+
slog('info', `sync finished files=${files.length} sent=${fmtBytes(totalBytes)} syncWork=${fmtMs(syncWorkMs)} total=${fmtMs(tookMs)}`);
|
|
430
|
+
slog('debug', `sync bytes full=${fmtBytes(bytesSentFull)} delta=${fmtBytes(bytesSentDelta)}`);
|
|
431
|
+
slog('debug', `timing ensureXdelta3=${fmtMs(tEnsureMs)} walk=${fmtMs(tWalkMs)} httpSend=${fmtMs(httpSendMsTotal)} deltaEncode=${fmtMs(deltaEncodeMsTotal)}`);
|
|
432
|
+
const out = {};
|
|
433
|
+
if (resp.installedAppPath) {
|
|
434
|
+
out.installedAppPath = resp.installedAppPath;
|
|
435
|
+
}
|
|
436
|
+
if (resp.bundleId) {
|
|
437
|
+
out.installedBundleId = resp.bundleId;
|
|
438
|
+
}
|
|
439
|
+
// Update local cache optimistically: after a successful sync, cache reflects current local tree.
|
|
440
|
+
for (const f of files) {
|
|
441
|
+
await cachePut(cacheRoot, f.path, f.absPath);
|
|
442
|
+
}
|
|
443
|
+
return out;
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=folder-sync.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder-sync.mjs","sourceRoot":"","sources":["src/folder-sync.ts"],"names":[],"mappings":"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"}
|
package/ios-client.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import { type SyncFolderResult } from "./folder-sync.mjs";
|
|
2
3
|
/**
|
|
3
4
|
* Connection state of the instance client
|
|
4
5
|
*/
|
|
@@ -207,6 +208,15 @@ export type InstanceClient = {
|
|
|
207
208
|
coordinate?: [number, number];
|
|
208
209
|
momentum?: number;
|
|
209
210
|
}) => Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Sync an iOS app bundle folder to the server and (optionally) install/launch it.
|
|
213
|
+
*/
|
|
214
|
+
syncApp: (localAppBundlePath: string, opts?: {
|
|
215
|
+
install?: boolean;
|
|
216
|
+
maxPatchBytes?: number;
|
|
217
|
+
launchMode?: 'ForegroundIfRunning' | 'RelaunchIfRunning' | 'FailIfRunning';
|
|
218
|
+
watch?: boolean;
|
|
219
|
+
}) => Promise<SyncFolderResult>;
|
|
210
220
|
/**
|
|
211
221
|
* Disconnect from the Limrun instance
|
|
212
222
|
*/
|
|
@@ -303,9 +313,9 @@ export type InstanceClient = {
|
|
|
303
313
|
* Run `xcodebuild` command with the given arguments.
|
|
304
314
|
* Returns the complete output once the command finishes (non-streaming).
|
|
305
315
|
*
|
|
306
|
-
* Only `-version` is allowed.
|
|
316
|
+
* Only `-version` is allowed (validated server-side).
|
|
307
317
|
*
|
|
308
|
-
* @param args Arguments to pass to xcodebuild
|
|
318
|
+
* @param args Arguments to pass to xcodebuild
|
|
309
319
|
* @returns A promise that resolves to the command result with stdout, stderr, and exit code
|
|
310
320
|
*
|
|
311
321
|
* @example
|
|
@@ -317,7 +327,7 @@ export type InstanceClient = {
|
|
|
317
327
|
* // Build version 16A242d
|
|
318
328
|
* ```
|
|
319
329
|
*/
|
|
320
|
-
xcodebuild: (args: [
|
|
330
|
+
xcodebuild: (args: string[]) => Promise<CommandResult>;
|
|
321
331
|
/**
|
|
322
332
|
* List all open files on the instance. Useful to start tunnel to the
|
|
323
333
|
* UNIX sockets listed here.
|
package/ios-client.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios-client.d.mts","sourceRoot":"","sources":["src/ios-client.ts"],"names":[],"mappings":"OAEO,EAAE,YAAY,EAAE,MAAM,QAAQ;
|
|
1
|
+
{"version":3,"file":"ios-client.d.mts","sourceRoot":"","sources":["src/ios-client.ts"],"names":[],"mappings":"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"}
|
package/ios-client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import { type SyncFolderResult } from "./folder-sync.js";
|
|
2
3
|
/**
|
|
3
4
|
* Connection state of the instance client
|
|
4
5
|
*/
|
|
@@ -207,6 +208,15 @@ export type InstanceClient = {
|
|
|
207
208
|
coordinate?: [number, number];
|
|
208
209
|
momentum?: number;
|
|
209
210
|
}) => Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Sync an iOS app bundle folder to the server and (optionally) install/launch it.
|
|
213
|
+
*/
|
|
214
|
+
syncApp: (localAppBundlePath: string, opts?: {
|
|
215
|
+
install?: boolean;
|
|
216
|
+
maxPatchBytes?: number;
|
|
217
|
+
launchMode?: 'ForegroundIfRunning' | 'RelaunchIfRunning' | 'FailIfRunning';
|
|
218
|
+
watch?: boolean;
|
|
219
|
+
}) => Promise<SyncFolderResult>;
|
|
210
220
|
/**
|
|
211
221
|
* Disconnect from the Limrun instance
|
|
212
222
|
*/
|
|
@@ -303,9 +313,9 @@ export type InstanceClient = {
|
|
|
303
313
|
* Run `xcodebuild` command with the given arguments.
|
|
304
314
|
* Returns the complete output once the command finishes (non-streaming).
|
|
305
315
|
*
|
|
306
|
-
* Only `-version` is allowed.
|
|
316
|
+
* Only `-version` is allowed (validated server-side).
|
|
307
317
|
*
|
|
308
|
-
* @param args Arguments to pass to xcodebuild
|
|
318
|
+
* @param args Arguments to pass to xcodebuild
|
|
309
319
|
* @returns A promise that resolves to the command result with stdout, stderr, and exit code
|
|
310
320
|
*
|
|
311
321
|
* @example
|
|
@@ -317,7 +327,7 @@ export type InstanceClient = {
|
|
|
317
327
|
* // Build version 16A242d
|
|
318
328
|
* ```
|
|
319
329
|
*/
|
|
320
|
-
xcodebuild: (args: [
|
|
330
|
+
xcodebuild: (args: string[]) => Promise<CommandResult>;
|
|
321
331
|
/**
|
|
322
332
|
* List all open files on the instance. Useful to start tunnel to the
|
|
323
333
|
* UNIX sockets listed here.
|
package/ios-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios-client.d.ts","sourceRoot":"","sources":["src/ios-client.ts"],"names":[],"mappings":"OAEO,EAAE,YAAY,EAAE,MAAM,QAAQ;
|
|
1
|
+
{"version":3,"file":"ios-client.d.ts","sourceRoot":"","sources":["src/ios-client.ts"],"names":[],"mappings":"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"}
|