@fern-api/fern-api-dev 3.27.0-2-g8cb7aab8fd → 3.27.0-5-g29115217eb
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/cli.cjs +122 -83
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -1413257,7 +1413257,7 @@ var AccessTokenPosthogManager = class {
|
|
|
1413257
1413257
|
properties: {
|
|
1413258
1413258
|
...event,
|
|
1413259
1413259
|
...event.properties,
|
|
1413260
|
-
version: "3.27.0-
|
|
1413260
|
+
version: "3.27.0-5-g29115217eb",
|
|
1413261
1413261
|
usingAccessToken: true
|
|
1413262
1413262
|
}
|
|
1413263
1413263
|
});
|
|
@@ -1413356,7 +1413356,7 @@ var UserPosthogManager = class {
|
|
|
1413356
1413356
|
distinctId: this.userId ?? await this.getPersistedDistinctId(),
|
|
1413357
1413357
|
event: "CLI",
|
|
1413358
1413358
|
properties: {
|
|
1413359
|
-
version: "3.27.0-
|
|
1413359
|
+
version: "3.27.0-5-g29115217eb",
|
|
1413360
1413360
|
...event,
|
|
1413361
1413361
|
...event.properties,
|
|
1413362
1413362
|
usingAccessToken: false,
|
|
@@ -1493422,7 +1493422,7 @@ var CliContext = class {
|
|
|
1493422
1493422
|
if (false) {
|
|
1493423
1493423
|
this.logger.error("CLI_VERSION is not defined");
|
|
1493424
1493424
|
}
|
|
1493425
|
-
return "3.27.0-
|
|
1493425
|
+
return "3.27.0-5-g29115217eb";
|
|
1493426
1493426
|
}
|
|
1493427
1493427
|
getCliName() {
|
|
1493428
1493428
|
if (false) {
|
|
@@ -1587894,7 +1587894,7 @@ var import_path35 = __toESM(require("path"), 1);
|
|
|
1587894
1587894
|
var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
|
|
1587895
1587895
|
var LOGS_FOLDER_NAME = "logs";
|
|
1587896
1587896
|
function getCliSource() {
|
|
1587897
|
-
const version6 = "3.27.0-
|
|
1587897
|
+
const version6 = "3.27.0-5-g29115217eb";
|
|
1587898
1587898
|
return `cli@${version6}`;
|
|
1587899
1587899
|
}
|
|
1587900
1587900
|
var DebugLogger = class {
|
|
@@ -1588076,6 +1588076,8 @@ var import_xml2js = __toESM(require_xml2js(), 1);
|
|
|
1588076
1588076
|
var PLATFORM_IS_WINDOWS = process.platform === "win32";
|
|
1588077
1588077
|
var DOCS_PREFIX = source_default.cyan("[docs]:");
|
|
1588078
1588078
|
var ETAG_FILENAME = "etag";
|
|
1588079
|
+
var PROGRESS_LABEL_WIDTH = "Downloading docs bundle".length;
|
|
1588080
|
+
var formatProgressLabel = (label) => label.padEnd(PROGRESS_LABEL_WIDTH, " ");
|
|
1588079
1588081
|
var PREVIEW_FOLDER_NAME = "preview";
|
|
1588080
1588082
|
var APP_PREVIEW_FOLDER_NAME = "app-preview";
|
|
1588081
1588083
|
var BUNDLE_FOLDER_NAME = "bundle";
|
|
@@ -1588188,7 +1588190,7 @@ async function downloadBundle({ bucketUrl, logger, preferCached, app = false, tr
|
|
|
1588188
1588190
|
let progressBar;
|
|
1588189
1588191
|
if (app && totalBytes > 0) {
|
|
1588190
1588192
|
progressBar = new import_cli_progress.default.SingleBar({
|
|
1588191
|
-
format: `${DOCS_PREFIX} Downloading docs bundle [{bar}] {percentage}% | {value}/{total} MB`,
|
|
1588193
|
+
format: `${DOCS_PREFIX} ${formatProgressLabel("Downloading docs bundle")} [{bar}] {percentage}% | {value}/{total} MB`,
|
|
1588192
1588194
|
barCompleteChar: "\u2588",
|
|
1588193
1588195
|
barIncompleteChar: "\u2591",
|
|
1588194
1588196
|
hideCursor: true
|
|
@@ -1588234,7 +1588236,7 @@ async function downloadBundle({ bucketUrl, logger, preferCached, app = false, tr
|
|
|
1588234
1588236
|
let unzipInterval;
|
|
1588235
1588237
|
if (app) {
|
|
1588236
1588238
|
unzipProgressBar = new import_cli_progress.default.SingleBar({
|
|
1588237
|
-
format: `${DOCS_PREFIX} Unzipping docs bundle [{bar}] {percentage}%`,
|
|
1588239
|
+
format: `${DOCS_PREFIX} ${formatProgressLabel("Unzipping docs bundle")} [{bar}] {percentage}%`,
|
|
1588238
1588240
|
barCompleteChar: "\u2588",
|
|
1588239
1588241
|
barIncompleteChar: "\u2591",
|
|
1588240
1588242
|
hideCursor: true
|
|
@@ -1590251,6 +1590253,114 @@ ${err.stack}`);
|
|
|
1590251
1590253
|
renameDetection: true
|
|
1590252
1590254
|
});
|
|
1590253
1590255
|
const editedAbsoluteFilepaths = [];
|
|
1590256
|
+
app.post("/v2/registry/docs/load-with-url", async (_15, res) => {
|
|
1590257
|
+
try {
|
|
1590258
|
+
const definition3 = docsDefinition ?? EMPTY_DOCS_DEFINITION;
|
|
1590259
|
+
const response = {
|
|
1590260
|
+
baseUrl: {
|
|
1590261
|
+
domain: instance.host,
|
|
1590262
|
+
basePath: instance.pathname
|
|
1590263
|
+
},
|
|
1590264
|
+
definition: definition3,
|
|
1590265
|
+
lightModeEnabled: definition3.config.colorsV3?.type !== "dark",
|
|
1590266
|
+
orgId: navigation_exports2.OrgId(initialProject.config.organization)
|
|
1590267
|
+
};
|
|
1590268
|
+
res.send(response);
|
|
1590269
|
+
} catch (error2) {
|
|
1590270
|
+
context2.logger.error("Stack trace:", error2.stack ?? "");
|
|
1590271
|
+
context2.logger.error("Error loading docs", error2.message);
|
|
1590272
|
+
res.status(500).send();
|
|
1590273
|
+
}
|
|
1590274
|
+
});
|
|
1590275
|
+
app.get(/^\/_local\/(.*)/, (req, res) => {
|
|
1590276
|
+
return res.sendFile(`/${req.params[0]}`);
|
|
1590277
|
+
});
|
|
1590278
|
+
await new Promise((resolve10) => {
|
|
1590279
|
+
httpServer.listen(backendPort, () => {
|
|
1590280
|
+
context2.logger.info(source_default.dim(`Backend server running on http://localhost:${backendPort}`));
|
|
1590281
|
+
resolve10();
|
|
1590282
|
+
});
|
|
1590283
|
+
});
|
|
1590284
|
+
const env5 = {
|
|
1590285
|
+
...process.env,
|
|
1590286
|
+
PORT: port.toString(),
|
|
1590287
|
+
HOSTNAME: "0.0.0.0",
|
|
1590288
|
+
NEXT_PUBLIC_FDR_ORIGIN_PORT: backendPort.toString(),
|
|
1590289
|
+
NEXT_PUBLIC_FDR_ORIGIN: `http://localhost:${backendPort}`,
|
|
1590290
|
+
NEXT_PUBLIC_DOCS_DOMAIN: initialProject.docsWorkspaces?.config.instances[0]?.url,
|
|
1590291
|
+
NEXT_PUBLIC_IS_LOCAL: "1",
|
|
1590292
|
+
NEXT_DISABLE_CACHE: "1",
|
|
1590293
|
+
NODE_ENV: "production",
|
|
1590294
|
+
NODE_PATH: bundleRoot,
|
|
1590295
|
+
NODE_OPTIONS: "--max-old-space-size=8096 --enable-source-maps"
|
|
1590296
|
+
};
|
|
1590297
|
+
let serverProcess = null;
|
|
1590298
|
+
const startNextJsServer = () => {
|
|
1590299
|
+
return new Promise((resolve10) => {
|
|
1590300
|
+
serverProcess = runExeca(context2.logger, "node", [serverPath], {
|
|
1590301
|
+
env: env5,
|
|
1590302
|
+
doNotPipeOutput: true
|
|
1590303
|
+
});
|
|
1590304
|
+
const checkReady = (data2) => {
|
|
1590305
|
+
const output2 = data2.toString();
|
|
1590306
|
+
context2.logger.debug(`[Next.js] ${output2}`);
|
|
1590307
|
+
if (output2.includes("Ready in") || output2.includes("\u2713 Ready")) {
|
|
1590308
|
+
resolve10();
|
|
1590309
|
+
}
|
|
1590310
|
+
};
|
|
1590311
|
+
serverProcess.stdout?.on("data", checkReady);
|
|
1590312
|
+
serverProcess.stderr?.on("data", (data2) => {
|
|
1590313
|
+
context2.logger.debug(`[Next.js] ${data2.toString()}`);
|
|
1590314
|
+
});
|
|
1590315
|
+
context2.logger.debug(`Next.js standalone server started with PID: ${serverProcess.pid}`);
|
|
1590316
|
+
serverProcess.on("error", (err) => {
|
|
1590317
|
+
context2.logger.debug(`Server process error: ${err.message}`);
|
|
1590318
|
+
});
|
|
1590319
|
+
serverProcess.on("exit", (code5, signal) => {
|
|
1590320
|
+
if (code5) {
|
|
1590321
|
+
context2.logger.debug(`Server process exited with code: ${code5}`);
|
|
1590322
|
+
} else if (signal) {
|
|
1590323
|
+
context2.logger.debug(`Server process killed with signal: ${signal}`);
|
|
1590324
|
+
} else {
|
|
1590325
|
+
context2.logger.debug("Server process exited");
|
|
1590326
|
+
}
|
|
1590327
|
+
});
|
|
1590328
|
+
setTimeout(() => {
|
|
1590329
|
+
resolve10();
|
|
1590330
|
+
}, 1e4);
|
|
1590331
|
+
});
|
|
1590332
|
+
};
|
|
1590333
|
+
const stopNextJsServer = () => {
|
|
1590334
|
+
return new Promise((resolve10) => {
|
|
1590335
|
+
if (serverProcess == null || serverProcess.killed) {
|
|
1590336
|
+
resolve10();
|
|
1590337
|
+
return;
|
|
1590338
|
+
}
|
|
1590339
|
+
context2.logger.debug(`Killing server process with PID: ${serverProcess.pid}`);
|
|
1590340
|
+
try {
|
|
1590341
|
+
serverProcess.kill();
|
|
1590342
|
+
setTimeout(() => {
|
|
1590343
|
+
if (serverProcess != null && !serverProcess.killed) {
|
|
1590344
|
+
context2.logger.debug(`Force killing server process with PID: ${serverProcess.pid}`);
|
|
1590345
|
+
try {
|
|
1590346
|
+
serverProcess.kill("SIGKILL");
|
|
1590347
|
+
} catch (err) {
|
|
1590348
|
+
context2.logger.error(`Failed to force kill server process: ${err}`);
|
|
1590349
|
+
}
|
|
1590350
|
+
}
|
|
1590351
|
+
resolve10();
|
|
1590352
|
+
}, 1e3);
|
|
1590353
|
+
} catch (err) {
|
|
1590354
|
+
context2.logger.error(`Failed to kill server process: ${err}`);
|
|
1590355
|
+
resolve10();
|
|
1590356
|
+
}
|
|
1590357
|
+
});
|
|
1590358
|
+
};
|
|
1590359
|
+
const restartNextJsServer = async () => {
|
|
1590360
|
+
await stopNextJsServer();
|
|
1590361
|
+
await startNextJsServer();
|
|
1590362
|
+
};
|
|
1590363
|
+
await startNextJsServer();
|
|
1590254
1590364
|
watcher.on("all", async (event, targetPath, _targetPathNext) => {
|
|
1590255
1590365
|
if (targetPath.includes(".fern/logs/") || targetPath.includes(".fern\\logs\\")) {
|
|
1590256
1590366
|
return;
|
|
@@ -1590277,6 +1590387,10 @@ ${err.stack}`);
|
|
|
1590277
1590387
|
});
|
|
1590278
1590388
|
const reloadedDocsDefinition = await reloadDocsDefinition(filesToReload);
|
|
1590279
1590389
|
editedAbsoluteFilepaths.length = 0;
|
|
1590390
|
+
context2.logger.info("Restarting docs server...");
|
|
1590391
|
+
await restartNextJsServer();
|
|
1590392
|
+
await new Promise((resolve10) => setTimeout(resolve10, 1e3));
|
|
1590393
|
+
context2.logger.info("Refreshing page. Please refresh manually if you don't see changes.");
|
|
1590280
1590394
|
sendData({
|
|
1590281
1590395
|
version: 1,
|
|
1590282
1590396
|
type: "finishReload"
|
|
@@ -1590300,87 +1590414,13 @@ ${err.stack}`);
|
|
|
1590300
1590414
|
})();
|
|
1590301
1590415
|
}, RELOAD_DEBOUNCE_MS);
|
|
1590302
1590416
|
});
|
|
1590303
|
-
app.post("/v2/registry/docs/load-with-url", async (_15, res) => {
|
|
1590304
|
-
try {
|
|
1590305
|
-
const definition3 = docsDefinition ?? EMPTY_DOCS_DEFINITION;
|
|
1590306
|
-
const response = {
|
|
1590307
|
-
baseUrl: {
|
|
1590308
|
-
domain: instance.host,
|
|
1590309
|
-
basePath: instance.pathname
|
|
1590310
|
-
},
|
|
1590311
|
-
definition: definition3,
|
|
1590312
|
-
lightModeEnabled: definition3.config.colorsV3?.type !== "dark",
|
|
1590313
|
-
orgId: navigation_exports2.OrgId(initialProject.config.organization)
|
|
1590314
|
-
};
|
|
1590315
|
-
res.send(response);
|
|
1590316
|
-
} catch (error2) {
|
|
1590317
|
-
context2.logger.error("Stack trace:", error2.stack ?? "");
|
|
1590318
|
-
context2.logger.error("Error loading docs", error2.message);
|
|
1590319
|
-
res.status(500).send();
|
|
1590320
|
-
}
|
|
1590321
|
-
});
|
|
1590322
|
-
app.get(/^\/_local\/(.*)/, (req, res) => {
|
|
1590323
|
-
return res.sendFile(`/${req.params[0]}`);
|
|
1590324
|
-
});
|
|
1590325
|
-
await new Promise((resolve10) => {
|
|
1590326
|
-
httpServer.listen(backendPort, () => {
|
|
1590327
|
-
context2.logger.info(source_default.dim(`Backend server running on http://localhost:${backendPort}`));
|
|
1590328
|
-
resolve10();
|
|
1590329
|
-
});
|
|
1590330
|
-
});
|
|
1590331
|
-
const env5 = {
|
|
1590332
|
-
...process.env,
|
|
1590333
|
-
PORT: port.toString(),
|
|
1590334
|
-
HOSTNAME: "0.0.0.0",
|
|
1590335
|
-
NEXT_PUBLIC_FDR_ORIGIN_PORT: backendPort.toString(),
|
|
1590336
|
-
NEXT_PUBLIC_FDR_ORIGIN: `http://localhost:${backendPort}`,
|
|
1590337
|
-
NEXT_PUBLIC_DOCS_DOMAIN: initialProject.docsWorkspaces?.config.instances[0]?.url,
|
|
1590338
|
-
NEXT_PUBLIC_IS_LOCAL: "1",
|
|
1590339
|
-
NEXT_DISABLE_CACHE: "1",
|
|
1590340
|
-
NODE_ENV: "production",
|
|
1590341
|
-
NODE_PATH: bundleRoot,
|
|
1590342
|
-
NODE_OPTIONS: "--max-old-space-size=8096 --enable-source-maps"
|
|
1590343
|
-
};
|
|
1590344
|
-
const serverProcess = runExeca(context2.logger, "node", [serverPath], {
|
|
1590345
|
-
env: env5,
|
|
1590346
|
-
doNotPipeOutput: true
|
|
1590347
|
-
});
|
|
1590348
|
-
const nextJsReady = new Promise((resolve10) => {
|
|
1590349
|
-
const checkReady = (data2) => {
|
|
1590350
|
-
const output2 = data2.toString();
|
|
1590351
|
-
context2.logger.debug(`[Next.js] ${output2}`);
|
|
1590352
|
-
if (output2.includes("Ready in") || output2.includes("\u2713 Ready")) {
|
|
1590353
|
-
resolve10();
|
|
1590354
|
-
}
|
|
1590355
|
-
};
|
|
1590356
|
-
serverProcess.stdout?.on("data", checkReady);
|
|
1590357
|
-
setTimeout(() => {
|
|
1590358
|
-
resolve10();
|
|
1590359
|
-
}, 1e4);
|
|
1590360
|
-
});
|
|
1590361
|
-
serverProcess.stderr?.on("data", (data2) => {
|
|
1590362
|
-
context2.logger.debug(`[Next.js] ${data2.toString()}`);
|
|
1590363
|
-
});
|
|
1590364
|
-
context2.logger.debug(`Next.js standalone server started with PID: ${serverProcess.pid}`);
|
|
1590365
|
-
serverProcess.on("error", (err) => {
|
|
1590366
|
-
context2.logger.debug(`Server process error: ${err.message}`);
|
|
1590367
|
-
});
|
|
1590368
|
-
serverProcess.on("exit", (code5, signal) => {
|
|
1590369
|
-
if (code5) {
|
|
1590370
|
-
context2.logger.debug(`Server process exited with code: ${code5}`);
|
|
1590371
|
-
} else if (signal) {
|
|
1590372
|
-
context2.logger.debug(`Server process killed with signal: ${signal}`);
|
|
1590373
|
-
} else {
|
|
1590374
|
-
context2.logger.debug("Server process exited");
|
|
1590375
|
-
}
|
|
1590376
|
-
});
|
|
1590377
1590417
|
const cleanup = () => {
|
|
1590378
|
-
if (!serverProcess.killed) {
|
|
1590418
|
+
if (serverProcess != null && !serverProcess.killed) {
|
|
1590379
1590419
|
context2.logger.debug(`Killing server process with PID: ${serverProcess.pid}`);
|
|
1590380
1590420
|
try {
|
|
1590381
1590421
|
serverProcess.kill();
|
|
1590382
1590422
|
setTimeout(() => {
|
|
1590383
|
-
if (!serverProcess.killed) {
|
|
1590423
|
+
if (serverProcess != null && !serverProcess.killed) {
|
|
1590384
1590424
|
context2.logger.debug(`Force killing server process with PID: ${serverProcess.pid}`);
|
|
1590385
1590425
|
try {
|
|
1590386
1590426
|
serverProcess.kill("SIGKILL");
|
|
@@ -1590429,7 +1590469,6 @@ ${err.stack}`);
|
|
|
1590429
1590469
|
process.exit(1);
|
|
1590430
1590470
|
});
|
|
1590431
1590471
|
process.on("beforeExit", cleanup);
|
|
1590432
|
-
await nextJsReady;
|
|
1590433
1590472
|
context2.logger.info(`Docs preview server ready on http://localhost:${port}`);
|
|
1590434
1590473
|
await new Promise(() => {
|
|
1590435
1590474
|
});
|
package/package.json
CHANGED