@fern-api/fern-api-dev 5.0.0-11-g03ccf8c3d82 → 5.0.0-14-g2a2542cc004
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 +178 -33
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -621990,7 +621990,7 @@ var AccessTokenPosthogManager = class {
|
|
|
621990
621990
|
properties: {
|
|
621991
621991
|
...event,
|
|
621992
621992
|
...event.properties,
|
|
621993
|
-
version: "5.0.0-
|
|
621993
|
+
version: "5.0.0-14-g2a2542cc004",
|
|
621994
621994
|
usingAccessToken: true
|
|
621995
621995
|
}
|
|
621996
621996
|
});
|
|
@@ -622044,7 +622044,7 @@ var UserPosthogManager = class {
|
|
|
622044
622044
|
distinctId: this.userId ?? await this.getPersistedDistinctId(),
|
|
622045
622045
|
event: "CLI",
|
|
622046
622046
|
properties: {
|
|
622047
|
-
version: "5.0.0-
|
|
622047
|
+
version: "5.0.0-14-g2a2542cc004",
|
|
622048
622048
|
...event,
|
|
622049
622049
|
...event.properties,
|
|
622050
622050
|
usingAccessToken: false,
|
|
@@ -625704,6 +625704,133 @@ var TelemetryClient = class _TelemetryClient {
|
|
|
625704
625704
|
}
|
|
625705
625705
|
};
|
|
625706
625706
|
|
|
625707
|
+
// ../cli-v2/lib/ui/TtyAwareLogger.js
|
|
625708
|
+
var import_is_ci3 = __toESM(require_is_ci(), 1);
|
|
625709
|
+
var SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
|
|
625710
|
+
var SPINNER_INTERVAL_MS = 100;
|
|
625711
|
+
var TtyAwareLogger2 = class {
|
|
625712
|
+
isTTY;
|
|
625713
|
+
stdout;
|
|
625714
|
+
stderr;
|
|
625715
|
+
paintables = [];
|
|
625716
|
+
lastPaint = "";
|
|
625717
|
+
frameIndex = 0;
|
|
625718
|
+
interval;
|
|
625719
|
+
suspended = false;
|
|
625720
|
+
suspendBuffer = [];
|
|
625721
|
+
finished = false;
|
|
625722
|
+
constructor(stdout, stderr) {
|
|
625723
|
+
this.stdout = stdout;
|
|
625724
|
+
this.stderr = stderr;
|
|
625725
|
+
this.isTTY = stdout.isTTY === true && !import_is_ci3.default;
|
|
625726
|
+
}
|
|
625727
|
+
/**
|
|
625728
|
+
* Register a paintable. The first registration starts the repaint loop.
|
|
625729
|
+
*/
|
|
625730
|
+
register(paintable) {
|
|
625731
|
+
this.paintables.push(paintable);
|
|
625732
|
+
if (this.isTTY && this.interval == null) {
|
|
625733
|
+
this.stdout.write(ansi_escapes_default.cursorHide);
|
|
625734
|
+
this.repaint();
|
|
625735
|
+
this.interval = setInterval(() => this.repaint(), SPINNER_INTERVAL_MS);
|
|
625736
|
+
}
|
|
625737
|
+
}
|
|
625738
|
+
/**
|
|
625739
|
+
* Write content above the paint region.
|
|
625740
|
+
*
|
|
625741
|
+
* On non-TTY streams the content is written verbatim. On TTY streams the
|
|
625742
|
+
* paint region is cleared, the content is written, and the paint region
|
|
625743
|
+
* is redrawn in place.
|
|
625744
|
+
*/
|
|
625745
|
+
write(content5, { stderr = false } = {}) {
|
|
625746
|
+
const stream5 = stderr ? this.stderr : this.stdout;
|
|
625747
|
+
if (!this.isTTY) {
|
|
625748
|
+
stream5.write(content5);
|
|
625749
|
+
return;
|
|
625750
|
+
}
|
|
625751
|
+
if (this.suspended) {
|
|
625752
|
+
this.suspendBuffer.push({ content: content5, stderr });
|
|
625753
|
+
return;
|
|
625754
|
+
}
|
|
625755
|
+
this.stdout.write(this.clear());
|
|
625756
|
+
stream5.write(content5);
|
|
625757
|
+
this.stdout.write(this.paint());
|
|
625758
|
+
}
|
|
625759
|
+
/**
|
|
625760
|
+
* Pause the paint loop while `run` executes, buffering any `write()` calls,
|
|
625761
|
+
* then flush the buffer and resume. Useful for writing content that must
|
|
625762
|
+
* not be clobbered by a repaint (e.g. an inquirer prompt).
|
|
625763
|
+
*/
|
|
625764
|
+
async takeOverTerminal(run) {
|
|
625765
|
+
if (!this.isTTY) {
|
|
625766
|
+
await run();
|
|
625767
|
+
return;
|
|
625768
|
+
}
|
|
625769
|
+
this.stopLoop();
|
|
625770
|
+
this.stdout.write(this.clear());
|
|
625771
|
+
this.suspended = true;
|
|
625772
|
+
try {
|
|
625773
|
+
await run();
|
|
625774
|
+
} finally {
|
|
625775
|
+
this.suspended = false;
|
|
625776
|
+
for (const { content: content5, stderr: isStderr } of this.suspendBuffer) {
|
|
625777
|
+
const stream5 = isStderr ? this.stderr : this.stdout;
|
|
625778
|
+
stream5.write(content5);
|
|
625779
|
+
}
|
|
625780
|
+
this.suspendBuffer = [];
|
|
625781
|
+
if (this.paintables.length > 0) {
|
|
625782
|
+
this.stdout.write(ansi_escapes_default.cursorHide);
|
|
625783
|
+
this.repaint();
|
|
625784
|
+
this.interval = setInterval(() => this.repaint(), SPINNER_INTERVAL_MS);
|
|
625785
|
+
}
|
|
625786
|
+
}
|
|
625787
|
+
}
|
|
625788
|
+
/**
|
|
625789
|
+
* Stop the paint loop, perform one final repaint, and restore the cursor.
|
|
625790
|
+
* Idempotent.
|
|
625791
|
+
*/
|
|
625792
|
+
finish() {
|
|
625793
|
+
if (!this.isTTY || this.finished) {
|
|
625794
|
+
return;
|
|
625795
|
+
}
|
|
625796
|
+
this.finished = true;
|
|
625797
|
+
this.stopLoop();
|
|
625798
|
+
this.stdout.write(this.clear() + this.paint());
|
|
625799
|
+
this.stdout.write(ansi_escapes_default.cursorShow);
|
|
625800
|
+
}
|
|
625801
|
+
stopLoop() {
|
|
625802
|
+
if (this.interval != null) {
|
|
625803
|
+
clearInterval(this.interval);
|
|
625804
|
+
this.interval = void 0;
|
|
625805
|
+
}
|
|
625806
|
+
}
|
|
625807
|
+
repaint() {
|
|
625808
|
+
this.frameIndex = (this.frameIndex + 1) % SPINNER_FRAMES.length;
|
|
625809
|
+
this.stdout.write(this.clear() + this.paint());
|
|
625810
|
+
}
|
|
625811
|
+
clear() {
|
|
625812
|
+
if (this.lastPaint.length === 0) {
|
|
625813
|
+
return "";
|
|
625814
|
+
}
|
|
625815
|
+
return ansi_escapes_default.eraseLines(this.lastPaint.split("\n").length);
|
|
625816
|
+
}
|
|
625817
|
+
paint() {
|
|
625818
|
+
if (this.paintables.length === 0) {
|
|
625819
|
+
this.lastPaint = "";
|
|
625820
|
+
return "";
|
|
625821
|
+
}
|
|
625822
|
+
const spinnerFrame = SPINNER_FRAMES[this.frameIndex] ?? SPINNER_FRAMES[0];
|
|
625823
|
+
const bodies = this.paintables.map((p14) => p14.paint(spinnerFrame)).filter((body) => body.length > 0);
|
|
625824
|
+
if (bodies.length === 0) {
|
|
625825
|
+
this.lastPaint = "";
|
|
625826
|
+
return "";
|
|
625827
|
+
}
|
|
625828
|
+
const paint = bodies.join("\n") + "\n";
|
|
625829
|
+
this.lastPaint = paint;
|
|
625830
|
+
return paint;
|
|
625831
|
+
}
|
|
625832
|
+
};
|
|
625833
|
+
|
|
625707
625834
|
// ../cli-v2/lib/api/config/converter/ApiDefinitionConverter.js
|
|
625708
625835
|
init_lib6();
|
|
625709
625836
|
var DEFAULT_API_NAME = "api";
|
|
@@ -626606,7 +626733,7 @@ var Context = class _Context {
|
|
|
626606
626733
|
tokenService;
|
|
626607
626734
|
ttyAwareLogger;
|
|
626608
626735
|
static async create({ stdout, stderr, cwd: cwd2, logLevel }) {
|
|
626609
|
-
const ttyAwareLogger = new
|
|
626736
|
+
const ttyAwareLogger = new TtyAwareLogger2(stdout, stderr);
|
|
626610
626737
|
const telemetry = await TelemetryClient.create({ isTTY: ttyAwareLogger.isTTY });
|
|
626611
626738
|
return new _Context({ stdout, stderr, cwd: cwd2, logLevel, ttyAwareLogger, telemetry });
|
|
626612
626739
|
}
|
|
@@ -626849,31 +626976,44 @@ ${source_default.dim(`Logs written to: ${this.logs.absoluteFilePath}`)}
|
|
|
626849
626976
|
this.ttyAwareLogger.finish();
|
|
626850
626977
|
}
|
|
626851
626978
|
log(level, ...parts) {
|
|
626852
|
-
this.
|
|
626853
|
-
{
|
|
626854
|
-
parts,
|
|
626855
|
-
level,
|
|
626856
|
-
time: /* @__PURE__ */ new Date()
|
|
626857
|
-
}
|
|
626858
|
-
]);
|
|
626979
|
+
this.writeLog(level, parts, { stderr: false });
|
|
626859
626980
|
}
|
|
626860
626981
|
logStderr(level, ...parts) {
|
|
626861
|
-
this.
|
|
626862
|
-
{
|
|
626863
|
-
parts,
|
|
626864
|
-
level,
|
|
626865
|
-
time: /* @__PURE__ */ new Date()
|
|
626866
|
-
}
|
|
626867
|
-
], { stderr: true });
|
|
626982
|
+
this.writeLog(level, parts, { stderr: true });
|
|
626868
626983
|
}
|
|
626869
|
-
|
|
626870
|
-
|
|
626871
|
-
|
|
626872
|
-
|
|
626873
|
-
|
|
626984
|
+
writeLog(level, parts, { stderr }) {
|
|
626985
|
+
if (LOG_LEVELS.indexOf(level) < LOG_LEVELS.indexOf(this.logLevel)) {
|
|
626986
|
+
return;
|
|
626987
|
+
}
|
|
626988
|
+
const content5 = formatLogContent({
|
|
626989
|
+
level,
|
|
626990
|
+
parts,
|
|
626991
|
+
includeDebugInfo: this.logLevel === LogLevel.Debug
|
|
626874
626992
|
});
|
|
626993
|
+
this.ttyAwareLogger.write(content5, { stderr });
|
|
626875
626994
|
}
|
|
626876
626995
|
};
|
|
626996
|
+
function formatLogContent({ level, parts, includeDebugInfo }) {
|
|
626997
|
+
let content5 = parts.join(" ");
|
|
626998
|
+
if (includeDebugInfo) {
|
|
626999
|
+
content5 = `${source_default.dim(`${getLogLevelPrefix(level)} ${(/* @__PURE__ */ new Date()).toISOString()} `)}${content5}`;
|
|
627000
|
+
}
|
|
627001
|
+
content5 += "\n";
|
|
627002
|
+
switch (level) {
|
|
627003
|
+
case LogLevel.Error:
|
|
627004
|
+
return source_default.red(content5);
|
|
627005
|
+
case LogLevel.Warn:
|
|
627006
|
+
return source_default.hex("FFA500")(content5);
|
|
627007
|
+
case LogLevel.Trace:
|
|
627008
|
+
case LogLevel.Debug:
|
|
627009
|
+
case LogLevel.Info:
|
|
627010
|
+
return content5;
|
|
627011
|
+
}
|
|
627012
|
+
}
|
|
627013
|
+
var LOG_LEVEL_PREFIX_WIDTH = Math.max(...LOG_LEVELS.map((l9) => l9.length));
|
|
627014
|
+
function getLogLevelPrefix(level) {
|
|
627015
|
+
return level.toUpperCase().padEnd(LOG_LEVEL_PREFIX_WIDTH);
|
|
627016
|
+
}
|
|
626877
627017
|
|
|
626878
627018
|
// ../cli-v2/lib/context/loadDotenvFile.js
|
|
626879
627019
|
var import_dotenv = __toESM(require_main2(), 1);
|
|
@@ -833779,7 +833919,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
|
|
|
833779
833919
|
var LOGS_FOLDER_NAME = "logs";
|
|
833780
833920
|
var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
|
|
833781
833921
|
function getCliSource() {
|
|
833782
|
-
const version7 = "5.0.0-
|
|
833922
|
+
const version7 = "5.0.0-14-g2a2542cc004";
|
|
833783
833923
|
return `cli@${version7}`;
|
|
833784
833924
|
}
|
|
833785
833925
|
var DebugLogger = class {
|
|
@@ -846197,7 +846337,7 @@ var LegacyDocsPublisher = class {
|
|
|
846197
846337
|
previewId,
|
|
846198
846338
|
disableTemplates: void 0,
|
|
846199
846339
|
skipUpload,
|
|
846200
|
-
cliVersion: "5.0.0-
|
|
846340
|
+
cliVersion: "5.0.0-14-g2a2542cc004",
|
|
846201
846341
|
loginCommand: "fern auth login"
|
|
846202
846342
|
});
|
|
846203
846343
|
if (taskContext.getResult() === TaskResult.Failure) {
|
|
@@ -846337,15 +846477,19 @@ var TaskGroup = class _TaskGroup {
|
|
|
846337
846477
|
/**
|
|
846338
846478
|
* Called by TtyAwareLogger to get the current display.
|
|
846339
846479
|
* This is the integration point with TtyAwareLogger.
|
|
846480
|
+
*
|
|
846481
|
+
* Renders the task list wrapped in a bordered frame so multiple concurrent
|
|
846482
|
+
* TaskGroups (e.g. one per API in a fan-out) read as separate boxes rather
|
|
846483
|
+
* than a single megaframe.
|
|
846340
846484
|
*/
|
|
846341
|
-
|
|
846485
|
+
paint(spinnerFrame) {
|
|
846342
846486
|
const lines = [];
|
|
846343
846487
|
for (const id2 of this.taskOrder) {
|
|
846344
846488
|
const task = this.tasks[id2];
|
|
846345
846489
|
if (task == null) {
|
|
846346
846490
|
continue;
|
|
846347
846491
|
}
|
|
846348
|
-
const line = this.formatTaskLine(task,
|
|
846492
|
+
const line = this.formatTaskLine(task, spinnerFrame);
|
|
846349
846493
|
if (line != null) {
|
|
846350
846494
|
lines.push(line);
|
|
846351
846495
|
}
|
|
@@ -846353,7 +846497,8 @@ var TaskGroup = class _TaskGroup {
|
|
|
846353
846497
|
if (lines.length === 0) {
|
|
846354
846498
|
return "";
|
|
846355
846499
|
}
|
|
846356
|
-
|
|
846500
|
+
const body = lines.join("\n");
|
|
846501
|
+
return ["\u250C\u2500", addPrefixToString({ content: body, prefix: "\u2502 ", includePrefixOnAllLines: true }), "\u2514\u2500"].join("\n");
|
|
846357
846502
|
}
|
|
846358
846503
|
/**
|
|
846359
846504
|
* Complete the task group and show summary.
|
|
@@ -846446,7 +846591,7 @@ var TaskGroup = class _TaskGroup {
|
|
|
846446
846591
|
}
|
|
846447
846592
|
const lines = [];
|
|
846448
846593
|
for (const stage of stages) {
|
|
846449
|
-
const icon = this.getStageIcon(stage.status
|
|
846594
|
+
const icon = this.getStageIcon(stage.status);
|
|
846450
846595
|
let line = `
|
|
846451
846596
|
${icon} ${this.getStageLabel(stage)}`;
|
|
846452
846597
|
if (stage.detail != null) {
|
|
@@ -846477,7 +846622,7 @@ var TaskGroup = class _TaskGroup {
|
|
|
846477
846622
|
* Uses a static arrow (▸) for running stages to avoid visual noise
|
|
846478
846623
|
* from having multiple spinners (the parent task already has a spinner).
|
|
846479
846624
|
*/
|
|
846480
|
-
getStageIcon(status
|
|
846625
|
+
getStageIcon(status) {
|
|
846481
846626
|
switch (status) {
|
|
846482
846627
|
case "pending":
|
|
846483
846628
|
return source_default.dim("\u25CB");
|
|
@@ -846606,7 +846751,7 @@ ${indentStr}${source_default.dim(`... ${hiddenCount} earlier logs hidden ...`)}$
|
|
|
846606
846751
|
return;
|
|
846607
846752
|
}
|
|
846608
846753
|
this.isRegistered = true;
|
|
846609
|
-
this.context.ttyAwareLogger.
|
|
846754
|
+
this.context.ttyAwareLogger.register(this);
|
|
846610
846755
|
}
|
|
846611
846756
|
};
|
|
846612
846757
|
|
|
@@ -920519,7 +920664,7 @@ var CliContext = class _CliContext {
|
|
|
920519
920664
|
if (false) {
|
|
920520
920665
|
this.logger.error("CLI_VERSION is not defined");
|
|
920521
920666
|
}
|
|
920522
|
-
return "5.0.0-
|
|
920667
|
+
return "5.0.0-14-g2a2542cc004";
|
|
920523
920668
|
}
|
|
920524
920669
|
getCliName() {
|
|
920525
920670
|
if (false) {
|
|
@@ -939350,7 +939495,7 @@ init_lib6();
|
|
|
939350
939495
|
var import_cli_progress2 = __toESM(require_cli_progress(), 1);
|
|
939351
939496
|
var import_fs42 = require("fs");
|
|
939352
939497
|
var import_promises191 = require("fs/promises");
|
|
939353
|
-
var
|
|
939498
|
+
var import_is_ci4 = __toESM(require_is_ci(), 1);
|
|
939354
939499
|
var import_path105 = __toESM(require("path"), 1);
|
|
939355
939500
|
|
|
939356
939501
|
// src/commands/write-translation/translation-service.ts
|
|
@@ -940207,7 +940352,7 @@ async function writeTranslationForProject({
|
|
|
940207
940352
|
}
|
|
940208
940353
|
const totalFilesToProcess = filesToProcess.length + (docsConfigHasChanged ? 1 : 0);
|
|
940209
940354
|
const totalProgressItems = totalFilesToProcess * targetLanguages.length;
|
|
940210
|
-
const useProgressBar = process.stdout.isTTY && !
|
|
940355
|
+
const useProgressBar = process.stdout.isTTY && !import_is_ci4.default && totalProgressItems > 0;
|
|
940211
940356
|
let progressBar;
|
|
940212
940357
|
if (useProgressBar) {
|
|
940213
940358
|
progressBar = new import_cli_progress2.default.SingleBar({
|
package/package.json
CHANGED