@fern-api/fern-api-dev 5.89.3 → 5.89.4

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 +162 -70
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -453152,49 +453152,103 @@ function requoteLeadingZeroValues(doc) {
453152
453152
  function getLargeFileBytes() {
453153
453153
  return parseInt(process.env.FERN_DOCS_LARGE_FILE_BYTES ?? "5000000", 10);
453154
453154
  }
453155
+ function isJsxTagStart(content5, index3) {
453156
+ if (content5[index3] !== "<" || content5[index3 - 1] === "\\") {
453157
+ return false;
453158
+ }
453159
+ const nameStart = content5[index3 + 1] === "/" ? content5[index3 + 2] : content5[index3 + 1];
453160
+ return nameStart != null && JSX_TAG_NAME_START_REGEX.test(nameStart);
453161
+ }
453162
+ function findScanLimit(content5, start2) {
453163
+ const blankLine2 = BLANK_LINE_REGEX.exec(content5.slice(start2));
453164
+ return blankLine2 == null ? content5.length : start2 + blankLine2.index;
453165
+ }
453166
+ function findCodeFenceEnd(content5, start2) {
453167
+ const lineEnd = content5.indexOf("\n", start2);
453168
+ const line = content5.slice(start2, lineEnd === -1 ? content5.length : lineEnd);
453169
+ const fence = CODE_FENCE_REGEX.exec(line)?.[1];
453170
+ if (fence == null || lineEnd === -1) {
453171
+ return null;
453172
+ }
453173
+ const closingFenceRegex = new RegExp(`^[ \\t]*${fence[0] === "`" ? "`" : "~"}{${fence.length},}[ \\t\\r]*$`);
453174
+ let i5 = lineEnd + 1;
453175
+ while (i5 <= content5.length) {
453176
+ const nextLineEnd = content5.indexOf("\n", i5);
453177
+ const end = nextLineEnd === -1 ? content5.length : nextLineEnd;
453178
+ if (closingFenceRegex.test(content5.slice(i5, end))) {
453179
+ return end;
453180
+ }
453181
+ if (nextLineEnd === -1) {
453182
+ return null;
453183
+ }
453184
+ i5 = nextLineEnd + 1;
453185
+ }
453186
+ return null;
453187
+ }
453188
+ function findInlineCodeEnd(content5, start2) {
453189
+ const limit = findScanLimit(content5, start2);
453190
+ let runLength = 0;
453191
+ while (content5[start2 + runLength] === "`") {
453192
+ runLength++;
453193
+ }
453194
+ let i5 = start2 + runLength;
453195
+ while (i5 < limit) {
453196
+ if (content5[i5] !== "`") {
453197
+ i5++;
453198
+ continue;
453199
+ }
453200
+ let closingRunLength = 0;
453201
+ while (content5[i5 + closingRunLength] === "`") {
453202
+ closingRunLength++;
453203
+ }
453204
+ if (closingRunLength === runLength) {
453205
+ return i5 + closingRunLength;
453206
+ }
453207
+ i5 += closingRunLength;
453208
+ }
453209
+ return null;
453210
+ }
453155
453211
  function streamingScanForImages(content5, metadata) {
453156
453212
  const filepaths = /* @__PURE__ */ new Set();
453157
453213
  const edits = [];
453158
453214
  let i5 = 0;
453159
453215
  const len = content5.length;
453160
- let inCodeFence = false;
453161
- let inInlineCode = false;
453162
453216
  while (i5 < len) {
453163
453217
  if (i5 === 0 || content5[i5 - 1] === "\n") {
453164
- if (content5.slice(i5, i5 + 3) === "```") {
453165
- inCodeFence = !inCodeFence;
453166
- i5 += 3;
453218
+ const fenceEnd = findCodeFenceEnd(content5, i5);
453219
+ if (fenceEnd != null) {
453220
+ i5 = fenceEnd;
453167
453221
  continue;
453168
453222
  }
453169
453223
  }
453170
- if (!inCodeFence) {
453171
- if (content5[i5] === "`" && (i5 === 0 || content5[i5 - 1] !== "\\")) {
453172
- inInlineCode = !inInlineCode;
453173
- i5++;
453224
+ if (content5[i5] === "`" && content5[i5 - 1] !== "\\") {
453225
+ const inlineCodeEnd = findInlineCodeEnd(content5, i5);
453226
+ if (inlineCodeEnd != null) {
453227
+ i5 = inlineCodeEnd;
453174
453228
  continue;
453175
453229
  }
453176
- if (!inInlineCode) {
453177
- if (content5[i5] === "!" && content5[i5 + 1] === "[") {
453178
- const result = parseMarkdownImage(content5, i5, metadata);
453179
- if (result) {
453180
- filepaths.add(result.filepath);
453181
- edits.push(result.edit);
453182
- i5 = result.nextIndex;
453183
- continue;
453184
- }
453185
- } else if (content5[i5] === "[" && content5[i5 - 1] !== "!") {
453186
- const result = parseMarkdownLink(content5, i5, metadata);
453187
- if (result) {
453188
- i5 = result.nextIndex;
453189
- continue;
453190
- }
453191
- } else if (content5[i5] === "<") {
453192
- const result = parseJsxTag(content5, i5, metadata, filepaths, edits);
453193
- if (result) {
453194
- i5 = result.nextIndex;
453195
- continue;
453196
- }
453197
- }
453230
+ i5++;
453231
+ continue;
453232
+ }
453233
+ if (content5[i5] === "!" && content5[i5 + 1] === "[") {
453234
+ const result = parseMarkdownImage(content5, i5, metadata);
453235
+ if (result) {
453236
+ filepaths.add(result.filepath);
453237
+ edits.push(result.edit);
453238
+ i5 = result.nextIndex;
453239
+ continue;
453240
+ }
453241
+ } else if (content5[i5] === "[" && content5[i5 - 1] !== "!") {
453242
+ const result = parseMarkdownLink(content5, i5, metadata);
453243
+ if (result) {
453244
+ i5 = result.nextIndex;
453245
+ continue;
453246
+ }
453247
+ } else if (content5[i5] === "<") {
453248
+ const result = parseJsxTag(content5, i5, metadata, filepaths, edits);
453249
+ if (result) {
453250
+ i5 = result.nextIndex;
453251
+ continue;
453198
453252
  }
453199
453253
  }
453200
453254
  i5++;
@@ -453303,30 +453357,35 @@ function parseMarkdownLink(content5, start2, metadata) {
453303
453357
  return { nextIndex: i5 };
453304
453358
  }
453305
453359
  function parseJsxTag(content5, start2, metadata, filepaths, edits) {
453360
+ if (!isJsxTagStart(content5, start2)) {
453361
+ return null;
453362
+ }
453306
453363
  let i5 = start2 + 1;
453307
- const len = content5.length;
453308
- while (i5 < len && content5[i5] !== ">" && content5[i5] !== " " && content5[i5] !== "\n") {
453364
+ const limit = findScanLimit(content5, start2);
453365
+ const tagFilepaths = [];
453366
+ const tagEdits = [];
453367
+ while (i5 < limit && content5[i5] !== ">" && content5[i5] !== " " && content5[i5] !== "\n") {
453309
453368
  i5++;
453310
453369
  }
453311
- while (i5 < len && content5[i5] !== ">") {
453312
- while (i5 < len && (content5[i5] === " " || content5[i5] === "\n")) {
453370
+ while (i5 < limit && content5[i5] !== ">") {
453371
+ while (i5 < limit && (content5[i5] === " " || content5[i5] === "\n")) {
453313
453372
  i5++;
453314
453373
  }
453315
453374
  const attrStart = i5;
453316
- while (i5 < len && content5[i5] !== "=" && content5[i5] !== ">" && content5[i5] !== " " && content5[i5] !== "\n") {
453375
+ while (i5 < limit && content5[i5] !== "=" && content5[i5] !== ">" && content5[i5] !== " " && content5[i5] !== "\n") {
453317
453376
  i5++;
453318
453377
  }
453319
453378
  const attrName = content5.slice(attrStart, i5).trim();
453320
453379
  if (content5[i5] === "=") {
453321
453380
  i5++;
453322
- while (i5 < len && (content5[i5] === " " || content5[i5] === "\n")) {
453381
+ while (i5 < limit && (content5[i5] === " " || content5[i5] === "\n")) {
453323
453382
  i5++;
453324
453383
  }
453325
453384
  if (content5[i5] === '"' || content5[i5] === "'") {
453326
453385
  const quote2 = content5[i5];
453327
453386
  i5++;
453328
453387
  const valueStart = i5;
453329
- while (i5 < len && content5[i5] !== quote2) {
453388
+ while (i5 < limit && content5[i5] !== quote2) {
453330
453389
  if (content5[i5] === "\\") {
453331
453390
  i5 += 2;
453332
453391
  } else {
@@ -453339,15 +453398,15 @@ function parseJsxTag(content5, start2, metadata, filepaths, edits) {
453339
453398
  const src = trimAnchor(value2);
453340
453399
  const resolvedPath = resolvePath5(src, metadata);
453341
453400
  if (src && resolvedPath) {
453342
- filepaths.add(resolvedPath);
453343
- edits.push({ start: valueStart, end: valueStart + value2.length, replacement: resolvedPath });
453401
+ tagFilepaths.push(resolvedPath);
453402
+ tagEdits.push({ start: valueStart, end: valueStart + value2.length, replacement: resolvedPath });
453344
453403
  }
453345
453404
  }
453346
453405
  } else if (content5[i5] === "{") {
453347
453406
  i5++;
453348
453407
  let braceDepth = 1;
453349
453408
  const exprStart = i5;
453350
- while (i5 < len && braceDepth > 0) {
453409
+ while (i5 < limit && braceDepth > 0) {
453351
453410
  if (content5[i5] === "{") {
453352
453411
  braceDepth++;
453353
453412
  } else if (content5[i5] === "}") {
@@ -453362,8 +453421,8 @@ function parseJsxTag(content5, start2, metadata, filepaths, edits) {
453362
453421
  const src = trimAnchor(value2);
453363
453422
  const resolvedPath = resolvePath5(src, metadata);
453364
453423
  if (src && resolvedPath) {
453365
- filepaths.add(resolvedPath);
453366
- edits.push({
453424
+ tagFilepaths.push(resolvedPath);
453425
+ tagEdits.push({
453367
453426
  start: exprStart + 1,
453368
453427
  end: exprStart + 1 + value2.length,
453369
453428
  replacement: resolvedPath
@@ -453376,8 +453435,8 @@ function parseJsxTag(content5, start2, metadata, filepaths, edits) {
453376
453435
  const src = trimAnchor(value2);
453377
453436
  const resolvedPath = resolvePath5(src, metadata);
453378
453437
  if (src && resolvedPath) {
453379
- filepaths.add(resolvedPath);
453380
- edits.push({
453438
+ tagFilepaths.push(resolvedPath);
453439
+ tagEdits.push({
453381
453440
  start: exprStart + 1,
453382
453441
  end: exprStart + 1 + value2.length,
453383
453442
  replacement: resolvedPath
@@ -453388,9 +453447,14 @@ function parseJsxTag(content5, start2, metadata, filepaths, edits) {
453388
453447
  }
453389
453448
  }
453390
453449
  }
453391
- if (i5 < len && content5[i5] === ">") {
453392
- i5++;
453450
+ if (i5 >= limit || content5[i5] !== ">") {
453451
+ return null;
453393
453452
  }
453453
+ i5++;
453454
+ for (const filepath of tagFilepaths) {
453455
+ filepaths.add(filepath);
453456
+ }
453457
+ edits.push(...tagEdits);
453394
453458
  return { nextIndex: i5 };
453395
453459
  }
453396
453460
  function precomputeLineStarts(content5) {
@@ -453655,6 +453719,22 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453655
453719
  let i5 = 0;
453656
453720
  const len = content5.length;
453657
453721
  while (i5 < len) {
453722
+ if (i5 === 0 || content5[i5 - 1] === "\n") {
453723
+ const fenceEnd = findCodeFenceEnd(content5, i5);
453724
+ if (fenceEnd != null) {
453725
+ i5 = fenceEnd;
453726
+ continue;
453727
+ }
453728
+ }
453729
+ if (content5[i5] === "`" && content5[i5 - 1] !== "\\") {
453730
+ const inlineCodeEnd = findInlineCodeEnd(content5, i5);
453731
+ if (inlineCodeEnd != null) {
453732
+ i5 = inlineCodeEnd;
453733
+ continue;
453734
+ }
453735
+ i5++;
453736
+ continue;
453737
+ }
453658
453738
  if (content5[i5] === "!" && content5[i5 + 1] === "[") {
453659
453739
  const result = parseMarkdownImage(content5, i5, metadata);
453660
453740
  if (result) {
@@ -453695,6 +453775,10 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453695
453775
  j5++;
453696
453776
  }
453697
453777
  }
453778
+ if (parenDepth !== 0) {
453779
+ i5++;
453780
+ continue;
453781
+ }
453698
453782
  const urlEnd = j5 - 1;
453699
453783
  const href = content5.slice(urlStart, urlEnd).trim();
453700
453784
  const destination = splitDestinationAndTitle(href);
@@ -453716,17 +453800,19 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453716
453800
  i5 = j5;
453717
453801
  continue;
453718
453802
  }
453719
- } else if (content5[i5] === "<") {
453803
+ } else if (isJsxTagStart(content5, i5)) {
453804
+ const limit = findScanLimit(content5, i5);
453805
+ const editsBeforeTag = edits.length;
453720
453806
  let j5 = i5 + 1;
453721
- while (j5 < len && content5[j5] !== ">" && content5[j5] !== " " && content5[j5] !== "\n") {
453807
+ while (j5 < limit && content5[j5] !== ">" && content5[j5] !== " " && content5[j5] !== "\n") {
453722
453808
  j5++;
453723
453809
  }
453724
- while (j5 < len && content5[j5] !== ">") {
453725
- while (j5 < len && (content5[j5] === " " || content5[j5] === "\n")) {
453810
+ while (j5 < limit && content5[j5] !== ">") {
453811
+ while (j5 < limit && (content5[j5] === " " || content5[j5] === "\n")) {
453726
453812
  j5++;
453727
453813
  }
453728
453814
  const attrStart = j5;
453729
- while (j5 < len && content5[j5] !== "=" && content5[j5] !== ">" && content5[j5] !== " " && content5[j5] !== "\n") {
453815
+ while (j5 < limit && content5[j5] !== "=" && content5[j5] !== ">" && content5[j5] !== " " && content5[j5] !== "\n") {
453730
453816
  j5++;
453731
453817
  }
453732
453818
  const attrName = content5.slice(attrStart, j5).trim();
@@ -453734,7 +453820,7 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453734
453820
  hasUnhandledExpressions = true;
453735
453821
  let braceDepth = 0;
453736
453822
  j5 = attrStart;
453737
- while (j5 < len) {
453823
+ while (j5 < limit) {
453738
453824
  if (content5[j5] === "{") {
453739
453825
  braceDepth++;
453740
453826
  } else if (content5[j5] === "}") {
@@ -453746,7 +453832,7 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453746
453832
  } else if (content5[j5] === '"' || content5[j5] === "'") {
453747
453833
  const q5 = content5[j5];
453748
453834
  j5++;
453749
- while (j5 < len && content5[j5] !== q5) {
453835
+ while (j5 < limit && content5[j5] !== q5) {
453750
453836
  if (content5[j5] === "\\") {
453751
453837
  j5++;
453752
453838
  }
@@ -453759,13 +453845,13 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453759
453845
  }
453760
453846
  if (content5[j5] === "=") {
453761
453847
  j5++;
453762
- while (j5 < len && (content5[j5] === " " || content5[j5] === "\n")) {
453848
+ while (j5 < limit && (content5[j5] === " " || content5[j5] === "\n")) {
453763
453849
  j5++;
453764
453850
  }
453765
453851
  const isCurlyWrapped = content5[j5] === "{";
453766
453852
  if (isCurlyWrapped) {
453767
453853
  j5++;
453768
- while (j5 < len && (content5[j5] === " " || content5[j5] === "\n")) {
453854
+ while (j5 < limit && (content5[j5] === " " || content5[j5] === "\n")) {
453769
453855
  j5++;
453770
453856
  }
453771
453857
  }
@@ -453773,7 +453859,7 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453773
453859
  const quote2 = content5[j5];
453774
453860
  j5++;
453775
453861
  const valueStart = j5;
453776
- while (j5 < len && content5[j5] !== quote2) {
453862
+ while (j5 < limit && content5[j5] !== quote2) {
453777
453863
  if (content5[j5] === "\\") {
453778
453864
  j5 += 2;
453779
453865
  } else {
@@ -453783,10 +453869,10 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453783
453869
  const value2 = content5.slice(valueStart, j5);
453784
453870
  j5++;
453785
453871
  if (isCurlyWrapped) {
453786
- while (j5 < len && (content5[j5] === " " || content5[j5] === "\n")) {
453872
+ while (j5 < limit && (content5[j5] === " " || content5[j5] === "\n")) {
453787
453873
  j5++;
453788
453874
  }
453789
- if (j5 < len && content5[j5] === "}") {
453875
+ if (j5 < limit && content5[j5] === "}") {
453790
453876
  j5++;
453791
453877
  }
453792
453878
  }
@@ -453820,7 +453906,7 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453820
453906
  } else if (isCurlyWrapped && (attrName === "src" || attrName === "icon" || attrName === "href")) {
453821
453907
  hasUnhandledExpressions = true;
453822
453908
  let braceDepth = 1;
453823
- while (j5 < len && braceDepth > 0) {
453909
+ while (j5 < limit && braceDepth > 0) {
453824
453910
  if (content5[j5] === "{") {
453825
453911
  braceDepth++;
453826
453912
  } else if (content5[j5] === "}") {
@@ -453828,7 +453914,7 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453828
453914
  } else if (content5[j5] === '"' || content5[j5] === "'") {
453829
453915
  const q5 = content5[j5];
453830
453916
  j5++;
453831
- while (j5 < len && content5[j5] !== q5) {
453917
+ while (j5 < limit && content5[j5] !== q5) {
453832
453918
  if (content5[j5] === "\\") {
453833
453919
  j5++;
453834
453920
  }
@@ -453840,9 +453926,12 @@ function replaceImagePathsAndUrls(markdown, fileIdsMap, markdownFilesToPathName,
453840
453926
  }
453841
453927
  }
453842
453928
  }
453843
- if (j5 < len && content5[j5] === ">") {
453844
- j5++;
453929
+ if (j5 >= limit || content5[j5] !== ">") {
453930
+ edits.length = editsBeforeTag;
453931
+ i5++;
453932
+ continue;
453845
453933
  }
453934
+ j5++;
453846
453935
  i5 = j5;
453847
453936
  continue;
453848
453937
  }
@@ -453970,7 +454059,7 @@ function replaceFrontmatterImagesforLogo(data2, mapImage) {
453970
454059
  }
453971
454060
  }
453972
454061
  }
453973
- var import_gray_matter3, import_path55, LogoOverrideFrontmatterSchema;
454062
+ var import_gray_matter3, import_path55, JSX_TAG_NAME_START_REGEX, BLANK_LINE_REGEX, CODE_FENCE_REGEX, LogoOverrideFrontmatterSchema;
453974
454063
  var init_parseImagePaths = __esm({
453975
454064
  "../docs-markdown-utils/lib/parseImagePaths.js"() {
453976
454065
  "use strict";
@@ -453984,6 +454073,9 @@ var init_parseImagePaths = __esm({
453984
454073
  init_is_mdx_element();
453985
454074
  init_parseMarkdownToTree();
453986
454075
  init_walk_estree_jsx_attributes();
454076
+ JSX_TAG_NAME_START_REGEX = /[A-Za-z]/;
454077
+ BLANK_LINE_REGEX = /\n[ \t]*\r?\n/;
454078
+ CODE_FENCE_REGEX = /^[ \t]*(`{3,}|~{3,})/;
453987
454079
  LogoOverrideFrontmatterSchema = external_exports2.union([
453988
454080
  external_exports2.string(),
453989
454081
  external_exports2.object({
@@ -694326,7 +694418,7 @@ var AccessTokenPosthogManager = class {
694326
694418
  properties: {
694327
694419
  ...event,
694328
694420
  ...event.properties,
694329
- version: "5.89.3",
694421
+ version: "5.89.4",
694330
694422
  usingAccessToken: true,
694331
694423
  ...getRunIdProperties()
694332
694424
  }
@@ -694392,7 +694484,7 @@ var UserPosthogManager = class {
694392
694484
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
694393
694485
  event: "CLI",
694394
694486
  properties: {
694395
- version: "5.89.3",
694487
+ version: "5.89.4",
694396
694488
  ...event,
694397
694489
  ...event.properties,
694398
694490
  usingAccessToken: false,
@@ -875522,7 +875614,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
875522
875614
  var LOGS_FOLDER_NAME = "logs";
875523
875615
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
875524
875616
  function getCliSource() {
875525
- const version7 = "5.89.3";
875617
+ const version7 = "5.89.4";
875526
875618
  return `cli@${version7}`;
875527
875619
  }
875528
875620
  var DebugLogger = class {
@@ -908232,7 +908324,7 @@ var LegacyDocsPublisher = class {
908232
908324
  previewId,
908233
908325
  disableTemplates: void 0,
908234
908326
  skipUpload,
908235
- cliVersion: "5.89.3",
908327
+ cliVersion: "5.89.4",
908236
908328
  loginCommand: "fern auth login"
908237
908329
  });
908238
908330
  if (taskContext.getResult() === TaskResult.Failure) {
@@ -975108,7 +975200,7 @@ function getAutomationContextFromEnv() {
975108
975200
  config_branch: process.env.FERN_CONFIG_BRANCH,
975109
975201
  config_pr_number: process.env.FERN_CONFIG_PR_NUMBER,
975110
975202
  trigger: process.env.GITHUB_EVENT_NAME,
975111
- cli_version: "5.89.3"
975203
+ cli_version: "5.89.4"
975112
975204
  };
975113
975205
  }
975114
975206
  function isAutomationMode() {
@@ -975940,7 +976032,7 @@ var CliContext = class _CliContext {
975940
976032
  if (false) {
975941
976033
  this.logger.error("CLI_VERSION is not defined");
975942
976034
  }
975943
- return "5.89.3";
976035
+ return "5.89.4";
975944
976036
  }
975945
976037
  getCliName() {
975946
976038
  if (false) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.89.3",
2
+ "version": "5.89.4",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",