@fern-api/fern-api-dev 5.21.1 → 5.22.0
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 +184 -9
- package/package.json +1 -1
package/cli.cjs
CHANGED
|
@@ -661252,7 +661252,7 @@ var AccessTokenPosthogManager = class {
|
|
|
661252
661252
|
properties: {
|
|
661253
661253
|
...event,
|
|
661254
661254
|
...event.properties,
|
|
661255
|
-
version: "5.
|
|
661255
|
+
version: "5.22.0",
|
|
661256
661256
|
usingAccessToken: true,
|
|
661257
661257
|
...getRunIdProperties()
|
|
661258
661258
|
}
|
|
@@ -661307,7 +661307,7 @@ var UserPosthogManager = class {
|
|
|
661307
661307
|
distinctId: this.userId ?? await this.getPersistedDistinctId(),
|
|
661308
661308
|
event: "CLI",
|
|
661309
661309
|
properties: {
|
|
661310
|
-
version: "5.
|
|
661310
|
+
version: "5.22.0",
|
|
661311
661311
|
...event,
|
|
661312
661312
|
...event.properties,
|
|
661313
661313
|
usingAccessToken: false,
|
|
@@ -852580,7 +852580,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
|
|
|
852580
852580
|
var LOGS_FOLDER_NAME = "logs";
|
|
852581
852581
|
var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
|
|
852582
852582
|
function getCliSource() {
|
|
852583
|
-
const version7 = "5.
|
|
852583
|
+
const version7 = "5.22.0";
|
|
852584
852584
|
return `cli@${version7}`;
|
|
852585
852585
|
}
|
|
852586
852586
|
var DebugLogger = class {
|
|
@@ -865389,7 +865389,7 @@ var LegacyDocsPublisher = class {
|
|
|
865389
865389
|
previewId,
|
|
865390
865390
|
disableTemplates: void 0,
|
|
865391
865391
|
skipUpload,
|
|
865392
|
-
cliVersion: "5.
|
|
865392
|
+
cliVersion: "5.22.0",
|
|
865393
865393
|
loginCommand: "fern auth login"
|
|
865394
865394
|
});
|
|
865395
865395
|
if (taskContext.getResult() === TaskResult.Failure) {
|
|
@@ -920086,6 +920086,180 @@ function addGenerateCommand(cli) {
|
|
|
920086
920086
|
}));
|
|
920087
920087
|
}
|
|
920088
920088
|
|
|
920089
|
+
// ../cli-v2/lib/commands/sdk/list/command.js
|
|
920090
|
+
var import_generators_sdk4 = __toESM(require_generators_sdk(), 1);
|
|
920091
|
+
var GENERATOR_TYPES = ["sdk", "model", "server"];
|
|
920092
|
+
var ListCommand2 = class {
|
|
920093
|
+
async handle(context3, args) {
|
|
920094
|
+
const configuredTargets = await this.loadConfiguredTargets(context3);
|
|
920095
|
+
const languageFilter = args.language != null ? this.parseLanguageFilter(args.language) : void 0;
|
|
920096
|
+
const typeFilter = args.type != null ? this.parseTypeFilter(args.type) : void 0;
|
|
920097
|
+
const availableGenerators = await this.fetchAvailableGenerators({ context: context3, languageFilter, typeFilter });
|
|
920098
|
+
if (args.json) {
|
|
920099
|
+
this.printJson({ context: context3, configuredTargets, availableGenerators, languageFilter, typeFilter });
|
|
920100
|
+
return;
|
|
920101
|
+
}
|
|
920102
|
+
this.printHuman({ context: context3, configuredTargets, availableGenerators, languageFilter, typeFilter });
|
|
920103
|
+
}
|
|
920104
|
+
async loadConfiguredTargets(context3) {
|
|
920105
|
+
const result = await context3.loadWorkspace();
|
|
920106
|
+
if (result == null || !result.success) {
|
|
920107
|
+
if (result != null && !result.success) {
|
|
920108
|
+
context3.stderr.warn(source_default.dim(" Warning: Could not load fern.yml \u2014 showing unconfigured generators only."));
|
|
920109
|
+
}
|
|
920110
|
+
return [];
|
|
920111
|
+
}
|
|
920112
|
+
return result.workspace.sdks?.targets ?? [];
|
|
920113
|
+
}
|
|
920114
|
+
async fetchAvailableGenerators({ context: context3, languageFilter, typeFilter }) {
|
|
920115
|
+
const fdrOrigin = "https://registry-dev2.buildwithfern.com";
|
|
920116
|
+
const client3 = new import_generators_sdk4.FernRegistryClient({ environment: fdrOrigin });
|
|
920117
|
+
try {
|
|
920118
|
+
const response = await client3.generators.listGenerators();
|
|
920119
|
+
if (!response.ok) {
|
|
920120
|
+
context3.stderr.warn(source_default.dim(" Could not fetch available generators from registry."));
|
|
920121
|
+
return [];
|
|
920122
|
+
}
|
|
920123
|
+
let generators = response.body;
|
|
920124
|
+
if (languageFilter != null) {
|
|
920125
|
+
generators = generators.filter((g8) => g8.generatorLanguage === languageFilter);
|
|
920126
|
+
}
|
|
920127
|
+
if (typeFilter != null) {
|
|
920128
|
+
generators = generators.filter((g8) => g8.generatorType.type === typeFilter);
|
|
920129
|
+
}
|
|
920130
|
+
return generators;
|
|
920131
|
+
} catch {
|
|
920132
|
+
context3.stderr.warn(source_default.dim(" Could not fetch available generators from registry (network error)."));
|
|
920133
|
+
return [];
|
|
920134
|
+
}
|
|
920135
|
+
}
|
|
920136
|
+
printJson({ context: context3, configuredTargets, availableGenerators, languageFilter, typeFilter }) {
|
|
920137
|
+
const filteredTargets = this.filterConfiguredTargets({
|
|
920138
|
+
targets: configuredTargets,
|
|
920139
|
+
languageFilter,
|
|
920140
|
+
typeFilter
|
|
920141
|
+
});
|
|
920142
|
+
const configured = filteredTargets.map((t3) => ({
|
|
920143
|
+
name: t3.name,
|
|
920144
|
+
language: t3.lang,
|
|
920145
|
+
version: t3.version,
|
|
920146
|
+
output: this.formatOutput(t3),
|
|
920147
|
+
groups: t3.groups ?? [],
|
|
920148
|
+
image: t3.image
|
|
920149
|
+
}));
|
|
920150
|
+
const configuredImages = new Set(configuredTargets.map((t3) => t3.image));
|
|
920151
|
+
const available = availableGenerators.filter((g8) => !configuredImages.has(g8.dockerImage)).map((g8) => ({
|
|
920152
|
+
id: g8.id,
|
|
920153
|
+
displayName: g8.displayName,
|
|
920154
|
+
type: g8.generatorType.type,
|
|
920155
|
+
language: g8.generatorLanguage ?? null,
|
|
920156
|
+
dockerImage: g8.dockerImage
|
|
920157
|
+
}));
|
|
920158
|
+
context3.stdout.info(JSON.stringify({ configured, available }, null, 2));
|
|
920159
|
+
}
|
|
920160
|
+
printHuman({ context: context3, configuredTargets, availableGenerators, languageFilter, typeFilter }) {
|
|
920161
|
+
const filteredTargets = this.filterConfiguredTargets({
|
|
920162
|
+
targets: configuredTargets,
|
|
920163
|
+
languageFilter,
|
|
920164
|
+
typeFilter
|
|
920165
|
+
});
|
|
920166
|
+
if (filteredTargets.length > 0) {
|
|
920167
|
+
context3.stderr.info(`${Icons.info} ${source_default.cyan("Configured SDKs:")}`);
|
|
920168
|
+
context3.stderr.info("");
|
|
920169
|
+
for (const target of filteredTargets) {
|
|
920170
|
+
const version7 = source_default.dim(`v${target.version}`.padEnd(20));
|
|
920171
|
+
const output2 = source_default.dim(`\u2192 ${this.formatOutput(target)}`);
|
|
920172
|
+
const groups2 = target.groups != null && target.groups.length > 0 ? source_default.dim(` [${target.groups.join(", ")}]`) : "";
|
|
920173
|
+
const displayName = LANGUAGE_DISPLAY_NAMES[target.lang];
|
|
920174
|
+
context3.stderr.info(` ${source_default.white(displayName.padEnd(14))} ${version7} ${output2}${groups2}`);
|
|
920175
|
+
}
|
|
920176
|
+
} else if (languageFilter == null && typeFilter == null) {
|
|
920177
|
+
context3.stderr.info(source_default.dim("No SDK targets configured."));
|
|
920178
|
+
} else if (typeFilter != null && typeFilter !== "sdk") {
|
|
920179
|
+
context3.stderr.info(source_default.dim("Configured targets are always of type 'sdk'; none match the given type filter."));
|
|
920180
|
+
} else {
|
|
920181
|
+
context3.stderr.info(source_default.dim("No configured SDK targets match the given filters."));
|
|
920182
|
+
}
|
|
920183
|
+
const configuredImages = new Set(configuredTargets.map((t3) => t3.image));
|
|
920184
|
+
const unconfigured = availableGenerators.filter((g8) => !configuredImages.has(g8.dockerImage));
|
|
920185
|
+
if (unconfigured.length > 0) {
|
|
920186
|
+
context3.stderr.info("");
|
|
920187
|
+
context3.stderr.info(`${Icons.info} ${source_default.cyan("Available (not configured):")}`);
|
|
920188
|
+
context3.stderr.info("");
|
|
920189
|
+
for (const gen of unconfigured) {
|
|
920190
|
+
const lang = gen.generatorLanguage != null ? source_default.dim(gen.generatorLanguage.padEnd(12)) : source_default.dim("".padEnd(12));
|
|
920191
|
+
const type8 = source_default.dim(`[${gen.generatorType.type}]`);
|
|
920192
|
+
context3.stderr.info(` ${source_default.white(gen.displayName.padEnd(20))} ${lang} ${type8}`);
|
|
920193
|
+
}
|
|
920194
|
+
context3.stderr.info("");
|
|
920195
|
+
context3.stderr.info(source_default.dim(" Run 'fern sdk add --target <language>' to add a new SDK."));
|
|
920196
|
+
} else if (availableGenerators.length > 0) {
|
|
920197
|
+
context3.stderr.info("");
|
|
920198
|
+
context3.stderr.info(source_default.dim(" All available generators are already configured."));
|
|
920199
|
+
}
|
|
920200
|
+
}
|
|
920201
|
+
filterConfiguredTargets({ targets: targets2, languageFilter, typeFilter }) {
|
|
920202
|
+
let filtered = targets2;
|
|
920203
|
+
if (languageFilter != null) {
|
|
920204
|
+
filtered = filtered.filter((t3) => t3.lang === languageFilter);
|
|
920205
|
+
}
|
|
920206
|
+
if (typeFilter != null) {
|
|
920207
|
+
if (typeFilter !== "sdk") {
|
|
920208
|
+
return [];
|
|
920209
|
+
}
|
|
920210
|
+
}
|
|
920211
|
+
return filtered;
|
|
920212
|
+
}
|
|
920213
|
+
formatOutput(target) {
|
|
920214
|
+
if (target.output.git != null) {
|
|
920215
|
+
const git = target.output.git;
|
|
920216
|
+
if (schemas_exports13.isGitOutputGitHubRepository(git)) {
|
|
920217
|
+
return git.repository;
|
|
920218
|
+
}
|
|
920219
|
+
if (schemas_exports13.isGitOutputSelfHosted(git)) {
|
|
920220
|
+
return git.uri;
|
|
920221
|
+
}
|
|
920222
|
+
}
|
|
920223
|
+
return target.output.path ?? "./";
|
|
920224
|
+
}
|
|
920225
|
+
parseLanguageFilter(value2) {
|
|
920226
|
+
const lang = LANGUAGES.find((l9) => l9 === value2.toLowerCase());
|
|
920227
|
+
if (lang != null) {
|
|
920228
|
+
return lang;
|
|
920229
|
+
}
|
|
920230
|
+
const supported = LANGUAGES.join(", ");
|
|
920231
|
+
throw new CliError({
|
|
920232
|
+
message: `"${value2}" is not a supported language. Supported: ${supported}`,
|
|
920233
|
+
code: CliError.Code.ConfigError
|
|
920234
|
+
});
|
|
920235
|
+
}
|
|
920236
|
+
parseTypeFilter(value2) {
|
|
920237
|
+
const type8 = GENERATOR_TYPES.find((t3) => t3 === value2.toLowerCase());
|
|
920238
|
+
if (type8 != null) {
|
|
920239
|
+
return type8;
|
|
920240
|
+
}
|
|
920241
|
+
const supported = GENERATOR_TYPES.join(", ");
|
|
920242
|
+
throw new CliError({
|
|
920243
|
+
message: `"${value2}" is not a supported generator type. Supported: ${supported}`,
|
|
920244
|
+
code: CliError.Code.ConfigError
|
|
920245
|
+
});
|
|
920246
|
+
}
|
|
920247
|
+
};
|
|
920248
|
+
function addListCommand2(cli) {
|
|
920249
|
+
const cmd = new ListCommand2();
|
|
920250
|
+
command2(cli, "list", "List configured and available SDK generators", (context3, args) => cmd.handle(context3, args), (yargs) => yargs.option("language", {
|
|
920251
|
+
type: "string",
|
|
920252
|
+
description: "Filter by language (e.g. typescript, python, go)"
|
|
920253
|
+
}).option("type", {
|
|
920254
|
+
type: "string",
|
|
920255
|
+
description: "Filter by generator type (sdk, model, server)"
|
|
920256
|
+
}).option("json", {
|
|
920257
|
+
type: "boolean",
|
|
920258
|
+
default: false,
|
|
920259
|
+
description: "Output results as JSON to stdout"
|
|
920260
|
+
}));
|
|
920261
|
+
}
|
|
920262
|
+
|
|
920089
920263
|
// ../cli-v2/lib/commands/sdk/preview/command.js
|
|
920090
920264
|
var PreviewCommand2 = class {
|
|
920091
920265
|
generateCommand = new GenerateCommand();
|
|
@@ -920725,6 +920899,7 @@ function addSdkCommand(cli) {
|
|
|
920725
920899
|
addAddCommand,
|
|
920726
920900
|
addCheckCommand4,
|
|
920727
920901
|
addGenerateCommand,
|
|
920902
|
+
addListCommand2,
|
|
920728
920903
|
addPreviewCommand2,
|
|
920729
920904
|
addUpdateCommand
|
|
920730
920905
|
]);
|
|
@@ -939694,7 +939869,7 @@ var InteractiveTaskContextImpl = class extends TaskContextImpl {
|
|
|
939694
939869
|
};
|
|
939695
939870
|
|
|
939696
939871
|
// src/cli-context/upgrade-utils/getFernUpgradeMessage.ts
|
|
939697
|
-
var
|
|
939872
|
+
var import_generators_sdk5 = __toESM(require_generators_sdk(), 1);
|
|
939698
939873
|
function hasGeneratorUpgrade(generatorUpgradeInfo) {
|
|
939699
939874
|
return generatorUpgradeInfo.filter((gui) => gui.isUpgradeAvailable).length > 0;
|
|
939700
939875
|
}
|
|
@@ -939770,7 +939945,7 @@ ${await normalizeGeneratorName2(generatorUpgrade.generatorName)} (${generatorUpg
|
|
|
939770
939945
|
}) : message;
|
|
939771
939946
|
}
|
|
939772
939947
|
async function normalizeGeneratorName2(generatorImage) {
|
|
939773
|
-
const client3 = new
|
|
939948
|
+
const client3 = new import_generators_sdk5.FernRegistryClient({
|
|
939774
939949
|
environment: "https://registry-dev2.buildwithfern.com"
|
|
939775
939950
|
});
|
|
939776
939951
|
const generatorResponse = await client3.generators.getGeneratorByImage({ dockerImage: generatorImage });
|
|
@@ -940017,7 +940192,7 @@ var CliContext = class _CliContext {
|
|
|
940017
940192
|
if (false) {
|
|
940018
940193
|
this.logger.error("CLI_VERSION is not defined");
|
|
940019
940194
|
}
|
|
940020
|
-
return "5.
|
|
940195
|
+
return "5.22.0";
|
|
940021
940196
|
}
|
|
940022
940197
|
getCliName() {
|
|
940023
940198
|
if (false) {
|
|
@@ -940472,7 +940647,7 @@ async function loadProjectAndRegisterWorkspacesWithContext(cliContext, args, reg
|
|
|
940472
940647
|
}
|
|
940473
940648
|
|
|
940474
940649
|
// src/cliV2.ts
|
|
940475
|
-
var
|
|
940650
|
+
var import_generators_sdk6 = __toESM(require_generators_sdk(), 1);
|
|
940476
940651
|
var import_promises142 = require("fs/promises");
|
|
940477
940652
|
|
|
940478
940653
|
// src/commands/generator-list/getGeneratorList.ts
|
|
@@ -941404,7 +941579,7 @@ function addGeneratorCommands(cli, cliContext) {
|
|
|
941404
941579
|
description: "Whether or not to include major versions within the upgrade. Defaults to false, meaning major versions will be skipped."
|
|
941405
941580
|
}).option("channel", {
|
|
941406
941581
|
demandOption: false,
|
|
941407
|
-
choices: Object.values(
|
|
941582
|
+
choices: Object.values(import_generators_sdk6.FernRegistry.generators.ReleaseType)
|
|
941408
941583
|
}).option("list", {
|
|
941409
941584
|
demandOption: false,
|
|
941410
941585
|
boolean: true,
|
package/package.json
CHANGED