rightsize 0.7.6 → 0.7.8

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.
@@ -147,15 +147,36 @@ export declare class DockerBackend implements SandboxBackend {
147
147
  close(): Promise<void>;
148
148
  /**
149
149
  * Synchronous, blocking teardown for the process-exit path. Node has no
150
- * synchronous HTTP client, so this shells out to `curl --unix-socket` via
151
- * `child_process.spawnSync` curl ships on macOS and virtually every
152
- * Linux CI image, and `spawnSync` genuinely blocks the exiting process the
153
- * way the `"exit"` handler requires. If curl is unavailable, this is a
150
+ * synchronous HTTP client, so this shells out via `child_process.spawnSync`
151
+ * — which genuinely blocks the exiting process the way the `"exit"`
152
+ * handler requires to whichever command `cleanupSyncCommand` resolves
153
+ * for the current platform. If that command is unavailable, this is a
154
154
  * silent no-op: the label-scoped orphan reaper each backend runs at
155
155
  * startup (`close()`'s own reaping plus the next run's sweep) is the real
156
156
  * safety net for that case, not this best-effort fast path.
157
157
  */
158
158
  cleanupSync(id: string): void;
159
159
  }
160
+ /**
161
+ * The `spawnSync` invocation `cleanupSync` runs for one container id, given
162
+ * the resolved platform and the client's own socket path — kept pure and
163
+ * separate from `cleanupSync` so the platform split can be exercised
164
+ * without actually spawning a process (mirrors the `DockerCli` object's own
165
+ * pure-argv-vs-`runDockerCli`-executor split in `cli.ts`).
166
+ *
167
+ * POSIX dials the daemon's unix socket directly over `curl --unix-socket` —
168
+ * unchanged from before this function existed. Windows cannot reuse that:
169
+ * curl's `--unix-socket` dials an AF_UNIX domain socket, a fundamentally
170
+ * different IPC mechanism from a Windows named pipe, so that invocation can
171
+ * never reach the daemon there, daemon up or not. Windows instead shells out
172
+ * to the `docker` CLI itself, which already resolves the daemon's endpoint
173
+ * (the named pipe by default, or `DOCKER_HOST`) on its own; `docker rm -f`
174
+ * is already a hard dependency of this backend's reaper watchdog (see
175
+ * `reaperKillCommand`), so this introduces no new precondition on Windows.
176
+ */
177
+ export declare function cleanupSyncCommand(processPlatform: string, socketPath: string, id: string): {
178
+ readonly command: string;
179
+ readonly args: readonly string[];
180
+ };
160
181
  export {};
161
182
  //# sourceMappingURL=backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/backend-docker/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/backend-docker/backend.ts"],"names":[],"mappings":"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"}
@@ -477,31 +477,57 @@ export class DockerBackend {
477
477
  }
478
478
  /**
479
479
  * Synchronous, blocking teardown for the process-exit path. Node has no
480
- * synchronous HTTP client, so this shells out to `curl --unix-socket` via
481
- * `child_process.spawnSync` curl ships on macOS and virtually every
482
- * Linux CI image, and `spawnSync` genuinely blocks the exiting process the
483
- * way the `"exit"` handler requires. If curl is unavailable, this is a
480
+ * synchronous HTTP client, so this shells out via `child_process.spawnSync`
481
+ * — which genuinely blocks the exiting process the way the `"exit"`
482
+ * handler requires to whichever command `cleanupSyncCommand` resolves
483
+ * for the current platform. If that command is unavailable, this is a
484
484
  * silent no-op: the label-scoped orphan reaper each backend runs at
485
485
  * startup (`close()`'s own reaping plus the next run's sweep) is the real
486
486
  * safety net for that case, not this best-effort fast path.
487
487
  */
488
488
  cleanupSync(id) {
489
- const socketPath = this.client.getSocketPath();
489
+ const { command, args } = cleanupSyncCommand(process.platform, this.client.getSocketPath(), id);
490
490
  try {
491
- spawnSync("curl", [
492
- "--silent",
493
- "--max-time",
494
- "5",
495
- "--unix-socket",
496
- socketPath,
497
- "-X",
498
- "DELETE",
499
- `http://localhost/containers/${id}?force=true`,
500
- ]);
491
+ spawnSync(command, args);
501
492
  }
502
493
  catch {
503
494
  // Best-effort — see the doc above.
504
495
  }
505
496
  }
506
497
  }
498
+ /**
499
+ * The `spawnSync` invocation `cleanupSync` runs for one container id, given
500
+ * the resolved platform and the client's own socket path — kept pure and
501
+ * separate from `cleanupSync` so the platform split can be exercised
502
+ * without actually spawning a process (mirrors the `DockerCli` object's own
503
+ * pure-argv-vs-`runDockerCli`-executor split in `cli.ts`).
504
+ *
505
+ * POSIX dials the daemon's unix socket directly over `curl --unix-socket` —
506
+ * unchanged from before this function existed. Windows cannot reuse that:
507
+ * curl's `--unix-socket` dials an AF_UNIX domain socket, a fundamentally
508
+ * different IPC mechanism from a Windows named pipe, so that invocation can
509
+ * never reach the daemon there, daemon up or not. Windows instead shells out
510
+ * to the `docker` CLI itself, which already resolves the daemon's endpoint
511
+ * (the named pipe by default, or `DOCKER_HOST`) on its own; `docker rm -f`
512
+ * is already a hard dependency of this backend's reaper watchdog (see
513
+ * `reaperKillCommand`), so this introduces no new precondition on Windows.
514
+ */
515
+ export function cleanupSyncCommand(processPlatform, socketPath, id) {
516
+ if (processPlatform === "win32") {
517
+ return { command: "docker", args: ["rm", "-f", id] };
518
+ }
519
+ return {
520
+ command: "curl",
521
+ args: [
522
+ "--silent",
523
+ "--max-time",
524
+ "5",
525
+ "--unix-socket",
526
+ socketPath,
527
+ "-X",
528
+ "DELETE",
529
+ `http://localhost/containers/${id}?force=true`,
530
+ ],
531
+ };
532
+ }
507
533
  //# sourceMappingURL=backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/backend-docker/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/backend-docker/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,yEAAyE;AACzE,gEAAgE;AAChE,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,wEAAwE;AACxE,0CAA0C;AAC1C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,qKAAqK;AACrK,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAgBD,0VAA0V;AAC1V,MAAM,UAAU,eAAe,CAAC,IAAmB;IACjD,MAAM,YAAY,GAA0C,EAAE,CAAC;IAC/D,MAAM,YAAY,GAAgE,EAAE,CAAC;IACrF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACvB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjG,MAAM,IAAI,GAAwB;QAChC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,YAAY,EAAE,YAAY;QAC1B,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC;QAC7B,UAAU,EAAE;YACV,YAAY,EAAE,YAAY;YAC1B,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,CAAC,mCAAmC,CAAC;SAClD;KACF,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,IAA2B,EAC3B,QAAmC,EACnC,QAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACzC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IAgBK;IAf7B,wDAAwD;IAC/C,IAAI,GAAG,QAAQ,CAAC;IAChB,sBAAsB,GAAG,IAAI,CAAC;IACvC,+HAA+H;IACtH,YAAY,GAAwB;QAC3C,8DAA8D;QAC9D,gBAAgB,EAAE,KAAK;QACvB,wDAAwD;QACxD,UAAU,EAAE,IAAI;QAChB,2DAA2D;QAC3D,0BAA0B,EAAE,KAAK;KAClC,CAAC;IAEe,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExD,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAErD,uGAAuG;IACvG,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAa;QACvC,MAAM,WAAW,GAAG,WAAW,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,4BAA4B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,YAAY,CAAC,gCAAgC,KAAK,WAAW,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,SAAiB,EAAE,OAA8B;QACjG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACnG,MAAM,IAAI,GAAG,aAAa,SAAS,UAAU,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,YAAY,CACpB,sCAAsC,WAAW,eAAe,SAAS,UAAU,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAC3H,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,qBAAqB,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CACpB,oCAAoC,SAAS,WAAW,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CACtG,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CACpB,yCAAyC,SAAS,4BAA4B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CACzG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAmB;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,2BAA2B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,YAAY,CACpB,sCAAsC,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAClG,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,YAAY,CACpB,2CAA2C,IAAI,CAAC,IAAI,4BAA4B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CACxG,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAqB;QAC/B,MAAM,IAAI,GAAG,eAAe,MAAM,CAAC,EAAE,QAAQ,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC/C,OAAO,CAAC,qEAAqE;QAC/E,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,qBAAqB,CAAC,yCAAyC,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,oCAAoC,MAAM,CAAC,EAAE,UAAU,IAAI,CAAC,MAAM,MAAM,OAAO,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,MAAM,IAAI,GAAG,eAAe,MAAM,CAAC,EAAE,WAAW,iBAAiB,EAAE,CAAC;QACpE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,cAAc;IACzE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAqB;QAChC,MAAM,IAAI,GAAG,eAAe,MAAM,CAAC,EAAE,aAAa,CAAC;QACnD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,cAAc;IAC3E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAqB,EAAE,GAAW;QACvD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,qBAAqB,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,gBAAgB,CAAC,IAAI,CAAC,QAAQ,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5H,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,YAAY,CACpB,qCAAqC,MAAM,CAAC,EAAE,cAAc,GAAG,WAAW,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAClH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wGAAwG;IACxG,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvF,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,mCAAmC,GAAG,WAAW,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,QAAgB;QAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CACpB,kBAAkB,QAAQ,IAAI,GAAG,iBAAiB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,GAAW;QACjD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CAAC,kBAAkB,OAAO,iBAAiB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,qCAAqC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,IAAmB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,4BAA4B,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,6HAA6H;IAC7H,KAAK,CAAC,iBAAiB;QACrB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAqB,EAAE,GAA0B;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7F,MAAM,UAAU,GAAG,eAAe,MAAM,CAAC,EAAE,OAAO,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CACpB,iDAAiD,MAAM,CAAC,EAAE,UAAU,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAClH,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CACpB,+CAA+C,MAAM,CAAC,EAAE,2BAA2B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAC9G,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,MAAM,QAAQ,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACvF,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,YAAY,CAAC,+BAA+B,MAAM,kBAAkB,MAAM,CAAC,EAAE,UAAU,MAAM,GAAG,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,WAAW,CACf,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,CAAC;QAEF,MAAM,WAAW,GAAG,SAAS,MAAM,OAAO,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5E,OAAO;YACL,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;YAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;SAC/C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,MAAM,IAAI,GAAG,eAAe,MAAM,CAAC,EAAE,mCAAmC,CAAC;QACzE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,YAAY,CAAC,6CAA6C,MAAM,CAAC,EAAE,UAAU,MAAM,GAAG,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,WAAW,CACf,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE;YACJ,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBAChD,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC,EACD,CAAC,CAAC,EAAE,EAAE;YACJ,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBAChD,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC,CACF,CAAC;QACF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,+HAA+H;IAC/H,KAAK,CAAC,UAAU,CAAC,MAAqB,EAAE,QAAgC;QACtE,MAAM,IAAI,GAAG,eAAe,MAAM,CAAC,EAAE,2CAA2C,CAAC;QACjF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,YAAY,CAAC,8CAA8C,MAAM,CAAC,EAAE,UAAU,MAAM,GAAG,CAAC,CAAC;QACrG,CAAC;QAED,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,CAAC,KAAK,IAAmB,EAAE;YAC5C,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;oBAC/B,IAAI,cAAc,EAAE,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE,CAAC;wBAClD,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;4BACnE,SAAS;wBACX,CAAC;wBACD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;4BAC5D,IAAI,cAAc,EAAE,CAAC;gCACnB,OAAO;4BACT,CAAC;4BACD,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACjB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;gBAClD,OAAO;YACT,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,iFAAiF;YAC3F,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO;YACL,KAAK,EAAE,KAAK,IAAmB,EAAE;gBAC/B,cAAc,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,qKAAqK;IACrK,KAAK,CAAC,mBAAmB,CAAC,OAAsB,EAAE,MAAkC,IAAkB,CAAC;IAEvG;;;;;;;;;OASG;IACH,KAAK,CAAC,eAAe,CAAC,MAAqB,EAAE,QAAgB,EAAE,aAAqB;QAClF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACzG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CACpB,kBAAkB,MAAM,CAAC,EAAE,IAAI,aAAa,iBAAiB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CACzG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,iBAAiB,CAAC,MAAqB,EAAE,aAAqB,EAAE,QAAgB;QACpF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;QAC1G,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CACpB,kBAAkB,MAAM,CAAC,EAAE,IAAI,aAAa,iBAAiB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CACzG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,cAAc;QAC9F,CAAC;IACH,CAAC;IAED,2GAA2G;IAC3G,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,qCAAqC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClD,OAAO,CAAC,yDAAyD;QACnE,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAU;QACpB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAChC,eAAuB,EACvB,UAAkB,EAClB,EAAU;IAEV,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM;QACf,IAAI,EAAE;YACJ,UAAU;YACV,YAAY;YACZ,GAAG;YACH,eAAe;YACf,UAAU;YACV,IAAI;YACJ,QAAQ;YACR,+BAA+B,EAAE,aAAa;SAC/C;KACF,CAAC;AACJ,CAAC"}
@@ -28,22 +28,30 @@ export interface DockerStreamResponse {
28
28
  }
29
29
  /**
30
30
  * The pure seam `DockerClient.fromEnv` delegates to: given a `DOCKER_HOST`
31
- * value (or `undefined`), returns the unix socket path this client should
32
- * dial. A `tcp://`/`http://` `DOCKER_HOST` falls back to the default socket
33
- * path rather than attempting a TCP connection — this client has no TCP
31
+ * value (or `undefined`), returns the local endpoint this client should
32
+ * dial a unix socket path on POSIX, a named pipe path on Windows. A
33
+ * `tcp://`/`http://` `DOCKER_HOST` falls back to the platform default
34
+ * rather than attempting a TCP connection — this client has no TCP
34
35
  * transport at all (see the module docs on why: sharing an HTTP stack a
35
36
  * consumer can bump is exactly the failure mode being avoided).
37
+ *
38
+ * `processPlatform` defaults to `process.platform` for every real call site;
39
+ * it exists as a parameter purely as the injected-platform test seam
40
+ * (mirrors `PlatformInfo`'s `_currentFor`-style seams in
41
+ * `backend-msb/platform.ts`), so tests can exercise the win32 branch on any
42
+ * host without touching the real platform.
36
43
  */
37
- export declare function socketPathFromDockerHost(host: string | undefined): string;
44
+ export declare function socketPathFromDockerHost(host: string | undefined, processPlatform?: string): string;
38
45
  /**
39
- * A from-scratch HTTP client over the Docker daemon's unix socket, built on
40
- * `node:http`'s `socketPath` option rather than a general-purpose Docker SDK
41
- * (`dockerode`) the point of hand-rolling is that this client can only
42
- * ever dial a unix socket path, never a TCP host. A shared HTTP stack a
43
- * consuming project also depends on has, on another runtime, been observed
44
- * to misroute a Docker client onto TCP `localhost:2375` instead of the
45
- * daemon's real unix socket; owning this client end-to-end makes that
46
- * misrouting structurally impossible; see the standing regression test in
46
+ * A from-scratch HTTP client over the Docker daemon's local endpoint a
47
+ * unix socket on POSIX, a named pipe on Windows — built on `node:http`'s
48
+ * `socketPath` option rather than a general-purpose Docker SDK (`dockerode`)
49
+ * the point of hand-rolling is that this client can only ever dial that
50
+ * local endpoint, never a TCP host. A shared HTTP stack a consuming project
51
+ * also depends on has, on another runtime, been observed to misroute a
52
+ * Docker client onto TCP `localhost:2375` instead of the daemon's real
53
+ * endpoint; owning this client end-to-end makes that misrouting
54
+ * structurally impossible; see the standing regression test in
47
55
  * `backend.test.ts`.
48
56
  *
49
57
  * Every daemon endpoint this backend calls returns either a small buffered
@@ -59,7 +67,7 @@ export declare class DockerClient {
59
67
  constructor(socketPath?: string, connectTimeoutMs?: number);
60
68
  /** Builds a client honoring `DOCKER_HOST` (a `unix://` path, a bare path, or the daemon's default socket). */
61
69
  static fromEnv(): DockerClient;
62
- /** The unix socket path this client dials — never a TCP host. */
70
+ /** The local endpoint this client dials — a unix socket path on POSIX, a named pipe path on Windows; never a TCP host. */
63
71
  getSocketPath(): string;
64
72
  /**
65
73
  * One request whose entire response body is read into memory before
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/backend-docker/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA4BjD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAW,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,+HAA+H;AAC/H,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sHAAsH;IACtH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,iKAAiK;IACjK,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAWzE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAK3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBALhB,UAAU,GAAE,MAA6D,EAKzE,gBAAgB,GAAE,MAA2B;IAGhE,8GAA8G;IAC9G,MAAM,CAAC,OAAO,IAAI,YAAY;IAI9B,iEAAiE;IACjE,aAAa,IAAI,MAAM;IAIvB;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBnF;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAU/F,OAAO,CAAC,IAAI;CAkEb"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/backend-docker/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAsDjD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAW,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,+HAA+H;AAC/H,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sHAAsH;IACtH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,iKAAiK;IACjK,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,GAAE,MAAyB,GAAG,MAAM,CAcrH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAK3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBALhB,UAAU,GAAE,MAA6D,EAKzE,gBAAgB,GAAE,MAA2B;IAGhE,8GAA8G;IAC9G,MAAM,CAAC,OAAO,IAAI,YAAY;IAI9B,0HAA0H;IAC1H,aAAa,IAAI,MAAM;IAIvB;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBnF;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAU/F,OAAO,CAAC,IAAI;CAkEb"}
@@ -1,6 +1,29 @@
1
1
  import * as http from "node:http";
2
2
  import { BackendError } from "../core/errors.js";
3
3
  const DEFAULT_SOCKET_PATH = "/var/run/docker.sock";
4
+ /**
5
+ * The named pipe Docker Desktop's daemon serves the same HTTP API over on
6
+ * Windows — `docker_engine` is the fixed pipe name Docker Desktop always
7
+ * creates (confirmed against Docker's own `DOCKER_HOST` convention there,
8
+ * `npipe:////./pipe/docker_engine`). Passed straight through to
9
+ * `node:http`'s `socketPath` option: `node:net`/`node:http` dial a Windows
10
+ * named pipe through the exact same `path`-based mechanism they use for a
11
+ * POSIX unix-domain socket, so no separate "pipe mode" exists to opt into.
12
+ */
13
+ const DEFAULT_NAMED_PIPE_PATH = "\\\\.\\pipe\\docker_engine";
14
+ /** The per-platform default endpoint when `DOCKER_HOST` names no override. */
15
+ function defaultEndpoint(processPlatform) {
16
+ return processPlatform === "win32" ? DEFAULT_NAMED_PIPE_PATH : DEFAULT_SOCKET_PATH;
17
+ }
18
+ /**
19
+ * Docker's `npipe://` convention renders the Windows UNC pipe path with
20
+ * forward slashes standing in for backslashes, prefixed by an empty
21
+ * authority (`npipe:////./pipe/docker_engine` = scheme + `//./pipe/...`) —
22
+ * swapping the slashes back yields the literal path this client dials.
23
+ */
24
+ function npipeUrlToPath(host) {
25
+ return host.slice("npipe://".length).replace(/\//g, "\\");
26
+ }
4
27
  /**
5
28
  * Ceiling on one unary request/response cycle — connect, write, read
6
29
  * headers, read the whole body. Deliberately NOT applied to streaming reads
@@ -33,33 +56,44 @@ const CONNECT_TIMEOUT_MS = 30_000;
33
56
  export const MAX_HEADER_BYTES = 8 * 1024;
34
57
  /**
35
58
  * The pure seam `DockerClient.fromEnv` delegates to: given a `DOCKER_HOST`
36
- * value (or `undefined`), returns the unix socket path this client should
37
- * dial. A `tcp://`/`http://` `DOCKER_HOST` falls back to the default socket
38
- * path rather than attempting a TCP connection — this client has no TCP
59
+ * value (or `undefined`), returns the local endpoint this client should
60
+ * dial a unix socket path on POSIX, a named pipe path on Windows. A
61
+ * `tcp://`/`http://` `DOCKER_HOST` falls back to the platform default
62
+ * rather than attempting a TCP connection — this client has no TCP
39
63
  * transport at all (see the module docs on why: sharing an HTTP stack a
40
64
  * consumer can bump is exactly the failure mode being avoided).
65
+ *
66
+ * `processPlatform` defaults to `process.platform` for every real call site;
67
+ * it exists as a parameter purely as the injected-platform test seam
68
+ * (mirrors `PlatformInfo`'s `_currentFor`-style seams in
69
+ * `backend-msb/platform.ts`), so tests can exercise the win32 branch on any
70
+ * host without touching the real platform.
41
71
  */
42
- export function socketPathFromDockerHost(host) {
72
+ export function socketPathFromDockerHost(host, processPlatform = process.platform) {
43
73
  if (host === undefined) {
44
- return DEFAULT_SOCKET_PATH;
74
+ return defaultEndpoint(processPlatform);
45
75
  }
46
76
  if (host.startsWith("unix://")) {
47
77
  return host.slice("unix://".length);
48
78
  }
49
- if (host.startsWith("/")) {
79
+ if (host.startsWith("npipe://")) {
80
+ return npipeUrlToPath(host);
81
+ }
82
+ if (host.startsWith("/") || host.startsWith("\\\\")) {
50
83
  return host;
51
84
  }
52
- return DEFAULT_SOCKET_PATH;
85
+ return defaultEndpoint(processPlatform);
53
86
  }
54
87
  /**
55
- * A from-scratch HTTP client over the Docker daemon's unix socket, built on
56
- * `node:http`'s `socketPath` option rather than a general-purpose Docker SDK
57
- * (`dockerode`) the point of hand-rolling is that this client can only
58
- * ever dial a unix socket path, never a TCP host. A shared HTTP stack a
59
- * consuming project also depends on has, on another runtime, been observed
60
- * to misroute a Docker client onto TCP `localhost:2375` instead of the
61
- * daemon's real unix socket; owning this client end-to-end makes that
62
- * misrouting structurally impossible; see the standing regression test in
88
+ * A from-scratch HTTP client over the Docker daemon's local endpoint a
89
+ * unix socket on POSIX, a named pipe on Windows — built on `node:http`'s
90
+ * `socketPath` option rather than a general-purpose Docker SDK (`dockerode`)
91
+ * the point of hand-rolling is that this client can only ever dial that
92
+ * local endpoint, never a TCP host. A shared HTTP stack a consuming project
93
+ * also depends on has, on another runtime, been observed to misroute a
94
+ * Docker client onto TCP `localhost:2375` instead of the daemon's real
95
+ * endpoint; owning this client end-to-end makes that misrouting
96
+ * structurally impossible; see the standing regression test in
63
97
  * `backend.test.ts`.
64
98
  *
65
99
  * Every daemon endpoint this backend calls returns either a small buffered
@@ -85,7 +119,7 @@ export class DockerClient {
85
119
  static fromEnv() {
86
120
  return new DockerClient(socketPathFromDockerHost(process.env["DOCKER_HOST"]));
87
121
  }
88
- /** The unix socket path this client dials — never a TCP host. */
122
+ /** The local endpoint this client dials — a unix socket path on POSIX, a named pipe path on Windows; never a TCP host. */
89
123
  getSocketPath() {
90
124
  return this.socketPath;
91
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/backend-docker/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/backend-docker/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { DockerBackend } from "./backend.js";
2
- export { DockerBackendProvider } from "./provider.js";
2
+ export { DockerBackendProvider, isEndpointReachable } from "./provider.js";
3
3
  export { DockerClient, socketPathFromDockerHost } from "./client.js";
4
4
  export type { DockerResponse, DockerStreamResponse } from "./client.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend-docker/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend-docker/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -15,6 +15,6 @@ import { registerBackend } from "../core/backends.js";
15
15
  import { DockerBackendProvider } from "./provider.js";
16
16
  registerBackend(new DockerBackendProvider());
17
17
  export { DockerBackend } from "./backend.js";
18
- export { DockerBackendProvider } from "./provider.js";
18
+ export { DockerBackendProvider, isEndpointReachable } from "./provider.js";
19
19
  export { DockerClient, socketPathFromDockerHost } from "./client.js";
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend-docker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,eAAe,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend-docker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,eAAe,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,15 +1,104 @@
1
1
  import type { BackendProvider, SandboxBackend } from "../core/backend.js";
2
+ /**
3
+ * The pure decision behind the old presence-only check: given the resolved
4
+ * endpoint path, does anything exist there at all? Kept as a standalone
5
+ * export — still a legitimate cheap primitive, and part of this package's
6
+ * public surface — but `isSupported()` below no longer relies on it alone: a
7
+ * reachable endpoint is necessary but not sufficient, since a Windows
8
+ * host's own Windows-containers daemon (or, in principle, any non-Linux
9
+ * daemon) is reachable at its pipe/socket while still being the wrong kind
10
+ * of daemon for this backend to drive. See `isLinuxDaemonReachable` for the
11
+ * actual `isSupported()` gate.
12
+ *
13
+ * POSIX keeps today's exact check unchanged: `fs.statSync(path).isSocket()`
14
+ * — a plain file sitting at the socket path must never read as "a running
15
+ * daemon." Windows drops the type check to bare stat success instead: Node's
16
+ * `fs.Stats` type-classifier methods (`isSocket()`, `isFIFO()`) are
17
+ * documented-unreliable for entries under Windows' Named Pipe File System
18
+ * (there is no Windows-specific "is a named pipe" stat flag at all), so a
19
+ * successful stat — which fails fast with ENOENT the instant nothing is
20
+ * listening on `\\.\pipe\docker_engine` — is the strongest synchronous,
21
+ * no-spawn signal available. This is the same "attempt and report" treatment
22
+ * `PlatformInfo.virtualizationAvailable` already gives Windows elsewhere in
23
+ * this codebase, for the same underlying reason: no cheap, reliable,
24
+ * synchronous, spawn-free probe exists there beyond "does the entry exist."
25
+ */
26
+ export declare function isEndpointReachable(path: string, processPlatform?: string): boolean;
27
+ /**
28
+ * The `spawnSync` invocation the daemon-OS probe below runs, given the
29
+ * resolved platform and endpoint path — kept pure and separate so the
30
+ * platform split is unit-testable without actually spawning a process
31
+ * (mirrors `cleanupSyncCommand`'s identical pure-argv/impure-executor split
32
+ * in `backend.ts`).
33
+ *
34
+ * POSIX dials the daemon directly over `curl --unix-socket` — the same
35
+ * transport `cleanupSyncCommand` already uses for teardown. Windows can't
36
+ * reuse that: curl's `--unix-socket` dials an AF_UNIX domain socket, a
37
+ * fundamentally different IPC mechanism from a Windows named pipe (see
38
+ * `cleanupSyncCommand`'s own doc in `backend.ts`), so this shells out to
39
+ * `docker version` instead, which already resolves the daemon's endpoint
40
+ * (the named pipe by default, or `DOCKER_HOST`) on its own — the `docker`
41
+ * CLI is already a hard dependency of this backend's Windows teardown path,
42
+ * so this introduces no new precondition there. Both branches print a JSON
43
+ * blob shaped like the raw `GET /version` response: `{{json .Server}}`
44
+ * serializes the exact same `types.Version` struct that endpoint's body
45
+ * unmarshals into, `Os` field included, so `isLinuxDaemonOs` below reads
46
+ * either output identically.
47
+ */
48
+ export declare function daemonOsProbeCommand(processPlatform: string, socketPath: string): {
49
+ readonly command: string;
50
+ readonly args: readonly string[];
51
+ };
52
+ /**
53
+ * The pure decision behind `isSupported()`: does this raw probe stdout
54
+ * describe a daemon serving LINUX containers? Rightsize's docker backend
55
+ * only ever runs Linux containers, so a Windows-containers daemon
56
+ * (`"Os":"windows"`) must read as unsupported even though its pipe is
57
+ * perfectly reachable — Docker Desktop on macOS *and* Windows reports
58
+ * `"linux"` here regardless of host OS, since its daemon runs Linux in a
59
+ * VM/WSL2, so this is the correct cross-platform test, never a host-OS
60
+ * check. Empty input, a non-JSON body, and a response missing or misshaping
61
+ * `Os` all fall through to `false` on purpose — indistinguishable, here,
62
+ * from a connect error or a timed-out probe, matching `isSupported()`'s
63
+ * "any failure means unsupported" contract.
64
+ */
65
+ export declare function isLinuxDaemonOs(rawStdout: string): boolean;
66
+ /** The exact shape of `node:child_process`'s `spawnSync` this probe needs — narrowed down to an injectable seam so tests can fake a probe outcome (success, wrong OS, spawn failure, timeout) without ever spawning a real process. */
67
+ export type DaemonProbeRunner = (command: string, args: readonly string[], options: {
68
+ readonly timeout: number;
69
+ readonly encoding: "utf8";
70
+ }) => {
71
+ readonly status: number | null;
72
+ readonly stdout: string;
73
+ readonly error?: Error;
74
+ };
2
75
  /**
3
76
  * `isSupported()` must be synchronous (the interface's contract — see
4
- * `../core/backend.ts`), but the daemon's real reachability probe
5
- * (`GET /_ping`) is inherently async over `node:http`. Rather than fake a
6
- * synchronous HTTP round trip, this resolves to "the socket path exists and
7
- * is a socket" via `fs.statSync().isSocket()`, deferring true reachability
8
- * to first usean existing-but-dead daemon surfaces a clear error the
9
- * moment a real call is made. A blocking `/_ping` here would be the
10
- * stronger check, but JS has no synchronous socket I/O to do it with, and
11
- * the stat is behaviorally equivalent for backend resolution since a socket
12
- * file present but genuinely unreachable is vanishingly rare.
77
+ * `../core/backend.ts`), but the daemon's real OS only ever arrives in an
78
+ * HTTP response body (`GET /version`'s `Os` field) that this backend's own
79
+ * `DockerClient` can only fetch over an async `node:http` round trip. JS has
80
+ * no synchronous socket I/O to bridge that gap, so — exactly like
81
+ * `cleanupSync`'s process-exit teardownthis shells out via
82
+ * `child_process.spawnSync` instead of `DockerClient`, bounded by
83
+ * `DAEMON_PROBE_TIMEOUT_MS` so a wedged daemon fails this promptly rather
84
+ * than hanging backend resolution. `runner` defaults to the real
85
+ * `spawnSync`; every real call site relies on that default, and it exists
86
+ * as a parameter purely as the injected-runner test seam (mirrors
87
+ * `DockerClient`'s own injected `connectTimeoutMs` constructor seam).
88
+ *
89
+ * Degrades to `false` on ANY failure: a spawn error (`result.error` —
90
+ * missing `curl`/`docker` binary), a non-zero exit, a timeout (`spawnSync`'s
91
+ * `timeout` option killing a wedged child, which reports back as a `null`
92
+ * exit status), or a malformed/wrong-OS body (`isLinuxDaemonOs`). Never
93
+ * throws — a probe that can't prove "reachable and Linux" is, by this
94
+ * method's contract, simply "not supported."
95
+ */
96
+ export declare function isLinuxDaemonReachable(processPlatform: string, socketPath: string, runner?: DaemonProbeRunner): boolean;
97
+ /**
98
+ * The registered `"docker"` provider. `isSupported()` itself stays a
99
+ * one-line call against the real endpoint/platform — all the actual
100
+ * decision logic (and its test seams) lives in the pure/injectable
101
+ * functions above.
13
102
  */
14
103
  export declare class DockerBackendProvider implements BackendProvider {
15
104
  /** `"docker"` — matched case-insensitively against `RIGHTSIZE_BACKEND`. */
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/backend-docker/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI1E;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,QAAQ,MAAM;IAEvB,WAAW,IAAI,OAAO;IAStB,iBAAiB,IAAI,MAAM;IAI3B,MAAM,IAAI,cAAc;CAGzB"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/backend-docker/provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,GAAE,MAAyB,GAAG,OAAO,CAOrG;AAYD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAehE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW1D;AAED,uOAAuO;AACvO,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAC7D;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEzF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,iBAA6B,GACpC,OAAO,CAYT;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,QAAQ,MAAM;IAEvB,WAAW,IAAI,OAAO;IAItB,iBAAiB,IAAI,MAAM;IAU3B,MAAM,IAAI,cAAc;CAGzB"}
@@ -1,33 +1,166 @@
1
1
  import * as fs from "node:fs";
2
+ import { spawnSync } from "node:child_process";
2
3
  import { DockerBackend } from "./backend.js";
3
4
  import { DockerClient, socketPathFromDockerHost } from "./client.js";
5
+ /**
6
+ * The pure decision behind the old presence-only check: given the resolved
7
+ * endpoint path, does anything exist there at all? Kept as a standalone
8
+ * export — still a legitimate cheap primitive, and part of this package's
9
+ * public surface — but `isSupported()` below no longer relies on it alone: a
10
+ * reachable endpoint is necessary but not sufficient, since a Windows
11
+ * host's own Windows-containers daemon (or, in principle, any non-Linux
12
+ * daemon) is reachable at its pipe/socket while still being the wrong kind
13
+ * of daemon for this backend to drive. See `isLinuxDaemonReachable` for the
14
+ * actual `isSupported()` gate.
15
+ *
16
+ * POSIX keeps today's exact check unchanged: `fs.statSync(path).isSocket()`
17
+ * — a plain file sitting at the socket path must never read as "a running
18
+ * daemon." Windows drops the type check to bare stat success instead: Node's
19
+ * `fs.Stats` type-classifier methods (`isSocket()`, `isFIFO()`) are
20
+ * documented-unreliable for entries under Windows' Named Pipe File System
21
+ * (there is no Windows-specific "is a named pipe" stat flag at all), so a
22
+ * successful stat — which fails fast with ENOENT the instant nothing is
23
+ * listening on `\\.\pipe\docker_engine` — is the strongest synchronous,
24
+ * no-spawn signal available. This is the same "attempt and report" treatment
25
+ * `PlatformInfo.virtualizationAvailable` already gives Windows elsewhere in
26
+ * this codebase, for the same underlying reason: no cheap, reliable,
27
+ * synchronous, spawn-free probe exists there beyond "does the entry exist."
28
+ */
29
+ export function isEndpointReachable(path, processPlatform = process.platform) {
30
+ try {
31
+ const stat = fs.statSync(path);
32
+ return processPlatform === "win32" ? true : stat.isSocket();
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Ceiling on the synchronous daemon-OS probe below — connect, request, read
40
+ * the whole response. Provider resolution happens once per process (see
41
+ * `Backends.active()`'s memoization), so this is a one-time cost on the
42
+ * process's first backend resolution, not a per-call one; a wedged or
43
+ * unresponsive daemon must still let `isSupported()` return promptly rather
44
+ * than hang backend resolution indefinitely.
45
+ */
46
+ const DAEMON_PROBE_TIMEOUT_MS = 2_000;
47
+ /**
48
+ * The `spawnSync` invocation the daemon-OS probe below runs, given the
49
+ * resolved platform and endpoint path — kept pure and separate so the
50
+ * platform split is unit-testable without actually spawning a process
51
+ * (mirrors `cleanupSyncCommand`'s identical pure-argv/impure-executor split
52
+ * in `backend.ts`).
53
+ *
54
+ * POSIX dials the daemon directly over `curl --unix-socket` — the same
55
+ * transport `cleanupSyncCommand` already uses for teardown. Windows can't
56
+ * reuse that: curl's `--unix-socket` dials an AF_UNIX domain socket, a
57
+ * fundamentally different IPC mechanism from a Windows named pipe (see
58
+ * `cleanupSyncCommand`'s own doc in `backend.ts`), so this shells out to
59
+ * `docker version` instead, which already resolves the daemon's endpoint
60
+ * (the named pipe by default, or `DOCKER_HOST`) on its own — the `docker`
61
+ * CLI is already a hard dependency of this backend's Windows teardown path,
62
+ * so this introduces no new precondition there. Both branches print a JSON
63
+ * blob shaped like the raw `GET /version` response: `{{json .Server}}`
64
+ * serializes the exact same `types.Version` struct that endpoint's body
65
+ * unmarshals into, `Os` field included, so `isLinuxDaemonOs` below reads
66
+ * either output identically.
67
+ */
68
+ export function daemonOsProbeCommand(processPlatform, socketPath) {
69
+ if (processPlatform === "win32") {
70
+ return { command: "docker", args: ["version", "--format", "{{json .Server}}"] };
71
+ }
72
+ return {
73
+ command: "curl",
74
+ args: [
75
+ "--silent",
76
+ "--max-time",
77
+ String(DAEMON_PROBE_TIMEOUT_MS / 1000),
78
+ "--unix-socket",
79
+ socketPath,
80
+ "http://localhost/version",
81
+ ],
82
+ };
83
+ }
84
+ /**
85
+ * The pure decision behind `isSupported()`: does this raw probe stdout
86
+ * describe a daemon serving LINUX containers? Rightsize's docker backend
87
+ * only ever runs Linux containers, so a Windows-containers daemon
88
+ * (`"Os":"windows"`) must read as unsupported even though its pipe is
89
+ * perfectly reachable — Docker Desktop on macOS *and* Windows reports
90
+ * `"linux"` here regardless of host OS, since its daemon runs Linux in a
91
+ * VM/WSL2, so this is the correct cross-platform test, never a host-OS
92
+ * check. Empty input, a non-JSON body, and a response missing or misshaping
93
+ * `Os` all fall through to `false` on purpose — indistinguishable, here,
94
+ * from a connect error or a timed-out probe, matching `isSupported()`'s
95
+ * "any failure means unsupported" contract.
96
+ */
97
+ export function isLinuxDaemonOs(rawStdout) {
98
+ try {
99
+ const parsed = JSON.parse(rawStdout);
100
+ if (parsed !== null && typeof parsed === "object" && "Os" in parsed) {
101
+ const os = parsed.Os;
102
+ return typeof os === "string" && os.toLowerCase() === "linux";
103
+ }
104
+ }
105
+ catch {
106
+ // Falls through to `false` — see the doc above.
107
+ }
108
+ return false;
109
+ }
4
110
  /**
5
111
  * `isSupported()` must be synchronous (the interface's contract — see
6
- * `../core/backend.ts`), but the daemon's real reachability probe
7
- * (`GET /_ping`) is inherently async over `node:http`. Rather than fake a
8
- * synchronous HTTP round trip, this resolves to "the socket path exists and
9
- * is a socket" via `fs.statSync().isSocket()`, deferring true reachability
10
- * to first usean existing-but-dead daemon surfaces a clear error the
11
- * moment a real call is made. A blocking `/_ping` here would be the
12
- * stronger check, but JS has no synchronous socket I/O to do it with, and
13
- * the stat is behaviorally equivalent for backend resolution since a socket
14
- * file present but genuinely unreachable is vanishingly rare.
112
+ * `../core/backend.ts`), but the daemon's real OS only ever arrives in an
113
+ * HTTP response body (`GET /version`'s `Os` field) that this backend's own
114
+ * `DockerClient` can only fetch over an async `node:http` round trip. JS has
115
+ * no synchronous socket I/O to bridge that gap, so — exactly like
116
+ * `cleanupSync`'s process-exit teardownthis shells out via
117
+ * `child_process.spawnSync` instead of `DockerClient`, bounded by
118
+ * `DAEMON_PROBE_TIMEOUT_MS` so a wedged daemon fails this promptly rather
119
+ * than hanging backend resolution. `runner` defaults to the real
120
+ * `spawnSync`; every real call site relies on that default, and it exists
121
+ * as a parameter purely as the injected-runner test seam (mirrors
122
+ * `DockerClient`'s own injected `connectTimeoutMs` constructor seam).
123
+ *
124
+ * Degrades to `false` on ANY failure: a spawn error (`result.error` —
125
+ * missing `curl`/`docker` binary), a non-zero exit, a timeout (`spawnSync`'s
126
+ * `timeout` option killing a wedged child, which reports back as a `null`
127
+ * exit status), or a malformed/wrong-OS body (`isLinuxDaemonOs`). Never
128
+ * throws — a probe that can't prove "reachable and Linux" is, by this
129
+ * method's contract, simply "not supported."
130
+ */
131
+ export function isLinuxDaemonReachable(processPlatform, socketPath, runner = spawnSync) {
132
+ const { command, args } = daemonOsProbeCommand(processPlatform, socketPath);
133
+ let result;
134
+ try {
135
+ result = runner(command, args, { timeout: DAEMON_PROBE_TIMEOUT_MS, encoding: "utf8" });
136
+ }
137
+ catch {
138
+ return false;
139
+ }
140
+ if (result.error !== undefined || result.status !== 0) {
141
+ return false;
142
+ }
143
+ return isLinuxDaemonOs(result.stdout);
144
+ }
145
+ /**
146
+ * The registered `"docker"` provider. `isSupported()` itself stays a
147
+ * one-line call against the real endpoint/platform — all the actual
148
+ * decision logic (and its test seams) lives in the pure/injectable
149
+ * functions above.
15
150
  */
16
151
  export class DockerBackendProvider {
17
152
  /** `"docker"` — matched case-insensitively against `RIGHTSIZE_BACKEND`. */
18
153
  name = "docker";
19
154
  priority = 10;
20
155
  isSupported() {
21
- const socketPath = socketPathFromDockerHost(process.env["DOCKER_HOST"]);
22
- try {
23
- return fs.statSync(socketPath).isSocket();
24
- }
25
- catch {
26
- return false;
27
- }
156
+ return isLinuxDaemonReachable(process.platform, socketPathFromDockerHost(process.env["DOCKER_HOST"]));
28
157
  }
29
158
  unsupportedReason() {
30
- return "no reachable Docker-API socket (Docker/Podman/Colima not running?)";
159
+ if (process.platform === "win32") {
160
+ return ("no reachable Docker daemon serving Linux containers at the named pipe " +
161
+ "(\\\\.\\pipe\\docker_engine) — is Docker Desktop running in Linux-container mode?");
162
+ }
163
+ return "no reachable Docker-API socket serving Linux containers (Docker/Podman/Colima not running, or serving non-Linux containers?)";
31
164
  }
32
165
  create() {
33
166
  return new DockerBackend(DockerClient.fromEnv());
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/backend-docker/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,qBAAqB;IAChC,2EAA2E;IAClE,IAAI,GAAG,QAAQ,CAAC;IAChB,QAAQ,GAAG,EAAE,CAAC;IAEvB,WAAW;QACT,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,OAAO,oEAAoE,CAAC;IAC9E,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/backend-docker/provider.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { Platform } from "./platform.js";
4
4
  * while msb 0.6.10-0.6.13 were broken on Windows (fixed upstream in 0.6.14).
5
5
  * MSB_PATH users on Windows must avoid 0.6.10-0.6.13.
6
6
  */
7
- export declare const MSB_VERSION = "0.6.16";
7
+ export declare const MSB_VERSION = "0.6.17";
8
8
  /** Test seam: the full resolution logic parameterized over the release base URL, cache dir, and environment. */
9
9
  export declare function ensureInstalledAt(baseUrl: string, cacheDir: string, env: Record<string, string | undefined>): Promise<string>;
10
10
  /** Resolves (downloading and verifying if needed) a runnable `msb` binary path, using the real GitHub release base, `RIGHTSIZE_CACHE_DIR`, and `process.env`. */
@@ -12,7 +12,7 @@ import { PlatformInfo } from "./platform.js";
12
12
  * while msb 0.6.10-0.6.13 were broken on Windows (fixed upstream in 0.6.14).
13
13
  * MSB_PATH users on Windows must avoid 0.6.10-0.6.13.
14
14
  */
15
- export const MSB_VERSION = "0.6.16";
15
+ export const MSB_VERSION = "0.6.17";
16
16
  function releaseBaseUrl(version) {
17
17
  return `https://github.com/superradcompany/microsandbox/releases/download/v${version}`;
18
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rightsize",
3
- "version": "0.7.6",
3
+ "version": "0.7.8",
4
4
  "description": "Testcontainers-style integration testing on microsandbox microVMs, with a Docker fallback and an await-using lifecycle. No Docker required.",
5
5
  "keywords": [
6
6
  "testcontainers",