@fern-api/fern-api-dev 4.58.0 → 4.59.0-1-g6c7d34bd76f

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 +143 -33
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -499925,14 +499925,18 @@ __export(serialization_exports4, {
499925
499925
  AsyncApiSettingsSchema: () => AsyncApiSettingsSchema,
499926
499926
  AsyncApiSpecSchema: () => AsyncApiSpecSchema,
499927
499927
  BaseApiSettingsSchema: () => BaseApiSettingsSchema,
499928
+ BaseGeneratorInvocationSchema: () => BaseGeneratorInvocationSchema,
499928
499929
  CoerceConstsTo: () => CoerceConstsTo2,
499929
499930
  ConjureSchema: () => ConjureSchema,
499930
499931
  CratesOutputLocationSchema: () => CratesOutputLocationSchema,
499932
+ CustomGeneratorInvocationSchema: () => CustomGeneratorInvocationSchema,
499933
+ DefaultGeneratorInvocationSchema: () => DefaultGeneratorInvocationSchema,
499931
499934
  DefaultIntegerFormat: () => DefaultIntegerFormat2,
499932
499935
  ExampleStyle: () => ExampleStyle4,
499933
499936
  FormParameterEncoding: () => FormParameterEncoding2,
499934
499937
  GeneratorApiSettingsSchema: () => GeneratorApiSettingsSchema,
499935
499938
  GeneratorGroupSchema: () => GeneratorGroupSchema,
499939
+ GeneratorImageObjectSchema: () => GeneratorImageObjectSchema,
499936
499940
  GeneratorInvocationSchema: () => GeneratorInvocationSchema,
499937
499941
  GeneratorOutputSchema: () => GeneratorOutputSchema,
499938
499942
  GeneratorPublishMetadataSchema: () => GeneratorPublishMetadataSchema,
@@ -501908,6 +501912,7 @@ __export(generators_exports2, {
501908
501912
  DefaultIntegerFormat: () => DefaultIntegerFormat2,
501909
501913
  ExampleStyle: () => ExampleStyle4,
501910
501914
  FormParameterEncoding: () => FormParameterEncoding2,
501915
+ GeneratorImageObjectSchema: () => GeneratorImageObjectSchema,
501911
501916
  GeneratorsConfigurationSchema: () => GeneratorsConfigurationSchema,
501912
501917
  GeneratorsOpenApiObjectSchema: () => GeneratorsOpenApiObjectSchema,
501913
501918
  GeneratorsOpenApiSchema: () => GeneratorsOpenApiSchema,
@@ -502179,6 +502184,12 @@ var ApiConfigurationSchema = schemas_exports8.undiscriminatedUnion([
502179
502184
  // ../configuration/lib/generators-yml/schemas/serialization/resources/generators/types/ExampleStyle.js
502180
502185
  var ExampleStyle4 = schemas_exports8.enum_(["minimal", "comprehensive"]);
502181
502186
 
502187
+ // ../configuration/lib/generators-yml/schemas/serialization/resources/generators/types/GeneratorImageObjectSchema.js
502188
+ var GeneratorImageObjectSchema = schemas_exports8.object({
502189
+ name: schemas_exports8.string(),
502190
+ registry: schemas_exports8.string()
502191
+ });
502192
+
502182
502193
  // ../configuration/lib/generators-yml/schemas/serialization/resources/generators/types/OutputMetadataAuthor.js
502183
502194
  var OutputMetadataAuthor2 = schemas_exports8.object({
502184
502195
  name: schemas_exports8.string(),
@@ -502371,9 +502382,8 @@ var GithubConfigurationSchema = schemas_exports8.undiscriminatedUnion([
502371
502382
  GithubPushSchema
502372
502383
  ]);
502373
502384
 
502374
- // ../configuration/lib/generators-yml/schemas/serialization/resources/group/types/GeneratorInvocationSchema.js
502375
- var GeneratorInvocationSchema = schemas_exports8.object({
502376
- name: schemas_exports8.string(),
502385
+ // ../configuration/lib/generators-yml/schemas/serialization/resources/group/types/BaseGeneratorInvocationSchema.js
502386
+ var BaseGeneratorInvocationSchema = schemas_exports8.object({
502377
502387
  version: schemas_exports8.string(),
502378
502388
  output: GeneratorOutputSchema.optional(),
502379
502389
  github: GithubConfigurationSchema.optional(),
@@ -502389,6 +502399,19 @@ var GeneratorInvocationSchema = schemas_exports8.object({
502389
502399
  autorelease: schemas_exports8.boolean().optional()
502390
502400
  });
502391
502401
 
502402
+ // ../configuration/lib/generators-yml/schemas/serialization/resources/group/types/CustomGeneratorInvocationSchema.js
502403
+ var CustomGeneratorInvocationSchema = schemas_exports8.object({
502404
+ image: GeneratorImageObjectSchema
502405
+ }).extend(BaseGeneratorInvocationSchema);
502406
+
502407
+ // ../configuration/lib/generators-yml/schemas/serialization/resources/group/types/DefaultGeneratorInvocationSchema.js
502408
+ var DefaultGeneratorInvocationSchema = schemas_exports8.object({
502409
+ name: schemas_exports8.string()
502410
+ }).extend(BaseGeneratorInvocationSchema);
502411
+
502412
+ // ../configuration/lib/generators-yml/schemas/serialization/resources/group/types/GeneratorInvocationSchema.js
502413
+ var GeneratorInvocationSchema = schemas_exports8.undiscriminatedUnion([DefaultGeneratorInvocationSchema, CustomGeneratorInvocationSchema]);
502414
+
502392
502415
  // ../configuration/lib/generators-yml/schemas/serialization/resources/group/types/GeneratorGroupSchema.js
502393
502416
  var GeneratorGroupSchema = schemas_exports8.object({
502394
502417
  audiences: schemas_exports8.list(schemas_exports8.string()).optional(),
@@ -502483,7 +502506,10 @@ var GeneratorsConfigurationSchema = schemas_exports8.object({
502483
502506
  // ../configuration/lib/generators-yml/schemas/serialization/resources/group/index.js
502484
502507
  var group_exports2 = {};
502485
502508
  __export(group_exports2, {
502509
+ BaseGeneratorInvocationSchema: () => BaseGeneratorInvocationSchema,
502486
502510
  CratesOutputLocationSchema: () => CratesOutputLocationSchema,
502511
+ CustomGeneratorInvocationSchema: () => CustomGeneratorInvocationSchema,
502512
+ DefaultGeneratorInvocationSchema: () => DefaultGeneratorInvocationSchema,
502487
502513
  GeneratorApiSettingsSchema: () => GeneratorApiSettingsSchema,
502488
502514
  GeneratorGroupSchema: () => GeneratorGroupSchema,
502489
502515
  GeneratorInvocationSchema: () => GeneratorInvocationSchema,
@@ -535240,7 +535266,7 @@ async function addGenerator({ generatorName, generatorsConfiguration, groupName
535240
535266
  groupName,
535241
535267
  context: context3,
535242
535268
  update: async (group) => {
535243
- if (group.generators.some((generator) => addDefaultDockerOrgIfNotPresent(generator.name) === normalizedGeneratorName)) {
535269
+ if (group.generators.some((generator) => addDefaultDockerOrgIfNotPresent("image" in generator ? generator.image.name : generator.name) === normalizedGeneratorName)) {
535244
535270
  context3.failAndThrow(`${generatorName} is already installed in group ${groupName}.`);
535245
535271
  }
535246
535272
  const latestVersion2 = await getLatestGeneratorVersion({
@@ -535702,12 +535728,28 @@ async function convertGroup({ absolutePathToGeneratorsConfiguration, groupName,
535702
535728
  })))
535703
535729
  };
535704
535730
  }
535705
- async function convertGenerator({ absolutePathToGeneratorsConfiguration, generator, maybeGroupLevelMetadata, maybeTopLevelMetadata, maybeGroupLevelReviewers, maybeTopLevelReviewers, readme, context: context3 }) {
535731
+ function getGeneratorNameAndImage(generator, context3) {
535732
+ if ("image" in generator) {
535733
+ const correctedImageName = correctIncorrectDockerOrgWithWarning(generator.image.name, context3);
535734
+ const normalizedImageName = addDefaultDockerOrgIfNotPresent(correctedImageName);
535735
+ return {
535736
+ normalizedName: normalizedImageName,
535737
+ containerImage: `${generator.image.registry}/${correctedImageName}`
535738
+ };
535739
+ }
535706
535740
  const correctedName = correctIncorrectDockerOrgWithWarning(generator.name, context3);
535707
535741
  const normalizedName = addDefaultDockerOrgIfNotPresent(correctedName);
535742
+ return {
535743
+ normalizedName,
535744
+ containerImage: void 0
535745
+ };
535746
+ }
535747
+ async function convertGenerator({ absolutePathToGeneratorsConfiguration, generator, maybeGroupLevelMetadata, maybeTopLevelMetadata, maybeGroupLevelReviewers, maybeTopLevelReviewers, readme, context: context3 }) {
535748
+ const { normalizedName, containerImage } = getGeneratorNameAndImage(generator, context3);
535708
535749
  return {
535709
535750
  raw: generator,
535710
535751
  name: normalizedName,
535752
+ containerImage,
535711
535753
  version: generator.version,
535712
535754
  config: generator.config,
535713
535755
  outputMode: await convertOutputMode({
@@ -595524,6 +595566,8 @@ __export(schemas_exports12, {
595524
595566
  FolderConfigurationSchema: () => FolderConfigurationSchema,
595525
595567
  FooterLinksConfigSchema: () => FooterLinksConfigSchema,
595526
595568
  FormParameterEncodingSchema: () => FormParameterEncodingSchema,
595569
+ GeneratorImageObjectSchema: () => GeneratorImageObjectSchema2,
595570
+ GeneratorImageSchema: () => GeneratorImageSchema,
595527
595571
  GitHubOutputModeSchema: () => GitHubOutputModeSchema,
595528
595572
  GitHubRepositoryOutputModeSchema: () => GitHubRepositoryOutputModeSchema,
595529
595573
  GitHubRepositoryOutputSchema: () => GitHubRepositoryOutputSchema,
@@ -596012,6 +596056,13 @@ var ReadmeSchema2 = external_exports.object({
596012
596056
  exampleStyle: ExampleStyleSchema.optional()
596013
596057
  });
596014
596058
 
596059
+ // ../config/lib/schemas/GeneratorImageSchema.js
596060
+ var GeneratorImageObjectSchema2 = external_exports.object({
596061
+ name: external_exports.string(),
596062
+ registry: external_exports.string()
596063
+ });
596064
+ var GeneratorImageSchema = external_exports.union([external_exports.string(), GeneratorImageObjectSchema2]);
596065
+
596015
596066
  // ../config/lib/schemas/MetadataSchema.js
596016
596067
  var AuthorSchema = external_exports.object({
596017
596068
  name: external_exports.string(),
@@ -596141,7 +596192,7 @@ var PublishSchema = external_exports.object({
596141
596192
  var SdkTargetSchema = external_exports.object({
596142
596193
  api: external_exports.string().optional(),
596143
596194
  lang: SdkTargetLanguageSchema.optional(),
596144
- image: external_exports.string().optional(),
596195
+ image: GeneratorImageSchema.optional(),
596145
596196
  version: external_exports.string().optional(),
596146
596197
  config: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
596147
596198
  publish: PublishSchema.optional(),
@@ -602681,7 +602732,7 @@ var AccessTokenPosthogManager = class {
602681
602732
  properties: {
602682
602733
  ...event,
602683
602734
  ...event.properties,
602684
- version: "4.58.0",
602735
+ version: "4.59.0-1-g6c7d34bd76f",
602685
602736
  usingAccessToken: true
602686
602737
  }
602687
602738
  });
@@ -602732,7 +602783,7 @@ var UserPosthogManager = class {
602732
602783
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
602733
602784
  event: "CLI",
602734
602785
  properties: {
602735
- version: "4.58.0",
602786
+ version: "4.59.0-1-g6c7d34bd76f",
602736
602787
  ...event,
602737
602788
  ...event.properties,
602738
602789
  usingAccessToken: false,
@@ -627403,6 +627454,7 @@ var SdkConfigConverter = class {
627403
627454
  name: name2,
627404
627455
  lang: generatorInfo.lang,
627405
627456
  image: generatorInfo.image,
627457
+ registry: generatorInfo.registry,
627406
627458
  version: generatorInfo.version,
627407
627459
  api: this.resolveApi({ api: target.api }),
627408
627460
  sourceLocation: sourced.$loc,
@@ -627438,11 +627490,28 @@ var SdkConfigConverter = class {
627438
627490
  if (lang == null) {
627439
627491
  return void 0;
627440
627492
  }
627493
+ if (target.image != null) {
627494
+ if (typeof target.image === "string") {
627495
+ return {
627496
+ lang,
627497
+ image: addDefaultDockerOrgIfNotPresent(target.image),
627498
+ version: target.version ?? "latest",
627499
+ registry: void 0
627500
+ };
627501
+ }
627502
+ return {
627503
+ lang,
627504
+ image: addDefaultDockerOrgIfNotPresent(target.image.name),
627505
+ version: target.version ?? "latest",
627506
+ registry: target.image.registry
627507
+ };
627508
+ }
627441
627509
  const resolvedDockerImage = getImageReferenceFromLanguage({ lang, version: target.version });
627442
627510
  return {
627443
627511
  lang,
627444
627512
  image: resolvedDockerImage.image,
627445
- version: resolvedDockerImage.tag
627513
+ version: resolvedDockerImage.tag,
627514
+ registry: void 0
627446
627515
  };
627447
627516
  }
627448
627517
  convertConfig(config5) {
@@ -627453,7 +627522,8 @@ var SdkConfigConverter = class {
627453
627522
  return target.lang;
627454
627523
  }
627455
627524
  if (target.image != null) {
627456
- return getLanguageFromImage({ image: target.image });
627525
+ const imageName = typeof target.image === "string" ? target.image : target.image.name;
627526
+ return getLanguageFromImage({ image: addDefaultDockerOrgIfNotPresent(imageName) });
627457
627527
  }
627458
627528
  const lang = name2;
627459
627529
  if (LANGUAGES.includes(lang)) {
@@ -837241,18 +837311,19 @@ function convertSdkTargetsFromRaw(options2) {
837241
837311
  }
837242
837312
  function convertRawGeneratorToTarget(options2) {
837243
837313
  const { generator, groupName, languageCounts, apiName, warnings } = options2;
837244
- if (generator.name == null) {
837314
+ const generatorName = generator.name ?? generator.image?.name;
837315
+ if (generatorName == null) {
837245
837316
  warnings.push({
837246
837317
  type: "conflict",
837247
- message: "Generator missing 'name' field"
837318
+ message: "Generator missing 'name' or 'image.name' field"
837248
837319
  });
837249
837320
  return void 0;
837250
837321
  }
837251
- const language = getLanguageFromGeneratorName2(generator.name);
837322
+ const language = getLanguageFromGeneratorName2(generatorName);
837252
837323
  if (language == null) {
837253
837324
  warnings.push({
837254
837325
  type: "unsupported",
837255
- message: `Unknown generator: ${generator.name}`,
837326
+ message: `Unknown generator: ${generatorName}`,
837256
837327
  suggestion: "Manually add this generator to your fern.yml"
837257
837328
  });
837258
837329
  return void 0;
@@ -837264,6 +837335,12 @@ function convertRawGeneratorToTarget(options2) {
837264
837335
  const target = {
837265
837336
  output: {}
837266
837337
  };
837338
+ if (generator.image != null) {
837339
+ target.image = {
837340
+ name: generator.image.name,
837341
+ registry: generator.image.registry
837342
+ };
837343
+ }
837267
837344
  target.lang = language;
837268
837345
  if (apiName != null) {
837269
837346
  target.api = apiName;
@@ -839962,7 +840039,7 @@ var import_path54 = __toESM(require("path"), 1);
839962
840039
  var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
839963
840040
  var LOGS_FOLDER_NAME = "logs";
839964
840041
  function getCliSource() {
839965
- const version7 = "4.58.0";
840042
+ const version7 = "4.59.0-1-g6c7d34bd76f";
839966
840043
  return `cli@${version7}`;
839967
840044
  }
839968
840045
  var DebugLogger = class {
@@ -842259,7 +842336,7 @@ async function visitGeneratorGroup({ group, visitor, nodePath, cliVersion }) {
842259
842336
  ...nodePath,
842260
842337
  "generators",
842261
842338
  idx.toString(),
842262
- generator.name
842339
+ "image" in generator ? generator.image.name : generator.name
842263
842340
  ])));
842264
842341
  }
842265
842342
 
@@ -842345,13 +842422,14 @@ var CompatibleIrVersionsRule = {
842345
842422
  return [];
842346
842423
  }
842347
842424
  const cliIrVersion = cliRelease.body.irVersion;
842425
+ const invocationName = "image" in invocation ? invocation.image.name : invocation.name;
842348
842426
  let invocationIrVersion;
842349
842427
  if (invocation["ir-version"] != null) {
842350
842428
  invocationIrVersion = getOverriddenIrVersion(invocation["ir-version"]);
842351
842429
  } else {
842352
842430
  const normalizedInvocation = {
842353
842431
  ...invocation,
842354
- name: addDefaultDockerOrgIfNotPresent(invocation.name)
842432
+ name: addDefaultDockerOrgIfNotPresent(invocationName)
842355
842433
  };
842356
842434
  const maybeIrVersion = await getIrVersionForGenerator(normalizedInvocation);
842357
842435
  if (maybeIrVersion == null) {
@@ -842364,7 +842442,7 @@ var CompatibleIrVersionsRule = {
842364
842442
  }
842365
842443
  const minCliVersion = await fdr.generators.cli.getMinCliForIr(invocationIrVersion);
842366
842444
  if (minCliVersion.ok) {
842367
- return getMaybeBadVersionMessage(invocation.name, minCliVersion.body.version, cliVersion) ?? [];
842445
+ return getMaybeBadVersionMessage(invocationName, minCliVersion.body.version, cliVersion) ?? [];
842368
842446
  } else {
842369
842447
  return [];
842370
842448
  }
@@ -851063,7 +851141,7 @@ var LegacyDocsPublisher = class {
851063
851141
  previewId: void 0,
851064
851142
  disableTemplates: void 0,
851065
851143
  skipUpload,
851066
- cliVersion: "4.58.0"
851144
+ cliVersion: "4.59.0-1-g6c7d34bd76f"
851067
851145
  });
851068
851146
  if (taskContext.getResult() === TaskResult.Failure) {
851069
851147
  return { success: false };
@@ -876262,7 +876340,8 @@ var BaseJavaCustomConfigSchema = external_exports2.object({
876262
876340
  // Hidden options (for debugging).
876263
876341
  "enable-gradle-profiling": external_exports2.boolean().optional(),
876264
876342
  // Deprecated.
876265
- "wrapped-aliases": external_exports2.boolean().optional()
876343
+ "wrapped-aliases": external_exports2.boolean().optional(),
876344
+ maxRetries: external_exports2.number().int().min(0).optional()
876266
876345
  });
876267
876346
 
876268
876347
  // ../../../generators/java-v2/ast/lib/java.js
@@ -902577,7 +902656,7 @@ async function writeFilesToDiskAndRunGenerator({ organization, absolutePathToFer
902577
902656
  context3.logger.debug("Will write snippet-templates.json to: " + absolutePathToTmpSnippetTemplatesJSON);
902578
902657
  }
902579
902658
  const environment2 = executionEnvironment ?? new ContainerExecutionEnvironment({
902580
- containerImage: `${generatorInvocation.name}:${generatorInvocation.version}`,
902659
+ containerImage: generatorInvocation.containerImage ? `${generatorInvocation.containerImage}:${generatorInvocation.version}` : `${generatorInvocation.name}:${generatorInvocation.version}`,
902581
902660
  keepContainer: keepDocker
902582
902661
  });
902583
902662
  const paths = environment2.usesContainerPaths ? {
@@ -903109,7 +903188,7 @@ var GenerationRunner = class {
903109
903188
  constructor(executionEnvironment) {
903110
903189
  this.executionEnvironment = executionEnvironment;
903111
903190
  }
903112
- async run({ organization, absolutePathToFernConfig, workspace, generatorGroup, context: context3, irVersionOverride, outputVersionOverride, shouldGenerateDynamicSnippetTests, skipUnstableDynamicSnippetTests, inspect: inspect6, skipFernignore }) {
903191
+ async run({ organization, absolutePathToFernConfig, workspace, generatorGroup, context: context3, irVersionOverride, outputVersionOverride, shouldGenerateDynamicSnippetTests, skipUnstableDynamicSnippetTests, inspect: inspect6, skipFernignore, skipAutogenerationIfManualExamplesExist }) {
903113
903192
  const results = await Promise.all(generatorGroup.generators.map(async (generatorInvocation) => {
903114
903193
  return context3.runInteractiveTask({ name: generatorInvocation.name }, async (interactiveTaskContext) => {
903115
903194
  if (generatorInvocation.absolutePathToLocalOutput == null) {
@@ -903127,7 +903206,8 @@ var GenerationRunner = class {
903127
903206
  outputVersionOverride,
903128
903207
  absolutePathToFernConfig,
903129
903208
  inspect: inspect6,
903130
- skipFernignore
903209
+ skipFernignore,
903210
+ skipAutogenerationIfManualExamplesExist
903131
903211
  });
903132
903212
  interactiveTaskContext.logger.info(source_default.green("Wrote files to " + generatorInvocation.absolutePathToLocalOutput));
903133
903213
  if (shouldGenerateDynamicSnippetTests && generatorInvocation.language != null) {
@@ -903154,7 +903234,7 @@ var GenerationRunner = class {
903154
903234
  });
903155
903235
  }));
903156
903236
  }
903157
- async executeGenerator({ generatorGroup, generatorInvocation, context: context3, workspace, organization, irVersionOverride, outputVersionOverride, absolutePathToFernConfig, inspect: inspect6, skipFernignore }) {
903237
+ async executeGenerator({ generatorGroup, generatorInvocation, context: context3, workspace, organization, irVersionOverride, outputVersionOverride, absolutePathToFernConfig, inspect: inspect6, skipFernignore, skipAutogenerationIfManualExamplesExist }) {
903158
903238
  context3.logger.info(`Starting generation for ${generatorInvocation.name}`);
903159
903239
  if (generatorInvocation.absolutePathToLocalOutput == null) {
903160
903240
  throw new Error("Output path is required for generation");
@@ -903167,7 +903247,8 @@ var GenerationRunner = class {
903167
903247
  smartCasing: generatorInvocation.smartCasing,
903168
903248
  exampleGeneration: {
903169
903249
  includeOptionalRequestPropertyExamples: true,
903170
- disabled: generatorInvocation.disableExamples
903250
+ disabled: generatorInvocation.disableExamples,
903251
+ skipAutogenerationIfManualExamplesExist: skipAutogenerationIfManualExamplesExist ?? false
903171
903252
  },
903172
903253
  readme: generatorInvocation.readme,
903173
903254
  version: outputVersionOverride,
@@ -903231,6 +903312,7 @@ var LegacyGeneratorInvocationAdapter = class {
903231
903312
  return {
903232
903313
  raw: this.buildRaw(target),
903233
903314
  name: target.image,
903315
+ containerImage: target.registry ? `${target.registry}/${removeDefaultDockerOrgIfPresent(target.image)}` : void 0,
903234
903316
  version: target.version,
903235
903317
  config: target.config,
903236
903318
  language: this.mapLanguage(target.lang),
@@ -903653,7 +903735,8 @@ var LegacyLocalGenerationRunner = class {
903653
903735
  };
903654
903736
  }
903655
903737
  async runLocalGeneration({ args, taskContext, fernWorkspace, generatorGroup, generatorInvocation }) {
903656
- const containerImage = `${args.target.image}:${args.target.version}`;
903738
+ const imageRef = args.target.registry ? `${args.target.registry}/${removeDefaultDockerOrgIfPresent(args.target.image)}` : args.target.image;
903739
+ const containerImage = `${imageRef}:${args.target.version}`;
903657
903740
  const executionEnvironment = new ContainerExecutionEnvironment({
903658
903741
  containerImage,
903659
903742
  keepContainer: args.keepContainer ?? false,
@@ -903846,6 +903929,11 @@ var GeneratorPipeline = class {
903846
903929
  if (this.isLocalGeneration(args)) {
903847
903930
  return await this.runLocalGeneration(args);
903848
903931
  }
903932
+ if (args.target.registry != null) {
903933
+ throw new CliError({
903934
+ message: `Custom image configurations are only supported with local generation (--local). Target "${args.target.name}" uses a custom image registry.`
903935
+ });
903936
+ }
903849
903937
  return await this.runRemoteGeneration(args);
903850
903938
  } catch (error50) {
903851
903939
  const message = extractErrorMessage(error50);
@@ -904072,6 +904160,7 @@ var WorkspaceBuilder = class {
904072
904160
  name: lang,
904073
904161
  api: DEFAULT_API_NAME,
904074
904162
  image: imageRef.image,
904163
+ registry: void 0,
904075
904164
  lang,
904076
904165
  version: imageRef.tag,
904077
904166
  sourceLocation,
@@ -904683,11 +904772,12 @@ var GeneratorMigrator = class _GeneratorMigrator {
904683
904772
  * migration system expects.
904684
904773
  */
904685
904774
  toGeneratorInvocationSchema(target) {
904686
- return {
904775
+ const invocation = {
904687
904776
  name: target.image,
904688
904777
  version: target.version,
904689
904778
  config: target.config
904690
904779
  };
904780
+ return invocation;
904691
904781
  }
904692
904782
  /**
904693
904783
  * Applies the migrated `config` field back to the YAML document via
@@ -924217,7 +924307,7 @@ var CliContext = class {
924217
924307
  if (false) {
924218
924308
  this.logger.error("CLI_VERSION is not defined");
924219
924309
  }
924220
- return "4.58.0";
924310
+ return "4.59.0-1-g6c7d34bd76f";
924221
924311
  }
924222
924312
  getCliName() {
924223
924313
  if (false) {
@@ -925026,7 +925116,12 @@ Please report this issue at: https://github.com/fern-api/fern/issues`
925026
925116
  };
925027
925117
  }
925028
925118
  function isValidGeneratorConfig(config5) {
925029
- return typeof config5 === "object" && config5 != null && "name" in config5 && typeof config5.name === "string";
925119
+ if (typeof config5 !== "object" || config5 == null) {
925120
+ return false;
925121
+ }
925122
+ const hasValidName = "name" in config5 && typeof config5.name === "string";
925123
+ const hasValidImage = "image" in config5 && config5.image != null && typeof config5.image === "object";
925124
+ return hasValidName || hasValidImage;
925030
925125
  }
925031
925126
  async function loadAndRunMigrations(params2) {
925032
925127
  const { generatorName, from: from4, to: to8, config: config5, logger: logger4 } = params2;
@@ -925034,7 +925129,7 @@ async function loadAndRunMigrations(params2) {
925034
925129
  throw new Error(
925035
925130
  `Invalid generator configuration for ${generatorName}.
925036
925131
 
925037
- The generator configuration must be an object with a 'name' property, but the current configuration does not match this structure. This may indicate a malformed generators.yml file.
925132
+ The generator configuration must be an object with either a 'name' property or an 'image' property, but the current configuration does not match this structure. This may indicate a malformed generators.yml file.
925038
925133
 
925039
925134
  Please check your generators.yml file and ensure the generator is properly configured.`
925040
925135
  );
@@ -925143,6 +925238,14 @@ async function loadAndUpdateGenerators({
925143
925238
  `Expected generator in group ${groupName} to be a map in ${import_path79.default.relative(process.cwd(), filepath)}`
925144
925239
  );
925145
925240
  }
925241
+ if (generator.get("image") != null) {
925242
+ const imageNode = generator.get("image");
925243
+ const imageName = import_yaml6.default.isMap(imageNode) ? imageNode.get("name") : "unknown";
925244
+ context3.logger.warn(
925245
+ `Skipping custom image generator "${imageName}" in group ${groupName}: generators using a custom image cannot be auto-upgraded.`
925246
+ );
925247
+ continue;
925248
+ }
925146
925249
  const generatorName = generator.get("name");
925147
925250
  const normalizedGeneratorName = normalizeGeneratorName(generatorName);
925148
925251
  if (normalizedGeneratorName == null) {
@@ -933515,6 +933618,13 @@ async function generateWorkspace({
933515
933618
  skipFernignore
933516
933619
  });
933517
933620
  } else if (token != null) {
933621
+ const customImageGenerators = group.generators.filter((g19) => g19.containerImage != null);
933622
+ if (customImageGenerators.length > 0) {
933623
+ const names2 = customImageGenerators.map((g19) => g19.name).join(", ");
933624
+ return context3.failAndThrow(
933625
+ `Custom image configurations are only supported with local generation (--local). The following generators use custom images: ${names2}`
933626
+ );
933627
+ }
933518
933628
  await runRemoteGenerationForAPIWorkspace({
933519
933629
  projectConfig,
933520
933630
  organization,
@@ -937299,7 +937409,7 @@ async function getFernDirectory9() {
937299
937409
  }
937300
937410
 
937301
937411
  // ../cli-migrations/lib/migrations/0.0.241/add-generator-groups/old-generators-configuration/BaseGeneratorInvocationSchema.js
937302
- var BaseGeneratorInvocationSchema = external_exports2.strictObject({
937412
+ var BaseGeneratorInvocationSchema2 = external_exports2.strictObject({
937303
937413
  name: external_exports2.string(),
937304
937414
  version: external_exports2.string(),
937305
937415
  config: external_exports2.unknown(),
@@ -937307,7 +937417,7 @@ var BaseGeneratorInvocationSchema = external_exports2.strictObject({
937307
937417
  });
937308
937418
 
937309
937419
  // ../cli-migrations/lib/migrations/0.0.241/add-generator-groups/old-generators-configuration/DraftGeneratorInvocationSchema.js
937310
- var DraftGeneratorInvocationSchema = BaseGeneratorInvocationSchema.extend({
937420
+ var DraftGeneratorInvocationSchema = BaseGeneratorInvocationSchema2.extend({
937311
937421
  mode: external_exports2.union([external_exports2.literal("publish"), external_exports2.literal("download-files")]),
937312
937422
  "output-path": external_exports2.optional(external_exports2.string())
937313
937423
  });
@@ -937354,7 +937464,7 @@ var GithubRepositoryOutputSchema = external_exports2.strictObject({
937354
937464
  });
937355
937465
 
937356
937466
  // ../cli-migrations/lib/migrations/0.0.241/add-generator-groups/old-generators-configuration/ReleaseGeneratorInvocationSchema.js
937357
- var ReleaseGeneratorInvocationSchema = BaseGeneratorInvocationSchema.extend({
937467
+ var ReleaseGeneratorInvocationSchema = BaseGeneratorInvocationSchema2.extend({
937358
937468
  publishing: external_exports2.optional(GeneratorPublishingSchema),
937359
937469
  github: external_exports2.optional(GithubRepositoryOutputSchema)
937360
937470
  });
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.58.0",
2
+ "version": "4.59.0-1-g6c7d34bd76f",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",