@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
@@ -1306,13 +1306,19 @@ function mergeChildrenByPosition(ctx, nav, sectionChildren) {
1306
1306
  function sectionNode(ctx, scoped, sectionChildren, scopePrefix) {
1307
1307
  const { seg, nav } = scoped;
1308
1308
  const overview = overviewRoute(nav) ?? overviewRouteFromSegmentMeta(seg, nav);
1309
- const overviewPageId = overview != null ? metaStr(overview.metadata, "pageId") : void 0;
1309
+ const overviewPageId = metaStr(seg.metadata, "overviewPageId");
1310
1310
  const relSection = stripLeadingScopePrefix(seg.section, scopePrefix);
1311
1311
  let slug = structuralNodeSlug(ctx, overview?.fullPath, relSection, scopePrefix);
1312
1312
  if (relSection === "" && overview?.fullPath == null) {
1313
- slug = inferSectionSlugFromNav(ctx, nav, scopePrefix) ?? slug;
1313
+ const inferred = inferSectionSlugFromNav(ctx, nav, scopePrefix);
1314
+ if (inferred != null) {
1315
+ const inferredStr = String(inferred);
1316
+ const collides = nav.some((r) => r.fullPath != null && String(ctx.contentSlug(r.fullPath)) === inferredStr);
1317
+ if (!collides) {
1318
+ slug = inferred;
1319
+ }
1320
+ }
1314
1321
  }
1315
- const metaPointsTo = metaStr(seg.metadata, "pointsTo");
1316
1322
  const defaults = withMetadataDefaults({
1317
1323
  id: ctx.nodeId(`section:${slug}`),
1318
1324
  title: metaStr(seg.metadata, "title") ?? "",
@@ -1333,7 +1339,10 @@ function sectionNode(ctx, scoped, sectionChildren, scopePrefix) {
1333
1339
  collapsible: metaBool(seg.metadata, "collapsible") ?? (metaCollapsed(seg.metadata) === true ? true : void 0),
1334
1340
  collapsedByDefault: metaBool(seg.metadata, "collapsedByDefault") ?? (metaCollapsed(seg.metadata) === true ? true : void 0),
1335
1341
  availability: metaAvailability(seg.metadata),
1336
- pointsTo: metaPointsTo != null ? pointsToSlug(metaPointsTo) : void 0,
1342
+ // Don't read pointsTo from metadata for sections; let
1343
+ // mutableUpdatePointsTo compute it via followRedirect so that
1344
+ // self-referencing redirects are cleared, matching v2 behavior.
1345
+ pointsTo: void 0,
1337
1346
  children: mergeChildrenByPosition(ctx, nav, sectionChildren)
1338
1347
  };
1339
1348
  }
@@ -1901,7 +1910,11 @@ function buildSidebarRootChildren(ctx, scopeSegs, scopePrefix, changelogScopePre
1901
1910
  const hasLeafPos = annotated.some((a) => a.isLeaf && a.pos != null);
1902
1911
  const hasSegmentPos = annotated.some((a) => !a.isLeaf && a.pos != null);
1903
1912
  const flat = hasLeafPos && hasSegmentPos ? annotated.map((a, seq) => ({ ...a, seq })).sort(
1904
- (x, y) => (x.pos ?? Number.MAX_SAFE_INTEGER) - (y.pos ?? Number.MAX_SAFE_INTEGER) || x.seq - y.seq
1913
+ (x, y) => (x.pos ?? Number.MAX_SAFE_INTEGER) - (y.pos ?? Number.MAX_SAFE_INTEGER) || // When positions tie, prefer structural nodes (sections) over
1914
+ // leaves (pages). This handles stale tabRoot nav entries whose
1915
+ // displaySortOrder wasn't updated due to content-addressing
1916
+ // (the segment hash doesn't include childPosition).
1917
+ (x.isLeaf === y.isLeaf ? 0 : x.isLeaf ? 1 : -1) || x.seq - y.seq
1905
1918
  ).map((a) => a.node) : annotated.map((a) => a.node);
1906
1919
  return groupSidebarRootChildren(ctx, flat);
1907
1920
  }
@@ -1970,13 +1983,19 @@ function buildFullRootFromSegments(options) {
1970
1983
  }
1971
1984
  let rootPointsTo;
1972
1985
  if (child.type === "productgroup") {
1973
- const defaultProduct = child.children.find((p) => p.default) ?? child.children[0];
1974
- rootPointsTo = defaultProduct?.type === "product" ? defaultProduct.pointsTo : void 0;
1986
+ if (child.landingPage != null && !child.landingPage.hidden) {
1987
+ rootPointsTo = child.landingPage.slug;
1988
+ } else {
1989
+ const defaultProduct = child.children.find((p) => p.default) ?? child.children[0];
1990
+ rootPointsTo = defaultProduct?.type === "product" ? defaultProduct.pointsTo : void 0;
1991
+ }
1975
1992
  } else if (child.type === "versioned") {
1976
1993
  const defaultVersion = child.children.find((v) => v.default) ?? child.children[0];
1977
1994
  rootPointsTo = defaultVersion?.pointsTo;
1978
1995
  } else if (child.type === "unversioned") {
1979
- if (tabs.length > 0) {
1996
+ if (child.landingPage != null && !child.landingPage.hidden) {
1997
+ rootPointsTo = child.landingPage.slug;
1998
+ } else if (tabs.length > 0) {
1980
1999
  const firstTab = tabs[0];
1981
2000
  const pt = firstTab != null ? metaStr(firstTab.metadata, "pointsTo") : void 0;
1982
2001
  rootPointsTo = pt != null ? pointsToSlug(pt) : void 0;