@lark-apaas/fullstack-cli 1.1.59-alpha.20260802184501 → 1.1.59-alpha.20260804110530

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.
Files changed (2) hide show
  1. package/dist/index.js +36 -16
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -10218,19 +10218,37 @@ ${headers}\r
10218
10218
  upstream.on("error", () => socket.destroy());
10219
10219
  socket.on("error", () => upstream.destroy());
10220
10220
  }
10221
- async function freshTargetReady(target, healthPath, businessPath) {
10221
+ function targetAcceptsConnection(target, timeoutMs = 1e3) {
10222
+ return new Promise((resolve10) => {
10223
+ const socket = net2.connect(target.port, target.host);
10224
+ let settled = false;
10225
+ const finish = (ready) => {
10226
+ if (settled) return;
10227
+ settled = true;
10228
+ socket.destroy();
10229
+ resolve10(ready);
10230
+ };
10231
+ socket.setTimeout(timeoutMs);
10232
+ socket.once("connect", () => finish(true));
10233
+ socket.once("timeout", () => finish(false));
10234
+ socket.once("error", () => finish(false));
10235
+ });
10236
+ }
10237
+ async function freshTargetReady(clientTarget, serverTarget, healthPath) {
10222
10238
  try {
10223
- const response = await fetch(new URL(healthPath, targetOrigin(target)), {
10224
- signal: AbortSignal.timeout(1e3)
10225
- });
10226
- if (response.status !== 200) return false;
10227
- const body = await response.json();
10228
- if (body.ready !== true) return false;
10229
- const businessResponse = await fetch(
10230
- new URL(businessPath, targetOrigin(target)),
10231
- { signal: AbortSignal.timeout(1e3), redirect: "manual" }
10232
- );
10233
- return isPreviewBusinessResponseReady(businessResponse);
10239
+ const [clientReady, serverReady] = await Promise.all([
10240
+ (async () => {
10241
+ const response = await fetch(
10242
+ new URL(healthPath, targetOrigin(clientTarget)),
10243
+ { signal: AbortSignal.timeout(1e3) }
10244
+ );
10245
+ if (response.status !== 200) return false;
10246
+ const body = await response.json();
10247
+ return body.ready === true;
10248
+ })(),
10249
+ targetAcceptsConnection(serverTarget)
10250
+ ]);
10251
+ return clientReady && serverReady;
10234
10252
  } catch {
10235
10253
  return false;
10236
10254
  }
@@ -10252,7 +10270,9 @@ function createPreviewArtifactSwitcher(options) {
10252
10270
  response.writeHead(200, { "content-type": "application/json" });
10253
10271
  response.end(
10254
10272
  JSON.stringify({
10255
- ready: true,
10273
+ schemaVersion: 1,
10274
+ ready: active === "fresh",
10275
+ previewReady: true,
10256
10276
  active,
10257
10277
  generationId: options.generationId
10258
10278
  })
@@ -10276,8 +10296,8 @@ function createPreviewArtifactSwitcher(options) {
10276
10296
  pollTimer = setTimeout(async () => {
10277
10297
  if (await freshTargetReady(
10278
10298
  options.freshTarget,
10279
- healthPath,
10280
- options.freshBusinessPath
10299
+ options.freshServerTarget,
10300
+ healthPath
10281
10301
  )) {
10282
10302
  active = "fresh";
10283
10303
  settleCutover?.({
@@ -10589,7 +10609,7 @@ async function startPreviewArtifactRuntime(options) {
10589
10609
  generationId: resolved.generationId,
10590
10610
  cachedTarget: { host: "127.0.0.1", port: cachedServerPort },
10591
10611
  freshTarget: { host: "127.0.0.1", port: options.freshClientPort },
10592
- freshBusinessPath: options.businessApiPath,
10612
+ freshServerTarget: { host: "127.0.0.1", port: options.freshServerPort },
10593
10613
  cachedAssetFiles,
10594
10614
  pollIntervalMs: options.pollIntervalMs
10595
10615
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-cli",
3
- "version": "1.1.59-alpha.20260802184501",
3
+ "version": "1.1.59-alpha.20260804110530",
4
4
  "description": "CLI tool for fullstack template management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",