@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.
Files changed (2) hide show
  1. package/cli.cjs +122 -83
  2. 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-2-g8cb7aab8fd",
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-2-g8cb7aab8fd",
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-2-g8cb7aab8fd";
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-2-g8cb7aab8fd";
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.27.0-2-g8cb7aab8fd",
2
+ "version": "3.27.0-5-g29115217eb",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",