@instawp/cli 0.0.1-beta.10 → 0.0.1-beta.11

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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.1-beta.11 (2026-05-26)
4
+
5
+ ### Improved — parallel SFTP transfers on Windows
6
+ - Windows file sync now transfers files across a **pool of parallel SSH connections** instead of one-at-a-time. Measured ~2.9× speedup (a 238-file wp-content pull dropped from ~369s to ~129s).
7
+ - Concurrency defaults to 4, configurable via `INSTAWP_SFTP_CONCURRENCY` (capped at 8).
8
+ - Two-phase design: a single control connection walks the tree and pre-creates directories, then files transfer in parallel. Per-file errors are collected and reported without aborting the whole sync.
9
+
3
10
  ## 0.0.1-beta.10 (2026-05-26)
4
11
 
5
12
  ### Fixed — Windows file sync now works
@@ -20,5 +20,10 @@ export declare function makeMatcher(patterns: string[]): (name: string, relPath:
20
20
  * Windows OpenSSH (incompatible pipe/signal semantics), so on Windows we use
21
21
  * a pure-JS SSH client instead. No delta algorithm — full-file copy — but
22
22
  * reliable and dependency-free of native binaries.
23
+ *
24
+ * Strategy: one "control" connection walks the tree (cheap listing) and
25
+ * pre-creates directories, building a flat list of file tasks. Files are then
26
+ * transferred across a pool of N parallel connections (INSTAWP_SFTP_CONCURRENCY,
27
+ * default 4) to hide per-file SSH round-trip latency.
23
28
  */
24
29
  export declare function syncViaSftp(conn: SshConnection, opts: SftpSyncOptions): Promise<number>;
@@ -82,43 +82,60 @@ export function makeMatcher(patterns) {
82
82
  return false;
83
83
  };
84
84
  }
85
+ const DEFAULT_CONCURRENCY = 4;
86
+ const MAX_CONCURRENCY = 8;
87
+ function resolveConcurrency() {
88
+ const raw = parseInt(process.env.INSTAWP_SFTP_CONCURRENCY || '', 10);
89
+ if (!Number.isFinite(raw) || raw < 1)
90
+ return DEFAULT_CONCURRENCY;
91
+ return Math.min(raw, MAX_CONCURRENCY);
92
+ }
85
93
  /**
86
94
  * Recursively transfer a directory tree over SFTP. This is the Windows
87
95
  * replacement for rsync-over-ssh: bundled msys rsync can't talk to native
88
96
  * Windows OpenSSH (incompatible pipe/signal semantics), so on Windows we use
89
97
  * a pure-JS SSH client instead. No delta algorithm — full-file copy — but
90
98
  * reliable and dependency-free of native binaries.
99
+ *
100
+ * Strategy: one "control" connection walks the tree (cheap listing) and
101
+ * pre-creates directories, building a flat list of file tasks. Files are then
102
+ * transferred across a pool of N parallel connections (INSTAWP_SFTP_CONCURRENCY,
103
+ * default 4) to hide per-file SSH round-trip latency.
91
104
  */
92
105
  export async function syncViaSftp(conn, opts) {
93
106
  const isExcluded = makeMatcher(opts.excludes);
94
107
  const isIncluded = makeMatcher(opts.includes ?? []);
95
- // Always skip these (rsync defaults we hardcoded).
96
108
  const skip = (name, relPath) => {
97
109
  if (isIncluded(name, relPath))
98
110
  return false;
99
111
  return isExcluded(name, relPath);
100
112
  };
101
- const client = new SftpClient();
102
- let transferred = 0;
103
113
  const auth = buildAuth(conn);
104
114
  if (!auth.privateKey && !auth.agent) {
105
115
  opts.onItem?.('error', 'SSH key appears encrypted and no ssh-agent is available. ' +
106
116
  'Load the key into ssh-agent, or set INSTAWP_SSH_PASSPHRASE.');
107
117
  return 1;
108
118
  }
119
+ const connectCfg = {
120
+ host: conn.host,
121
+ port: conn.port,
122
+ username: conn.username,
123
+ ...auth,
124
+ readyTimeout: 30000,
125
+ };
126
+ const remoteRoot = opts.remotePath.replace(/\/+$/, '');
127
+ const localRoot = opts.localPath.replace(/[\\/]+$/, '');
128
+ const tasks = [];
129
+ // --- Phase 1: walk the tree on a single control connection, build the task
130
+ // list, and pre-create destination directories. ---
131
+ const control = new SftpClient();
109
132
  try {
110
- await client.connect({
111
- host: conn.host,
112
- port: conn.port,
113
- username: conn.username,
114
- ...auth,
115
- readyTimeout: 30000,
116
- });
133
+ await control.connect(connectCfg);
117
134
  if (opts.direction === 'pull') {
118
- const pullDir = async (remoteDir, localDir) => {
135
+ const walkPull = async (remoteDir, localDir) => {
119
136
  let entries;
120
137
  try {
121
- entries = await client.list(remoteDir);
138
+ entries = await control.list(remoteDir);
122
139
  }
123
140
  catch {
124
141
  return; // remote dir missing — nothing to pull
@@ -126,66 +143,124 @@ export async function syncViaSftp(conn, opts) {
126
143
  if (!opts.dryRun)
127
144
  mkdirSync(localDir, { recursive: true });
128
145
  for (const e of entries) {
129
- const relPath = posix.relative(opts.remotePath.replace(/\/+$/, ''), posix.join(remoteDir, e.name));
130
- if (skip(e.name, relPath))
146
+ const rel = posix.relative(remoteRoot, posix.join(remoteDir, e.name));
147
+ if (skip(e.name, rel))
131
148
  continue;
132
149
  const remoteChild = posix.join(remoteDir, e.name);
133
150
  const localChild = join(localDir, e.name);
134
151
  if (e.type === 'd') {
135
- await pullDir(remoteChild, localChild);
152
+ await walkPull(remoteChild, localChild);
136
153
  }
137
154
  else if (e.type === '-') {
138
- if (!opts.dryRun)
139
- await client.fastGet(remoteChild, localChild);
140
- transferred++;
141
- opts.onItem?.('recv', relPath);
155
+ tasks.push({ remote: remoteChild, local: localChild, rel });
142
156
  }
143
157
  // symlinks (type 'l') are skipped — rare in wp-content
144
158
  }
145
159
  };
146
- await pullDir(opts.remotePath.replace(/\/+$/, ''), opts.localPath.replace(/[\\/]+$/, ''));
160
+ await walkPull(remoteRoot, localRoot);
147
161
  }
148
162
  else {
149
- const remoteRoot = opts.remotePath.replace(/\/+$/, '');
150
- const localRoot = opts.localPath.replace(/[\\/]+$/, '');
151
- const pushDir = async (localDir, remoteDir) => {
163
+ // Push: walk the local tree (fs, no round-trips) and collect remote dirs.
164
+ const remoteDirs = new Set();
165
+ const walkPush = (localDir, remoteDir) => {
152
166
  if (!existsSync(localDir))
153
167
  return;
154
- if (!opts.dryRun) {
155
- const exists = await client.exists(remoteDir);
156
- if (!exists)
157
- await client.mkdir(remoteDir, true);
158
- }
168
+ remoteDirs.add(remoteDir);
159
169
  for (const entry of readdirSync(localDir, { withFileTypes: true })) {
160
170
  const localChild = join(localDir, entry.name);
161
171
  const remoteChild = posix.join(remoteDir, entry.name);
162
- const relPath = posix.relative(remoteRoot, remoteChild);
163
- if (skip(entry.name, relPath))
172
+ const rel = posix.relative(remoteRoot, remoteChild);
173
+ if (skip(entry.name, rel))
164
174
  continue;
165
175
  if (entry.isDirectory()) {
166
- await pushDir(localChild, remoteChild);
176
+ walkPush(localChild, remoteChild);
167
177
  }
168
178
  else if (entry.isFile()) {
169
- if (!opts.dryRun)
170
- await client.fastPut(localChild, remoteChild);
171
- transferred++;
172
- opts.onItem?.('sent', relPath);
179
+ tasks.push({ remote: remoteChild, local: localChild, rel });
173
180
  }
174
181
  }
175
182
  };
176
- await pushDir(localRoot, remoteRoot);
183
+ walkPush(localRoot, remoteRoot);
184
+ // Pre-create remote dirs shallow-first so parallel uploads have targets.
185
+ if (!opts.dryRun) {
186
+ for (const dir of [...remoteDirs].sort((a, b) => a.length - b.length)) {
187
+ try {
188
+ if (!(await control.exists(dir)))
189
+ await control.mkdir(dir, true);
190
+ }
191
+ catch { /* mkdir races / already exists — ignore */ }
192
+ }
193
+ }
177
194
  }
178
- return 0;
179
195
  }
180
196
  catch (err) {
181
197
  opts.onItem?.('error', err?.message || String(err));
198
+ try {
199
+ await control.end();
200
+ }
201
+ catch { /* ignore */ }
182
202
  return 1;
183
203
  }
184
- finally {
204
+ const total = tasks.length;
205
+ if (opts.dryRun) {
206
+ for (const t of tasks)
207
+ opts.onItem?.(opts.direction === 'pull' ? 'recv' : 'sent', t.rel);
208
+ try {
209
+ await control.end();
210
+ }
211
+ catch { /* ignore */ }
212
+ return 0;
213
+ }
214
+ if (total === 0) {
185
215
  try {
186
- await client.end();
216
+ await control.end();
187
217
  }
188
218
  catch { /* ignore */ }
219
+ return 0;
220
+ }
221
+ // --- Phase 2: transfer files across a pool of N connections. ---
222
+ const concurrency = Math.min(resolveConcurrency(), total);
223
+ const verb = opts.direction === 'pull' ? 'recv' : 'sent';
224
+ const transfer = (c, t) => opts.direction === 'pull' ? c.fastGet(t.remote, t.local) : c.fastPut(t.local, t.remote);
225
+ // Reuse the control connection as the first worker; open the rest.
226
+ const workers = [control];
227
+ try {
228
+ for (let i = 1; i < concurrency; i++) {
229
+ const w = new SftpClient();
230
+ await w.connect(connectCfg);
231
+ workers.push(w);
232
+ }
233
+ }
234
+ catch (err) {
235
+ // If extra workers fail to connect, proceed with whatever connected.
236
+ opts.onItem?.('error', `only ${workers.length}/${concurrency} connections opened: ${err?.message || err}`);
237
+ }
238
+ let next = 0;
239
+ let done = 0;
240
+ let errors = 0;
241
+ const runWorker = async (c) => {
242
+ while (true) {
243
+ const i = next++; // synchronous claim — safe in single-threaded JS
244
+ if (i >= total)
245
+ break;
246
+ const t = tasks[i];
247
+ try {
248
+ await transfer(c, t);
249
+ done++;
250
+ opts.onItem?.(verb, `[${done}/${total}] ${t.rel}`);
251
+ }
252
+ catch (e) {
253
+ errors++;
254
+ opts.onItem?.('error', `${t.rel}: ${e?.message || e}`);
255
+ }
256
+ }
257
+ };
258
+ try {
259
+ await Promise.all(workers.map(runWorker));
260
+ }
261
+ finally {
262
+ await Promise.all(workers.map(w => w.end().catch(() => { })));
189
263
  }
264
+ return errors === 0 ? 0 : 1;
190
265
  }
191
266
  //# sourceMappingURL=sftp-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sftp-sync.js","sourceRoot":"","sources":["../../src/lib/sftp-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sftp-sync.js","sourceRoot":"","sources":["../../src/lib/sftp-sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instawp/cli",
3
- "version": "0.0.1-beta.10",
3
+ "version": "0.0.1-beta.11",
4
4
  "description": "InstaWP CLI - Create and manage WordPress sites from the terminal",
5
5
  "type": "module",
6
6
  "bin": {