@fern-api/fern-api-dev 4.41.0 → 4.42.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 +67 -26
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -581649,7 +581649,7 @@ var AccessTokenPosthogManager = class {
581649
581649
  properties: {
581650
581650
  ...event,
581651
581651
  ...event.properties,
581652
- version: "4.41.0",
581652
+ version: "4.42.0",
581653
581653
  usingAccessToken: true
581654
581654
  }
581655
581655
  });
@@ -581700,7 +581700,7 @@ var UserPosthogManager = class {
581700
581700
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
581701
581701
  event: "CLI",
581702
581702
  properties: {
581703
- version: "4.41.0",
581703
+ version: "4.42.0",
581704
581704
  ...event,
581705
581705
  ...event.properties,
581706
581706
  usingAccessToken: false,
@@ -787803,7 +787803,7 @@ var import_path51 = __toESM(require("path"), 1);
787803
787803
  var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
787804
787804
  var LOGS_FOLDER_NAME = "logs";
787805
787805
  function getCliSource() {
787806
- const version8 = "4.41.0";
787806
+ const version8 = "4.42.0";
787807
787807
  return `cli@${version8}`;
787808
787808
  }
787809
787809
  var DebugLogger = class {
@@ -796626,9 +796626,11 @@ async function retryWithRateLimit({ fn: fn5, retryRateLimited, logger, onRateLim
796626
796626
 
796627
796627
  // ../generation/remote-generation/remote-workspace-runner/lib/createAndStartJob.js
796628
796628
  var gzipAsync = (0, import_util15.promisify)(import_zlib5.gzip);
796629
- async function createAndStartJob({ projectConfig, workspace, organization, intermediateRepresentation, generatorInvocation, version: version8, context: context2, shouldLogS3Url, token, whitelabel, irVersionOverride, absolutePathToPreview, fernignorePath, retryRateLimited }) {
796629
+ async function createAndStartJob({ projectConfig, workspace, organization, intermediateRepresentation, generatorInvocation, version: version8, context: context2, shouldLogS3Url, token, whitelabel, irVersionOverride, absolutePathToPreview, fernignorePath, skipFernignore, retryRateLimited }) {
796630
796630
  let fernignoreContents;
796631
- if (fernignorePath != null) {
796631
+ if (skipFernignore) {
796632
+ fernignoreContents = "";
796633
+ } else if (fernignorePath != null) {
796632
796634
  try {
796633
796635
  fernignoreContents = await (0, import_promises86.readFile)(fernignorePath, "utf-8");
796634
796636
  } catch (error49) {
@@ -797257,7 +797259,7 @@ var SourceUploader = class {
797257
797259
  };
797258
797260
 
797259
797261
  // ../generation/remote-generation/remote-workspace-runner/lib/runRemoteGenerationForGenerator.js
797260
- async function runRemoteGenerationForGenerator({ projectConfig, organization, workspace, interactiveTaskContext, generatorInvocation, version: version8, audiences, shouldLogS3Url, token, whitelabel, irVersionOverride, absolutePathToPreview, readme, fernignorePath, dynamicIrOnly, retryRateLimited, requireEnvVars }) {
797262
+ async function runRemoteGenerationForGenerator({ projectConfig, organization, workspace, interactiveTaskContext, generatorInvocation, version: version8, audiences, shouldLogS3Url, token, whitelabel, irVersionOverride, absolutePathToPreview, readme, fernignorePath, skipFernignore, dynamicIrOnly, retryRateLimited, requireEnvVars }) {
797261
797263
  const fdr = createFdrService({ token: token.value });
797262
797264
  const fdrOrigin = "https://registry-dev2.buildwithfern.com";
797263
797265
  const isAirGapped = await detectAirGappedMode(`${fdrOrigin}/health`, interactiveTaskContext.logger);
@@ -797421,6 +797423,7 @@ async function runRemoteGenerationForGenerator({ projectConfig, organization, wo
797421
797423
  irVersionOverride,
797422
797424
  absolutePathToPreview,
797423
797425
  fernignorePath,
797426
+ skipFernignore,
797424
797427
  retryRateLimited
797425
797428
  });
797426
797429
  interactiveTaskContext.logger.debug(`Job ID: ${job.jobId}`);
@@ -797556,7 +797559,7 @@ async function uploadDynamicIRForSdkGeneration({ fdr, organization, version: ver
797556
797559
  }
797557
797560
 
797558
797561
  // ../generation/remote-generation/remote-workspace-runner/lib/runRemoteGenerationForAPIWorkspace.js
797559
- async function runRemoteGenerationForAPIWorkspace({ projectConfig, organization, workspace, context: context2, generatorGroup, version: version8, shouldLogS3Url, token, whitelabel, absolutePathToPreview, mode, fernignorePath, dynamicIrOnly, validateWorkspace, retryRateLimited, requireEnvVars }) {
797562
+ async function runRemoteGenerationForAPIWorkspace({ projectConfig, organization, workspace, context: context2, generatorGroup, version: version8, shouldLogS3Url, token, whitelabel, absolutePathToPreview, mode, fernignorePath, skipFernignore, dynamicIrOnly, validateWorkspace, retryRateLimited, requireEnvVars }) {
797560
797563
  if (generatorGroup.generators.length === 0) {
797561
797564
  context2.logger.warn("No generators specified.");
797562
797565
  return null;
@@ -797574,7 +797577,7 @@ async function runRemoteGenerationForAPIWorkspace({ projectConfig, organization,
797574
797577
  ossWorkspace: workspace instanceof OSSWorkspace ? workspace : void 0
797575
797578
  });
797576
797579
  }
797577
- const effectiveFernignorePath = fernignorePath ?? await resolveAutoDiscoveredFernignorePath({
797580
+ const effectiveFernignorePath = skipFernignore ? void 0 : fernignorePath ?? await resolveAutoDiscoveredFernignorePath({
797578
797581
  generatorInvocation,
797579
797582
  context: interactiveTaskContext
797580
797583
  });
@@ -797613,6 +797616,7 @@ async function runRemoteGenerationForAPIWorkspace({ projectConfig, organization,
797613
797616
  irVersionOverride: generatorInvocation.irVersionOverride,
797614
797617
  absolutePathToPreview,
797615
797618
  fernignorePath: effectiveFernignorePath,
797619
+ skipFernignore,
797616
797620
  dynamicIrOnly,
797617
797621
  retryRateLimited,
797618
797622
  requireEnvVars
@@ -798614,7 +798618,7 @@ var LegacyDocsPublisher = class {
798614
798618
  previewId: void 0,
798615
798619
  disableTemplates: void 0,
798616
798620
  skipUpload,
798617
- cliVersion: "4.41.0"
798621
+ cliVersion: "4.42.0"
798618
798622
  });
798619
798623
  if (taskContext.getResult() === TaskResult.Failure) {
798620
798624
  return { success: false };
@@ -849143,7 +849147,8 @@ var LocalTaskHandler = class {
849143
849147
  autoVersioningCache;
849144
849148
  generatorLanguage;
849145
849149
  absolutePathToSpecRepo;
849146
- constructor({ context: context2, absolutePathToTmpOutputDirectory, absolutePathToTmpSnippetJSON, absolutePathToLocalSnippetTemplateJSON, absolutePathToLocalOutput, absolutePathToLocalSnippetJSON, absolutePathToTmpSnippetTemplatesJSON, version: version8, ai: ai7, isWhitelabel, autoVersioningCache, generatorLanguage, absolutePathToSpecRepo }) {
849150
+ skipFernignore;
849151
+ constructor({ context: context2, absolutePathToTmpOutputDirectory, absolutePathToTmpSnippetJSON, absolutePathToLocalSnippetTemplateJSON, absolutePathToLocalOutput, absolutePathToLocalSnippetJSON, absolutePathToTmpSnippetTemplatesJSON, version: version8, ai: ai7, isWhitelabel, autoVersioningCache, generatorLanguage, absolutePathToSpecRepo, skipFernignore }) {
849147
849152
  this.context = context2;
849148
849153
  this.absolutePathToLocalOutput = absolutePathToLocalOutput;
849149
849154
  this.absolutePathToTmpOutputDirectory = absolutePathToTmpOutputDirectory;
@@ -849157,9 +849162,10 @@ var LocalTaskHandler = class {
849157
849162
  this.autoVersioningCache = autoVersioningCache;
849158
849163
  this.generatorLanguage = generatorLanguage;
849159
849164
  this.absolutePathToSpecRepo = absolutePathToSpecRepo;
849165
+ this.skipFernignore = skipFernignore ?? false;
849160
849166
  }
849161
849167
  async copyGeneratedFiles() {
849162
- const isFernIgnorePresent = await this.isFernIgnorePresent();
849168
+ const isFernIgnorePresent = this.skipFernignore ? false : await this.isFernIgnorePresent();
849163
849169
  const isExistingGitRepo = await this.isGitRepository();
849164
849170
  const priorChangelog = this.version != null && isAutoVersion(this.version) ? await this.readPriorChangelog(3) : "";
849165
849171
  if (isFernIgnorePresent) {
@@ -849692,7 +849698,7 @@ function extractLicenseFilePath(generatorInvocation, absolutePathToFernConfig) {
849692
849698
  }
849693
849699
  return void 0;
849694
849700
  }
849695
- async function writeFilesToDiskAndRunGenerator({ organization, absolutePathToFernConfig, workspace, generatorInvocation, absolutePathToLocalOutput, absolutePathToLocalSnippetJSON, absolutePathToLocalSnippetTemplateJSON, audiences, version: version8, workspaceTempDir, keepDocker, context: context2, irVersionOverride, outputVersionOverride, writeUnitTests, generateOauthClients, generatePaginatedClients, includeOptionalRequestPropertyExamples, inspect: inspect5, executionEnvironment, runner, whiteLabel, ir: ir15, ai: ai7, autoVersioningCache, absolutePathToSpecRepo }) {
849701
+ async function writeFilesToDiskAndRunGenerator({ organization, absolutePathToFernConfig, workspace, generatorInvocation, absolutePathToLocalOutput, absolutePathToLocalSnippetJSON, absolutePathToLocalSnippetTemplateJSON, audiences, version: version8, workspaceTempDir, keepDocker, context: context2, irVersionOverride, outputVersionOverride, writeUnitTests, generateOauthClients, generatePaginatedClients, includeOptionalRequestPropertyExamples, inspect: inspect5, executionEnvironment, runner, whiteLabel, ir: ir15, ai: ai7, autoVersioningCache, absolutePathToSpecRepo, skipFernignore }) {
849696
849702
  const { latest: latest2, migrated } = await getIntermediateRepresentation({
849697
849703
  workspace,
849698
849704
  audiences,
@@ -849802,7 +849808,8 @@ async function writeFilesToDiskAndRunGenerator({ organization, absolutePathToFer
849802
849808
  isWhitelabel: ir15.readmeConfig?.whiteLabel ?? false,
849803
849809
  autoVersioningCache,
849804
849810
  generatorLanguage,
849805
- absolutePathToSpecRepo
849811
+ absolutePathToSpecRepo,
849812
+ skipFernignore
849806
849813
  });
849807
849814
  const generatedFilesResult = await taskHandler.copyGeneratedFiles();
849808
849815
  return {
@@ -849852,7 +849859,7 @@ var fs16 = __toESM(require("fs/promises"), 1);
849852
849859
  var import_os13 = __toESM(require("os"), 1);
849853
849860
  var import_path70 = __toESM(require("path"), 1);
849854
849861
  var import_tmp_promise14 = __toESM(require_tmp_promise(), 1);
849855
- async function runLocalGenerationForWorkspace({ token, projectConfig, workspace, generatorGroup, version: version8, keepDocker, inspect: inspect5, context: context2, absolutePathToPreview, runner, ai: ai7, replay, noReplay, validateWorkspace, requireEnvVars }) {
849862
+ async function runLocalGenerationForWorkspace({ token, projectConfig, workspace, generatorGroup, version: version8, keepDocker, inspect: inspect5, context: context2, absolutePathToPreview, runner, ai: ai7, replay, noReplay, validateWorkspace, requireEnvVars, skipFernignore }) {
849856
849863
  const userProvidedVersion = version8;
849857
849864
  if (userProvidedVersion != null) {
849858
849865
  if (absolutePathToPreview != null) {
@@ -850044,7 +850051,8 @@ generators:
850044
850051
  runner,
850045
850052
  ai: ai7,
850046
850053
  autoVersioningCache,
850047
- absolutePathToSpecRepo: dirname4(workspace.absoluteFilePath)
850054
+ absolutePathToSpecRepo: dirname4(workspace.absoluteFilePath),
850055
+ skipFernignore
850048
850056
  });
850049
850057
  interactiveTaskContext.logger.info(source_default.green("Wrote files to " + absolutePathToLocalOutput));
850050
850058
  if (selfhostedGithubConfig != null && shouldCommit) {
@@ -850266,7 +850274,7 @@ var GenerationRunner = class {
850266
850274
  constructor(executionEnvironment) {
850267
850275
  this.executionEnvironment = executionEnvironment;
850268
850276
  }
850269
- async run({ organization, absolutePathToFernConfig, workspace, generatorGroup, context: context2, irVersionOverride, outputVersionOverride, shouldGenerateDynamicSnippetTests, skipUnstableDynamicSnippetTests, inspect: inspect5 }) {
850277
+ async run({ organization, absolutePathToFernConfig, workspace, generatorGroup, context: context2, irVersionOverride, outputVersionOverride, shouldGenerateDynamicSnippetTests, skipUnstableDynamicSnippetTests, inspect: inspect5, skipFernignore }) {
850270
850278
  const results = await Promise.all(generatorGroup.generators.map(async (generatorInvocation) => {
850271
850279
  return context2.runInteractiveTask({ name: generatorInvocation.name }, async (interactiveTaskContext) => {
850272
850280
  if (generatorInvocation.absolutePathToLocalOutput == null) {
@@ -850283,7 +850291,8 @@ var GenerationRunner = class {
850283
850291
  irVersionOverride,
850284
850292
  outputVersionOverride,
850285
850293
  absolutePathToFernConfig,
850286
- inspect: inspect5
850294
+ inspect: inspect5,
850295
+ skipFernignore
850287
850296
  });
850288
850297
  interactiveTaskContext.logger.info(source_default.green("Wrote files to " + generatorInvocation.absolutePathToLocalOutput));
850289
850298
  if (shouldGenerateDynamicSnippetTests && generatorInvocation.language != null) {
@@ -850310,7 +850319,7 @@ var GenerationRunner = class {
850310
850319
  });
850311
850320
  }));
850312
850321
  }
850313
- async executeGenerator({ generatorGroup, generatorInvocation, context: context2, workspace, organization, irVersionOverride, outputVersionOverride, absolutePathToFernConfig, inspect: inspect5 }) {
850322
+ async executeGenerator({ generatorGroup, generatorInvocation, context: context2, workspace, organization, irVersionOverride, outputVersionOverride, absolutePathToFernConfig, inspect: inspect5, skipFernignore }) {
850314
850323
  context2.logger.info(`Starting generation for ${generatorInvocation.name}`);
850315
850324
  if (generatorInvocation.absolutePathToLocalOutput == null) {
850316
850325
  throw new Error("Output path is required for generation");
@@ -850363,7 +850372,8 @@ var GenerationRunner = class {
850363
850372
  ir: rawIr,
850364
850373
  runner: void 0,
850365
850374
  ai: workspace.generatorsConfiguration?.ai,
850366
- absolutePathToSpecRepo: void 0
850375
+ absolutePathToSpecRepo: void 0,
850376
+ skipFernignore
850367
850377
  });
850368
850378
  }
850369
850379
  };
@@ -850788,7 +850798,8 @@ var LegacyLocalGenerationRunner = class {
850788
850798
  runner: args.containerEngine,
850789
850799
  absolutePathToPreview: void 0,
850790
850800
  inspect: false,
850791
- ai: void 0
850801
+ ai: void 0,
850802
+ skipFernignore: args.skipFernignore
850792
850803
  });
850793
850804
  if (taskContext.getResult() === TaskResult.Failure) {
850794
850805
  return {
@@ -850825,7 +850836,8 @@ var LegacyLocalGenerationRunner = class {
850825
850836
  irVersionOverride: void 0,
850826
850837
  shouldGenerateDynamicSnippetTests: false,
850827
850838
  skipUnstableDynamicSnippetTests: true,
850828
- inspect: false
850839
+ inspect: false,
850840
+ skipFernignore: args.skipFernignore
850829
850841
  });
850830
850842
  if (args.target.output.path != null && generatorInvocation.absolutePathToLocalOutput != null) {
850831
850843
  const snippetPath = join2(generatorInvocation.absolutePathToLocalOutput, RelativeFilePath2.of(SNIPPET_JSON_FILENAME));
@@ -850889,6 +850901,7 @@ var LegacyRemoteGenerationRunner = class {
850889
850901
  token: args.token,
850890
850902
  mode: this.mapMode(args.target),
850891
850903
  fernignorePath: args.fernignorePath,
850904
+ skipFernignore: args.skipFernignore,
850892
850905
  absolutePathToPreview,
850893
850906
  whitelabel: void 0,
850894
850907
  dynamicIrOnly: false,
@@ -851025,7 +851038,8 @@ var GeneratorPipeline = class {
851025
851038
  preview: args.preview,
851026
851039
  outputPath: args.outputPath,
851027
851040
  containerEngine: args.containerEngine,
851028
- token: args.token
851041
+ token: args.token,
851042
+ skipFernignore: args.skipFernignore
851029
851043
  });
851030
851044
  if (!result.success) {
851031
851045
  return {
@@ -851060,7 +851074,8 @@ var GeneratorPipeline = class {
851060
851074
  shouldLogS3Url: args.shouldLogS3Url,
851061
851075
  preview: args.preview,
851062
851076
  outputPath: args.outputPath,
851063
- fernignorePath: args.fernignorePath
851077
+ fernignorePath: args.fernignorePath,
851078
+ skipFernignore: args.skipFernignore
851064
851079
  });
851065
851080
  if (!result.success) {
851066
851081
  return {
@@ -851433,7 +851448,8 @@ var GenerateCommand = class {
851433
851448
  outputPath: args.output != null ? resolve5(context2.cwd, args.output) : void 0,
851434
851449
  token,
851435
851450
  version: args["output-version"],
851436
- fernignorePath: args.fernignore
851451
+ fernignorePath: args.fernignore,
851452
+ skipFernignore: args["skip-fernignore"]
851437
851453
  });
851438
851454
  if (!pipelineResult.success) {
851439
851455
  task.stage.generator.fail(pipelineResult.error);
@@ -851461,6 +851477,11 @@ var GenerateCommand = class {
851461
851477
  if (targets2.length > 1 && args.output != null) {
851462
851478
  throw new CliError({ message: "The --output flag can only be used when generating a single target" });
851463
851479
  }
851480
+ if (args["skip-fernignore"] && args.fernignore != null) {
851481
+ throw new CliError({
851482
+ message: "The --skip-fernignore and --fernignore flags cannot be used together."
851483
+ });
851484
+ }
851464
851485
  const issues = [];
851465
851486
  if (args.local) {
851466
851487
  for (const target of targets2) {
@@ -851698,6 +851719,10 @@ function addGenerateCommand(cli) {
851698
851719
  type: "string",
851699
851720
  description: "Path to .fernignore file",
851700
851721
  hidden: true
851722
+ }).option("skip-fernignore", {
851723
+ type: "boolean",
851724
+ default: false,
851725
+ description: "Skip the .fernignore file and generate all files. For remote generation, uploads an empty .fernignore. For local generation, skips reading .fernignore from the output directory."
851701
851726
  }));
851702
851727
  }
851703
851728
 
@@ -871221,7 +871246,7 @@ var CliContext = class {
871221
871246
  if (false) {
871222
871247
  this.logger.error("CLI_VERSION is not defined");
871223
871248
  }
871224
- return "4.41.0";
871249
+ return "4.42.0";
871225
871250
  }
871226
871251
  getCliName() {
871227
871252
  if (false) {
@@ -880430,6 +880455,7 @@ async function generateWorkspace({
880430
880455
  inspect: inspect5,
880431
880456
  lfsOverride,
880432
880457
  fernignorePath,
880458
+ skipFernignore,
880433
880459
  dynamicIrOnly,
880434
880460
  noReplay,
880435
880461
  retryRateLimited,
@@ -880505,7 +880531,8 @@ async function generateWorkspace({
880505
880531
  replay,
880506
880532
  noReplay,
880507
880533
  validateWorkspace: true,
880508
- requireEnvVars
880534
+ requireEnvVars,
880535
+ skipFernignore
880509
880536
  });
880510
880537
  } else if (token != null) {
880511
880538
  await runRemoteGenerationForAPIWorkspace({
@@ -880521,6 +880548,7 @@ async function generateWorkspace({
880521
880548
  absolutePathToPreview,
880522
880549
  mode,
880523
880550
  fernignorePath,
880551
+ skipFernignore,
880524
880552
  dynamicIrOnly,
880525
880553
  validateWorkspace: true,
880526
880554
  retryRateLimited,
@@ -880636,6 +880664,7 @@ async function generateAPIWorkspaces({
880636
880664
  inspect: inspect5,
880637
880665
  lfsOverride,
880638
880666
  fernignorePath,
880667
+ skipFernignore,
880639
880668
  dynamicIrOnly,
880640
880669
  outputDir,
880641
880670
  noReplay,
@@ -880719,6 +880748,7 @@ async function generateAPIWorkspaces({
880719
880748
  inspect: inspect5,
880720
880749
  lfsOverride,
880721
880750
  fernignorePath,
880751
+ skipFernignore,
880722
880752
  dynamicIrOnly,
880723
880753
  noReplay,
880724
880754
  retryRateLimited,
@@ -889257,6 +889287,10 @@ function addGenerateCommand2(cli, cliContext) {
889257
889287
  boolean: true,
889258
889288
  default: true,
889259
889289
  description: "Require all referenced environment variables to be defined (use --no-require-env-vars to substitute empty strings for missing variables)"
889290
+ }).option("skip-fernignore", {
889291
+ boolean: true,
889292
+ default: false,
889293
+ description: "Skip the .fernignore file and generate all files. For remote generation, uploads an empty .fernignore. For local generation, skips reading .fernignore from the output directory."
889260
889294
  }),
889261
889295
  async (argv) => {
889262
889296
  if (argv.api != null && argv.docs != null) {
@@ -889279,6 +889313,11 @@ function addGenerateCommand2(cli, cliContext) {
889279
889313
  "The --fernignore flag is not supported with local generation (--local or --runner). It can only be used with remote generation."
889280
889314
  );
889281
889315
  }
889316
+ if (argv["skip-fernignore"] && argv.fernignore != null) {
889317
+ return cliContext.failWithoutThrowing(
889318
+ "The --skip-fernignore and --fernignore flags cannot be used together."
889319
+ );
889320
+ }
889282
889321
  if (argv["dynamic-ir-only"] && (argv.local || argv.runner != null)) {
889283
889322
  return cliContext.failWithoutThrowing(
889284
889323
  "The --dynamic-ir-only flag is not supported with local generation (--local or --runner). It can only be used with remote generation."
@@ -889321,6 +889360,7 @@ function addGenerateCommand2(cli, cliContext) {
889321
889360
  inspect: false,
889322
889361
  lfsOverride: argv.lfsOverride,
889323
889362
  fernignorePath: argv.fernignore,
889363
+ skipFernignore: argv["skip-fernignore"],
889324
889364
  dynamicIrOnly: argv["dynamic-ir-only"],
889325
889365
  outputDir: argv.output,
889326
889366
  noReplay: !argv.replay,
@@ -889378,6 +889418,7 @@ function addGenerateCommand2(cli, cliContext) {
889378
889418
  inspect: false,
889379
889419
  lfsOverride: argv.lfsOverride,
889380
889420
  fernignorePath: argv.fernignore,
889421
+ skipFernignore: argv["skip-fernignore"],
889381
889422
  dynamicIrOnly: argv["dynamic-ir-only"],
889382
889423
  outputDir: argv.output,
889383
889424
  noReplay: !argv.replay,
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.41.0",
2
+ "version": "4.42.0",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",