@fern-api/fern-api-dev 5.98.2 → 5.99.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 +154 -49
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -130922,7 +130922,8 @@ var init_OpenApiSettingsSchema2 = __esm({
130922
130922
  "default-integer-format": DefaultIntegerFormat2.optional(),
130923
130923
  "infer-discriminated-union-base-properties": schemas_exports8.boolean().optional(),
130924
130924
  "disambiguate-request-names": schemas_exports8.boolean().optional(),
130925
- "ignore-tags": schemas_exports8.boolean().optional()
130925
+ "ignore-tags": schemas_exports8.boolean().optional(),
130926
+ "respect-parameter-content": schemas_exports8.boolean().optional()
130926
130927
  }).extend(BaseApiSettingsSchema);
130927
130928
  }
130928
130929
  });
@@ -152785,7 +152786,8 @@ var init_options2 = __esm({
152785
152786
  respectByteFormat: false,
152786
152787
  shouldInferDiscriminatedUnionBaseProperties: false,
152787
152788
  disambiguateRequestNames: true,
152788
- ignoreTags: false
152789
+ ignoreTags: false,
152790
+ respectParameterContent: false
152789
152791
  };
152790
152792
  }
152791
152793
  });
@@ -165877,7 +165879,8 @@ function convertParameters({ path: path121, httpMethod, parameters: parameters2,
165877
165879
  const generatedName = getGeneratedTypeName(parameterBreadcrumbs, context3.options.preserveSchemaIds);
165878
165880
  const isHeader = resolvedParameter.in === "header";
165879
165881
  const [isOptional, isNullable] = context3.options.coerceOptionalSchemasToNullable && !isHeader ? [false, !isRequired] : [!isRequired, false];
165880
- let schema = resolvedParameter.schema != null ? convertSchema2(resolvedParameter.schema, isOptional, isNullable, context3, parameterBreadcrumbs, source2, context3.namespace, false, /* @__PURE__ */ new Set(), getParameterExample(resolvedParameter, context3)) : isRequired ? SchemaWithExample.primitive({
165882
+ const parameterSchema = getParameterSchema(resolvedParameter, context3);
165883
+ let schema = parameterSchema != null ? convertSchema2(parameterSchema, isOptional, isNullable, context3, parameterBreadcrumbs, source2, context3.namespace, false, /* @__PURE__ */ new Set(), getParameterExample(resolvedParameter, context3)) : isRequired ? SchemaWithExample.primitive({
165881
165884
  nameOverride: void 0,
165882
165885
  generatedName,
165883
165886
  title: void 0,
@@ -165975,6 +165978,16 @@ function convertParameters({ path: path121, httpMethod, parameters: parameters2,
165975
165978
  }
165976
165979
  return convertedParameters;
165977
165980
  }
165981
+ function getParameterSchema(parameter6, context3) {
165982
+ if (parameter6.schema != null) {
165983
+ return parameter6.schema;
165984
+ }
165985
+ if (!context3.options.respectParameterContent || parameter6.in !== "header" || parameter6.content == null) {
165986
+ return void 0;
165987
+ }
165988
+ const jsonMediaType = findApplicationJsonRequest({ content: parameter6.content, context: context3 });
165989
+ return jsonMediaType?.[1].schema;
165990
+ }
165978
165991
  function getParameterDescription(parameter6) {
165979
165992
  if (parameter6.description != null) {
165980
165993
  return parameter6.description;
@@ -166023,6 +166036,7 @@ var init_convertParameters = __esm({
166023
166036
  init_fernExtensions();
166024
166037
  init_getParameterName();
166025
166038
  init_getVariableReference();
166039
+ init_getApplicationJsonSchema();
166026
166040
  HEADERS_TO_SKIP = /* @__PURE__ */ new Set([
166027
166041
  "user-agent",
166028
166042
  "content-length",
@@ -199970,7 +199984,8 @@ var init_getAPIDefinitionSettings = __esm({
199970
199984
  coerceConstsTo: "coerceConstsTo",
199971
199985
  shouldInferDiscriminatedUnionBaseProperties: "shouldInferDiscriminatedUnionBaseProperties",
199972
199986
  disambiguateRequestNames: "disambiguateRequestNames",
199973
- ignoreTags: "ignoreTags"
199987
+ ignoreTags: "ignoreTags",
199988
+ respectParameterContent: "respectParameterContent"
199974
199989
  };
199975
199990
  }
199976
199991
  });
@@ -264043,7 +264058,8 @@ function parseOpenApiDefinitionSettingsSchema(settings) {
264043
264058
  pathParameterOrder: settings?.["path-parameter-order"],
264044
264059
  shouldInferDiscriminatedUnionBaseProperties: settings?.["infer-discriminated-union-base-properties"],
264045
264060
  disambiguateRequestNames: settings?.["disambiguate-request-names"],
264046
- ignoreTags: settings?.["ignore-tags"]
264061
+ ignoreTags: settings?.["ignore-tags"],
264062
+ respectParameterContent: settings?.["respect-parameter-content"]
264047
264063
  };
264048
264064
  }
264049
264065
  function parseAsyncApiDefinitionSettingsSchema(settings) {
@@ -264910,7 +264926,8 @@ var init_convertGeneratorsConfiguration = __esm({
264910
264926
  coerceConstsTo: void 0,
264911
264927
  shouldInferDiscriminatedUnionBaseProperties: void 0,
264912
264928
  disambiguateRequestNames: void 0,
264913
- ignoreTags: void 0
264929
+ ignoreTags: void 0,
264930
+ respectParameterContent: void 0
264914
264931
  };
264915
264932
  }
264916
264933
  });
@@ -355209,6 +355226,7 @@ var ParameterConverter2;
355209
355226
  var init_ParameterConverter2 = __esm({
355210
355227
  "../api-importers/openapi-to-ir/lib/3.1/paths/ParameterConverter.js"() {
355211
355228
  "use strict";
355229
+ init_lib4();
355212
355230
  init_lib30();
355213
355231
  ParameterConverter2 = class extends converters_exports.AbstractConverters.AbstractParameterConverter {
355214
355232
  constructor({ context: context3, breadcrumbs, parameter: parameter6 }) {
@@ -355217,12 +355235,13 @@ var init_ParameterConverter2 = __esm({
355217
355235
  convert() {
355218
355236
  let typeReference2;
355219
355237
  let inlinedTypes = {};
355220
- if (this.parameter.schema != null) {
355238
+ const schema = this.getSchema();
355239
+ if (schema != null) {
355221
355240
  const schemaIdOverride = this.context.convertBreadcrumbsToName([...this.breadcrumbs, this.parameter.name]);
355222
355241
  const schemaOrReferenceConverter = new converters_exports.SchemaConverters.SchemaOrReferenceConverter({
355223
355242
  context: this.context,
355224
355243
  breadcrumbs: [...this.breadcrumbs, this.parameter.name, "schema"],
355225
- schemaOrReference: this.parameter.schema,
355244
+ schemaOrReference: schema,
355226
355245
  wrapAsOptional: this.parameter.required == null || !this.parameter.required,
355227
355246
  schemaIdOverride
355228
355247
  });
@@ -355233,11 +355252,34 @@ var init_ParameterConverter2 = __esm({
355233
355252
  }
355234
355253
  }
355235
355254
  return this.convertToOutput({
355236
- schema: this.parameter.schema ?? { type: "string" },
355255
+ schema: schema ?? { type: "string" },
355237
355256
  typeReference: typeReference2,
355238
355257
  inlinedTypes
355239
355258
  });
355240
355259
  }
355260
+ /**
355261
+ * Resolves the schema describing the parameter's value. Parameters normally declare `schema`
355262
+ * directly, but the OpenAPI spec also allows a `content` map for values serialized in a media
355263
+ * type — most commonly a header holding a JSON-encoded object.
355264
+ *
355265
+ * Only headers are resolved from `content`: header values are JSON-encoded when sent, whereas
355266
+ * an object query parameter is serialized as separate key/value pairs rather than as a single
355267
+ * JSON-encoded value, which is not what `content: application/json` describes.
355268
+ */
355269
+ getSchema() {
355270
+ if (this.parameter.schema != null) {
355271
+ return this.parameter.schema;
355272
+ }
355273
+ if (!this.context.settings.respectParameterContent || this.parameter.in !== "header" || this.parameter.content == null) {
355274
+ return void 0;
355275
+ }
355276
+ for (const [contentType, mediaTypeObject] of Object.entries(this.parameter.content)) {
355277
+ if (mediaTypeObject.schema != null && MediaType.parse(contentType)?.isJSON()) {
355278
+ return mediaTypeObject.schema;
355279
+ }
355280
+ }
355281
+ return void 0;
355282
+ }
355241
355283
  };
355242
355284
  }
355243
355285
  });
@@ -453619,13 +453661,16 @@ var init_micromark_extension_mdxjs = __esm({
453619
453661
  });
453620
453662
 
453621
453663
  // ../docs-markdown-utils/lib/parseMarkdownToTree.js
453622
- function parseMarkdownToTree(markdown) {
453623
- const { content: content5 } = (0, import_gray_matter2.default)(markdown);
453624
- return fromMarkdown(content5, {
453664
+ function parseMarkdownBodyToTree(body) {
453665
+ return fromMarkdown(body, {
453625
453666
  extensions: [mdxjs(), gfm(), math()],
453626
453667
  mdastExtensions: [mdxFromMarkdown(), gfmFromMarkdown(), mathFromMarkdown()]
453627
453668
  });
453628
453669
  }
453670
+ function parseMarkdownToTree(markdown) {
453671
+ const { content: content5 } = (0, import_gray_matter2.default)(markdown);
453672
+ return parseMarkdownBodyToTree(content5);
453673
+ }
453629
453674
  var import_gray_matter2;
453630
453675
  var init_parseMarkdownToTree = __esm({
453631
453676
  "../docs-markdown-utils/lib/parseMarkdownToTree.js"() {
@@ -455055,10 +455100,39 @@ var init_stripMdxComments = __esm({
455055
455100
  });
455056
455101
 
455057
455102
  // ../docs-markdown-utils/lib/transformAtPrefixImports.js
455058
- function transformAtPrefixImports({ markdown, absolutePathToFernFolder, absolutePathToMarkdownFile }) {
455059
- const importRegex = /(import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"])@\/([^'"]+)(['"])/g;
455103
+ function getCodeRanges(markdown, context3) {
455104
+ try {
455105
+ const { content: content5 } = (0, import_gray_matter5.default)(markdown);
455106
+ if (!markdown.endsWith(content5)) {
455107
+ return void 0;
455108
+ }
455109
+ const bodyOffset = markdown.length - content5.length;
455110
+ const tree = parseMarkdownBodyToTree(content5);
455111
+ const ranges = [];
455112
+ visit3(tree, ["code", "inlineCode"], (node4) => {
455113
+ const start2 = node4.position?.start.offset;
455114
+ const end = node4.position?.end.offset;
455115
+ if (start2 != null && end != null) {
455116
+ ranges.push({ start: start2 + bodyOffset, end: end + bodyOffset });
455117
+ }
455118
+ return CONTINUE;
455119
+ });
455120
+ return ranges;
455121
+ } catch (error50) {
455122
+ context3?.logger.debug(`Failed to locate code blocks while resolving "@/" imports; imports inside code samples may be rewritten: ${error50 instanceof Error ? error50.message : String(error50)}`);
455123
+ return void 0;
455124
+ }
455125
+ }
455126
+ function transformAtPrefixImports({ markdown, absolutePathToFernFolder, absolutePathToMarkdownFile, context: context3 }) {
455127
+ if (!markdown.includes("@/")) {
455128
+ return markdown;
455129
+ }
455060
455130
  const mdxDir = dirname6(absolutePathToMarkdownFile);
455061
- return markdown.replace(importRegex, (match3, prefix2, importPath, suffix) => {
455131
+ const codeRanges = getCodeRanges(markdown, context3);
455132
+ return markdown.replace(IMPORT_REGEX, (match3, prefix2, importPath, suffix, offset2) => {
455133
+ if (codeRanges?.some((range2) => offset2 >= range2.start && offset2 < range2.end)) {
455134
+ return match3;
455135
+ }
455062
455136
  const absoluteImportPath = AbsoluteFilePath2.of(`${absolutePathToFernFolder}/${importPath}`);
455063
455137
  let relativePath = relative4(mdxDir, absoluteImportPath);
455064
455138
  if (!relativePath.startsWith(".") && !relativePath.startsWith("/")) {
@@ -455067,10 +455141,15 @@ function transformAtPrefixImports({ markdown, absolutePathToFernFolder, absolute
455067
455141
  return `${prefix2}${relativePath}${suffix}`;
455068
455142
  });
455069
455143
  }
455144
+ var import_gray_matter5, IMPORT_REGEX;
455070
455145
  var init_transformAtPrefixImports = __esm({
455071
455146
  "../docs-markdown-utils/lib/transformAtPrefixImports.js"() {
455072
455147
  "use strict";
455073
455148
  init_lib8();
455149
+ import_gray_matter5 = __toESM(require_gray_matter(), 1);
455150
+ init_unist_util_visit();
455151
+ init_parseMarkdownToTree();
455152
+ IMPORT_REGEX = /(import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"])@\/([^'"]+)(['"])/g;
455074
455153
  }
455075
455154
  });
455076
455155
 
@@ -455088,6 +455167,7 @@ __export(lib_exports10, {
455088
455167
  isMdxJsxExpressionAttribute: () => isMdxJsxExpressionAttribute,
455089
455168
  isValidRelativeSlug: () => isValidRelativeSlug,
455090
455169
  parseImagePaths: () => parseImagePaths,
455170
+ parseMarkdownBodyToTree: () => parseMarkdownBodyToTree,
455091
455171
  parseMarkdownToTree: () => parseMarkdownToTree,
455092
455172
  prefetchCodeSrcUrls: () => prefetchCodeSrcUrls,
455093
455173
  replaceImagePathsAndUrls: () => replaceImagePathsAndUrls,
@@ -455351,7 +455431,7 @@ var init_applyTranslatedApiTitlesToNavTree = __esm({
455351
455431
  // ../docs-resolver/lib/applyTranslatedFrontmatterToNavTree.js
455352
455432
  function parseFrontmatterOverrides(markdown) {
455353
455433
  try {
455354
- const { data: data2 } = (0, import_gray_matter5.default)(markdown);
455434
+ const { data: data2 } = (0, import_gray_matter6.default)(markdown);
455355
455435
  const result = {};
455356
455436
  const sidebarTitle = data2["sidebar-title"];
455357
455437
  if (typeof sidebarTitle === "string" && sidebarTitle.trim().length > 0) {
@@ -455409,11 +455489,11 @@ function walkNode(node4, overrides) {
455409
455489
  }
455410
455490
  return updated;
455411
455491
  }
455412
- var import_gray_matter5;
455492
+ var import_gray_matter6;
455413
455493
  var init_applyTranslatedFrontmatterToNavTree = __esm({
455414
455494
  "../docs-resolver/lib/applyTranslatedFrontmatterToNavTree.js"() {
455415
455495
  "use strict";
455416
- import_gray_matter5 = __toESM(require_gray_matter(), 1);
455496
+ import_gray_matter6 = __toESM(require_gray_matter(), 1);
455417
455497
  }
455418
455498
  });
455419
455499
 
@@ -472316,7 +472396,7 @@ function convertAvailability5(availability) {
472316
472396
  assertNever(availability);
472317
472397
  }
472318
472398
  }
472319
- var import_dayjs3, import_utc3, import_fs26, import_promises80, import_gray_matter6, defaultUploadFiles, apiCounter, defaultRegisterApi, DocsDefinitionResolver;
472399
+ var import_dayjs3, import_utc3, import_fs26, import_promises80, import_gray_matter7, defaultUploadFiles, apiCounter, defaultRegisterApi, DocsDefinitionResolver;
472320
472400
  var init_DocsDefinitionResolver = __esm({
472321
472401
  "../docs-resolver/lib/DocsDefinitionResolver.js"() {
472322
472402
  "use strict";
@@ -472336,7 +472416,7 @@ var init_DocsDefinitionResolver = __esm({
472336
472416
  import_utc3 = __toESM(require_utc(), 1);
472337
472417
  import_fs26 = require("fs");
472338
472418
  import_promises80 = require("fs/promises");
472339
- import_gray_matter6 = __toESM(require_gray_matter(), 1);
472419
+ import_gray_matter7 = __toESM(require_gray_matter(), 1);
472340
472420
  init_js_yaml();
472341
472421
  init_lodash();
472342
472422
  init_ApiReferenceNodeConverter();
@@ -472645,7 +472725,8 @@ var init_DocsDefinitionResolver = __esm({
472645
472725
  const newMarkdown = transformAtPrefixImports({
472646
472726
  markdown: codeReplacedMarkdown,
472647
472727
  absolutePathToFernFolder: this.docsWorkspace.absoluteFilePath,
472648
- absolutePathToMarkdownFile: this.resolveFilepath(relativePath)
472728
+ absolutePathToMarkdownFile: this.resolveFilepath(relativePath),
472729
+ context: this.taskContext
472649
472730
  });
472650
472731
  this.parsedDocsConfig.pages[RelativeFilePath2.of(relativePath)] = newMarkdown;
472651
472732
  }
@@ -472849,7 +472930,7 @@ var init_DocsDefinitionResolver = __esm({
472849
472930
  */
472850
472931
  extractAllFrontmatterData(pages) {
472851
472932
  for (const [relativePath, markdown] of Object.entries(pages)) {
472852
- const frontmatter = (0, import_gray_matter6.default)(markdown);
472933
+ const frontmatter = (0, import_gray_matter7.default)(markdown);
472853
472934
  const absolutePath = this.resolveFilepath(relativePath);
472854
472935
  const slug = frontmatter.data.slug;
472855
472936
  if (typeof slug === "string" && slug.trim().length > 0) {
@@ -603506,7 +603587,8 @@ async function buildTranslatedDocsDefinition({ docsDefinition, locale, localePag
603506
603587
  const importsResolved = transformAtPrefixImports({
603507
603588
  markdown: codeResolved,
603508
603589
  absolutePathToFernFolder: docsWorkspacePath,
603509
- absolutePathToMarkdownFile
603590
+ absolutePathToMarkdownFile,
603591
+ context: context3
603510
603592
  });
603511
603593
  let processedMarkdown = stripMdxComments(importsResolved);
603512
603594
  processedMarkdown = replaceImagePathsAndUrls(processedMarkdown, collectedFileIds, markdownFilesToPathName, {
@@ -694255,7 +694337,14 @@ var OpenApiSettingsSchema2 = BaseApiSettingsSchema2.extend({
694255
694337
  * names are derived from each operation's operationId.
694256
694338
  * Defaults to false.
694257
694339
  */
694258
- "ignore-tags": external_exports.boolean().optional()
694340
+ "ignore-tags": external_exports.boolean().optional(),
694341
+ /**
694342
+ * If true, header parameters that declare their schema under `content` (e.g. a header
694343
+ * whose value is a JSON-encoded object) are typed from that schema instead of falling
694344
+ * back to a string.
694345
+ * Defaults to false.
694346
+ */
694347
+ "respect-parameter-content": external_exports.boolean().optional()
694259
694348
  });
694260
694349
 
694261
694350
  // ../config/lib/schemas/specs/OpenApiSpecSchema.js
@@ -702844,7 +702933,7 @@ var AccessTokenPosthogManager = class {
702844
702933
  properties: {
702845
702934
  ...event,
702846
702935
  ...event.properties,
702847
- version: "5.98.2",
702936
+ version: "5.99.0",
702848
702937
  usingAccessToken: true,
702849
702938
  ...getRunIdProperties()
702850
702939
  }
@@ -702910,7 +702999,7 @@ var UserPosthogManager = class {
702910
702999
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
702911
703000
  event: "CLI",
702912
703001
  properties: {
702913
- version: "5.98.2",
703002
+ version: "5.99.0",
702914
703003
  ...event,
702915
703004
  ...event.properties,
702916
703005
  usingAccessToken: false,
@@ -709726,7 +709815,8 @@ var LegacyApiSpecAdapter = class {
709726
709815
  coerceConstsTo: settings.coerceConstsTo,
709727
709816
  shouldInferDiscriminatedUnionBaseProperties: settings.inferDiscriminatedUnionBaseProperties,
709728
709817
  disambiguateRequestNames: settings["disambiguate-request-names"],
709729
- ignoreTags: settings["ignore-tags"]
709818
+ ignoreTags: settings["ignore-tags"],
709819
+ respectParameterContent: settings["respect-parameter-content"]
709730
709820
  };
709731
709821
  const hasSettings = Object.values(result).some((v3) => v3 != null);
709732
709822
  return hasSettings ? result : void 0;
@@ -861490,7 +861580,7 @@ var getViolationsForFile = async (absoluteFilepath) => {
861490
861580
 
861491
861581
  // ../yaml/docs-validator/lib/rules/valid-frontmatter/valid-frontmatter.js
861492
861582
  var import_promises88 = require("fs/promises");
861493
- var import_gray_matter7 = __toESM(require_gray_matter(), 1);
861583
+ var import_gray_matter8 = __toESM(require_gray_matter(), 1);
861494
861584
  var ValidFrontmatter = {
861495
861585
  name: "valid-frontmatter",
861496
861586
  create: () => {
@@ -861501,7 +861591,7 @@ var ValidFrontmatter = {
861501
861591
  }
861502
861592
  try {
861503
861593
  const fileContents = await (0, import_promises88.readFile)(absoluteFilepath, "utf-8");
861504
- (0, import_gray_matter7.default)(fileContents);
861594
+ (0, import_gray_matter8.default)(fileContents);
861505
861595
  return [];
861506
861596
  } catch (error50) {
861507
861597
  return [
@@ -878530,7 +878620,7 @@ async function parseMarkdown({ markdown, absoluteFilepath, absolutePathToFernFol
878530
878620
  init_lib64();
878531
878621
  init_lib8();
878532
878622
  var import_promises89 = require("fs/promises");
878533
- var import_gray_matter8 = __toESM(require_gray_matter(), 1);
878623
+ var import_gray_matter9 = __toESM(require_gray_matter(), 1);
878534
878624
  init_unist_util_visit();
878535
878625
  var ValidMarkdownFileReferences = {
878536
878626
  name: "valid-markdown-file-references",
@@ -878542,7 +878632,7 @@ var ValidMarkdownFileReferences = {
878542
878632
  }
878543
878633
  try {
878544
878634
  const fileContents = await (0, import_promises89.readFile)(absoluteFilepath, "utf-8");
878545
- const { content: content5 } = (0, import_gray_matter8.default)(fileContents, {});
878635
+ const { content: content5 } = (0, import_gray_matter9.default)(fileContents, {});
878546
878636
  const tree = parseMarkdownToTree(content5);
878547
878637
  const errors4 = [];
878548
878638
  visit3(tree, (node4) => {
@@ -879651,7 +879741,7 @@ var ValidTranslationsConfigRule = {
879651
879741
  // ../yaml/docs-validator/lib/rules/valid-well-known-skills/valid-well-known-skills.js
879652
879742
  init_lib8();
879653
879743
  var import_promises91 = require("fs/promises");
879654
- var import_gray_matter9 = __toESM(require_gray_matter(), 1);
879744
+ var import_gray_matter10 = __toESM(require_gray_matter(), 1);
879655
879745
  var ValidWellKnownSkillsRule = {
879656
879746
  name: "valid-well-known-skills",
879657
879747
  create: ({ workspace }) => {
@@ -879721,7 +879811,7 @@ async function validateWellKnownSkillsDirectory({ absolutePathToFernFolder, well
879721
879811
  function validateSkillMarkdown({ skillDirectoryName, skillMarkdownRelativePath, skillMarkdownContents }) {
879722
879812
  let frontmatter;
879723
879813
  try {
879724
- frontmatter = (0, import_gray_matter9.default)(skillMarkdownContents).data;
879814
+ frontmatter = (0, import_gray_matter10.default)(skillMarkdownContents).data;
879725
879815
  } catch (error50) {
879726
879816
  return [
879727
879817
  {
@@ -884291,7 +884381,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
884291
884381
  var LOGS_FOLDER_NAME = "logs";
884292
884382
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
884293
884383
  function getCliSource() {
884294
- const version7 = "5.98.2";
884384
+ const version7 = "5.99.0";
884295
884385
  return `cli@${version7}`;
884296
884386
  }
884297
884387
  var DebugLogger = class {
@@ -886994,14 +887084,14 @@ init_lib22();
886994
887084
  init_lib68();
886995
887085
  init_lib6();
886996
887086
  var import_promises105 = require("fs/promises");
886997
- var import_gray_matter10 = __toESM(require_gray_matter(), 1);
887087
+ var import_gray_matter11 = __toESM(require_gray_matter(), 1);
886998
887088
  init_dist_node6();
886999
887089
  var frontmatterPositionCache = /* @__PURE__ */ new Map();
887000
887090
  var frontmatterSidebarTitleCache = /* @__PURE__ */ new Map();
887001
887091
  var frontmatterSlugCache = /* @__PURE__ */ new Map();
887002
887092
  function extractFrontmatterPosition(markdown) {
887003
887093
  try {
887004
- const { data: data2 } = (0, import_gray_matter10.default)(markdown);
887094
+ const { data: data2 } = (0, import_gray_matter11.default)(markdown);
887005
887095
  if (data2.position == null) {
887006
887096
  return void 0;
887007
887097
  }
@@ -887016,7 +887106,7 @@ function extractFrontmatterPosition(markdown) {
887016
887106
  }
887017
887107
  function extractFrontmatterSidebarTitle(markdown) {
887018
887108
  try {
887019
- const { data: data2 } = (0, import_gray_matter10.default)(markdown);
887109
+ const { data: data2 } = (0, import_gray_matter11.default)(markdown);
887020
887110
  if (data2["sidebar-title"] == null) {
887021
887111
  return void 0;
887022
887112
  }
@@ -887031,7 +887121,7 @@ function extractFrontmatterSidebarTitle(markdown) {
887031
887121
  }
887032
887122
  function extractFrontmatterSlug(markdown) {
887033
887123
  try {
887034
- const { data: data2 } = (0, import_gray_matter10.default)(markdown);
887124
+ const { data: data2 } = (0, import_gray_matter11.default)(markdown);
887035
887125
  if (data2.slug == null) {
887036
887126
  return void 0;
887037
887127
  }
@@ -887105,7 +887195,8 @@ async function getPreviewDocsDefinition({ domain: domain3, project, context: con
887105
887195
  const markdownReplacedMdAndCode = transformAtPrefixImports({
887106
887196
  markdown: markdownReplacedCode,
887107
887197
  absolutePathToFernFolder: docsWorkspace.absoluteFilePath,
887108
- absolutePathToMarkdownFile: absoluteFilePath
887198
+ absolutePathToMarkdownFile: absoluteFilePath,
887199
+ context: context3
887109
887200
  });
887110
887201
  let markdownWithAbsPaths;
887111
887202
  let filepaths;
@@ -888038,7 +888129,8 @@ async function runAppPreviewServer({ initialProject, reloadProject, validateProj
888038
888129
  const importsResolved = transformAtPrefixImports({
888039
888130
  markdown: codeResolved,
888040
888131
  absolutePathToFernFolder: docsWorkspacePath,
888041
- absolutePathToMarkdownFile
888132
+ absolutePathToMarkdownFile,
888133
+ context: context3
888042
888134
  });
888043
888135
  let processedMarkdown = stripMdxComments(importsResolved);
888044
888136
  processedMarkdown = replaceImagePathsAndUrls(processedMarkdown, collectedFileIds, markdownFilesToPathName, {
@@ -888667,7 +888759,8 @@ async function runPreviewServer({ initialProject, reloadProject, validateProject
888667
888759
  const importsResolved = transformAtPrefixImports({
888668
888760
  markdown: codeResolved,
888669
888761
  absolutePathToFernFolder: docsWorkspacePath,
888670
- absolutePathToMarkdownFile
888762
+ absolutePathToMarkdownFile,
888763
+ context: context3
888671
888764
  });
888672
888765
  let processedMarkdown = stripMdxComments(importsResolved);
888673
888766
  processedMarkdown = replaceImagePathsAndUrls(processedMarkdown, collectedFileIds, markdownFilesToPathName, {
@@ -908793,7 +908886,8 @@ ${JSON.stringify(errorDetails, void 0, 2)}`);
908793
908886
  const importsResolved = transformAtPrefixImports({
908794
908887
  markdown: codeResolved,
908795
908888
  absolutePathToFernFolder: docsWorkspacePath,
908796
- absolutePathToMarkdownFile
908889
+ absolutePathToMarkdownFile,
908890
+ context: context3
908797
908891
  });
908798
908892
  let processedMarkdown = stripMdxComments(importsResolved);
908799
908893
  processedMarkdown = replaceImagePathsAndUrls(processedMarkdown, collectedFileIds, markdownFilesToPathName, {
@@ -909607,7 +909701,7 @@ var LegacyDocsPublisher = class {
909607
909701
  previewId,
909608
909702
  disableTemplates: void 0,
909609
909703
  skipUpload,
909610
- cliVersion: "5.98.2",
909704
+ cliVersion: "5.99.0",
909611
909705
  loginCommand: "fern auth login"
909612
909706
  });
909613
909707
  if (taskContext.getResult() === TaskResult.Failure) {
@@ -920685,6 +920779,17 @@ var ClassReference = class extends Node5 {
920685
920779
  fullyQualified: true
920686
920780
  });
920687
920781
  }
920782
+ /**
920783
+ * returns this class reference as a fully qualified class reference with the `global::`
920784
+ * alias, making it immune to shadowing by locals, parameters or members in scope
920785
+ */
920786
+ asGloballyQualified() {
920787
+ return this.csharp.classReferenceInternal({
920788
+ ...this,
920789
+ fullyQualified: true,
920790
+ global: true
920791
+ });
920792
+ }
920688
920793
  /** returns a class instantiation node for this class reference */
920689
920794
  new(args) {
920690
920795
  args = args ?? { arguments_: [] };
@@ -968934,7 +969039,7 @@ init_lib8();
968934
969039
  // ../docs-importers/mintlify/lib/convertMarkdown.js
968935
969040
  init_lib8();
968936
969041
  var import_promises156 = require("fs/promises");
968937
- var import_gray_matter11 = __toESM(require_gray_matter(), 1);
969042
+ var import_gray_matter12 = __toESM(require_gray_matter(), 1);
968938
969043
  async function convertMarkdown({ absolutePathToMintJson, absoluteFilepathToMarkdown, relativeFilepathFromRoot, builder }) {
968939
969044
  const text9 = await (0, import_promises156.readFile)(absoluteFilepathToMarkdown, "utf-8");
968940
969045
  const { data: data2, content: content5 } = parseMintlifyFrontmatter(text9);
@@ -968999,7 +969104,7 @@ async function convertMarkdown({ absolutePathToMintJson, absoluteFilepathToMarkd
968999
969104
  };
969000
969105
  }
969001
969106
  function parseMintlifyFrontmatter(mdContent) {
969002
- const { data: data2, content: content5 } = (0, import_gray_matter11.default)(mdContent);
969107
+ const { data: data2, content: content5 } = (0, import_gray_matter12.default)(mdContent);
969003
969108
  return { data: data2, content: content5 };
969004
969109
  }
969005
969110
  function isExternalUrl3(url3) {
@@ -976840,7 +976945,7 @@ function getAutomationContextFromEnv() {
976840
976945
  config_branch: process.env.FERN_CONFIG_BRANCH,
976841
976946
  config_pr_number: process.env.FERN_CONFIG_PR_NUMBER,
976842
976947
  trigger: process.env.GITHUB_EVENT_NAME,
976843
- cli_version: "5.98.2"
976948
+ cli_version: "5.99.0"
976844
976949
  };
976845
976950
  }
976846
976951
  function isAutomationMode() {
@@ -977672,7 +977777,7 @@ var CliContext = class _CliContext {
977672
977777
  if (false) {
977673
977778
  this.logger.error("CLI_VERSION is not defined");
977674
977779
  }
977675
- return "5.98.2";
977780
+ return "5.99.0";
977676
977781
  }
977677
977782
  getCliName() {
977678
977783
  if (false) {
@@ -993226,7 +993331,7 @@ init_lib20();
993226
993331
  init_lib64();
993227
993332
  init_source();
993228
993333
  var import_fs44 = require("fs");
993229
- var import_gray_matter12 = __toESM(require_gray_matter(), 1);
993334
+ var import_gray_matter13 = __toESM(require_gray_matter(), 1);
993230
993335
  var import_path123 = __toESM(require("path"), 1);
993231
993336
  function calculateVisualColumn(text9, charIndex, tabWidth = 4) {
993232
993337
  let visualColumn = 0;
@@ -993305,7 +993410,7 @@ async function validateMdxFiles({
993305
993410
  try {
993306
993411
  parseMarkdownToTree(content5);
993307
993412
  } catch (error50) {
993308
- const { content: contentWithoutFrontmatter } = (0, import_gray_matter12.default)(content5);
993413
+ const { content: contentWithoutFrontmatter } = (0, import_gray_matter13.default)(content5);
993309
993414
  const totalLines = content5.split("\n").length;
993310
993415
  const contentLines = contentWithoutFrontmatter.split("\n").length;
993311
993416
  const frontmatterLineCount = totalLines - contentLines;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.98.2",
2
+ "version": "5.99.0",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",