@fern-api/fdr-sdk 1.2.44-ef8582fd87 → 1.2.45-3a874ebe1e

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 (102) hide show
  1. package/dist/api-definition/migrators/v1ToV2.d.ts.map +1 -1
  2. package/dist/api-definition/migrators/v1ToV2.js +1 -0
  3. package/dist/api-definition/migrators/v1ToV2.js.map +1 -1
  4. package/dist/converters/db/convertAPIDefinitionToDb.d.ts.map +1 -1
  5. package/dist/converters/db/convertAPIDefinitionToDb.js +1 -0
  6. package/dist/converters/db/convertAPIDefinitionToDb.js.map +1 -1
  7. package/dist/converters/read/convertDbAPIDefinitionToRead.d.ts +1 -0
  8. package/dist/converters/read/convertDbAPIDefinitionToRead.d.ts.map +1 -1
  9. package/dist/converters/read/convertDbAPIDefinitionToRead.js +1 -0
  10. package/dist/converters/read/convertDbAPIDefinitionToRead.js.map +1 -1
  11. package/dist/js/api-definition/index.js +3 -0
  12. package/dist/js/api-definition/index.js.map +1 -1
  13. package/dist/js/api-definition/index.mjs +3 -0
  14. package/dist/js/api-definition/index.mjs.map +1 -1
  15. package/dist/js/client/FdrClient.js +3 -0
  16. package/dist/js/client/FdrClient.js.map +1 -1
  17. package/dist/js/client/FdrClient.mjs +3 -0
  18. package/dist/js/client/FdrClient.mjs.map +1 -1
  19. package/dist/js/client/types.js +4 -0
  20. package/dist/js/client/types.js.map +1 -1
  21. package/dist/js/client/types.mjs +4 -0
  22. package/dist/js/client/types.mjs.map +1 -1
  23. package/dist/js/converters/index.js +16 -2
  24. package/dist/js/converters/index.js.map +1 -1
  25. package/dist/js/converters/index.mjs +16 -2
  26. package/dist/js/converters/index.mjs.map +1 -1
  27. package/dist/js/index.js +16 -2
  28. package/dist/js/index.js.map +1 -1
  29. package/dist/js/index.mjs +16 -2
  30. package/dist/js/index.mjs.map +1 -1
  31. package/dist/js/navigation/index.js +14 -2
  32. package/dist/js/navigation/index.js.map +1 -1
  33. package/dist/js/navigation/index.mjs +14 -2
  34. package/dist/js/navigation/index.mjs.map +1 -1
  35. package/dist/js/navigation/ledger-root-builder.js +27 -8
  36. package/dist/js/navigation/ledger-root-builder.js.map +1 -1
  37. package/dist/js/navigation/ledger-root-builder.mjs +27 -8
  38. package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
  39. package/dist/js/orpc-client.js +4 -0
  40. package/dist/js/orpc-client.js.map +1 -1
  41. package/dist/js/orpc-client.mjs +4 -0
  42. package/dist/js/orpc-client.mjs.map +1 -1
  43. package/dist/navigation/__test__/ledger-root-builder.contentfulRedirectRepro.test.d.ts +2 -0
  44. package/dist/navigation/__test__/ledger-root-builder.contentfulRedirectRepro.test.d.ts.map +1 -0
  45. package/dist/navigation/__test__/ledger-root-builder.contentfulRedirectRepro.test.js +308 -0
  46. package/dist/navigation/__test__/ledger-root-builder.contentfulRedirectRepro.test.js.map +1 -0
  47. package/dist/navigation/__test__/ledger-root-builder.landingPageRedirect.test.d.ts +2 -0
  48. package/dist/navigation/__test__/ledger-root-builder.landingPageRedirect.test.d.ts.map +1 -0
  49. package/dist/navigation/__test__/ledger-root-builder.landingPageRedirect.test.js +227 -0
  50. package/dist/navigation/__test__/ledger-root-builder.landingPageRedirect.test.js.map +1 -0
  51. package/dist/navigation/__test__/ledger-root-builder.pointsTo.test.js +122 -10
  52. package/dist/navigation/__test__/ledger-root-builder.pointsTo.test.js.map +1 -1
  53. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js +317 -0
  54. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js.map +1 -1
  55. package/dist/navigation/__test__/ledger-root-builder.unversionedPointsTo.test.js +59 -1
  56. package/dist/navigation/__test__/ledger-root-builder.unversionedPointsTo.test.js.map +1 -1
  57. package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
  58. package/dist/navigation/ledger-root-builder.js +42 -11
  59. package/dist/navigation/ledger-root-builder.js.map +1 -1
  60. package/dist/navigation/utils/toApis.d.ts +1 -0
  61. package/dist/navigation/utils/toApis.d.ts.map +1 -1
  62. package/dist/navigation/utils/updatePointsTo.d.ts.map +1 -1
  63. package/dist/navigation/utils/updatePointsTo.js +12 -4
  64. package/dist/navigation/utils/updatePointsTo.js.map +1 -1
  65. package/dist/orpc-client/api/contract-db.d.ts +3 -0
  66. package/dist/orpc-client/api/contract-db.d.ts.map +1 -1
  67. package/dist/orpc-client/api/contract-db.js +1 -0
  68. package/dist/orpc-client/api/contract-db.js.map +1 -1
  69. package/dist/orpc-client/api/contract-latest.d.ts +6 -0
  70. package/dist/orpc-client/api/contract-latest.d.ts.map +1 -1
  71. package/dist/orpc-client/api/contract-latest.js +1 -0
  72. package/dist/orpc-client/api/contract-latest.js.map +1 -1
  73. package/dist/orpc-client/api/contract-read.d.ts +3 -0
  74. package/dist/orpc-client/api/contract-read.d.ts.map +1 -1
  75. package/dist/orpc-client/api/contract-read.js +1 -0
  76. package/dist/orpc-client/api/contract-read.js.map +1 -1
  77. package/dist/orpc-client/api/contract-register.d.ts +3 -0
  78. package/dist/orpc-client/api/contract-register.d.ts.map +1 -1
  79. package/dist/orpc-client/api/contract-register.js +1 -0
  80. package/dist/orpc-client/api/contract-register.js.map +1 -1
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/dist/types/api-definition/migrators/v1ToV2.d.ts.map +1 -1
  83. package/dist/types/converters/db/convertAPIDefinitionToDb.d.ts.map +1 -1
  84. package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts +1 -0
  85. package/dist/types/converters/read/convertDbAPIDefinitionToRead.d.ts.map +1 -1
  86. package/dist/types/navigation/__test__/ledger-root-builder.contentfulRedirectRepro.test.d.ts +2 -0
  87. package/dist/types/navigation/__test__/ledger-root-builder.contentfulRedirectRepro.test.d.ts.map +1 -0
  88. package/dist/types/navigation/__test__/ledger-root-builder.landingPageRedirect.test.d.ts +2 -0
  89. package/dist/types/navigation/__test__/ledger-root-builder.landingPageRedirect.test.d.ts.map +1 -0
  90. package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
  91. package/dist/types/navigation/utils/toApis.d.ts +1 -0
  92. package/dist/types/navigation/utils/toApis.d.ts.map +1 -1
  93. package/dist/types/navigation/utils/updatePointsTo.d.ts.map +1 -1
  94. package/dist/types/orpc-client/api/contract-db.d.ts +3 -0
  95. package/dist/types/orpc-client/api/contract-db.d.ts.map +1 -1
  96. package/dist/types/orpc-client/api/contract-latest.d.ts +6 -0
  97. package/dist/types/orpc-client/api/contract-latest.d.ts.map +1 -1
  98. package/dist/types/orpc-client/api/contract-read.d.ts +3 -0
  99. package/dist/types/orpc-client/api/contract-read.d.ts.map +1 -1
  100. package/dist/types/orpc-client/api/contract-register.d.ts +3 -0
  101. package/dist/types/orpc-client/api/contract-register.d.ts.map +1 -1
  102. package/package.json +3 -3
@@ -1347,13 +1347,19 @@ function mergeChildrenByPosition(ctx, nav, sectionChildren) {
1347
1347
  function sectionNode(ctx, scoped, sectionChildren, scopePrefix) {
1348
1348
  const { seg, nav } = scoped;
1349
1349
  const overview = overviewRoute(nav) ?? overviewRouteFromSegmentMeta(seg, nav);
1350
- const overviewPageId = overview != null ? metaStr(overview.metadata, "pageId") : void 0;
1350
+ const overviewPageId = metaStr(seg.metadata, "overviewPageId");
1351
1351
  const relSection = stripLeadingScopePrefix(seg.section, scopePrefix);
1352
1352
  let slug = structuralNodeSlug(ctx, overview?.fullPath, relSection, scopePrefix);
1353
1353
  if (relSection === "" && overview?.fullPath == null) {
1354
- slug = inferSectionSlugFromNav(ctx, nav, scopePrefix) ?? slug;
1354
+ const inferred = inferSectionSlugFromNav(ctx, nav, scopePrefix);
1355
+ if (inferred != null) {
1356
+ const inferredStr = String(inferred);
1357
+ const collides = nav.some((r) => r.fullPath != null && String(ctx.contentSlug(r.fullPath)) === inferredStr);
1358
+ if (!collides) {
1359
+ slug = inferred;
1360
+ }
1361
+ }
1355
1362
  }
1356
- const metaPointsTo = metaStr(seg.metadata, "pointsTo");
1357
1363
  const defaults = withMetadataDefaults({
1358
1364
  id: ctx.nodeId(`section:${slug}`),
1359
1365
  title: metaStr(seg.metadata, "title") ?? "",
@@ -1374,7 +1380,10 @@ function sectionNode(ctx, scoped, sectionChildren, scopePrefix) {
1374
1380
  collapsible: metaBool(seg.metadata, "collapsible") ?? (metaCollapsed(seg.metadata) === true ? true : void 0),
1375
1381
  collapsedByDefault: metaBool(seg.metadata, "collapsedByDefault") ?? (metaCollapsed(seg.metadata) === true ? true : void 0),
1376
1382
  availability: metaAvailability(seg.metadata),
1377
- pointsTo: metaPointsTo != null ? pointsToSlug(metaPointsTo) : void 0,
1383
+ // Don't read pointsTo from metadata for sections; let
1384
+ // mutableUpdatePointsTo compute it via followRedirect so that
1385
+ // self-referencing redirects are cleared, matching v2 behavior.
1386
+ pointsTo: void 0,
1378
1387
  children: mergeChildrenByPosition(ctx, nav, sectionChildren)
1379
1388
  };
1380
1389
  }
@@ -1942,7 +1951,11 @@ function buildSidebarRootChildren(ctx, scopeSegs, scopePrefix, changelogScopePre
1942
1951
  const hasLeafPos = annotated.some((a) => a.isLeaf && a.pos != null);
1943
1952
  const hasSegmentPos = annotated.some((a) => !a.isLeaf && a.pos != null);
1944
1953
  const flat = hasLeafPos && hasSegmentPos ? annotated.map((a, seq) => ({ ...a, seq })).sort(
1945
- (x, y) => (x.pos ?? Number.MAX_SAFE_INTEGER) - (y.pos ?? Number.MAX_SAFE_INTEGER) || x.seq - y.seq
1954
+ (x, y) => (x.pos ?? Number.MAX_SAFE_INTEGER) - (y.pos ?? Number.MAX_SAFE_INTEGER) || // When positions tie, prefer structural nodes (sections) over
1955
+ // leaves (pages). This handles stale tabRoot nav entries whose
1956
+ // displaySortOrder wasn't updated due to content-addressing
1957
+ // (the segment hash doesn't include childPosition).
1958
+ (x.isLeaf === y.isLeaf ? 0 : x.isLeaf ? 1 : -1) || x.seq - y.seq
1946
1959
  ).map((a) => a.node) : annotated.map((a) => a.node);
1947
1960
  return groupSidebarRootChildren(ctx, flat);
1948
1961
  }
@@ -2011,13 +2024,19 @@ function buildFullRootFromSegments(options) {
2011
2024
  }
2012
2025
  let rootPointsTo;
2013
2026
  if (child.type === "productgroup") {
2014
- const defaultProduct = child.children.find((p) => p.default) ?? child.children[0];
2015
- rootPointsTo = defaultProduct?.type === "product" ? defaultProduct.pointsTo : void 0;
2027
+ if (child.landingPage != null && !child.landingPage.hidden) {
2028
+ rootPointsTo = child.landingPage.slug;
2029
+ } else {
2030
+ const defaultProduct = child.children.find((p) => p.default) ?? child.children[0];
2031
+ rootPointsTo = defaultProduct?.type === "product" ? defaultProduct.pointsTo : void 0;
2032
+ }
2016
2033
  } else if (child.type === "versioned") {
2017
2034
  const defaultVersion = child.children.find((v) => v.default) ?? child.children[0];
2018
2035
  rootPointsTo = defaultVersion?.pointsTo;
2019
2036
  } else if (child.type === "unversioned") {
2020
- if (tabs.length > 0) {
2037
+ if (child.landingPage != null && !child.landingPage.hidden) {
2038
+ rootPointsTo = child.landingPage.slug;
2039
+ } else if (tabs.length > 0) {
2021
2040
  const firstTab = tabs[0];
2022
2041
  const pt = firstTab != null ? metaStr(firstTab.metadata, "pointsTo") : void 0;
2023
2042
  rootPointsTo = pt != null ? pointsToSlug(pt) : void 0;