@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.
- package/dist/index.js +36 -16
- 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
|
-
|
|
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
|
|
10224
|
-
|
|
10225
|
-
|
|
10226
|
-
|
|
10227
|
-
|
|
10228
|
-
|
|
10229
|
-
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10280
|
-
|
|
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
|
-
|
|
10612
|
+
freshServerTarget: { host: "127.0.0.1", port: options.freshServerPort },
|
|
10593
10613
|
cachedAssetFiles,
|
|
10594
10614
|
pollIntervalMs: options.pollIntervalMs
|
|
10595
10615
|
});
|