@fern-api/fern-api-dev 5.102.0 → 5.104.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 +343 -272
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -90561,6 +90561,53 @@ var init_cloneRepository = __esm({
90561
90561
  }
90562
90562
  });
90563
90563
 
90564
+ // ../../commons/github/lib/cloneRepositoryAtRef.js
90565
+ async function cloneRepositoryAtRef({ repositoryUrl, ref: ref2 }) {
90566
+ if (!isGitAvailable()) {
90567
+ throw new Error("Git is not installed or not found in PATH. Cloning a git source requires git to be available. Please install git and ensure it is in your PATH.");
90568
+ }
90569
+ const tmpDir = await import_tmp_promise3.default.dir({ unsafeCleanup: true });
90570
+ const cloneArgs = ["--depth", "1", "--config", "core.symlinks=false"];
90571
+ try {
90572
+ if (ref2 != null && isCommitSha(ref2)) {
90573
+ await simpleGit().clone(repositoryUrl, tmpDir.path, [...cloneArgs, "--no-checkout"]);
90574
+ const repoGit = simpleGit(tmpDir.path);
90575
+ await repoGit.fetch("origin", ref2, { "--depth": "1" });
90576
+ await repoGit.checkout(ref2);
90577
+ } else {
90578
+ await simpleGit().clone(repositoryUrl, tmpDir.path, ref2 != null ? [...cloneArgs, "--branch", ref2] : cloneArgs);
90579
+ }
90580
+ } catch (error50) {
90581
+ const errorMessage = extractErrorMessage(error50);
90582
+ if (errorMessage.includes("Authentication failed") || errorMessage.includes("could not read Username") || errorMessage.includes("401") || errorMessage.includes("403")) {
90583
+ throw new Error(`Failed to clone ${repositoryUrl}: authentication failed. Ensure your git credentials are configured for that repository. The CLI uses your system's git credential configuration (credential helpers, SSH keys, GIT_ASKPASS). Original error: ${errorMessage}`);
90584
+ }
90585
+ if (errorMessage.toLowerCase().includes("repository not found") || errorMessage.includes("404")) {
90586
+ throw new Error(`Failed to clone ${repositoryUrl}: repository not found. Check that it exists and your credentials have access. Original error: ${errorMessage}`);
90587
+ }
90588
+ throw new Error(`Failed to clone ${repositoryUrl}${ref2 != null ? ` at ref '${ref2}'` : ""}. Original error: ${errorMessage}`);
90589
+ }
90590
+ return tmpDir.path;
90591
+ }
90592
+ function resolveRepositorySubpath({ repositoryRoot, subpath, description }) {
90593
+ const resolved = import_path19.default.resolve(repositoryRoot, subpath);
90594
+ if (resolved !== repositoryRoot && !resolved.startsWith(repositoryRoot + import_path19.default.sep)) {
90595
+ throw new Error(`Invalid ${description} '${subpath}': path must be relative to the repository root and cannot traverse outside it.`);
90596
+ }
90597
+ return resolved;
90598
+ }
90599
+ var import_path19, import_tmp_promise3;
90600
+ var init_cloneRepositoryAtRef = __esm({
90601
+ "../../commons/github/lib/cloneRepositoryAtRef.js"() {
90602
+ "use strict";
90603
+ init_lib4();
90604
+ import_path19 = __toESM(require("path"), 1);
90605
+ init_esm16();
90606
+ import_tmp_promise3 = __toESM(require_tmp_promise(), 1);
90607
+ import_tmp_promise3.default.setGracefulCleanup();
90608
+ }
90609
+ });
90610
+
90564
90611
  // ../../commons/github/lib/createOrUpdatePullRequest.js
90565
90612
  function parseRepository2(repository) {
90566
90613
  const [owner, repo] = repository.split("/");
@@ -98956,6 +99003,7 @@ var lib_exports4 = {};
98956
99003
  __export(lib_exports4, {
98957
99004
  ClonedRepository: () => ClonedRepository,
98958
99005
  cloneRepository: () => cloneRepository,
99006
+ cloneRepositoryAtRef: () => cloneRepositoryAtRef,
98959
99007
  createOrUpdatePullRequest: () => createOrUpdatePullRequest,
98960
99008
  deleteBranch: () => deleteBranch,
98961
99009
  expandFernignorePatterns: () => expandFernignorePatterns,
@@ -98963,13 +99011,15 @@ __export(lib_exports4, {
98963
99011
  getGithubApiBaseUrl: () => getGithubApiBaseUrl,
98964
99012
  getLatestRelease: () => getLatestRelease,
98965
99013
  getOrUpdateBranch: () => getOrUpdateBranch,
98966
- parseRepository: () => parseRepository
99014
+ parseRepository: () => parseRepository,
99015
+ resolveRepositorySubpath: () => resolveRepositorySubpath
98967
99016
  });
98968
99017
  var init_lib11 = __esm({
98969
99018
  "../../commons/github/lib/index.js"() {
98970
99019
  "use strict";
98971
99020
  init_ClonedRepository();
98972
99021
  init_cloneRepository();
99022
+ init_cloneRepositoryAtRef();
98973
99023
  init_createOrUpdatePullRequest();
98974
99024
  init_deleteBranch();
98975
99025
  init_expandFernignorePatterns();
@@ -130957,7 +131007,8 @@ var init_OpenApiSettingsSchema2 = __esm({
130957
131007
  "infer-discriminated-union-base-properties": schemas_exports8.boolean().optional(),
130958
131008
  "disambiguate-request-names": schemas_exports8.boolean().optional(),
130959
131009
  "ignore-tags": schemas_exports8.boolean().optional(),
130960
- "respect-parameter-content": schemas_exports8.boolean().optional()
131010
+ "respect-parameter-content": schemas_exports8.boolean().optional(),
131011
+ "respect-per-spec-base-path": schemas_exports8.boolean().optional()
130961
131012
  }).extend(BaseApiSettingsSchema);
130962
131013
  }
130963
131014
  });
@@ -152823,7 +152874,8 @@ var init_options2 = __esm({
152823
152874
  shouldInferDiscriminatedUnionBaseProperties: false,
152824
152875
  disambiguateRequestNames: true,
152825
152876
  ignoreTags: false,
152826
- respectParameterContent: false
152877
+ respectParameterContent: false,
152878
+ respectPerSpecBasePath: false
152827
152879
  };
152828
152880
  }
152829
152881
  });
@@ -158813,14 +158865,14 @@ function convertMultipartRequestToSchema(request7) {
158813
158865
  maxProperties: void 0
158814
158866
  });
158815
158867
  }
158816
- var fs, path19, ExampleEndpointFactory;
158868
+ var fs, path20, ExampleEndpointFactory;
158817
158869
  var init_ExampleEndpointFactory = __esm({
158818
158870
  "../api-importers/openapi/openapi-ir-parser/lib/openapi/v3/converters/ExampleEndpointFactory.js"() {
158819
158871
  "use strict";
158820
158872
  init_lib4();
158821
158873
  init_lib13();
158822
158874
  fs = __toESM(require("fs"), 1);
158823
- path19 = __toESM(require("path"), 1);
158875
+ path20 = __toESM(require("path"), 1);
158824
158876
  init_ExampleTypeFactory();
158825
158877
  init_convertSchemaToSchemaWithExample();
158826
158878
  init_isSchemaRequired();
@@ -158861,15 +158913,15 @@ var init_ExampleEndpointFactory = __esm({
158861
158913
  let logDir;
158862
158914
  if (this.context.source.type === "openapi") {
158863
158915
  const sourceFile = this.context.source.file;
158864
- const sourceDir = path19.dirname(sourceFile);
158916
+ const sourceDir = path20.dirname(sourceFile);
158865
158917
  let currentDir = sourceDir;
158866
- while (currentDir !== path19.dirname(currentDir)) {
158867
- const fernDir = path19.join(currentDir, "fern");
158918
+ while (currentDir !== path20.dirname(currentDir)) {
158919
+ const fernDir = path20.join(currentDir, "fern");
158868
158920
  if (fs.existsSync(fernDir) && fs.statSync(fernDir).isDirectory()) {
158869
158921
  logDir = fernDir;
158870
158922
  break;
158871
158923
  }
158872
- currentDir = path19.dirname(currentDir);
158924
+ currentDir = path20.dirname(currentDir);
158873
158925
  }
158874
158926
  if (!logDir) {
158875
158927
  logDir = sourceDir;
@@ -158878,7 +158930,7 @@ var init_ExampleEndpointFactory = __esm({
158878
158930
  logDir = process.cwd();
158879
158931
  }
158880
158932
  const resolvedLogDir = logDir ?? process.cwd();
158881
- const logPath = path19.join(resolvedLogDir, "schemas_missing_examples.txt");
158933
+ const logPath = path20.join(resolvedLogDir, "schemas_missing_examples.txt");
158882
158934
  const logContent = [
158883
158935
  `# Schemas Missing Examples Report`,
158884
158936
  `# Generated on: ${(/* @__PURE__ */ new Date()).toISOString()}`,
@@ -165595,7 +165647,7 @@ function maybeResolveCodeReference(code5, baseDir) {
165595
165647
  return code5;
165596
165648
  }
165597
165649
  if (isCodeReference(code5)) {
165598
- const resolvedPath = (0, import_path19.resolve)(baseDir ?? process.cwd(), code5.$ref);
165650
+ const resolvedPath = (0, import_path20.resolve)(baseDir ?? process.cwd(), code5.$ref);
165599
165651
  if ((0, import_fs12.existsSync)(resolvedPath)) {
165600
165652
  try {
165601
165653
  const fileContent = (0, import_fs12.readFileSync)(resolvedPath, "utf-8");
@@ -165629,7 +165681,7 @@ function resolveCodeSamples(codeSamples, baseDir) {
165629
165681
  }
165630
165682
  function getExamplesFromExtension(operationContext, operationObject, context3) {
165631
165683
  const exampleEndpointCalls = getExtension(operationObject, FernOpenAPIExtension.EXAMPLES);
165632
- const baseDir = context3.source.type === "openapi" ? (0, import_path19.dirname)(context3.source.file) : void 0;
165684
+ const baseDir = context3.source.type === "openapi" ? (0, import_path20.dirname)(context3.source.file) : void 0;
165633
165685
  const resolvedExamples = (exampleEndpointCalls ?? []).map((example) => {
165634
165686
  if (!isPlainObject4(example)) {
165635
165687
  return example;
@@ -165677,7 +165729,7 @@ function getExamplesFromExtension(operationContext, operationObject, context3) {
165677
165729
  }
165678
165730
  return validatedExampleEndpointCalls.map(EndpointExample2.unknown);
165679
165731
  }
165680
- var import_fs12, import_path19;
165732
+ var import_fs12, import_path20;
165681
165733
  var init_getExamplesFromExtension = __esm({
165682
165734
  "../api-importers/openapi/openapi-ir-parser/lib/openapi/v3/extensions/getExamplesFromExtension.js"() {
165683
165735
  "use strict";
@@ -165685,7 +165737,7 @@ var init_getExamplesFromExtension = __esm({
165685
165737
  init_lib10();
165686
165738
  init_lib13();
165687
165739
  import_fs12 = require("fs");
165688
- import_path19 = require("path");
165740
+ import_path20 = require("path");
165689
165741
  init_getExtension();
165690
165742
  init_RedoclyCodeSampleSchema();
165691
165743
  init_extensions();
@@ -168635,6 +168687,7 @@ function generateIr({ openApi, taskContext, options: options2, source: source2,
168635
168687
  taskContext.logger.warn(message);
168636
168688
  }
168637
168689
  }
168690
+ const plainBasePath = options2.respectPerSpecBasePath && fernBasePathParsed != null && fernBasePathParsed.pathParameters.length === 0 ? fernBasePathParsed.basePath : void 0;
168638
168691
  Object.entries(openApi.paths ?? {}).forEach(([path122, pathItem]) => {
168639
168692
  if (pathItem == null) {
168640
168693
  return;
@@ -168647,16 +168700,16 @@ function generateIr({ openApi, taskContext, options: options2, source: source2,
168647
168700
  }
168648
168701
  switch (operation.type) {
168649
168702
  case "async":
168650
- endpointsWithExample.push(...operation.sync);
168651
- endpointsWithExample.push(...operation.async);
168703
+ endpointsWithExample.push(...prependBasePathToEndpoints(operation.sync, plainBasePath));
168704
+ endpointsWithExample.push(...prependBasePathToEndpoints(operation.async, plainBasePath));
168652
168705
  break;
168653
168706
  case "http":
168654
- endpointsWithExample.push(...operation.value);
168707
+ endpointsWithExample.push(...prependBasePathToEndpoints(operation.value, plainBasePath));
168655
168708
  break;
168656
168709
  case "streaming":
168657
- endpointsWithExample.push(...operation.streaming);
168710
+ endpointsWithExample.push(...prependBasePathToEndpoints(operation.streaming, plainBasePath));
168658
168711
  if (operation.nonStreaming) {
168659
- endpointsWithExample.push(...operation.nonStreaming);
168712
+ endpointsWithExample.push(...prependBasePathToEndpoints(operation.nonStreaming, plainBasePath));
168660
168713
  }
168661
168714
  break;
168662
168715
  case "webhook":
@@ -168864,17 +168917,8 @@ function generateIr({ openApi, taskContext, options: options2, source: source2,
168864
168917
  document: openApi
168865
168918
  }),
168866
168919
  specVersion: openApi.info.version != null && openApi.info.version.length > 0 ? openApi.info.version : void 0,
168867
- basePath: (() => {
168868
- const parsed = getFernBasePath(openApi);
168869
- return parsed?.basePath;
168870
- })(),
168871
- basePathParameters: (() => {
168872
- const parsed = getFernBasePath(openApi);
168873
- if (parsed == null || parsed.pathParameters.length === 0) {
168874
- return void 0;
168875
- }
168876
- return parsed.pathParameters;
168877
- })(),
168920
+ basePath: fernBasePathParsed != null && (!options2.respectPerSpecBasePath || fernBasePathParsed.pathParameters.length > 0) ? fernBasePathParsed.basePath : void 0,
168921
+ basePathParameters: fernBasePathParsed != null && fernBasePathParsed.pathParameters.length > 0 ? fernBasePathParsed.pathParameters : void 0,
168878
168922
  title: openApi.info.title ?? "",
168879
168923
  description: openApi.info.description,
168880
168924
  groups: Object.fromEntries(Object.entries(groupInfo ?? {}).map(([key2, value2]) => {
@@ -168962,6 +169006,26 @@ function maybeRemoveDiscriminantsFromSchemas(schemas, context3, source2) {
168962
169006
  }
168963
169007
  return result;
168964
169008
  }
169009
+ function prependBasePath(path122, basePath) {
169010
+ if (basePath == null || basePath === "/") {
169011
+ return path122;
169012
+ }
169013
+ const normalizedBasePath = basePath.replace(/\/+$/, "");
169014
+ if (path122 === normalizedBasePath || path122.startsWith(`${normalizedBasePath}/`)) {
169015
+ return path122;
169016
+ }
169017
+ const normalizedPath = path122.replace(/^\/+/, "");
169018
+ return normalizedPath.length > 0 ? `${normalizedBasePath}/${normalizedPath}` : normalizedBasePath;
169019
+ }
169020
+ function prependBasePathToEndpoints(endpoints, basePath) {
169021
+ if (basePath == null || basePath === "/") {
169022
+ return endpoints;
169023
+ }
169024
+ return endpoints.map((endpoint3) => ({
169025
+ ...endpoint3,
169026
+ path: prependBasePath(endpoint3.path, basePath)
169027
+ }));
169028
+ }
168965
169029
  function getParentSchemaIdsWithNonUnionChildren(schemas, context3) {
168966
169030
  const protectedParents = /* @__PURE__ */ new Set();
168967
169031
  for (const [schemaId, schema] of Object.entries(schemas)) {
@@ -169141,7 +169205,7 @@ function parse8({ context: context3, documents, options: options2 }) {
169141
169205
  source: source2,
169142
169206
  namespace: document4.namespace
169143
169207
  });
169144
- ir3 = merge6(ir3, openapiIr, getParseOptions({ options: document4.settings, overrides: options2 }));
169208
+ ir3 = merge6(ir3, openapiIr, getParseOptions({ options: document4.settings, overrides: options2 }), context3);
169145
169209
  documentIndex++;
169146
169210
  break;
169147
169211
  }
@@ -169338,7 +169402,17 @@ function extractApiNameFromServers(servers) {
169338
169402
  function hasGroupedServers(servers) {
169339
169403
  return servers.some((server) => server.type === "grouped");
169340
169404
  }
169341
- function merge6(ir1, ir22, options2) {
169405
+ function mergeBasePath(ir1, ir22, options2, context3) {
169406
+ if (options2?.respectPerSpecBasePath === true && ir1.basePath != null && ir22.basePath != null && ir1.basePath !== ir22.basePath) {
169407
+ context3.failWithoutThrowing(`Conflicting parameterized x-fern-base-path values: '${ir1.basePath}' and '${ir22.basePath}'.`);
169408
+ }
169409
+ return {
169410
+ basePath: ir1.basePath ?? ir22.basePath,
169411
+ basePathParameters: ir1.basePathParameters ?? ir22.basePathParameters
169412
+ };
169413
+ }
169414
+ function merge6(ir1, ir22, options2, context3) {
169415
+ const mergedBasePath = mergeBasePath(ir1, ir22, options2, context3);
169342
169416
  const shouldGroupEnvironments = options2?.groupMultiApiEnvironments === true;
169343
169417
  if (!shouldGroupEnvironments) {
169344
169418
  return {
@@ -169346,8 +169420,8 @@ function merge6(ir1, ir22, options2) {
169346
169420
  specVersion: ir1.specVersion ?? ir22.specVersion,
169347
169421
  title: ir1.title ?? ir22.title,
169348
169422
  description: ir1.description ?? ir22.description,
169349
- basePath: ir1.basePath ?? ir22.basePath,
169350
- basePathParameters: ir1.basePathParameters ?? ir22.basePathParameters,
169423
+ basePath: mergedBasePath.basePath,
169424
+ basePathParameters: mergedBasePath.basePathParameters,
169351
169425
  servers: [...ir1.servers, ...ir22.servers],
169352
169426
  websocketServers: [...ir1.websocketServers, ...ir22.websocketServers],
169353
169427
  tags: {
@@ -169489,8 +169563,8 @@ function merge6(ir1, ir22, options2) {
169489
169563
  specVersion: ir1.specVersion ?? ir22.specVersion,
169490
169564
  title: ir1.title ?? ir22.title,
169491
169565
  description: ir1.description ?? ir22.description,
169492
- basePath: ir1.basePath ?? ir22.basePath,
169493
- basePathParameters: ir1.basePathParameters ?? ir22.basePathParameters,
169566
+ basePath: mergedBasePath.basePath,
169567
+ basePathParameters: mergedBasePath.basePathParameters,
169494
169568
  // Cast grouped servers to Server[] - buildEnvironments.ts handles the grouped structure
169495
169569
  // biome-ignore lint/suspicious/noExplicitAny: Required to preserve grouped server metadata through type system
169496
169570
  servers: mergedServers,
@@ -169544,8 +169618,8 @@ function merge6(ir1, ir22, options2) {
169544
169618
  specVersion: ir1.specVersion ?? ir22.specVersion,
169545
169619
  title: ir1.title ?? ir22.title,
169546
169620
  description: ir1.description ?? ir22.description,
169547
- basePath: ir1.basePath ?? ir22.basePath,
169548
- basePathParameters: ir1.basePathParameters ?? ir22.basePathParameters,
169621
+ basePath: mergedBasePath.basePath,
169622
+ basePathParameters: mergedBasePath.basePathParameters,
169549
169623
  servers: dedupeServers([...ir1.servers, ...ir22.servers]),
169550
169624
  websocketServers: [...ir1.websocketServers, ...ir22.websocketServers],
169551
169625
  tags: {
@@ -200021,7 +200095,8 @@ var init_getAPIDefinitionSettings = __esm({
200021
200095
  shouldInferDiscriminatedUnionBaseProperties: "shouldInferDiscriminatedUnionBaseProperties",
200022
200096
  disambiguateRequestNames: "disambiguateRequestNames",
200023
200097
  ignoreTags: "ignoreTags",
200024
- respectParameterContent: "respectParameterContent"
200098
+ respectParameterContent: "respectParameterContent",
200099
+ respectPerSpecBasePath: "respectPerSpecBasePath"
200025
200100
  };
200026
200101
  }
200027
200102
  });
@@ -200252,7 +200327,7 @@ async function validateSchema({ schema, value: value2, context: context3, filepa
200252
200327
  prefix: " - "
200253
200328
  });
200254
200329
  });
200255
- const errorMessage = [`Failed to parse file: ${import_path20.default.relative(process.cwd(), filepathBeingParsed)}`, ...issues].join("\n");
200330
+ const errorMessage = [`Failed to parse file: ${import_path21.default.relative(process.cwd(), filepathBeingParsed)}`, ...issues].join("\n");
200256
200331
  return context3.failAndThrow(errorMessage, void 0, { code: CliError.Code.ConfigError });
200257
200332
  }
200258
200333
  function joinZodPath(arr) {
@@ -200264,13 +200339,13 @@ function joinZodPath(arr) {
200264
200339
  return acc + separator + value2;
200265
200340
  }, "");
200266
200341
  }
200267
- var import_path20;
200342
+ var import_path21;
200268
200343
  var init_validateSchema = __esm({
200269
200344
  "../configuration-loader/lib/commons/validateSchema.js"() {
200270
200345
  "use strict";
200271
200346
  init_lib4();
200272
200347
  init_lib6();
200273
- import_path20 = __toESM(require("path"), 1);
200348
+ import_path21 = __toESM(require("path"), 1);
200274
200349
  }
200275
200350
  });
200276
200351
 
@@ -200289,7 +200364,7 @@ async function convertDependenciesConfiguration({ absolutePathToWorkspace, rawDe
200289
200364
  const dependencies = {};
200290
200365
  for (const [coordinate, versionOrPath] of Object.entries(rawDependenciesConfiguration.dependencies)) {
200291
200366
  if (isPath(versionOrPath)) {
200292
- const pathToApi = AbsoluteFilePath2.of(import_path21.default.join(absolutePathToWorkspace, versionOrPath));
200367
+ const pathToApi = AbsoluteFilePath2.of(import_path22.default.join(absolutePathToWorkspace, versionOrPath));
200293
200368
  if (await doesPathExist(pathToApi)) {
200294
200369
  dependencies[coordinate] = {
200295
200370
  type: "local",
@@ -200330,13 +200405,13 @@ async function convertDependenciesConfiguration({ absolutePathToWorkspace, rawDe
200330
200405
  function isPath(value2) {
200331
200406
  return RELATIVE_PATH_UP_ONE_DIRECTORY_PATTERN.test(value2);
200332
200407
  }
200333
- var import_path21, EMPTY_DEPENDENCIES_CONFIGURATION, RELATIVE_PATH_UP_ONE_DIRECTORY_PATTERN;
200408
+ var import_path22, EMPTY_DEPENDENCIES_CONFIGURATION, RELATIVE_PATH_UP_ONE_DIRECTORY_PATTERN;
200334
200409
  var init_convertDependenciesConfiguration = __esm({
200335
200410
  "../configuration-loader/lib/dependencies-yml/convertDependenciesConfiguration.js"() {
200336
200411
  "use strict";
200337
200412
  init_lib8();
200338
200413
  init_lib6();
200339
- import_path21 = __toESM(require("path"), 1);
200414
+ import_path22 = __toESM(require("path"), 1);
200340
200415
  EMPTY_DEPENDENCIES_CONFIGURATION = {
200341
200416
  dependencies: {}
200342
200417
  };
@@ -236019,7 +236094,7 @@ async function materializeGitRef({ ref: ref2, absolutePathToFernFolder, context:
236019
236094
  return { ...cached2, ref: ref2 };
236020
236095
  }
236021
236096
  await runGit({ args: ["worktree", "prune"], cwd: repoRoot, context: context3 });
236022
- const tmpDir = await import_tmp_promise3.default.dir({ unsafeCleanup: true });
236097
+ const tmpDir = await import_tmp_promise4.default.dir({ unsafeCleanup: true });
236023
236098
  const worktreePath = AbsoluteFilePath2.of(tmpDir.path);
236024
236099
  const addResult = await runGit({
236025
236100
  args: ["worktree", "add", "--detach", "--force", worktreePath, sha],
@@ -236048,7 +236123,7 @@ async function materializeGitRef({ ref: ref2, absolutePathToFernFolder, context:
236048
236123
  materializedRefsBySha.set(cacheKey, materialized);
236049
236124
  return materialized;
236050
236125
  }
236051
- var import_tmp_promise3, materializedRefsBySha;
236126
+ var import_tmp_promise4, materializedRefsBySha;
236052
236127
  var init_materializeGitRef = __esm({
236053
236128
  "../configuration-loader/lib/docs-yml/git-versions/materializeGitRef.js"() {
236054
236129
  "use strict";
@@ -236056,8 +236131,8 @@ var init_materializeGitRef = __esm({
236056
236131
  init_lib8();
236057
236132
  init_lib18();
236058
236133
  init_lib6();
236059
- import_tmp_promise3 = __toESM(require_tmp_promise(), 1);
236060
- import_tmp_promise3.default.setGracefulCleanup();
236134
+ import_tmp_promise4 = __toESM(require_tmp_promise(), 1);
236135
+ import_tmp_promise4.default.setGracefulCleanup();
236061
236136
  materializedRefsBySha = /* @__PURE__ */ new Map();
236062
236137
  }
236063
236138
  });
@@ -237860,7 +237935,7 @@ async function expandFolderConfiguration({ rawConfig, absolutePathToFernFolder,
237860
237935
  });
237861
237936
  const indexPage = contents.find((item) => item.type === "page" && (item.slug === "index" || item.absolutePath.toLowerCase().endsWith("/index.mdx") || item.absolutePath.toLowerCase().endsWith("/index.md")));
237862
237937
  const filteredContents = indexPage ? contents.filter((item) => item !== indexPage) : contents;
237863
- const folderName = import_path22.default.basename(folderPath);
237938
+ const folderName = import_path23.default.basename(folderPath);
237864
237939
  const indexFrontmatterTitle = effectiveTitleSource === "frontmatter" && indexPage?.type === "page" ? (await getFrontmatterMetadata({ absolutePath: indexPage.absolutePath })).title : void 0;
237865
237940
  const title2 = rawConfig.title ?? indexFrontmatterTitle ?? nameToTitle({ name: folderName });
237866
237941
  const slug = rawConfig.slug ?? nameToSlug({ name: folderName });
@@ -238405,14 +238480,14 @@ async function loadTranslationPages({ translations, defaultLocale, pages, absolu
238405
238480
  if (translations == null || translations.length === 0) {
238406
238481
  return void 0;
238407
238482
  }
238408
- const translationsRootDir = import_path22.default.join(absolutePathToFernFolder, "translations");
238483
+ const translationsRootDir = import_path23.default.join(absolutePathToFernFolder, "translations");
238409
238484
  const result = {};
238410
238485
  const normalizedTranslations = translations.map((t3) => docs_yml_exports.DocsYmlSchemas.normalizeTranslationConfig(t3));
238411
238486
  await Promise.all(normalizedTranslations.map(async ({ lang }) => {
238412
238487
  if (lang === defaultLocale) {
238413
238488
  return;
238414
238489
  }
238415
- const langDir = import_path22.default.join(translationsRootDir, lang);
238490
+ const langDir = import_path23.default.join(translationsRootDir, lang);
238416
238491
  if (!await doesPathExist(langDir)) {
238417
238492
  context3.failAndThrow(`Translation directory for locale "${lang}" not found.
238418
238493
  Expected a directory at: ${langDir}
@@ -238425,7 +238500,7 @@ version at "translations/${lang}/pages/getting-started.mdx".`, void 0, { code: C
238425
238500
  const localePages = {};
238426
238501
  const missingFiles = [];
238427
238502
  await Promise.all(Object.keys(pages).map(async (relativeFilePath) => {
238428
- const translatedFilePath = import_path22.default.join(langDir, relativeFilePath);
238503
+ const translatedFilePath = import_path23.default.join(langDir, relativeFilePath);
238429
238504
  if (await doesPathExist(translatedFilePath)) {
238430
238505
  localePages[relativeFilePath] = await (0, import_promises15.readFile)(translatedFilePath, "utf-8");
238431
238506
  } else {
@@ -238445,7 +238520,7 @@ async function loadTranslationNavigationOverlays({ translations, defaultLocale,
238445
238520
  if (translations == null || translations.length === 0) {
238446
238521
  return void 0;
238447
238522
  }
238448
- const translationsRootDir = import_path22.default.join(absolutePathToFernFolder, "translations");
238523
+ const translationsRootDir = import_path23.default.join(absolutePathToFernFolder, "translations");
238449
238524
  const result = {};
238450
238525
  const normalizedTranslations = translations.map((t3) => docs_yml_exports.DocsYmlSchemas.normalizeTranslationConfig(t3));
238451
238526
  await Promise.all(normalizedTranslations.map(async ({ lang }) => {
@@ -238483,13 +238558,13 @@ async function loadTranslationNavigationOverlays({ translations, defaultLocale,
238483
238558
  return result;
238484
238559
  }
238485
238560
  async function resolveTranslationOverlayDocsYml({ translationsRootDir, lang }) {
238486
- const langDir = import_path22.default.join(translationsRootDir, lang);
238487
- const directDocsYmlPath = import_path22.default.join(langDir, "docs.yml");
238561
+ const langDir = import_path23.default.join(translationsRootDir, lang);
238562
+ const directDocsYmlPath = import_path23.default.join(langDir, "docs.yml");
238488
238563
  if (await doesPathExist(directDocsYmlPath)) {
238489
238564
  return { overlayDocsYmlPath: directDocsYmlPath, overlayDir: langDir };
238490
238565
  }
238491
- const legacyFernDir = import_path22.default.join(langDir, "fern");
238492
- const legacyDocsYmlPath = import_path22.default.join(legacyFernDir, "docs.yml");
238566
+ const legacyFernDir = import_path23.default.join(langDir, "fern");
238567
+ const legacyDocsYmlPath = import_path23.default.join(legacyFernDir, "docs.yml");
238493
238568
  if (await doesPathExist(legacyDocsYmlPath)) {
238494
238569
  return { overlayDocsYmlPath: legacyDocsYmlPath, overlayDir: legacyFernDir };
238495
238570
  }
@@ -238633,7 +238708,7 @@ async function parseVersionOverlay({ versionObj, overlayDir, context: context3 }
238633
238708
  return versionOverlay;
238634
238709
  }
238635
238710
  async function loadNavOverlayFile({ relativeNavPath, overlayDir, overlayKind, context: context3 }) {
238636
- const resolvedNavFilePath = import_path22.default.resolve(overlayDir, relativeNavPath);
238711
+ const resolvedNavFilePath = import_path23.default.resolve(overlayDir, relativeNavPath);
238637
238712
  if (!resolvedNavFilePath.startsWith(overlayDir)) {
238638
238713
  context3.logger.warn(`Invalid path in ${overlayKind} overlay: "${relativeNavPath}" escapes the translations directory. Skipping.`);
238639
238714
  return void 0;
@@ -238723,7 +238798,7 @@ function parseVariantOverlays(variants) {
238723
238798
  }
238724
238799
  return result;
238725
238800
  }
238726
- var import_promises15, import_path22, DEFAULT_CHANGELOG_TITLE;
238801
+ var import_promises15, import_path23, DEFAULT_CHANGELOG_TITLE;
238727
238802
  var init_parseDocsConfiguration = __esm({
238728
238803
  "../configuration-loader/lib/docs-yml/parseDocsConfiguration.js"() {
238729
238804
  "use strict";
@@ -238734,7 +238809,7 @@ var init_parseDocsConfiguration = __esm({
238734
238809
  init_lib6();
238735
238810
  import_promises15 = require("fs/promises");
238736
238811
  init_js_yaml();
238737
- import_path22 = __toESM(require("path"), 1);
238812
+ import_path23 = __toESM(require("path"), 1);
238738
238813
  init_convertColorsConfiguration();
238739
238814
  init_getAllPages();
238740
238815
  init_getVersionContentRef();
@@ -264278,7 +264353,8 @@ function parseOpenApiDefinitionSettingsSchema(settings) {
264278
264353
  shouldInferDiscriminatedUnionBaseProperties: settings?.["infer-discriminated-union-base-properties"],
264279
264354
  disambiguateRequestNames: settings?.["disambiguate-request-names"],
264280
264355
  ignoreTags: settings?.["ignore-tags"],
264281
- respectParameterContent: settings?.["respect-parameter-content"]
264356
+ respectParameterContent: settings?.["respect-parameter-content"],
264357
+ respectPerSpecBasePath: settings?.["respect-per-spec-base-path"]
264282
264358
  };
264283
264359
  }
264284
264360
  function parseAsyncApiDefinitionSettingsSchema(settings) {
@@ -264912,7 +264988,7 @@ async function getGithubLicense({ absolutePathToGeneratorsConfiguration, githubL
264912
264988
  assertNever(githubLicense);
264913
264989
  }
264914
264990
  }
264915
- const absolutePathToLicense = join8(AbsoluteFilePath2.of(import_path23.default.dirname(absolutePathToGeneratorsConfiguration)), RelativeFilePath2.of(githubLicense.custom));
264991
+ const absolutePathToLicense = join8(AbsoluteFilePath2.of(import_path24.default.dirname(absolutePathToGeneratorsConfiguration)), RelativeFilePath2.of(githubLicense.custom));
264916
264992
  const licenseContent = await (0, import_promises17.readFile)(absolutePathToLicense);
264917
264993
  return api_exports4.GithubLicense.custom({
264918
264994
  contents: licenseContent.toString()
@@ -265093,7 +265169,7 @@ function isGithubSelfhosted(github) {
265093
265169
  }
265094
265170
  return "uri" in github && "token" in github;
265095
265171
  }
265096
- var import_promises17, import_path23, UNDEFINED_API_DEFINITION_SETTINGS;
265172
+ var import_promises17, import_path24, UNDEFINED_API_DEFINITION_SETTINGS;
265097
265173
  var init_convertGeneratorsConfiguration = __esm({
265098
265174
  "../configuration-loader/lib/generators-yml/convertGeneratorsConfiguration.js"() {
265099
265175
  "use strict";
@@ -265104,7 +265180,7 @@ var init_convertGeneratorsConfiguration = __esm({
265104
265180
  init_lib6();
265105
265181
  init_esm18();
265106
265182
  import_promises17 = require("fs/promises");
265107
- import_path23 = __toESM(require("path"), 1);
265183
+ import_path24 = __toESM(require("path"), 1);
265108
265184
  init_getGeneratorName();
265109
265185
  UNDEFINED_API_DEFINITION_SETTINGS = {
265110
265186
  shouldUseTitleAsName: void 0,
@@ -265146,7 +265222,8 @@ var init_convertGeneratorsConfiguration = __esm({
265146
265222
  shouldInferDiscriminatedUnionBaseProperties: void 0,
265147
265223
  disambiguateRequestNames: void 0,
265148
265224
  ignoreTags: void 0,
265149
- respectParameterContent: void 0
265225
+ respectParameterContent: void 0,
265226
+ respectPerSpecBasePath: void 0
265150
265227
  };
265151
265228
  }
265152
265229
  });
@@ -265177,7 +265254,7 @@ async function loadRawGeneratorsConfiguration({ absolutePathToWorkspace, context
265177
265254
  });
265178
265255
  } catch (e2) {
265179
265256
  if (e2 instanceof index_vite_proxy_tmp_default.YAMLException) {
265180
- const relativePath = import_path24.default.relative(process.cwd(), filepath);
265257
+ const relativePath = import_path25.default.relative(process.cwd(), filepath);
265181
265258
  let errorMessage = `Failed to parse ${relativePath}: ${e2.reason}`;
265182
265259
  if (e2.mark != null) {
265183
265260
  errorMessage += `
@@ -265233,7 +265310,7 @@ async function getPathToGeneratorsConfiguration({ absolutePathToWorkspace }) {
265233
265310
  }
265234
265311
  return void 0;
265235
265312
  }
265236
- var import_promises18, import_path24;
265313
+ var import_promises18, import_path25;
265237
265314
  var init_loadGeneratorsConfiguration = __esm({
265238
265315
  "../configuration-loader/lib/generators-yml/loadGeneratorsConfiguration.js"() {
265239
265316
  "use strict";
@@ -265242,7 +265319,7 @@ var init_loadGeneratorsConfiguration = __esm({
265242
265319
  init_lib6();
265243
265320
  import_promises18 = require("fs/promises");
265244
265321
  init_js_yaml();
265245
- import_path24 = __toESM(require("path"), 1);
265322
+ import_path25 = __toESM(require("path"), 1);
265246
265323
  init_convertGeneratorsConfiguration();
265247
265324
  }
265248
265325
  });
@@ -318174,7 +318251,7 @@ function setProxy(options2, configProxy, location2, isRedirect) {
318174
318251
  setProxy(redirectOptions, configProxy, redirectOptions.href, true);
318175
318252
  };
318176
318253
  }
318177
- var import_http5, import_https2, import_http22, import_util16, import_path27, import_follow_redirects, import_zlib2, import_stream6, import_events, zlibOptions, brotliOptions, isBrotliSupported, httpFollow, httpsFollow, isHttps, FORM_DATA_CONTENT_HEADERS, kAxiosSocketListener, kAxiosCurrentReq, supportedProtocols, decodeURIComponentSafe, flushOnFinish, Http2Sessions, http2Sessions, isHttpAdapterSupported, wrapAsync, resolveFamily, buildAddressEntry, http2Transport, http_default;
318254
+ var import_http5, import_https2, import_http22, import_util16, import_path28, import_follow_redirects, import_zlib2, import_stream6, import_events, zlibOptions, brotliOptions, isBrotliSupported, httpFollow, httpsFollow, isHttps, FORM_DATA_CONTENT_HEADERS, kAxiosSocketListener, kAxiosCurrentReq, supportedProtocols, decodeURIComponentSafe, flushOnFinish, Http2Sessions, http2Sessions, isHttpAdapterSupported, wrapAsync, resolveFamily, buildAddressEntry, http2Transport, http_default;
318178
318255
  var init_http5 = __esm({
318179
318256
  "../../../node_modules/.pnpm/axios@1.16.0/node_modules/axios/lib/adapters/http.js"() {
318180
318257
  "use strict";
@@ -318187,7 +318264,7 @@ var init_http5 = __esm({
318187
318264
  import_https2 = __toESM(require("https"), 1);
318188
318265
  import_http22 = __toESM(require("http2"), 1);
318189
318266
  import_util16 = __toESM(require("util"), 1);
318190
- import_path27 = require("path");
318267
+ import_path28 = require("path");
318191
318268
  import_follow_redirects = __toESM(require_follow_redirects(), 1);
318192
318269
  import_zlib2 = __toESM(require("zlib"), 1);
318193
318270
  init_data();
@@ -318665,9 +318742,9 @@ var init_http5 = __esm({
318665
318742
  }
318666
318743
  if (config5.allowedSocketPaths != null) {
318667
318744
  const allowed = Array.isArray(config5.allowedSocketPaths) ? config5.allowedSocketPaths : [config5.allowedSocketPaths];
318668
- const resolvedSocket = (0, import_path27.resolve)(config5.socketPath);
318745
+ const resolvedSocket = (0, import_path28.resolve)(config5.socketPath);
318669
318746
  const isAllowed = allowed.some(
318670
- (entry) => typeof entry === "string" && (0, import_path27.resolve)(entry) === resolvedSocket
318747
+ (entry) => typeof entry === "string" && (0, import_path28.resolve)(entry) === resolvedSocket
318671
318748
  );
318672
318749
  if (!isAllowed) {
318673
318750
  return reject(
@@ -320588,7 +320665,7 @@ function Un(s5, t3) {
320588
320665
  function Hn(s5, t3) {
320589
320666
  s5.head = new de2(t3, void 0, s5.head, s5), s5.tail || (s5.tail = s5.head), s5.length++;
320590
320667
  }
320591
- var import_events2, import_fs13, import_node_events6, import_node_stream3, import_node_string_decoder2, import_node_path9, import_node_fs6, import_path28, import_events3, import_assert5, import_buffer, Ms, import_zlib3, import_node_path10, import_node_path11, import_fs14, import_fs15, import_path29, import_node_path12, import_path30, import_node_fs7, import_node_assert, import_node_crypto5, import_node_fs8, import_node_path13, import_fs16, import_node_fs9, import_node_path14, import_node_fs10, import_promises21, import_node_path15, import_node_path16, import_node_fs11, import_node_path17, Mr, Br, xs, zr, Ur, Hr, q3, Q3, rt2, Le2, qt2, Ne2, Ls, De2, Ns, z4, Mt2, g2, Qt2, Bt2, b3, D3, _3, gi, Ae2, L4, w2, bi, _i, Ds, Oi, Z3, Ti, Ie2, Jt2, Rt2, F4, jt2, Wr, Gr, Zr, Yr, Fe2, xi, Kr, Vr, A3, Xr, ot2, H4, te2, m2, Ni, j4, Di, Ci, ki, ie2, Ce2, Ut2, Ht2, Ai, Pt2, ht2, U4, nt2, Y3, zt2, Ii, J3, ee3, Fi, ke2, gt2, ve2, bt2, _t2, Me2, tt2, Wt2, qr2, Is, Fs, Cs, ks, vs, Qr, se2, K3, jr, M4, tn, Bs, en, Mi, Tt2, Gt2, Bi, re3, Be2, Pe2, ze2, Ue2, He2, We2, Ge2, Ze2, Ye2, Ps, rn, nn, zs, on, hn, Us, Hs, Ui, ne3, ln, zi, oe2, Ke2, C4, cn, xt2, Hi, fn, at2, dn, un, mn, lt2, pn, En, wn, Wi, Sn, Lt2, ct2, Rn, gn, bn, _n, f2, Ve2, Nt2, Tn, Vi, $i, xn, B3, Dt2, et2, Gi, Ws, V3, he2, ft2, Gs, p3, it2, dt2, Zi, At2, y3, $e2, Xe2, Yi, Zs, Ys, ae2, Ki, qe2, Yt2, ut2, Qe2, It2, Je2, je2, Ks, Ln, st2, mt2, An, Xi, In, Fn, Ft2, qi, kn, Vs, le2, ti, Qi, vn, Mn, Ji, $s, er2, Bn, Qs, Js, js, ts, tr2, ce2, ei, es, ii, is, ss, rs, ns, pt2, si, os4, ji, X3, fe2, ri, ni, Pn, oi, de2, mi, ir2, ai, ue2, W4, me2, Et2, Ct2, pe2, hi, G5, hs, li, sr2, cs, fs4, ci, fi, rr2, as, di, or2, ls, wt2, kt2, Wn, Gn, ar2, lr2, Zn, Yn, Kn, Vn, ur2, mr2, cr2, pr2, Er, wr2, $n, Xn, qn, fr2, ds, us, pi, Qn, ms, Jn, ps, we2, St2, to, Sr2, Es, yr2, eo, Rr2, ws, gr2, Vt2, br2, io, so, ro, Si, Or, Tr2, gs, xr, bs, P4, _s, Os, Ri, Lr, Nr, ye2, Dr, Ar, Ss, yt2, O4, yi, Ir, $t2, ys, Rs, Ts, Re2, ge2, be2, _e2, oo, Oe2, ho, ao, lo, Fr, Xt2, Se2, Te2, co, fo, uo, mo, po, Eo, wo, So, vt2, yo, Ro;
320668
+ var import_events2, import_fs13, import_node_events6, import_node_stream3, import_node_string_decoder2, import_node_path9, import_node_fs6, import_path29, import_events3, import_assert5, import_buffer, Ms, import_zlib3, import_node_path10, import_node_path11, import_fs14, import_fs15, import_path30, import_node_path12, import_path31, import_node_fs7, import_node_assert, import_node_crypto5, import_node_fs8, import_node_path13, import_fs16, import_node_fs9, import_node_path14, import_node_fs10, import_promises21, import_node_path15, import_node_path16, import_node_fs11, import_node_path17, Mr, Br, xs, zr, Ur, Hr, q3, Q3, rt2, Le2, qt2, Ne2, Ls, De2, Ns, z4, Mt2, g2, Qt2, Bt2, b3, D3, _3, gi, Ae2, L4, w2, bi, _i, Ds, Oi, Z3, Ti, Ie2, Jt2, Rt2, F4, jt2, Wr, Gr, Zr, Yr, Fe2, xi, Kr, Vr, A3, Xr, ot2, H4, te2, m2, Ni, j4, Di, Ci, ki, ie2, Ce2, Ut2, Ht2, Ai, Pt2, ht2, U4, nt2, Y3, zt2, Ii, J3, ee3, Fi, ke2, gt2, ve2, bt2, _t2, Me2, tt2, Wt2, qr2, Is, Fs, Cs, ks, vs, Qr, se2, K3, jr, M4, tn, Bs, en, Mi, Tt2, Gt2, Bi, re3, Be2, Pe2, ze2, Ue2, He2, We2, Ge2, Ze2, Ye2, Ps, rn, nn, zs, on, hn, Us, Hs, Ui, ne3, ln, zi, oe2, Ke2, C4, cn, xt2, Hi, fn, at2, dn, un, mn, lt2, pn, En, wn, Wi, Sn, Lt2, ct2, Rn, gn, bn, _n, f2, Ve2, Nt2, Tn, Vi, $i, xn, B3, Dt2, et2, Gi, Ws, V3, he2, ft2, Gs, p3, it2, dt2, Zi, At2, y3, $e2, Xe2, Yi, Zs, Ys, ae2, Ki, qe2, Yt2, ut2, Qe2, It2, Je2, je2, Ks, Ln, st2, mt2, An, Xi, In, Fn, Ft2, qi, kn, Vs, le2, ti, Qi, vn, Mn, Ji, $s, er2, Bn, Qs, Js, js, ts, tr2, ce2, ei, es, ii, is, ss, rs, ns, pt2, si, os4, ji, X3, fe2, ri, ni, Pn, oi, de2, mi, ir2, ai, ue2, W4, me2, Et2, Ct2, pe2, hi, G5, hs, li, sr2, cs, fs4, ci, fi, rr2, as, di, or2, ls, wt2, kt2, Wn, Gn, ar2, lr2, Zn, Yn, Kn, Vn, ur2, mr2, cr2, pr2, Er, wr2, $n, Xn, qn, fr2, ds, us, pi, Qn, ms, Jn, ps, we2, St2, to, Sr2, Es, yr2, eo, Rr2, ws, gr2, Vt2, br2, io, so, ro, Si, Or, Tr2, gs, xr, bs, P4, _s, Os, Ri, Lr, Nr, ye2, Dr, Ar, Ss, yt2, O4, yi, Ir, $t2, ys, Rs, Ts, Re2, ge2, be2, _e2, oo, Oe2, ho, ao, lo, Fr, Xt2, Se2, Te2, co, fo, uo, mo, po, Eo, wo, So, vt2, yo, Ro;
320592
320669
  var init_index_min2 = __esm({
320593
320670
  "../../../node_modules/.pnpm/tar@7.5.16/node_modules/tar/dist/esm/index.min.js"() {
320594
320671
  "use strict";
@@ -320599,7 +320676,7 @@ var init_index_min2 = __esm({
320599
320676
  import_node_string_decoder2 = require("string_decoder");
320600
320677
  import_node_path9 = __toESM(require("path"), 1);
320601
320678
  import_node_fs6 = __toESM(require("fs"), 1);
320602
- import_path28 = require("path");
320679
+ import_path29 = require("path");
320603
320680
  import_events3 = require("events");
320604
320681
  import_assert5 = __toESM(require("assert"), 1);
320605
320682
  import_buffer = require("buffer");
@@ -320609,9 +320686,9 @@ var init_index_min2 = __esm({
320609
320686
  import_node_path11 = require("path");
320610
320687
  import_fs14 = __toESM(require("fs"), 1);
320611
320688
  import_fs15 = __toESM(require("fs"), 1);
320612
- import_path29 = __toESM(require("path"), 1);
320613
- import_node_path12 = require("path");
320614
320689
  import_path30 = __toESM(require("path"), 1);
320690
+ import_node_path12 = require("path");
320691
+ import_path31 = __toESM(require("path"), 1);
320615
320692
  import_node_fs7 = __toESM(require("fs"), 1);
320616
320693
  import_node_assert = __toESM(require("assert"), 1);
320617
320694
  import_node_crypto5 = require("crypto");
@@ -321931,11 +322008,11 @@ var init_index_min2 = __esm({
321931
322008
  };
321932
322009
  Xi = (s5, t3) => {
321933
322010
  let e2 = new Map(t3.map((n2) => [mt2(n2), true])), i5 = s5.filter, r4 = (n2, o3 = "") => {
321934
- let a3 = o3 || (0, import_path28.parse)(n2).root || ".", h4;
322011
+ let a3 = o3 || (0, import_path29.parse)(n2).root || ".", h4;
321935
322012
  if (n2 === a3) h4 = false;
321936
322013
  else {
321937
322014
  let l2 = e2.get(n2);
321938
- h4 = l2 !== void 0 ? l2 : r4((0, import_path28.dirname)(n2), a3);
322015
+ h4 = l2 !== void 0 ? l2 : r4((0, import_path29.dirname)(n2), a3);
321939
322016
  }
321940
322017
  return e2.set(n2, h4), h4;
321941
322018
  };
@@ -322055,7 +322132,7 @@ var init_index_min2 = __esm({
322055
322132
  let [o3, a3] = le2(this.path);
322056
322133
  o3 && typeof a3 == "string" && (this.path = a3, r4 = o3);
322057
322134
  }
322058
- this.win32 = !!i5.win32 || process.platform === "win32", this.win32 && (this.path = $s(this.path.replaceAll(/\\/g, "/")), t3 = t3.replaceAll(/\\/g, "/")), this.absolute = f2(i5.absolute || import_path29.default.resolve(this.cwd, t3)), this.path === "" && (this.path = "./"), r4 && this.warn("TAR_ENTRY_INFO", `stripping ${r4} from absolute path`, { entry: this, path: r4 + this.path });
322135
+ this.win32 = !!i5.win32 || process.platform === "win32", this.win32 && (this.path = $s(this.path.replaceAll(/\\/g, "/")), t3 = t3.replaceAll(/\\/g, "/")), this.absolute = f2(i5.absolute || import_path30.default.resolve(this.cwd, t3)), this.path === "" && (this.path = "./"), r4 && this.warn("TAR_ENTRY_INFO", `stripping ${r4} from absolute path`, { entry: this, path: r4 + this.path });
322059
322136
  let n2 = this.statCache.get(this.absolute);
322060
322137
  n2 ? this[ii](n2) : this[es]();
322061
322138
  }
@@ -322114,7 +322191,7 @@ var init_index_min2 = __esm({
322114
322191
  }
322115
322192
  [tr2](t3) {
322116
322193
  if (!this.stat) throw new Error("cannot create link entry without stat");
322117
- this.type = "Link", this.linkpath = f2(import_path29.default.relative(this.cwd, t3)), this.stat.size = 0, this[ce2](), this.end();
322194
+ this.type = "Link", this.linkpath = f2(import_path30.default.relative(this.cwd, t3)), this.stat.size = 0, this[ce2](), this.end();
322118
322195
  }
322119
322196
  [Js]() {
322120
322197
  if (!this.stat) throw new Error("cannot create file entry without stat");
@@ -322518,7 +322595,7 @@ var init_index_min2 = __esm({
322518
322595
  return typeof t3 == "string" ? this[li](t3) : this[sr2](t3), this.flowing;
322519
322596
  }
322520
322597
  [sr2](t3) {
322521
- let e2 = f2(import_path30.default.resolve(this.cwd, t3.path));
322598
+ let e2 = f2(import_path31.default.resolve(this.cwd, t3.path));
322522
322599
  if (!this.filter(t3.path, t3)) t3.resume();
322523
322600
  else {
322524
322601
  let i5 = new mi(t3.path, e2);
@@ -322527,7 +322604,7 @@ var init_index_min2 = __esm({
322527
322604
  this[Ct2]();
322528
322605
  }
322529
322606
  [li](t3) {
322530
- let e2 = f2(import_path30.default.resolve(this.cwd, t3));
322607
+ let e2 = f2(import_path31.default.resolve(this.cwd, t3));
322531
322608
  this[W4].push(new mi(t3, e2)), this[Ct2]();
322532
322609
  }
322533
322610
  [cs](t3) {
@@ -323682,8 +323759,8 @@ async function downloadDependency({ s3PreSignedReadUrl, absolutePathToLocalOutpu
323682
323759
  const request7 = await axios_default.get(s3PreSignedReadUrl, {
323683
323760
  responseType: "stream"
323684
323761
  });
323685
- const tmpDir = await import_tmp_promise4.default.dir();
323686
- const outputTarPath = import_path31.default.join(tmpDir.path, "api.tgz");
323762
+ const tmpDir = await import_tmp_promise5.default.dir();
323763
+ const outputTarPath = import_path32.default.join(tmpDir.path, "api.tgz");
323687
323764
  await (0, import_promises23.pipeline)(request7.data, (0, import_fs17.createWriteStream)(outputTarPath));
323688
323765
  await uo({ file: outputTarPath, cwd: absolutePathToLocalOutput });
323689
323766
  }
@@ -323697,7 +323774,7 @@ function stringifyDependency(dependency) {
323697
323774
  assertNever(dependency);
323698
323775
  }
323699
323776
  }
323700
- var import_fs17, import_promises22, import_os, import_path31, import_promises23, import_tmp_promise4, FIDDLE, DEPENDENCIES_FOLDER_NAME, METADATA_RESPONSE_FILENAME, LOCAL_STORAGE_FOLDER;
323777
+ var import_fs17, import_promises22, import_os, import_path32, import_promises23, import_tmp_promise5, FIDDLE, DEPENDENCIES_FOLDER_NAME, METADATA_RESPONSE_FILENAME, LOCAL_STORAGE_FOLDER;
323701
323778
  var init_loadDependency = __esm({
323702
323779
  "../workspace/lazy-fern-workspace/lib/utils/loadDependency.js"() {
323703
323780
  "use strict";
@@ -323712,10 +323789,10 @@ var init_loadDependency = __esm({
323712
323789
  import_fs17 = require("fs");
323713
323790
  import_promises22 = require("fs/promises");
323714
323791
  import_os = require("os");
323715
- import_path31 = __toESM(require("path"), 1);
323792
+ import_path32 = __toESM(require("path"), 1);
323716
323793
  import_promises23 = require("stream/promises");
323717
323794
  init_index_min2();
323718
- import_tmp_promise4 = __toESM(require_tmp_promise(), 1);
323795
+ import_tmp_promise5 = __toESM(require_tmp_promise(), 1);
323719
323796
  init_Result();
323720
323797
  FIDDLE = createFiddleService();
323721
323798
  DEPENDENCIES_FOLDER_NAME = "dependencies";
@@ -335317,7 +335394,7 @@ function validateStructureOfYamlFiles({ files, absolutePathToDefinition, skipVal
335317
335394
  addFailure(result);
335318
335395
  }
335319
335396
  }
335320
- } else if (import_path32.default.basename(relativeFilepath) === FERN_PACKAGE_MARKER_FILENAME) {
335397
+ } else if (import_path33.default.basename(relativeFilepath) === FERN_PACKAGE_MARKER_FILENAME) {
335321
335398
  const cached2 = packageMarkerParsedCache.get(file4.rawContents);
335322
335399
  if (cached2 != null && (cached2.validated || skipValidation)) {
335323
335400
  packageMarkers[relativeFilepath] = {
@@ -335407,7 +335484,7 @@ function validateStructureOfYamlFiles({ files, absolutePathToDefinition, skipVal
335407
335484
  };
335408
335485
  }
335409
335486
  }
335410
- var import_path32, rootApiParsedCache, definitionParsedCache, packageMarkerParsedCache;
335487
+ var import_path33, rootApiParsedCache, definitionParsedCache, packageMarkerParsedCache;
335411
335488
  var init_validateStructureOfYamlFiles = __esm({
335412
335489
  "../workspace/lazy-fern-workspace/lib/utils/validateStructureOfYamlFiles.js"() {
335413
335490
  "use strict";
@@ -335415,7 +335492,7 @@ var init_validateStructureOfYamlFiles = __esm({
335415
335492
  init_lib4();
335416
335493
  init_lib10();
335417
335494
  init_lib8();
335418
- import_path32 = __toESM(require("path"), 1);
335495
+ import_path33 = __toESM(require("path"), 1);
335419
335496
  init_api_yml_schema();
335420
335497
  init_fern_schema();
335421
335498
  init_package_yml_schema();
@@ -345532,7 +345609,7 @@ function parseExternalRef(ref2, baseDir) {
345532
345609
  const hashIndex = ref2.indexOf("#");
345533
345610
  const filePath = hashIndex >= 0 ? ref2.slice(0, hashIndex) : ref2;
345534
345611
  const jsonPointer = hashIndex >= 0 ? ref2.slice(hashIndex + 1) : "";
345535
- const absolutePath = (0, import_path33.resolve)(baseDir, filePath);
345612
+ const absolutePath = (0, import_path34.resolve)(baseDir, filePath);
345536
345613
  return { filePath, jsonPointer, absolutePath };
345537
345614
  }
345538
345615
  function isExternalRefValue(value2) {
@@ -345622,7 +345699,7 @@ async function resolveExternalRefs(obj, baseDir, mainFileAbsPath, registry2, app
345622
345699
  newVisited.add(cacheKey);
345623
345700
  const fileContent = await readAndParseFile(sourceFileAbsPath, fileCache);
345624
345701
  const parsed = navigateJsonPointer(fileContent, pointer2, sourceFileAbsPath);
345625
- const refDir = (0, import_path33.dirname)(sourceFileAbsPath);
345702
+ const refDir = (0, import_path34.dirname)(sourceFileAbsPath);
345626
345703
  const resolved = await resolveExternalRefs(parsed, refDir, mainFileAbsPath, registry2, true, newVisited, fileCache, sourceFileAbsPath);
345627
345704
  return mergeWithSiblings(resolved, siblingProperties, hasSiblings);
345628
345705
  }
@@ -345646,7 +345723,7 @@ async function resolveExternalRefs(obj, baseDir, mainFileAbsPath, registry2, app
345646
345723
  newVisited.add(cacheKey);
345647
345724
  const fileContent = await readAndParseFile(absoluteRefPath, fileCache);
345648
345725
  const parsed = navigateJsonPointer(fileContent, jsonPointer, absoluteRefPath);
345649
- const refDir = (0, import_path33.dirname)(absoluteRefPath);
345726
+ const refDir = (0, import_path34.dirname)(absoluteRefPath);
345650
345727
  const resolved = await resolveExternalRefs(parsed, refDir, mainFileAbsPath, registry2, true, newVisited, fileCache, absoluteRefPath);
345651
345728
  return mergeWithSiblings(resolved, siblingProperties, hasSiblings);
345652
345729
  }
@@ -345656,14 +345733,14 @@ async function resolveExternalRefs(obj, baseDir, mainFileAbsPath, registry2, app
345656
345733
  }
345657
345734
  return result;
345658
345735
  }
345659
- var import_promises25, import_path33;
345736
+ var import_promises25, import_path34;
345660
345737
  var init_resolveExternalRefs = __esm({
345661
345738
  "../workspace/lazy-fern-workspace/lib/utils/resolveExternalRefs.js"() {
345662
345739
  "use strict";
345663
345740
  init_lib6();
345664
345741
  import_promises25 = require("fs/promises");
345665
345742
  init_js_yaml();
345666
- import_path33 = require("path");
345743
+ import_path34 = require("path");
345667
345744
  }
345668
345745
  });
345669
345746
 
@@ -345671,7 +345748,7 @@ var init_resolveExternalRefs = __esm({
345671
345748
  async function loadAsyncAPI({ context: context3, absoluteFilePath, absoluteFilePathToOverrides }) {
345672
345749
  const contents = (await (0, import_promises26.readFile)(absoluteFilePath)).toString();
345673
345750
  const parsed = await index_vite_proxy_tmp_default.load(contents);
345674
- const baseDir = (0, import_path34.dirname)(absoluteFilePath);
345751
+ const baseDir = (0, import_path35.dirname)(absoluteFilePath);
345675
345752
  const registry2 = buildExternalRefRegistry(parsed, baseDir);
345676
345753
  const bundled = await resolveExternalRefs(parsed, baseDir, absoluteFilePath, registry2);
345677
345754
  let overridesFilepaths = [];
@@ -345692,13 +345769,13 @@ async function loadAsyncAPI({ context: context3, absoluteFilePath, absoluteFileP
345692
345769
  }
345693
345770
  return result;
345694
345771
  }
345695
- var import_promises26, import_path34;
345772
+ var import_promises26, import_path35;
345696
345773
  var init_loadAsyncAPI = __esm({
345697
345774
  "../workspace/lazy-fern-workspace/lib/utils/loadAsyncAPI.js"() {
345698
345775
  "use strict";
345699
345776
  import_promises26 = require("fs/promises");
345700
345777
  init_js_yaml();
345701
- import_path34 = require("path");
345778
+ import_path35 = require("path");
345702
345779
  init_mergeWithOverrides2();
345703
345780
  init_resolveExternalRefs();
345704
345781
  }
@@ -345707,7 +345784,7 @@ var init_loadAsyncAPI = __esm({
345707
345784
  // ../workspace/lazy-fern-workspace/lib/loaders/applyOverlays.js
345708
345785
  async function getTempDir() {
345709
345786
  if (tempDir === void 0) {
345710
- const dir = await import_tmp_promise5.default.dir({ prefix: "fern-overlay-" });
345787
+ const dir = await import_tmp_promise6.default.dir({ prefix: "fern-overlay-" });
345711
345788
  tempDir = dir.path;
345712
345789
  }
345713
345790
  return tempDir;
@@ -345723,9 +345800,9 @@ async function applyOverlays({ absoluteFilePathToOverlay, absoluteFilePathToOpen
345723
345800
  overlay
345724
345801
  });
345725
345802
  const dir = await getTempDir();
345726
- const originalFileName = import_path35.default.basename(absoluteFilePathToOpenAPI);
345727
- const outputFileName = `${import_path35.default.parse(originalFileName).name}.overlaid.json`;
345728
- const outputPath = import_path35.default.join(dir, outputFileName);
345803
+ const originalFileName = import_path36.default.basename(absoluteFilePathToOpenAPI);
345804
+ const outputFileName = `${import_path36.default.parse(originalFileName).name}.overlaid.json`;
345805
+ const outputPath = import_path36.default.join(dir, outputFileName);
345729
345806
  await (0, import_promises27.writeFile)(outputPath, JSON.stringify(result, null, 2), "utf8");
345730
345807
  context3.logger.debug(`Wrote overlaid OpenAPI spec to: ${outputPath}`);
345731
345808
  return result;
@@ -345788,7 +345865,7 @@ function validateOverlay(overlay, context3) {
345788
345865
  function isRecord(value2) {
345789
345866
  return typeof value2 === "object" && value2 != null && !Array.isArray(value2);
345790
345867
  }
345791
- var import_promises27, import_path35, import_tmp_promise5, tempDir;
345868
+ var import_promises27, import_path36, import_tmp_promise6, tempDir;
345792
345869
  var init_applyOverlays = __esm({
345793
345870
  "../workspace/lazy-fern-workspace/lib/loaders/applyOverlays.js"() {
345794
345871
  "use strict";
@@ -345796,19 +345873,19 @@ var init_applyOverlays = __esm({
345796
345873
  init_lib6();
345797
345874
  import_promises27 = require("fs/promises");
345798
345875
  init_js_yaml();
345799
- import_path35 = __toESM(require("path"), 1);
345800
- import_tmp_promise5 = __toESM(require_tmp_promise(), 1);
345876
+ import_path36 = __toESM(require("path"), 1);
345877
+ import_tmp_promise6 = __toESM(require_tmp_promise(), 1);
345801
345878
  }
345802
345879
  });
345803
345880
 
345804
345881
  // ../workspace/lazy-fern-workspace/lib/loaders/OpenAPIRefResolver.js
345805
- var import_openapi_core2, import_path36, OpenAPIRefResolver;
345882
+ var import_openapi_core2, import_path37, OpenAPIRefResolver;
345806
345883
  var init_OpenAPIRefResolver = __esm({
345807
345884
  "../workspace/lazy-fern-workspace/lib/loaders/OpenAPIRefResolver.js"() {
345808
345885
  "use strict";
345809
345886
  init_lib8();
345810
345887
  import_openapi_core2 = __toESM(require_lib2(), 1);
345811
- import_path36 = __toESM(require("path"), 1);
345888
+ import_path37 = __toESM(require("path"), 1);
345812
345889
  OpenAPIRefResolver = class extends import_openapi_core2.BaseResolver {
345813
345890
  absolutePathToOpenAPIOverrides;
345814
345891
  absolutePathToOpenAPIOverlays;
@@ -345826,13 +345903,13 @@ var init_OpenAPIRefResolver = __esm({
345826
345903
  return result;
345827
345904
  }
345828
345905
  if (this.absolutePathToOpenAPIOverlays != null) {
345829
- const overlayResolved = import_path36.default.resolve(import_path36.default.dirname(this.absolutePathToOpenAPIOverlays), ref2);
345906
+ const overlayResolved = import_path37.default.resolve(import_path37.default.dirname(this.absolutePathToOpenAPIOverlays), ref2);
345830
345907
  if (doesPathExistSync(AbsoluteFilePath2.of(overlayResolved))) {
345831
345908
  return overlayResolved;
345832
345909
  }
345833
345910
  }
345834
345911
  if (this.absolutePathToOpenAPIOverrides != null) {
345835
- return import_path36.default.resolve(import_path36.default.dirname(this.absolutePathToOpenAPIOverrides), ref2);
345912
+ return import_path37.default.resolve(import_path37.default.dirname(this.absolutePathToOpenAPIOverrides), ref2);
345836
345913
  }
345837
345914
  return result;
345838
345915
  }
@@ -346124,7 +346201,7 @@ function describeRef(value2) {
346124
346201
  return `target="${ref2}"${siblingSuffix}`;
346125
346202
  }
346126
346203
  async function readMarkdownRef(ref2, baseDir, context3, path122) {
346127
- const absolutePath = (0, import_path37.resolve)(baseDir, ref2);
346204
+ const absolutePath = (0, import_path38.resolve)(baseDir, ref2);
346128
346205
  try {
346129
346206
  const contents = await (0, import_promises29.readFile)(absolutePath, "utf-8");
346130
346207
  return contents.trimEnd();
@@ -346133,13 +346210,13 @@ async function readMarkdownRef(ref2, baseDir, context3, path122) {
346133
346210
  return "";
346134
346211
  }
346135
346212
  }
346136
- var import_promises29, import_path37, SKIP_METADATA_PARENTS;
346213
+ var import_promises29, import_path38, SKIP_METADATA_PARENTS;
346137
346214
  var init_resolveDescriptionMarkdownRefs = __esm({
346138
346215
  "../workspace/lazy-fern-workspace/lib/utils/resolveDescriptionMarkdownRefs.js"() {
346139
346216
  "use strict";
346140
346217
  init_lib4();
346141
346218
  import_promises29 = require("fs/promises");
346142
- import_path37 = require("path");
346219
+ import_path38 = require("path");
346143
346220
  SKIP_METADATA_PARENTS = /* @__PURE__ */ new Set(["properties", "patternProperties"]);
346144
346221
  }
346145
346222
  });
@@ -356898,7 +356975,7 @@ function maybeResolveSourceReference(source2, baseDir) {
356898
356975
  return source2;
356899
356976
  }
356900
356977
  if (isCodeReference2(source2)) {
356901
- const resolvedPath = (0, import_path38.resolve)(baseDir ?? process.cwd(), source2.$ref);
356978
+ const resolvedPath = (0, import_path39.resolve)(baseDir ?? process.cwd(), source2.$ref);
356902
356979
  if ((0, import_fs18.existsSync)(resolvedPath)) {
356903
356980
  try {
356904
356981
  const fileContent = (0, import_fs18.readFileSync)(resolvedPath, "utf-8");
@@ -356910,14 +356987,14 @@ function maybeResolveSourceReference(source2, baseDir) {
356910
356987
  }
356911
356988
  return void 0;
356912
356989
  }
356913
- var import_fs18, import_path38, RedoclyCodeSamplesExtension;
356990
+ var import_fs18, import_path39, RedoclyCodeSamplesExtension;
356914
356991
  var init_x_code_samples = __esm({
356915
356992
  "../api-importers/openapi-to-ir/lib/extensions/x-code-samples.js"() {
356916
356993
  "use strict";
356917
356994
  init_lib4();
356918
356995
  init_lib30();
356919
356996
  import_fs18 = require("fs");
356920
- import_path38 = require("path");
356997
+ import_path39 = require("path");
356921
356998
  RedoclyCodeSamplesExtension = class extends AbstractExtension {
356922
356999
  operation;
356923
357000
  baseDir;
@@ -356986,7 +357063,7 @@ function maybeResolveCodeReference2(code5, baseDir) {
356986
357063
  return code5;
356987
357064
  }
356988
357065
  if (isCodeReference3(code5)) {
356989
- const resolvedPath = (0, import_path39.resolve)(baseDir ?? process.cwd(), code5.$ref);
357066
+ const resolvedPath = (0, import_path40.resolve)(baseDir ?? process.cwd(), code5.$ref);
356990
357067
  if ((0, import_fs19.existsSync)(resolvedPath)) {
356991
357068
  try {
356992
357069
  const fileContent = (0, import_fs19.readFileSync)(resolvedPath, "utf-8");
@@ -357018,7 +357095,7 @@ function resolveCodeSamples2(codeSamples, baseDir) {
357018
357095
  }
357019
357096
  return resolved;
357020
357097
  }
357021
- var import_fs19, import_path39, FernExamplesExtension2;
357098
+ var import_fs19, import_path40, FernExamplesExtension2;
357022
357099
  var init_x_fern_examples2 = __esm({
357023
357100
  "../api-importers/openapi-to-ir/lib/extensions/x-fern-examples.js"() {
357024
357101
  "use strict";
@@ -357026,7 +357103,7 @@ var init_x_fern_examples2 = __esm({
357026
357103
  init_lib10();
357027
357104
  init_lib30();
357028
357105
  import_fs19 = require("fs");
357029
- import_path39 = require("path");
357106
+ import_path40 = require("path");
357030
357107
  FernExamplesExtension2 = class extends AbstractExtension {
357031
357108
  operation;
357032
357109
  baseDir;
@@ -360639,7 +360716,7 @@ function getPlatformInfo() {
360639
360716
  }
360640
360717
  function getCacheDir() {
360641
360718
  const homeDir = import_os2.default.homedir();
360642
- return AbsoluteFilePath2.of(import_path40.default.join(homeDir, CACHE_DIR_NAME, BIN_DIR_NAME));
360719
+ return AbsoluteFilePath2.of(import_path41.default.join(homeDir, CACHE_DIR_NAME, BIN_DIR_NAME));
360643
360720
  }
360644
360721
  function getVersionedBinaryPath() {
360645
360722
  const { extension: extension4 } = getPlatformInfo();
@@ -360657,7 +360734,7 @@ function getVersionMarkerPath() {
360657
360734
  }
360658
360735
  function getLockDirPath() {
360659
360736
  const cacheDir = getCacheDir();
360660
- return import_path40.default.join(cacheDir, `${BINARY_NAME}.lock`);
360737
+ return import_path41.default.join(cacheDir, `${BINARY_NAME}.lock`);
360661
360738
  }
360662
360739
  function getDownloadUrl() {
360663
360740
  const { os: osName, arch: arch4, extension: extension4 } = getPlatformInfo();
@@ -360790,7 +360867,7 @@ async function atomicCopyBinary(src, dest) {
360790
360867
  await (0, import_promises34.chmod)(tmpDest, 493);
360791
360868
  await (0, import_promises34.rename)(tmpDest, dest);
360792
360869
  }
360793
- var import_promises34, import_os2, import_path40, BUF_VERSION, GITHUB_RELEASE_URL_BASE, BINARY_NAME, CACHE_DIR_NAME, BIN_DIR_NAME, LOCK_TIMEOUT_MS, LOCK_RETRY_INTERVAL_MS;
360870
+ var import_promises34, import_os2, import_path41, BUF_VERSION, GITHUB_RELEASE_URL_BASE, BINARY_NAME, CACHE_DIR_NAME, BIN_DIR_NAME, LOCK_TIMEOUT_MS, LOCK_RETRY_INTERVAL_MS;
360794
360871
  var init_BufDownloader = __esm({
360795
360872
  "../workspace/lazy-fern-workspace/lib/protobuf/BufDownloader.js"() {
360796
360873
  "use strict";
@@ -360798,7 +360875,7 @@ var init_BufDownloader = __esm({
360798
360875
  init_lib6();
360799
360876
  import_promises34 = require("fs/promises");
360800
360877
  import_os2 = __toESM(require("os"), 1);
360801
- import_path40 = __toESM(require("path"), 1);
360878
+ import_path41 = __toESM(require("path"), 1);
360802
360879
  BUF_VERSION = "v1.50.0";
360803
360880
  GITHUB_RELEASE_URL_BASE = "https://github.com/bufbuild/buf/releases/download";
360804
360881
  BINARY_NAME = "buf";
@@ -360868,7 +360945,7 @@ async function detectAirGappedModeForProtobuf(absoluteFilepathToProtobufRoot, lo
360868
360945
  if (!bufLockExists) {
360869
360946
  return false;
360870
360947
  }
360871
- const tmpDir = AbsoluteFilePath2.of((await import_tmp_promise6.default.dir()).path);
360948
+ const tmpDir = AbsoluteFilePath2.of((await import_tmp_promise7.default.dir()).path);
360872
360949
  try {
360873
360950
  const bufYamlPath = join8(absoluteFilepathToProtobufRoot, RelativeFilePath2.of("buf.yaml"));
360874
360951
  try {
@@ -360929,7 +361006,7 @@ async function ensureBufCommand(logger4) {
360929
361006
  });
360930
361007
  }
360931
361008
  }
360932
- var import_promises35, import_tmp_promise6, airGapDetectionResult, airGapDetectionPromise, PROTOBUF_GENERATOR_CONFIG_FILENAME, PROTOBUF_GENERATOR_OUTPUT_PATH, PROTOBUF_GENERATOR_OUTPUT_FILEPATH, PROTOBUF_SHELL_PROXY_FILENAME, PROTOBUF_EXPORT_CONFIG_V1, PROTOBUF_EXPORT_CONFIG_V2, getProtobufYamlV1, PROTOBUF_GEN_CONFIG, PROTOBUF_MODULE_PACKAGE_JSON, PROTOBUF_SHELL_PROXY;
361009
+ var import_promises35, import_tmp_promise7, airGapDetectionResult, airGapDetectionPromise, PROTOBUF_GENERATOR_CONFIG_FILENAME, PROTOBUF_GENERATOR_OUTPUT_PATH, PROTOBUF_GENERATOR_OUTPUT_FILEPATH, PROTOBUF_SHELL_PROXY_FILENAME, PROTOBUF_EXPORT_CONFIG_V1, PROTOBUF_EXPORT_CONFIG_V2, getProtobufYamlV1, PROTOBUF_GEN_CONFIG, PROTOBUF_MODULE_PACKAGE_JSON, PROTOBUF_SHELL_PROXY;
360933
361010
  var init_utils14 = __esm({
360934
361011
  "../workspace/lazy-fern-workspace/lib/protobuf/utils.js"() {
360935
361012
  "use strict";
@@ -360938,7 +361015,7 @@ var init_utils14 = __esm({
360938
361015
  init_lib18();
360939
361016
  init_lib6();
360940
361017
  import_promises35 = require("fs/promises");
360941
- import_tmp_promise6 = __toESM(require_tmp_promise(), 1);
361018
+ import_tmp_promise7 = __toESM(require_tmp_promise(), 1);
360942
361019
  init_BufDownloader();
360943
361020
  PROTOBUF_GENERATOR_CONFIG_FILENAME = "buf.gen.yaml";
360944
361021
  PROTOBUF_GENERATOR_OUTPUT_PATH = "output";
@@ -361022,7 +361099,7 @@ async function ensureFernGloballyInstalled(cwd2, logger4) {
361022
361099
  })();
361023
361100
  return fernGlobalInstallPromise;
361024
361101
  }
361025
- var import_promises36, import_path41, import_tmp_promise7, fernGlobalInstallPromise, ProtobufIRGenerator;
361102
+ var import_promises36, import_path42, import_tmp_promise8, fernGlobalInstallPromise, ProtobufIRGenerator;
361026
361103
  var init_ProtobufIRGenerator = __esm({
361027
361104
  "../workspace/lazy-fern-workspace/lib/protobuf/ProtobufIRGenerator.js"() {
361028
361105
  "use strict";
@@ -361030,8 +361107,8 @@ var init_ProtobufIRGenerator = __esm({
361030
361107
  init_lib18();
361031
361108
  init_lib6();
361032
361109
  import_promises36 = require("fs/promises");
361033
- import_path41 = __toESM(require("path"), 1);
361034
- import_tmp_promise7 = __toESM(require_tmp_promise(), 1);
361110
+ import_path42 = __toESM(require("path"), 1);
361111
+ import_tmp_promise8 = __toESM(require_tmp_promise(), 1);
361035
361112
  init_utils14();
361036
361113
  ProtobufIRGenerator = class {
361037
361114
  context;
@@ -361065,7 +361142,7 @@ var init_ProtobufIRGenerator = __esm({
361065
361142
  });
361066
361143
  }
361067
361144
  async setupProtobufGeneratorConfig({ absoluteFilepathToProtobufRoot, absoluteFilepathToProtobufTarget }) {
361068
- const protobufGeneratorConfigPath = AbsoluteFilePath2.of((await import_tmp_promise7.default.dir()).path);
361145
+ const protobufGeneratorConfigPath = AbsoluteFilePath2.of((await import_tmp_promise8.default.dir()).path);
361069
361146
  if (absoluteFilepathToProtobufTarget !== void 0) {
361070
361147
  await this.exportProtobufFilesForTarget({
361071
361148
  protobufGeneratorConfigPath,
@@ -361095,7 +361172,7 @@ var init_ProtobufIRGenerator = __esm({
361095
361172
  const bufCommand = this.resolvedBufCommand ?? "buf";
361096
361173
  for (const version7 of ["v1", "v2"]) {
361097
361174
  this.context.logger.info(`Using buf export with version: ${version7}`);
361098
- const tmpBufConfigFile = await import_tmp_promise7.default.file({ postfix: ".yaml" });
361175
+ const tmpBufConfigFile = await import_tmp_promise8.default.file({ postfix: ".yaml" });
361099
361176
  const configContent = version7 === "v1" ? PROTOBUF_EXPORT_CONFIG_V1 : PROTOBUF_EXPORT_CONFIG_V2;
361100
361177
  await (0, import_promises36.writeFile)(tmpBufConfigFile.path, configContent, "utf8");
361101
361178
  try {
@@ -361129,7 +361206,7 @@ var init_ProtobufIRGenerator = __esm({
361129
361206
  await (0, import_promises36.cp)(absoluteFilepathToProtobufRoot, protobufGeneratorConfigPath, {
361130
361207
  recursive: true,
361131
361208
  filter: (src) => {
361132
- const basename8 = import_path41.default.basename(src);
361209
+ const basename8 = import_path42.default.basename(src);
361133
361210
  return basename8 !== "buf.yaml" && !(basename8.startsWith("buf.gen.") && basename8.endsWith(".yaml"));
361134
361211
  }
361135
361212
  });
@@ -361243,7 +361320,7 @@ function getPlatformInfo2() {
361243
361320
  }
361244
361321
  function getCacheDir2() {
361245
361322
  const homeDir = import_os3.default.homedir();
361246
- return AbsoluteFilePath2.of(import_path42.default.join(homeDir, CACHE_DIR_NAME2, BIN_DIR_NAME2));
361323
+ return AbsoluteFilePath2.of(import_path43.default.join(homeDir, CACHE_DIR_NAME2, BIN_DIR_NAME2));
361247
361324
  }
361248
361325
  function getVersionedBinaryPath2() {
361249
361326
  const { extension: extension4 } = getPlatformInfo2();
@@ -361261,7 +361338,7 @@ function getVersionMarkerPath2() {
361261
361338
  }
361262
361339
  function getLockDirPath2() {
361263
361340
  const cacheDir = getCacheDir2();
361264
- return import_path42.default.join(cacheDir, `${BINARY_NAME2}.lock`);
361341
+ return import_path43.default.join(cacheDir, `${BINARY_NAME2}.lock`);
361265
361342
  }
361266
361343
  function getDownloadUrl2() {
361267
361344
  const { os: osName, arch: arch4, extension: extension4 } = getPlatformInfo2();
@@ -361394,7 +361471,7 @@ async function atomicCopyBinary2(src, dest) {
361394
361471
  await (0, import_promises37.chmod)(tmpDest, 493);
361395
361472
  await (0, import_promises37.rename)(tmpDest, dest);
361396
361473
  }
361397
- var import_promises37, import_os3, import_path42, PROTOC_GEN_OPENAPI_VERSION, GITHUB_RELEASE_URL_BASE2, BINARY_NAME2, CACHE_DIR_NAME2, BIN_DIR_NAME2, LOCK_TIMEOUT_MS2, LOCK_RETRY_INTERVAL_MS2;
361474
+ var import_promises37, import_os3, import_path43, PROTOC_GEN_OPENAPI_VERSION, GITHUB_RELEASE_URL_BASE2, BINARY_NAME2, CACHE_DIR_NAME2, BIN_DIR_NAME2, LOCK_TIMEOUT_MS2, LOCK_RETRY_INTERVAL_MS2;
361398
361475
  var init_ProtocGenOpenAPIDownloader = __esm({
361399
361476
  "../workspace/lazy-fern-workspace/lib/protobuf/ProtocGenOpenAPIDownloader.js"() {
361400
361477
  "use strict";
@@ -361402,7 +361479,7 @@ var init_ProtocGenOpenAPIDownloader = __esm({
361402
361479
  init_lib6();
361403
361480
  import_promises37 = require("fs/promises");
361404
361481
  import_os3 = __toESM(require("os"), 1);
361405
- import_path42 = __toESM(require("path"), 1);
361482
+ import_path43 = __toESM(require("path"), 1);
361406
361483
  PROTOC_GEN_OPENAPI_VERSION = "v0.1.13";
361407
361484
  GITHUB_RELEASE_URL_BASE2 = "https://github.com/fern-api/protoc-gen-openapi/releases/download";
361408
361485
  BINARY_NAME2 = "protoc-gen-openapi";
@@ -361429,7 +361506,7 @@ plugins:
361429
361506
  - source_root=${relativeFilepathToProtobufRoot}
361430
361507
  `;
361431
361508
  }
361432
- var import_promises38, import_path43, import_tmp_promise8, PROTOBUF_GENERATOR_CONFIG_FILENAME2, PROTOBUF_GENERATOR_OUTPUT_PATH2, PROTOBUF_GENERATOR_OUTPUT_FILEPATH2, ProtobufOpenAPIGenerator;
361509
+ var import_promises38, import_path44, import_tmp_promise9, PROTOBUF_GENERATOR_CONFIG_FILENAME2, PROTOBUF_GENERATOR_OUTPUT_PATH2, PROTOBUF_GENERATOR_OUTPUT_FILEPATH2, ProtobufOpenAPIGenerator;
361433
361510
  var init_ProtobufOpenAPIGenerator = __esm({
361434
361511
  "../workspace/lazy-fern-workspace/lib/protobuf/ProtobufOpenAPIGenerator.js"() {
361435
361512
  "use strict";
@@ -361437,8 +361514,8 @@ var init_ProtobufOpenAPIGenerator = __esm({
361437
361514
  init_lib18();
361438
361515
  init_lib6();
361439
361516
  import_promises38 = require("fs/promises");
361440
- import_path43 = __toESM(require("path"), 1);
361441
- import_tmp_promise8 = __toESM(require_tmp_promise(), 1);
361517
+ import_path44 = __toESM(require("path"), 1);
361518
+ import_tmp_promise9 = __toESM(require_tmp_promise(), 1);
361442
361519
  init_ProtocGenOpenAPIDownloader();
361443
361520
  init_utils14();
361444
361521
  PROTOBUF_GENERATOR_CONFIG_FILENAME2 = "buf.gen.yaml";
@@ -361482,10 +361559,10 @@ var init_ProtobufOpenAPIGenerator = __esm({
361482
361559
  if (deps.length > 0 && this.isAirGapped === void 0) {
361483
361560
  this.isAirGapped = await detectAirGappedModeForProtobuf(absoluteFilepathToProtobufRoot, this.context.logger, this.resolvedBufCommand);
361484
361561
  }
361485
- const cwd2 = AbsoluteFilePath2.of((await import_tmp_promise8.default.dir()).path);
361562
+ const cwd2 = AbsoluteFilePath2.of((await import_tmp_promise9.default.dir()).path);
361486
361563
  await (0, import_promises38.cp)(absoluteFilepathToProtobufRoot, cwd2, { recursive: true });
361487
361564
  await (0, import_promises38.writeFile)(join8(cwd2, RelativeFilePath2.of(PROTOBUF_GENERATOR_CONFIG_FILENAME2)), getProtobufGeneratorConfig({ relativeFilepathToProtobufRoot }));
361488
- const envOverride = this.protocGenOpenAPIBinDir != null ? { PATH: `${this.protocGenOpenAPIBinDir}${import_path43.default.delimiter}${process.env.PATH ?? ""}` } : void 0;
361565
+ const envOverride = this.protocGenOpenAPIBinDir != null ? { PATH: `${this.protocGenOpenAPIBinDir}${import_path44.default.delimiter}${process.env.PATH ?? ""}` } : void 0;
361489
361566
  const bufYamlPath = join8(cwd2, RelativeFilePath2.of("buf.yaml"));
361490
361567
  const bufLockPath = join8(cwd2, RelativeFilePath2.of("buf.lock"));
361491
361568
  await (0, import_promises38.writeFile)(bufYamlPath, getProtobufYamlV1(deps));
@@ -361544,7 +361621,7 @@ var init_ProtobufOpenAPIGenerator = __esm({
361544
361621
  });
361545
361622
  }
361546
361623
  const outputPath = join8(preparedDir.cwd, RelativeFilePath2.of(PROTOBUF_GENERATOR_OUTPUT_FILEPATH2));
361547
- const uniqueOutput = AbsoluteFilePath2.of((await import_tmp_promise8.default.file({ postfix: ".yaml" })).path);
361624
+ const uniqueOutput = AbsoluteFilePath2.of((await import_tmp_promise9.default.file({ postfix: ".yaml" })).path);
361548
361625
  await (0, import_promises38.copyFile)(outputPath, uniqueOutput);
361549
361626
  await (0, import_promises38.unlink)(outputPath);
361550
361627
  return { absoluteFilepath: uniqueOutput };
@@ -361568,7 +361645,7 @@ var init_ProtobufOpenAPIGenerator = __esm({
361568
361645
  });
361569
361646
  }
361570
361647
  async setupProtobufGeneratorConfig({ absoluteFilepathToProtobufRoot, relativeFilepathToProtobufRoot }) {
361571
- const protobufGeneratorConfigPath = AbsoluteFilePath2.of((await import_tmp_promise8.default.dir()).path);
361648
+ const protobufGeneratorConfigPath = AbsoluteFilePath2.of((await import_tmp_promise9.default.dir()).path);
361572
361649
  await (0, import_promises38.cp)(absoluteFilepathToProtobufRoot, protobufGeneratorConfigPath, { recursive: true });
361573
361650
  await (0, import_promises38.writeFile)(join8(protobufGeneratorConfigPath, RelativeFilePath2.of(PROTOBUF_GENERATOR_CONFIG_FILENAME2)), getProtobufGeneratorConfig({ relativeFilepathToProtobufRoot }));
361574
361651
  return protobufGeneratorConfigPath;
@@ -361579,7 +361656,7 @@ var init_ProtobufOpenAPIGenerator = __esm({
361579
361656
  const bufLockPath = join8(cwd2, RelativeFilePath2.of("buf.lock"));
361580
361657
  let cleanupBufLock = false;
361581
361658
  const configContent = getProtobufYamlV1(deps);
361582
- const envOverride = this.protocGenOpenAPIBinDir != null ? { PATH: `${this.protocGenOpenAPIBinDir}${import_path43.default.delimiter}${process.env.PATH ?? ""}` } : void 0;
361659
+ const envOverride = this.protocGenOpenAPIBinDir != null ? { PATH: `${this.protocGenOpenAPIBinDir}${import_path44.default.delimiter}${process.env.PATH ?? ""}` } : void 0;
361583
361660
  const bufCommand = this.resolvedBufCommand ?? "buf";
361584
361661
  const buf = createLoggingExecutable(bufCommand, {
361585
361662
  cwd: cwd2,
@@ -424433,7 +424510,7 @@ function tokenizeWwwAutolink(effects, ok3, nok) {
424433
424510
  }
424434
424511
  effects.enter("literalAutolink");
424435
424512
  effects.enter("literalAutolinkWww");
424436
- return effects.check(wwwPrefix, effects.attempt(domain2, effects.attempt(path47, wwwAfter), nok), nok)(code5);
424513
+ return effects.check(wwwPrefix, effects.attempt(domain2, effects.attempt(path48, wwwAfter), nok), nok)(code5);
424437
424514
  }
424438
424515
  function wwwAfter(code5) {
424439
424516
  effects.exit("literalAutolinkWww");
@@ -424483,7 +424560,7 @@ function tokenizeProtocolAutolink(effects, ok3, nok) {
424483
424560
  return nok(code5);
424484
424561
  }
424485
424562
  function afterProtocol(code5) {
424486
- return code5 === null || asciiControl(code5) || markdownLineEndingOrSpace(code5) || unicodeWhitespace(code5) || unicodePunctuation(code5) ? nok(code5) : effects.attempt(domain2, effects.attempt(path47, protocolAfter), nok)(code5);
424563
+ return code5 === null || asciiControl(code5) || markdownLineEndingOrSpace(code5) || unicodeWhitespace(code5) || unicodePunctuation(code5) ? nok(code5) : effects.attempt(domain2, effects.attempt(path48, protocolAfter), nok)(code5);
424487
424564
  }
424488
424565
  function protocolAfter(code5) {
424489
424566
  effects.exit("literalAutolinkHttp");
@@ -424659,7 +424736,7 @@ function previousUnbalanced(events) {
424659
424736
  }
424660
424737
  return result;
424661
424738
  }
424662
- var wwwPrefix, domain2, path47, trail, emailDomainDotTrail, wwwAutolink, protocolAutolink, emailAutolink, text4, code2;
424739
+ var wwwPrefix, domain2, path48, trail, emailDomainDotTrail, wwwAutolink, protocolAutolink, emailAutolink, text4, code2;
424663
424740
  var init_syntax = __esm({
424664
424741
  "../../../node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0/node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js"() {
424665
424742
  "use strict";
@@ -424672,7 +424749,7 @@ var init_syntax = __esm({
424672
424749
  tokenize: tokenizeDomain,
424673
424750
  partial: true
424674
424751
  };
424675
- path47 = {
424752
+ path48 = {
424676
424753
  tokenize: tokenizePath,
424677
424754
  partial: true
424678
424755
  };
@@ -426750,7 +426827,7 @@ function sizingGroup(value2, options2, baseOptions) {
426750
426827
  }
426751
426828
  return buildCommon.makeFragment(inner2);
426752
426829
  }
426753
- var SourceLocation2, Token2, ParseError22, contains, deflt, uppercase2, hyphenate, ESCAPE_LOOKUP, ESCAPE_REGEX, getBaseElem, isCharacterBox, assert5, protocolFromUrl, utils, SETTINGS_SCHEMA, Settings, Style, D4, Dc, T3, Tc, S5, Sc, SS, SSc, styles4, sup, sub, fracNum, fracDen, cramp, text$1, Style$1, scriptData, allBlocks, hLinePad, sqrtMain, sqrtSize1, sqrtSize2, sqrtSize3, sqrtSize4, phasePath, sqrtTall, sqrtPath, innerPath, path48, tallDelim, DocumentFragment2, fontMetricsData, sigmasAndXis, extraCharacterMap, fontMetricsBySizeIndex, sizeStyleMap, sizeMultipliers, sizeAtStyle, Options, ptPerUnit, relativeUnit, validUnit, calculateSize, makeEm, createClass, initNode, toNode, invalidAttributeNameRegex, toMarkup, Span, Anchor, Img, iCombinations, SymbolNode, SvgNode, PathNode, LineNode, ATOMS, NON_ATOMS, symbols, math2, text5, main2, ams, accent, bin, close2, inner, mathord, op, open2, punct, rel, spacing, textord, ligatures, mathTextSymbols, ch, i3, textSymbols, _ch, _i2, letters, _ch2, _i22, wideChar, _ch3, _i3, _ch4, _i4, extraLatin, _ch5, _i5, wideLatinLetterData, wideNumeralData, wideCharacterFont, lookupSymbol, makeSymbol, mathsym, boldsymbol, makeOrd, canCombine, tryCombineChars, sizeElementFromChildren, makeSpan$2, makeSvgSpan, makeLineSpan, makeAnchor, makeFragment, wrapFragment, getVListChildrenAndDepth, makeVList, makeGlue, retrieveTextFontName, fontMap, svgData, staticSvg, buildCommon, thinspace, mediumspace, thickspace, spacings, tightSpacings, _functions, _htmlGroupBuilders, _mathmlGroupBuilders, normalizeArgument, ordargument, makeSpan$1, binLeftCanceller, binRightCanceller, styleMap$1, DomEnum, buildExpression$1, traverseNonSpaceNodes, checkPartialGroup, getOutermostNode, getTypeOfDomTree, makeNullDelimiter, buildGroup$1, MathNode, TextNode, SpaceNode, mathMLTree, makeText, makeRow, getVariant, buildExpression2, buildExpressionRow, buildGroup2, optionsFromSettings, displayWrap, buildTree, buildHTMLTree, stretchyCodePoint, mathMLnode, katexImagesData, groupLength, svgSpan, encloseSpan, stretchy, htmlBuilder$a, mathmlBuilder$9, NON_STRETCHY_ACCENT_REGEX, paddedNode, makeSpan2, binrelClass, cdArrowFunctionName, newCell, isStartOfArrow, isLabelEnd, htmlBuilder$8, mathmlBuilder$7, globalMap, checkControlSequence, getRHS, letCommand, getMetrics, styleWrap, centerSpan, makeSmallDelim, mathrmSize, makeLargeDelim, makeGlyphSpan, makeInner, lapInEms, lap, verts, doubleVerts, makeStackedDelim, vbPad, emPad, sqrtSvg, makeSqrtImage, stackLargeDelimiters, stackAlwaysDelimiters, stackNeverDelimiters, sizeToMaxHeight, makeSizedDelim, stackNeverDelimiterSequence, stackAlwaysDelimiterSequence, stackLargeDelimiterSequence, delimTypeToFont, traverseSequence, makeCustomSizedDelim, makeLeftRightDelim, delimiter2, delimiterSizes, delimiters, htmlBuilder$7, mathmlBuilder$6, _environments, _macros, validateAmsEnvironmentContext, htmlBuilder$6, alignMap, mathmlBuilder$5, alignedHandler, environments, htmlBuilder$5, mathmlBuilder$4, fontAliases, adjustStyle, htmlBuilder$4, mathmlBuilder$3, stylArray, delimFromValue, htmlBuilder$3, mathmlBuilder$2, sizeData, chooseMathStyle, assembleSupSub, noSuccessor, htmlBuilder$2, mathmlBuilder$1, singleCharBigOps, singleCharIntegrals, htmlBuilder$1, mathmlBuilder2, sizeFuncs, htmlBuilder2, styleMap, htmlBuilderDelegate, defaultVariant, cssSpace, regularSpace, pad, textFontFamilies, textFontWeights, textFontShapes, optionsWithFont, makeVerb, functions, spaceRegexString, controlWordRegexString, controlSymbolRegexString, controlWordWhitespaceRegexString, controlSpaceRegexString, combiningDiacriticalMarkString, combiningDiacriticalMarksEndRegex, tokenRegexString, Lexer2, Namespace2, macros, digitToNumber, newcommand, dotsByToken, spaceAfterDots, latexRaiseA, braketHelper, implicitCommands, MacroExpander, unicodeSubRegEx, uSubsAndSups, unicodeAccents, unicodeSymbols, Parser3, parseTree, render, renderToString, generateParseTree, renderError, renderToDomTree, renderToHTMLTree, version3, __domTree, katex;
426830
+ var SourceLocation2, Token2, ParseError22, contains, deflt, uppercase2, hyphenate, ESCAPE_LOOKUP, ESCAPE_REGEX, getBaseElem, isCharacterBox, assert5, protocolFromUrl, utils, SETTINGS_SCHEMA, Settings, Style, D4, Dc, T3, Tc, S5, Sc, SS, SSc, styles4, sup, sub, fracNum, fracDen, cramp, text$1, Style$1, scriptData, allBlocks, hLinePad, sqrtMain, sqrtSize1, sqrtSize2, sqrtSize3, sqrtSize4, phasePath, sqrtTall, sqrtPath, innerPath, path49, tallDelim, DocumentFragment2, fontMetricsData, sigmasAndXis, extraCharacterMap, fontMetricsBySizeIndex, sizeStyleMap, sizeMultipliers, sizeAtStyle, Options, ptPerUnit, relativeUnit, validUnit, calculateSize, makeEm, createClass, initNode, toNode, invalidAttributeNameRegex, toMarkup, Span, Anchor, Img, iCombinations, SymbolNode, SvgNode, PathNode, LineNode, ATOMS, NON_ATOMS, symbols, math2, text5, main2, ams, accent, bin, close2, inner, mathord, op, open2, punct, rel, spacing, textord, ligatures, mathTextSymbols, ch, i3, textSymbols, _ch, _i2, letters, _ch2, _i22, wideChar, _ch3, _i3, _ch4, _i4, extraLatin, _ch5, _i5, wideLatinLetterData, wideNumeralData, wideCharacterFont, lookupSymbol, makeSymbol, mathsym, boldsymbol, makeOrd, canCombine, tryCombineChars, sizeElementFromChildren, makeSpan$2, makeSvgSpan, makeLineSpan, makeAnchor, makeFragment, wrapFragment, getVListChildrenAndDepth, makeVList, makeGlue, retrieveTextFontName, fontMap, svgData, staticSvg, buildCommon, thinspace, mediumspace, thickspace, spacings, tightSpacings, _functions, _htmlGroupBuilders, _mathmlGroupBuilders, normalizeArgument, ordargument, makeSpan$1, binLeftCanceller, binRightCanceller, styleMap$1, DomEnum, buildExpression$1, traverseNonSpaceNodes, checkPartialGroup, getOutermostNode, getTypeOfDomTree, makeNullDelimiter, buildGroup$1, MathNode, TextNode, SpaceNode, mathMLTree, makeText, makeRow, getVariant, buildExpression2, buildExpressionRow, buildGroup2, optionsFromSettings, displayWrap, buildTree, buildHTMLTree, stretchyCodePoint, mathMLnode, katexImagesData, groupLength, svgSpan, encloseSpan, stretchy, htmlBuilder$a, mathmlBuilder$9, NON_STRETCHY_ACCENT_REGEX, paddedNode, makeSpan2, binrelClass, cdArrowFunctionName, newCell, isStartOfArrow, isLabelEnd, htmlBuilder$8, mathmlBuilder$7, globalMap, checkControlSequence, getRHS, letCommand, getMetrics, styleWrap, centerSpan, makeSmallDelim, mathrmSize, makeLargeDelim, makeGlyphSpan, makeInner, lapInEms, lap, verts, doubleVerts, makeStackedDelim, vbPad, emPad, sqrtSvg, makeSqrtImage, stackLargeDelimiters, stackAlwaysDelimiters, stackNeverDelimiters, sizeToMaxHeight, makeSizedDelim, stackNeverDelimiterSequence, stackAlwaysDelimiterSequence, stackLargeDelimiterSequence, delimTypeToFont, traverseSequence, makeCustomSizedDelim, makeLeftRightDelim, delimiter2, delimiterSizes, delimiters, htmlBuilder$7, mathmlBuilder$6, _environments, _macros, validateAmsEnvironmentContext, htmlBuilder$6, alignMap, mathmlBuilder$5, alignedHandler, environments, htmlBuilder$5, mathmlBuilder$4, fontAliases, adjustStyle, htmlBuilder$4, mathmlBuilder$3, stylArray, delimFromValue, htmlBuilder$3, mathmlBuilder$2, sizeData, chooseMathStyle, assembleSupSub, noSuccessor, htmlBuilder$2, mathmlBuilder$1, singleCharBigOps, singleCharIntegrals, htmlBuilder$1, mathmlBuilder2, sizeFuncs, htmlBuilder2, styleMap, htmlBuilderDelegate, defaultVariant, cssSpace, regularSpace, pad, textFontFamilies, textFontWeights, textFontShapes, optionsWithFont, makeVerb, functions, spaceRegexString, controlWordRegexString, controlSymbolRegexString, controlWordWhitespaceRegexString, controlSpaceRegexString, combiningDiacriticalMarkString, combiningDiacriticalMarksEndRegex, tokenRegexString, Lexer2, Namespace2, macros, digitToNumber, newcommand, dotsByToken, spaceAfterDots, latexRaiseA, braketHelper, implicitCommands, MacroExpander, unicodeSubRegEx, uSubsAndSups, unicodeAccents, unicodeSymbols, Parser3, parseTree, render, renderToString, generateParseTree, renderError, renderToDomTree, renderToHTMLTree, version3, __domTree, katex;
426754
426831
  var init_katex = __esm({
426755
426832
  "../../../node_modules/.pnpm/katex@0.16.21/node_modules/katex/dist/katex.mjs"() {
426756
426833
  "use strict";
@@ -427313,7 +427390,7 @@ var init_katex = __esm({
427313
427390
  return "";
427314
427391
  }
427315
427392
  };
427316
- path48 = {
427393
+ path49 = {
427317
427394
  // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main
427318
427395
  doubleleftarrow: "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",
427319
427396
  // doublerightarrow is from glyph U+21D2 in font KaTeX Main
@@ -430358,7 +430435,7 @@ var init_katex = __esm({
430358
430435
  if (this.alternate) {
430359
430436
  node4.setAttribute("d", this.alternate);
430360
430437
  } else {
430361
- node4.setAttribute("d", path48[this.pathName]);
430438
+ node4.setAttribute("d", path49[this.pathName]);
430362
430439
  }
430363
430440
  return node4;
430364
430441
  }
@@ -430366,7 +430443,7 @@ var init_katex = __esm({
430366
430443
  if (this.alternate) {
430367
430444
  return '<path d="' + utils.escape(this.alternate) + '"/>';
430368
430445
  } else {
430369
- return '<path d="' + utils.escape(path48[this.pathName]) + '"/>';
430446
+ return '<path d="' + utils.escape(path49[this.pathName]) + '"/>';
430370
430447
  }
430371
430448
  }
430372
430449
  };
@@ -454597,7 +454674,7 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
454597
454674
  if (image3 == null || isExternalUrl(image3) || isDataUrl(image3)) {
454598
454675
  return void 0;
454599
454676
  }
454600
- if ((0, import_path55.isAbsolute)(image3) || isWindowsAbsolutePath(image3)) {
454677
+ if ((0, import_path56.isAbsolute)(image3) || isWindowsAbsolutePath(image3)) {
454601
454678
  const absolutePath = convertToFernHostAbsoluteFilePath(AbsoluteFilePath2.of(image3));
454602
454679
  const fileId = fileIdsMap.get(absolutePath);
454603
454680
  if (fileId) {
@@ -454964,14 +455041,14 @@ function replaceFrontmatterImagesforLogo(data2, mapImage) {
454964
455041
  }
454965
455042
  }
454966
455043
  }
454967
- var import_gray_matter3, import_path55, JSX_TAG_NAME_START_REGEX, BLANK_LINE_REGEX, CODE_FENCE_REGEX, LogoOverrideFrontmatterSchema;
455044
+ var import_gray_matter3, import_path56, JSX_TAG_NAME_START_REGEX, BLANK_LINE_REGEX, CODE_FENCE_REGEX, LogoOverrideFrontmatterSchema;
454968
455045
  var init_parseImagePaths = __esm({
454969
455046
  "../docs-markdown-utils/lib/parseImagePaths.js"() {
454970
455047
  "use strict";
454971
455048
  init_js();
454972
455049
  init_lib8();
454973
455050
  import_gray_matter3 = __toESM(require_gray_matter(), 1);
454974
- import_path55 = require("path");
455051
+ import_path56 = require("path");
454975
455052
  init_unist_util_visit();
454976
455053
  init_zod2();
454977
455054
  init_extract_literals();
@@ -456215,7 +456292,7 @@ function getBundleCacheDir() {
456215
456292
  }
456216
456293
  function getBundleCacheFilePath(cacheDir, contents) {
456217
456294
  const hash5 = (0, import_crypto6.createHash)("sha256").update(ROLLDOWN_VERSION).update("\0").update(contents).digest("hex");
456218
- return import_path56.default.join(cacheDir, `${hash5}.js`);
456295
+ return import_path57.default.join(cacheDir, `${hash5}.js`);
456219
456296
  }
456220
456297
  async function readCachedBundle(contents) {
456221
456298
  const cacheDir = getBundleCacheDir();
@@ -456254,13 +456331,13 @@ async function maybeBundleMdxComponent({ absoluteFilePath, contents, context: co
456254
456331
  return cachedBundle;
456255
456332
  }
456256
456333
  context3.logger.debug(`Bundling ${absoluteFilePath} to inline third-party imports: ${thirdPartyImports.join(", ")}`);
456257
- const { path: tmpDir, cleanup } = await import_tmp_promise9.default.dir({ unsafeCleanup: true });
456334
+ const { path: tmpDir, cleanup } = await import_tmp_promise10.default.dir({ unsafeCleanup: true });
456258
456335
  try {
456259
- const outputFilePath = import_path56.default.join(tmpDir, "bundle.js");
456260
- const configFilePath2 = import_path56.default.join(tmpDir, "rolldown.config.mjs");
456336
+ const outputFilePath = import_path57.default.join(tmpDir, "bundle.js");
456337
+ const configFilePath2 = import_path57.default.join(tmpDir, "rolldown.config.mjs");
456261
456338
  await (0, import_promises71.writeFile)(configFilePath2, buildRolldownConfig({ absoluteFilePath, outputFilePath }));
456262
456339
  const result = await loggingExeca(context3.logger, "npx", ["--quiet", "--yes", `rolldown@${ROLLDOWN_VERSION}`, "-c", configFilePath2], {
456263
- cwd: import_path56.default.dirname(absoluteFilePath),
456340
+ cwd: import_path57.default.dirname(absoluteFilePath),
456264
456341
  doNotPipeOutput: true,
456265
456342
  reject: false
456266
456343
  });
@@ -456311,7 +456388,7 @@ export default {
456311
456388
  };
456312
456389
  `;
456313
456390
  }
456314
- var import_crypto6, import_promises71, import_module2, import_path56, import_tmp_promise9, BUNDLEABLE_EXTENSIONS_REGEX, RENDERER_PROVIDED_MODULES, BUNDLE_CACHE_DIR_ENV_VAR, ROLLDOWN_VERSION, IMPORT_SPECIFIER_REGEX;
456391
+ var import_crypto6, import_promises71, import_module2, import_path57, import_tmp_promise10, BUNDLEABLE_EXTENSIONS_REGEX, RENDERER_PROVIDED_MODULES, BUNDLE_CACHE_DIR_ENV_VAR, ROLLDOWN_VERSION, IMPORT_SPECIFIER_REGEX;
456315
456392
  var init_bundleMdxComponent = __esm({
456316
456393
  "../docs-resolver/lib/utils/bundleMdxComponent.js"() {
456317
456394
  "use strict";
@@ -456319,8 +456396,8 @@ var init_bundleMdxComponent = __esm({
456319
456396
  import_crypto6 = require("crypto");
456320
456397
  import_promises71 = require("fs/promises");
456321
456398
  import_module2 = require("module");
456322
- import_path56 = __toESM(require("path"), 1);
456323
- import_tmp_promise9 = __toESM(require_tmp_promise(), 1);
456399
+ import_path57 = __toESM(require("path"), 1);
456400
+ import_tmp_promise10 = __toESM(require_tmp_promise(), 1);
456324
456401
  BUNDLEABLE_EXTENSIONS_REGEX = /\.(js|jsx|ts|tsx)$/;
456325
456402
  RENDERER_PROVIDED_MODULES = ["react", "react-dom", "@mdx-js/react", "next"];
456326
456403
  BUNDLE_CACHE_DIR_ENV_VAR = "FERN_MDX_BUNDLE_CACHE_DIR";
@@ -456569,9 +456646,6 @@ async function resolveRemoteSpecs({ definitions: definitions7, context: context3
456569
456646
  if (gitDefinitions.length === 0) {
456570
456647
  return definitions7;
456571
456648
  }
456572
- if (!isGitAvailable()) {
456573
- throw new Error("Git is not installed or not found in PATH. Remote git sources in generators.yml require git to be available. Please install git and ensure it is in your PATH.");
456574
- }
456575
456649
  const cloneTargets = /* @__PURE__ */ new Map();
456576
456650
  for (const def of gitDefinitions) {
456577
456651
  const gitSource = def.gitSource;
@@ -456587,36 +456661,8 @@ async function resolveRemoteSpecs({ definitions: definitions7, context: context3
456587
456661
  const clonedPaths = /* @__PURE__ */ new Map();
456588
456662
  for (const [key2, target] of cloneTargets.entries()) {
456589
456663
  context3.logger.info(`Cloning remote spec source: ${target.repo}${target.ref ? `@${target.ref}` : ""}`);
456590
- const tmpDir = await import_tmp_promise10.default.dir({ unsafeCleanup: true });
456591
- const clonePath = AbsoluteFilePath2.of(tmpDir.path);
456592
- const git = simpleGit();
456593
- const useCommitShaFlow = target.ref != null && isCommitSha(target.ref);
456594
- try {
456595
- if (useCommitShaFlow) {
456596
- const ref2 = target.ref;
456597
- const cloneArgs = ["--depth", "1", "--config", "core.symlinks=false", "--no-checkout"];
456598
- await git.clone(target.repo, tmpDir.path, cloneArgs);
456599
- const repoGit = simpleGit(tmpDir.path);
456600
- await repoGit.fetch("origin", ref2, { "--depth": "1" });
456601
- await repoGit.checkout(ref2);
456602
- } else {
456603
- const cloneArgs = ["--depth", "1", "--config", "core.symlinks=false"];
456604
- if (target.ref != null) {
456605
- cloneArgs.push("--branch", target.ref);
456606
- }
456607
- await git.clone(target.repo, tmpDir.path, cloneArgs);
456608
- }
456609
- } catch (error50) {
456610
- const errorMessage = extractErrorMessage(error50);
456611
- if (errorMessage.includes("Authentication failed") || errorMessage.includes("could not read Username") || errorMessage.includes("401") || errorMessage.includes("403")) {
456612
- throw new Error(`Failed to clone remote spec source: authentication failed. Ensure your git credentials are configured for ${target.repo}. The CLI uses your system's git credential configuration (credential helpers, SSH keys, GIT_ASKPASS). Original error: ${errorMessage}`);
456613
- }
456614
- if (errorMessage.includes("Repository not found") || errorMessage.includes("not found") || errorMessage.includes("404")) {
456615
- throw new Error(`Failed to clone remote spec source: repository not found. Check that ${target.repo} exists and your credentials have access. Original error: ${errorMessage}`);
456616
- }
456617
- throw new Error(`Failed to clone remote spec source ${target.repo}${target.ref ? ` at ref '${target.ref}'` : ""}. Original error: ${errorMessage}`);
456618
- }
456619
- clonedPaths.set(key2, clonePath);
456664
+ const clonePath = await cloneRepositoryAtRef({ repositoryUrl: target.repo, ref: target.ref });
456665
+ clonedPaths.set(key2, AbsoluteFilePath2.of(clonePath));
456620
456666
  }
456621
456667
  return definitions7.map((def) => {
456622
456668
  if (def.gitSource == null) {
@@ -456628,15 +456674,17 @@ async function resolveRemoteSpecs({ definitions: definitions7, context: context3
456628
456674
  if (clonedPath == null) {
456629
456675
  throw new Error(`Internal error: no clone found for ${key2}`);
456630
456676
  }
456631
- const resolvedPath = AbsoluteFilePath2.of(import_path57.default.resolve(clonedPath, def.gitSource.path));
456632
- if (!resolvedPath.startsWith(clonedPath + import_path57.default.sep) && resolvedPath !== clonedPath) {
456633
- throw new Error(`Invalid git source path '${def.gitSource.path}': path must be relative to the repository root and cannot traverse outside it.`);
456634
- }
456677
+ const resolvedPath = AbsoluteFilePath2.of(resolveRepositorySubpath({
456678
+ repositoryRoot: clonedPath,
456679
+ subpath: def.gitSource.path,
456680
+ description: "git source path"
456681
+ }));
456635
456682
  if (def.schema.type === "protobuf") {
456636
- const resolvedTarget = def.schema.target.length > 0 ? import_path57.default.resolve(clonedPath, def.schema.target) : def.schema.target;
456637
- if (resolvedTarget.length > 0 && !resolvedTarget.startsWith(clonedPath + import_path57.default.sep) && resolvedTarget !== clonedPath) {
456638
- throw new Error(`Invalid proto target path '${def.schema.target}': path must be relative to the repository root and cannot traverse outside it.`);
456639
- }
456683
+ const resolvedTarget = def.schema.target.length > 0 ? resolveRepositorySubpath({
456684
+ repositoryRoot: clonedPath,
456685
+ subpath: def.schema.target,
456686
+ description: "proto target path"
456687
+ }) : def.schema.target;
456640
456688
  return {
456641
456689
  ...def,
456642
456690
  schema: {
@@ -456659,15 +456707,11 @@ async function resolveRemoteSpecs({ definitions: definitions7, context: context3
456659
456707
  };
456660
456708
  });
456661
456709
  }
456662
- var import_path57, import_tmp_promise10;
456663
456710
  var init_resolveRemoteSpecs = __esm({
456664
456711
  "../workspace/loader/lib/resolveRemoteSpecs.js"() {
456665
456712
  "use strict";
456666
- init_lib4();
456667
456713
  init_lib8();
456668
- import_path57 = __toESM(require("path"), 1);
456669
- init_esm16();
456670
- import_tmp_promise10 = __toESM(require_tmp_promise(), 1);
456714
+ init_lib11();
456671
456715
  }
456672
456716
  });
456673
456717
 
@@ -689478,14 +689522,14 @@ function getCamelCaseNormalizedCollisions(nameToProperties) {
689478
689522
 
689479
689523
  // ../fern-definition/validator/lib/rules/no-duplicate-declarations/no-duplicate-declarations.js
689480
689524
  init_lib17();
689481
- var import_path25 = __toESM(require("path"), 1);
689525
+ var import_path26 = __toESM(require("path"), 1);
689482
689526
  var NoDuplicateDeclarationsRule = {
689483
689527
  name: "no-duplicate-declarations",
689484
689528
  create: ({ workspace, logger: logger4 }) => {
689485
689529
  const declarations = getDeclarations(workspace);
689486
689530
  const seenTypes = {};
689487
689531
  const getRuleViolations = ({ declaredName, relativeFilepath }) => {
689488
- const relativeDirectoryPath = import_path25.default.dirname(relativeFilepath);
689532
+ const relativeDirectoryPath = import_path26.default.dirname(relativeFilepath);
689489
689533
  const declarationsForName = declarations[relativeDirectoryPath]?.[declaredName];
689490
689534
  if (declarationsForName == null) {
689491
689535
  logger4.error(`Could not find declarations for name: ${declaredName}. This is an error in the Fern validator.`);
@@ -689521,7 +689565,7 @@ var NoDuplicateDeclarationsRule = {
689521
689565
  function getDeclarations(workspace) {
689522
689566
  const declarations = {};
689523
689567
  visitAllDefinitionFiles(workspace, (relativeFilepath, file4) => {
689524
- const relativeDirectoryPath = import_path25.default.dirname(relativeFilepath);
689568
+ const relativeDirectoryPath = import_path26.default.dirname(relativeFilepath);
689525
689569
  const declarationsForDirectory = declarations[relativeDirectoryPath] ??= {};
689526
689570
  const addDeclaration = (declaredName) => {
689527
689571
  (declarationsForDirectory[declaredName] ??= []).push(relativeFilepath);
@@ -691530,7 +691574,7 @@ init_lib20();
691530
691574
  init_lib4();
691531
691575
  init_lib8();
691532
691576
  init_lib6();
691533
- var import_path26 = __toESM(require("path"), 1);
691577
+ var import_path27 = __toESM(require("path"), 1);
691534
691578
  var ValidNavigationRule = {
691535
691579
  name: "valid-navigation",
691536
691580
  create: ({ workspace }) => {
@@ -691538,7 +691582,7 @@ var ValidNavigationRule = {
691538
691582
  const allNamedDefinitionFilepaths = keys2(getAllNamedDefinitionFiles(workspace.definition));
691539
691583
  const directoryToChildren = allNamedDefinitionFilepaths.reduce((acc, definitionFilepath) => {
691540
691584
  const children2 = acc[dirname6(definitionFilepath)] ??= /* @__PURE__ */ new Set();
691541
- children2.add(import_path26.default.basename(definitionFilepath));
691585
+ children2.add(import_path27.default.basename(definitionFilepath));
691542
691586
  return acc;
691543
691587
  }, {});
691544
691588
  return {
@@ -694841,7 +694885,12 @@ var OpenApiSettingsSchema2 = BaseApiSettingsSchema2.extend({
694841
694885
  * back to a string.
694842
694886
  * Defaults to false.
694843
694887
  */
694844
- "respect-parameter-content": external_exports.boolean().optional()
694888
+ "respect-parameter-content": external_exports.boolean().optional(),
694889
+ /**
694890
+ * If true, apply each OpenAPI document's plain `x-fern-base-path` to that document's endpoints.
694891
+ * Defaults to false.
694892
+ */
694893
+ "respect-per-spec-base-path": external_exports.boolean().optional()
694845
694894
  });
694846
694895
 
694847
694896
  // ../config/lib/schemas/specs/OpenApiSpecSchema.js
@@ -696281,10 +696330,10 @@ async function removeToken() {
696281
696330
 
696282
696331
  // ../auth/lib/persistence/storeToken.js
696283
696332
  var import_promises48 = require("fs/promises");
696284
- var import_path44 = __toESM(require("path"), 1);
696333
+ var import_path45 = __toESM(require("path"), 1);
696285
696334
  async function storeToken(token) {
696286
696335
  const pathToTokenFile = getPathToTokenFile();
696287
- await (0, import_promises48.mkdir)(import_path44.default.dirname(pathToTokenFile), { recursive: true });
696336
+ await (0, import_promises48.mkdir)(import_path45.default.dirname(pathToTokenFile), { recursive: true });
696288
696337
  await (0, import_promises48.writeFile)(pathToTokenFile, token);
696289
696338
  }
696290
696339
 
@@ -698704,7 +698753,7 @@ var inquirer = {
698704
698753
  var lib_default4 = inquirer;
698705
698754
 
698706
698755
  // ../../../node_modules/.pnpm/posthog-node@5.35.1_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
698707
- var import_path45 = require("path");
698756
+ var import_path46 = require("path");
698708
698757
  function createModulerModifier() {
698709
698758
  const getModuleFromFileName = createGetModuleFromFilename2();
698710
698759
  return async (frames) => {
@@ -698712,12 +698761,12 @@ function createModulerModifier() {
698712
698761
  return frames;
698713
698762
  };
698714
698763
  }
698715
- function createGetModuleFromFilename2(basePath = process.argv[1] ? (0, import_path45.dirname)(process.argv[1]) : process.cwd(), isWindows = "\\" === import_path45.sep) {
698764
+ function createGetModuleFromFilename2(basePath = process.argv[1] ? (0, import_path46.dirname)(process.argv[1]) : process.cwd(), isWindows = "\\" === import_path46.sep) {
698716
698765
  const normalizedBase = isWindows ? normalizeWindowsPath2(basePath) : basePath;
698717
698766
  return (filename) => {
698718
698767
  if (!filename) return;
698719
698768
  const normalizedFilename = isWindows ? normalizeWindowsPath2(filename) : filename;
698720
- let { dir, base: file4, ext: ext2 } = import_path45.posix.parse(normalizedFilename);
698769
+ let { dir, base: file4, ext: ext2 } = import_path46.posix.parse(normalizedFilename);
698721
698770
  if (".js" === ext2 || ".mjs" === ext2 || ".cjs" === ext2) file4 = file4.slice(0, -1 * ext2.length);
698722
698771
  const decodedFile = decodeURIComponent(file4);
698723
698772
  if (!dir) dir = ".";
@@ -701363,14 +701412,14 @@ function snipLine2(line, colno) {
701363
701412
  }
701364
701413
 
701365
701414
  // ../../../node_modules/.pnpm/posthog-node@5.35.1_rxjs@7.8.2/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/relative-path.node.mjs
701366
- var import_path46 = require("path");
701415
+ var import_path47 = require("path");
701367
701416
  function createRelativePathModifier(basePath = process.cwd()) {
701368
- const isWindows = "\\" === import_path46.sep;
701417
+ const isWindows = "\\" === import_path47.sep;
701369
701418
  const toUnix = (p6) => isWindows ? p6.replace(/\\/g, "/") : p6;
701370
701419
  const normalizedBase = toUnix(basePath);
701371
701420
  return async (frames) => {
701372
701421
  for (const frame of frames) if (!(!frame.filename || frame.filename.startsWith("node:") || frame.filename.startsWith("data:"))) {
701373
- if ((0, import_path46.isAbsolute)(frame.filename)) frame.filename = toUnix((0, import_path46.relative)(normalizedBase, toUnix(frame.filename)));
701422
+ if ((0, import_path47.isAbsolute)(frame.filename)) frame.filename = toUnix((0, import_path47.relative)(normalizedBase, toUnix(frame.filename)));
701374
701423
  }
701375
701424
  return frames;
701376
701425
  };
@@ -703430,7 +703479,7 @@ var AccessTokenPosthogManager = class {
703430
703479
  properties: {
703431
703480
  ...event,
703432
703481
  ...event.properties,
703433
- version: "5.102.0",
703482
+ version: "5.104.0",
703434
703483
  usingAccessToken: true,
703435
703484
  ...getRunIdProperties()
703436
703485
  }
@@ -703469,7 +703518,7 @@ init_lib27();
703469
703518
  init_lib8();
703470
703519
  var import_promises49 = require("fs/promises");
703471
703520
  var import_os6 = require("os");
703472
- var import_path47 = require("path");
703521
+ var import_path48 = require("path");
703473
703522
  init_dist_node6();
703474
703523
  var DISTINCT_ID_FILENAME = "id";
703475
703524
  var LOCAL_STORAGE_FOLDER3 = ".fern-dev";
@@ -703496,7 +703545,7 @@ var UserPosthogManager = class {
703496
703545
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
703497
703546
  event: "CLI",
703498
703547
  properties: {
703499
- version: "5.102.0",
703548
+ version: "5.104.0",
703500
703549
  ...event,
703501
703550
  ...event.properties,
703502
703551
  usingAccessToken: false,
@@ -703548,7 +703597,7 @@ var UserPosthogManager = class {
703548
703597
  const pathToFile = join8(AbsoluteFilePath2.of((0, import_os6.homedir)()), RelativeFilePath2.of(LOCAL_STORAGE_FOLDER3), RelativeFilePath2.of(DISTINCT_ID_FILENAME));
703549
703598
  try {
703550
703599
  if (!await doesPathExist(pathToFile)) {
703551
- await (0, import_promises49.mkdir)((0, import_path47.dirname)(pathToFile), { recursive: true });
703600
+ await (0, import_promises49.mkdir)((0, import_path48.dirname)(pathToFile), { recursive: true });
703552
703601
  await (0, import_promises49.writeFile)(pathToFile, generatedDistinctId);
703553
703602
  this.persistedDistinctId = generatedDistinctId;
703554
703603
  } else {
@@ -706546,7 +706595,7 @@ var import_os7 = __toESM(require("os"), 1);
706546
706595
 
706547
706596
  // ../cli-v2/lib/cache/docs-preview/DocsPreviewCache.js
706548
706597
  var import_promises54 = __toESM(require("fs/promises"), 1);
706549
- var import_path48 = __toESM(require("path"), 1);
706598
+ var import_path49 = __toESM(require("path"), 1);
706550
706599
  var DocsPreviewCache = class {
706551
706600
  /** Absolute file path to the docs-preview cache directory */
706552
706601
  absoluteFilePath;
@@ -706564,7 +706613,7 @@ var DocsPreviewCache = class {
706564
706613
  for (const entry of entries24) {
706565
706614
  if (entry.isDirectory()) {
706566
706615
  bundleCount++;
706567
- totalSize += await this.getDirectorySize(import_path48.default.join(this.absoluteFilePath, entry.name));
706616
+ totalSize += await this.getDirectorySize(import_path49.default.join(this.absoluteFilePath, entry.name));
706568
706617
  }
706569
706618
  }
706570
706619
  } catch {
@@ -706581,7 +706630,7 @@ var DocsPreviewCache = class {
706581
706630
  const entries24 = await import_promises54.default.readdir(this.absoluteFilePath, { withFileTypes: true });
706582
706631
  for (const entry of entries24) {
706583
706632
  if (entry.isDirectory()) {
706584
- const fullPath = import_path48.default.join(this.absoluteFilePath, entry.name);
706633
+ const fullPath = import_path49.default.join(this.absoluteFilePath, entry.name);
706585
706634
  const size2 = await this.getDirectorySize(fullPath);
706586
706635
  deletedCount++;
706587
706636
  freedSize += size2;
@@ -706599,7 +706648,7 @@ var DocsPreviewCache = class {
706599
706648
  try {
706600
706649
  const entries24 = await import_promises54.default.readdir(dirPath, { withFileTypes: true });
706601
706650
  for (const entry of entries24) {
706602
- const entryPath = import_path48.default.join(dirPath, entry.name);
706651
+ const entryPath = import_path49.default.join(dirPath, entry.name);
706603
706652
  if (entry.isFile() || entry.isSymbolicLink()) {
706604
706653
  try {
706605
706654
  const stats = await import_promises54.default.stat(entryPath);
@@ -708177,7 +708226,7 @@ var import_promises60 = require("fs/promises");
708177
708226
  var import_is_ci2 = __toESM(require_is_ci(), 1);
708178
708227
  var os10 = __toESM(require("os"), 1);
708179
708228
  var import_os8 = require("os");
708180
- var import_path49 = require("path");
708229
+ var import_path50 = require("path");
708181
708230
  init_dist_node6();
708182
708231
  var TelemetryClient = class _TelemetryClient {
708183
708232
  posthog;
@@ -708327,7 +708376,7 @@ var TelemetryClient = class _TelemetryClient {
708327
708376
  let distinctId = null;
708328
708377
  try {
708329
708378
  if (!await doesPathExist(distinctIdFilepath)) {
708330
- await (0, import_promises60.mkdir)((0, import_path49.dirname)(distinctIdFilepath), { recursive: true });
708379
+ await (0, import_promises60.mkdir)((0, import_path50.dirname)(distinctIdFilepath), { recursive: true });
708331
708380
  await (0, import_promises60.writeFile)(distinctIdFilepath, v4_default(), { flag: "wx" });
708332
708381
  }
708333
708382
  const content5 = (await (0, import_promises60.readFile)(distinctIdFilepath)).toString().trim();
@@ -709721,12 +709770,12 @@ function getLogLevelPrefix(level) {
709721
709770
  init_source();
709722
709771
  var import_dotenv = __toESM(require_main2(), 1);
709723
709772
  var import_fs24 = __toESM(require("fs"), 1);
709724
- var import_path50 = __toESM(require("path"), 1);
709773
+ var import_path51 = __toESM(require("path"), 1);
709725
709774
  function loadDotenvFile(envFilePath, logDebug) {
709726
709775
  if (envFilePath == null) {
709727
709776
  return;
709728
709777
  }
709729
- const resolved = import_path50.default.resolve(process.cwd(), envFilePath);
709778
+ const resolved = import_path51.default.resolve(process.cwd(), envFilePath);
709730
709779
  if (!import_fs24.default.existsSync(resolved)) {
709731
709780
  process.stderr.write(`${source_default.yellow("warn")} .env file not found: ${resolved}
709732
709781
  `);
@@ -710313,7 +710362,8 @@ var LegacyApiSpecAdapter = class {
710313
710362
  shouldInferDiscriminatedUnionBaseProperties: settings.inferDiscriminatedUnionBaseProperties,
710314
710363
  disambiguateRequestNames: settings["disambiguate-request-names"],
710315
710364
  ignoreTags: settings["ignore-tags"],
710316
- respectParameterContent: settings["respect-parameter-content"]
710365
+ respectParameterContent: settings["respect-parameter-content"],
710366
+ respectPerSpecBasePath: settings["respect-per-spec-base-path"]
710317
710367
  };
710318
710368
  const hasSettings = Object.values(result).some((v3) => v3 != null);
710319
710369
  return hasSettings ? result : void 0;
@@ -849483,7 +849533,7 @@ init_lib8();
849483
849533
  init_lib6();
849484
849534
  init_source();
849485
849535
  var import_promises65 = require("fs/promises");
849486
- var import_path51 = __toESM(require("path"), 1);
849536
+ var import_path52 = __toESM(require("path"), 1);
849487
849537
 
849488
849538
  // ../cli-v2/lib/commands/api/utils/loadSpec.js
849489
849539
  init_lib6();
@@ -849941,8 +849991,8 @@ function stripFernExamples(spec) {
849941
849991
  // ../cli-v2/lib/commands/api/enrich/command.js
849942
849992
  var EnrichCommand = class {
849943
849993
  async handle(context3, args) {
849944
- const openapiPath = AbsoluteFilePath2.of(import_path51.default.resolve(context3.cwd, args.openapi));
849945
- const outputPath = args.output != null ? AbsoluteFilePath2.of(import_path51.default.resolve(context3.cwd, args.output)) : openapiPath;
849994
+ const openapiPath = AbsoluteFilePath2.of(import_path52.default.resolve(context3.cwd, args.openapi));
849995
+ const outputPath = args.output != null ? AbsoluteFilePath2.of(import_path52.default.resolve(context3.cwd, args.output)) : openapiPath;
849946
849996
  if (args.file == null) {
849947
849997
  if (args["ai-examples"] === true) {
849948
849998
  throw new CliError({
@@ -849955,7 +850005,7 @@ var EnrichCommand = class {
849955
850005
  code: CliError.Code.ConfigError
849956
850006
  });
849957
850007
  }
849958
- const overridesPath = AbsoluteFilePath2.of(import_path51.default.resolve(context3.cwd, args.file));
850008
+ const overridesPath = AbsoluteFilePath2.of(import_path52.default.resolve(context3.cwd, args.file));
849959
850009
  const [spec, overrides] = await Promise.all([loadSpec(openapiPath), loadSpec(overridesPath)]);
849960
850010
  const logger4 = {
849961
850011
  warn: (msg) => context3.stderr.warn(msg)
@@ -850010,7 +850060,7 @@ init_lib4();
850010
850060
  init_lib6();
850011
850061
  init_source();
850012
850062
  var import_promises67 = require("fs/promises");
850013
- var import_path53 = __toESM(require("path"), 1);
850063
+ var import_path54 = __toESM(require("path"), 1);
850014
850064
 
850015
850065
  // ../cli-v2/lib/config/fern-yml/constants.js
850016
850066
  var FERN_YML_FILENAME = "fern.yml";
@@ -850020,7 +850070,7 @@ var REF_KEY2 = "$ref";
850020
850070
  init_lib8();
850021
850071
  init_lib6();
850022
850072
  var import_promises66 = require("fs/promises");
850023
- var import_path52 = __toESM(require("path"), 1);
850073
+ var import_path53 = __toESM(require("path"), 1);
850024
850074
  var import_yaml4 = __toESM(require_dist11(), 1);
850025
850075
  var FernYmlEditor = class _FernYmlEditor {
850026
850076
  rootDocument;
@@ -850121,23 +850171,23 @@ var FernYmlEditor = class _FernYmlEditor {
850121
850171
  async addOverride(specFilePath, overrideAbsolutePath) {
850122
850172
  const section = await this.resolveSection("api", ["specs"]);
850123
850173
  const fileDir = dirname6(section.filePath);
850124
- const relativeOverridePath = `./${import_path52.default.relative(fileDir, overrideAbsolutePath)}`;
850174
+ const relativeOverridePath = `./${import_path53.default.relative(fileDir, overrideAbsolutePath)}`;
850125
850175
  const index3 = this.findSpecIndex(section, specFilePath);
850126
850176
  if (index3 < 0) {
850127
850177
  return void 0;
850128
850178
  }
850129
850179
  const overridesPath = [...section.basePath, index3, "overrides"];
850130
850180
  const existing = nodeToJS(section.document.getIn(overridesPath));
850131
- const normalizedNew = import_path52.default.normalize(relativeOverridePath);
850181
+ const normalizedNew = import_path53.default.normalize(relativeOverridePath);
850132
850182
  if (existing == null) {
850133
850183
  section.document.setIn(overridesPath, relativeOverridePath);
850134
850184
  } else if (typeof existing === "string") {
850135
- if (import_path52.default.normalize(existing) === normalizedNew) {
850185
+ if (import_path53.default.normalize(existing) === normalizedNew) {
850136
850186
  return void 0;
850137
850187
  }
850138
850188
  section.document.setIn(overridesPath, section.document.createNode([existing, relativeOverridePath]));
850139
850189
  } else if (Array.isArray(existing)) {
850140
- if (existing.some((p6) => import_path52.default.normalize(p6) === normalizedNew)) {
850190
+ if (existing.some((p6) => import_path53.default.normalize(p6) === normalizedNew)) {
850141
850191
  return void 0;
850142
850192
  }
850143
850193
  const updated = [...existing, relativeOverridePath];
@@ -850195,18 +850245,18 @@ var FernYmlEditor = class _FernYmlEditor {
850195
850245
  async addOverlay(specFilePath, overlayAbsolutePath) {
850196
850246
  const section = await this.resolveSection("api", ["specs"]);
850197
850247
  const fileDir = dirname6(section.filePath);
850198
- const relativeOverlayPath = `./${import_path52.default.relative(fileDir, overlayAbsolutePath)}`;
850248
+ const relativeOverlayPath = `./${import_path53.default.relative(fileDir, overlayAbsolutePath)}`;
850199
850249
  const index3 = this.findSpecIndex(section, specFilePath);
850200
850250
  if (index3 < 0) {
850201
850251
  return void 0;
850202
850252
  }
850203
850253
  const overlaysPath = [...section.basePath, index3, "overlays"];
850204
850254
  const existing = nodeToJS(section.document.getIn(overlaysPath));
850205
- const normalizedNew = import_path52.default.normalize(relativeOverlayPath);
850255
+ const normalizedNew = import_path53.default.normalize(relativeOverlayPath);
850206
850256
  if (existing == null) {
850207
850257
  section.document.setIn(overlaysPath, relativeOverlayPath);
850208
850258
  } else if (typeof existing === "string") {
850209
- if (import_path52.default.normalize(existing) === normalizedNew) {
850259
+ if (import_path53.default.normalize(existing) === normalizedNew) {
850210
850260
  return void 0;
850211
850261
  }
850212
850262
  section.document.setIn(overlaysPath, relativeOverlayPath);
@@ -850329,14 +850379,14 @@ var FernYmlEditor = class _FernYmlEditor {
850329
850379
  return -1;
850330
850380
  }
850331
850381
  const fileDir = dirname6(section.filePath);
850332
- const relativeSpecPath = import_path52.default.normalize(import_path52.default.relative(fileDir, specFilePath));
850382
+ const relativeSpecPath = import_path53.default.normalize(import_path53.default.relative(fileDir, specFilePath));
850333
850383
  for (let i5 = 0; i5 < specs.length; i5++) {
850334
850384
  const spec = specs[i5];
850335
850385
  if (spec == null) {
850336
850386
  continue;
850337
850387
  }
850338
850388
  const specPath = spec.openapi ?? spec.asyncapi;
850339
- if (specPath != null && import_path52.default.normalize(specPath) === relativeSpecPath) {
850389
+ if (specPath != null && import_path53.default.normalize(specPath) === relativeSpecPath) {
850340
850390
  return i5;
850341
850391
  }
850342
850392
  }
@@ -850665,16 +850715,16 @@ var MergeCommand = class {
850665
850715
  if (overridePaths != null) {
850666
850716
  const edit = await editor.removeOverrides(entry.specFilePath);
850667
850717
  if (edit != null) {
850668
- const relPath = import_path53.default.relative(context3.cwd, await editor.getApiFilePath());
850669
- const names2 = overridePaths.map((o3) => import_path53.default.basename(o3)).join(", ");
850718
+ const relPath = import_path54.default.relative(context3.cwd, await editor.getApiFilePath());
850719
+ const names2 = overridePaths.map((o3) => import_path54.default.basename(o3)).join(", ");
850670
850720
  context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: removed reference to ${names2}`));
850671
850721
  }
850672
850722
  }
850673
850723
  if (overlayPath != null) {
850674
850724
  const edit = await editor.removeOverlay(entry.specFilePath);
850675
850725
  if (edit != null) {
850676
- const relPath = import_path53.default.relative(context3.cwd, await editor.getApiFilePath());
850677
- context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: removed reference to ${import_path53.default.basename(overlayPath)}`));
850726
+ const relPath = import_path54.default.relative(context3.cwd, await editor.getApiFilePath());
850727
+ context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: removed reference to ${import_path54.default.basename(overlayPath)}`));
850678
850728
  }
850679
850729
  }
850680
850730
  }
@@ -850727,7 +850777,7 @@ init_lib6();
850727
850777
  init_source();
850728
850778
  var import_child_process6 = require("child_process");
850729
850779
  var import_promises68 = require("fs/promises");
850730
- var import_path54 = __toESM(require("path"), 1);
850780
+ var import_path55 = __toESM(require("path"), 1);
850731
850781
  var import_util17 = require("util");
850732
850782
 
850733
850783
  // ../cli-v2/lib/commands/api/split/deriveOutputPath.js
@@ -850826,7 +850876,7 @@ var SplitCommand = class {
850826
850876
  */
850827
850877
  async handleStdoutPreview(context3, entries24, format3) {
850828
850878
  if (entries24.length > 1) {
850829
- const names2 = entries24.map((e2) => import_path54.default.basename(e2.specFilePath)).join(", ");
850879
+ const names2 = entries24.map((e2) => import_path55.default.basename(e2.specFilePath)).join(", ");
850830
850880
  throw new CliError({
850831
850881
  message: `--output "-" requires --api to select a single spec, but ${entries24.length} matched: ${names2}.`,
850832
850882
  code: CliError.Code.ConfigError
@@ -850872,8 +850922,8 @@ var SplitCommand = class {
850872
850922
  }
850873
850923
  const edit = await editor.addOverlay(entry.specFilePath, outputPath);
850874
850924
  if (edit != null) {
850875
- const relPath = import_path54.default.relative(context3.cwd, await editor.getApiFilePath());
850876
- context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: added reference to ${import_path54.default.basename(outputPath)}`));
850925
+ const relPath = import_path55.default.relative(context3.cwd, await editor.getApiFilePath());
850926
+ context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: added reference to ${import_path55.default.basename(outputPath)}`));
850877
850927
  }
850878
850928
  }
850879
850929
  async splitAsOverrides(context3, editor, entry, originalContent, currentContent, outputArg) {
@@ -850887,8 +850937,8 @@ var SplitCommand = class {
850887
850937
  }
850888
850938
  const edit = await editor.addOverride(entry.specFilePath, outputPath);
850889
850939
  if (edit != null) {
850890
- const relPath = import_path54.default.relative(context3.cwd, await editor.getApiFilePath());
850891
- context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: added reference to ${import_path54.default.basename(outputPath)}`));
850940
+ const relPath = import_path55.default.relative(context3.cwd, await editor.getApiFilePath());
850941
+ context3.stderr.info(source_default.dim(`${relPath}:${edit.line}: added reference to ${import_path55.default.basename(outputPath)}`));
850892
850942
  }
850893
850943
  }
850894
850944
  /**
@@ -850932,7 +850982,7 @@ var SplitCommand = class {
850932
850982
  }
850933
850983
  async getFileFromGitHead(repoRoot, absolutePath) {
850934
850984
  try {
850935
- const relativePath = import_path54.default.relative(repoRoot, absolutePath);
850985
+ const relativePath = import_path55.default.relative(repoRoot, absolutePath);
850936
850986
  const { stdout } = await execFileAsync5("git", ["show", `HEAD:${relativePath}`], {
850937
850987
  cwd: repoRoot,
850938
850988
  encoding: "utf8",
@@ -850950,7 +851000,7 @@ var SplitCommand = class {
850950
851000
  }
850951
851001
  async getRepoRoot(nearPath) {
850952
851002
  const { stdout } = await execFileAsync5("git", ["rev-parse", "--show-toplevel"], {
850953
- cwd: import_path54.default.dirname(nearPath),
851003
+ cwd: import_path55.default.dirname(nearPath),
850954
851004
  encoding: "utf8"
850955
851005
  });
850956
851006
  return stdout.trim();
@@ -884878,7 +884928,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
884878
884928
  var LOGS_FOLDER_NAME = "logs";
884879
884929
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
884880
884930
  function getCliSource() {
884881
- const version7 = "5.102.0";
884931
+ const version7 = "5.104.0";
884882
884932
  return `cli@${version7}`;
884883
884933
  }
884884
884934
  var DebugLogger = class {
@@ -904552,6 +904602,7 @@ function writeGroupPage(group, dir, writer2, written) {
904552
904602
  var import_promises116 = require("fs/promises");
904553
904603
  init_lib4();
904554
904604
  init_lib8();
904605
+ init_lib11();
904555
904606
  init_lib6();
904556
904607
  init_source();
904557
904608
 
@@ -904587,6 +904638,7 @@ async function runLocalParser({ context: context3, sourcePath, language, config:
904587
904638
  await (0, import_promises115.writeFile)(configFile.path, JSON.stringify({
904588
904639
  packagePath: config5.packagePath,
904589
904640
  sourceUrl: config5.sourceUrl,
904641
+ branch: config5.branch,
904590
904642
  doxyfileContent: config5.doxyfileContent
904591
904643
  }));
904592
904644
  await runContainer({
@@ -905567,16 +905619,35 @@ async function generateIrRemotely({ client: client3, name: name2, config: config
905567
905619
  });
905568
905620
  }
905569
905621
  async function generateIrLocally({ context: context3, name: name2, config: config5, docsDirectoryPath, language, doxyfileContent, wrapStep }) {
905622
+ let sourcePath;
905623
+ let parserConfig;
905570
905624
  if (isGitLibraryInput2(config5.input)) {
905571
- throw new CliError({
905572
- message: `Library '${name2}': 'git' inputs are generated remotely, not with --local. For --local, use a 'path' input pointing at a local checkout of the library.`,
905573
- code: CliError.Code.ConfigError
905625
+ const gitInput = config5.input;
905626
+ const clonePath = await wrapStep({
905627
+ message: `Library '${name2}': cloning ${gitInput.git}${gitInput.ref != null ? ` (ref: ${gitInput.ref})` : ""}`,
905628
+ operation: () => cloneRepositoryAtRef({ repositoryUrl: gitInput.git, ref: gitInput.ref })
905574
905629
  });
905630
+ if (gitInput.subpath != null) {
905631
+ resolveRepositorySubpath({
905632
+ repositoryRoot: clonePath,
905633
+ subpath: gitInput.subpath,
905634
+ description: `subpath for library '${name2}'`
905635
+ });
905636
+ }
905637
+ sourcePath = AbsoluteFilePath2.of(clonePath);
905638
+ parserConfig = {
905639
+ packagePath: gitInput.subpath,
905640
+ sourceUrl: gitInput.git,
905641
+ branch: gitInput.ref,
905642
+ doxyfileContent
905643
+ };
905644
+ } else {
905645
+ sourcePath = resolve6(docsDirectoryPath, config5.input.path);
905646
+ parserConfig = { doxyfileContent };
905575
905647
  }
905576
- const sourcePath = resolve6(docsDirectoryPath, config5.input.path);
905577
905648
  const ir3 = await wrapStep({
905578
905649
  message: `Library '${name2}': parsing library source locally`,
905579
- operation: () => runLocalParser({ context: context3, sourcePath, language, config: { doxyfileContent } })
905650
+ operation: () => runLocalParser({ context: context3, sourcePath, language, config: parserConfig })
905580
905651
  });
905581
905652
  validateLibraryIr(ir3, language, name2);
905582
905653
  return ir3;
@@ -910943,7 +911014,7 @@ var LegacyDocsPublisher = class {
910943
911014
  previewId,
910944
911015
  disableTemplates: void 0,
910945
911016
  skipUpload,
910946
- cliVersion: "5.102.0",
911017
+ cliVersion: "5.104.0",
910947
911018
  loginCommand: "fern auth login"
910948
911019
  });
910949
911020
  if (taskContext.getResult() === TaskResult.Failure) {
@@ -978314,7 +978385,7 @@ function getAutomationContextFromEnv() {
978314
978385
  config_branch: process.env.FERN_CONFIG_BRANCH,
978315
978386
  config_pr_number: process.env.FERN_CONFIG_PR_NUMBER,
978316
978387
  trigger: process.env.GITHUB_EVENT_NAME,
978317
- cli_version: "5.102.0"
978388
+ cli_version: "5.104.0"
978318
978389
  };
978319
978390
  }
978320
978391
  function isAutomationMode() {
@@ -979146,7 +979217,7 @@ var CliContext = class _CliContext {
979146
979217
  if (false) {
979147
979218
  this.logger.error("CLI_VERSION is not defined");
979148
979219
  }
979149
- return "5.102.0";
979220
+ return "5.104.0";
979150
979221
  }
979151
979222
  getCliName() {
979152
979223
  if (false) {