@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.
Files changed (2) hide show
  1. package/cli.cjs +184 -9
  2. 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.21.1",
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.21.1",
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.21.1";
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.21.1",
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 import_generators_sdk4 = __toESM(require_generators_sdk(), 1);
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 import_generators_sdk4.FernRegistryClient({
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.21.1";
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 import_generators_sdk5 = __toESM(require_generators_sdk(), 1);
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(import_generators_sdk5.FernRegistry.generators.ReleaseType)
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.21.1",
2
+ "version": "5.22.0",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",