@fern-api/fdr-sdk 1.2.42-304ea6b285 → 1.2.42-54880bfeac
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.
- package/dist/js/client/FdrClient.js +1 -0
- package/dist/js/client/FdrClient.js.map +1 -1
- package/dist/js/client/FdrClient.mjs +1 -0
- package/dist/js/client/FdrClient.mjs.map +1 -1
- package/dist/js/index.js +1 -0
- package/dist/js/index.js.map +1 -1
- package/dist/js/index.mjs +1 -0
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/navigation/ledger-root-builder.js +58 -4
- package/dist/js/navigation/ledger-root-builder.js.map +1 -1
- package/dist/js/navigation/ledger-root-builder.mjs +58 -4
- package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
- package/dist/js/orpc-client.js +1 -0
- package/dist/js/orpc-client.js.map +1 -1
- package/dist/js/orpc-client.mjs +1 -0
- package/dist/js/orpc-client.mjs.map +1 -1
- package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts +2 -0
- package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.js +267 -0
- package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.js.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts +2 -0
- package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.js +273 -0
- package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.js.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts +2 -0
- package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.js +234 -0
- package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.js.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js +105 -1
- package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js.map +1 -1
- package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
- package/dist/navigation/ledger-root-builder.js +108 -12
- package/dist/navigation/ledger-root-builder.js.map +1 -1
- package/dist/orpc-client/docs-ledger/contract.d.ts +9 -0
- package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
- package/dist/orpc-client/docs-ledger/contract.js +1 -0
- package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts +2 -0
- package/dist/types/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts.map +1 -0
- package/dist/types/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts +2 -0
- package/dist/types/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts.map +1 -0
- package/dist/types/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts +2 -0
- package/dist/types/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts.map +1 -0
- package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
- package/dist/types/orpc-client/docs-ledger/contract.d.ts +9 -0
- package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import * as FernNavigation from "../index.js";
|
|
3
|
+
import { buildFullRootFromSegments } from "../ledger-root-builder.js";
|
|
4
|
+
function segment(opts) {
|
|
5
|
+
return {
|
|
6
|
+
segmentId: opts.segmentHash,
|
|
7
|
+
segmentHash: opts.segmentHash,
|
|
8
|
+
section: opts.section,
|
|
9
|
+
locale: "en",
|
|
10
|
+
sortOrder: opts.sortOrder,
|
|
11
|
+
hidden: false,
|
|
12
|
+
metadata: opts.metadata,
|
|
13
|
+
product: null,
|
|
14
|
+
version: null,
|
|
15
|
+
variant: null,
|
|
16
|
+
tab: null
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function restRoute(opts) {
|
|
20
|
+
return {
|
|
21
|
+
type: "rest",
|
|
22
|
+
fullPath: opts.fullPath,
|
|
23
|
+
hidden: false,
|
|
24
|
+
displaySortOrder: opts.displaySortOrder,
|
|
25
|
+
metadata: {
|
|
26
|
+
title: opts.title,
|
|
27
|
+
apiDefinitionId: "plant-api-def",
|
|
28
|
+
endpointId: opts.endpointId,
|
|
29
|
+
method: "GET",
|
|
30
|
+
isResponseStream: false
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
describe("buildFullRootFromSegments — skipUrlSlug group package ordering", () => {
|
|
35
|
+
it("preserves DFS order when multiple apiPackage groups share the same section path", () => {
|
|
36
|
+
// Simulates the structure where an apiReference has multiple skipUrlSlug
|
|
37
|
+
// group packages (all sharing section "api") with leaf packages underneath.
|
|
38
|
+
// DFS order: apiRef → groupA → leafA1, leafA2 → groupB → leafB1, leafB2
|
|
39
|
+
const segments = [
|
|
40
|
+
segment({
|
|
41
|
+
segmentHash: "api-ref",
|
|
42
|
+
section: "api",
|
|
43
|
+
sortOrder: 0,
|
|
44
|
+
metadata: { type: "apiReference", title: "API", apiDefinitionId: "plant-api-def" }
|
|
45
|
+
}),
|
|
46
|
+
// Group A (skipUrlSlug — same section as apiReference)
|
|
47
|
+
segment({
|
|
48
|
+
segmentHash: "group-a",
|
|
49
|
+
section: "api",
|
|
50
|
+
sortOrder: 1,
|
|
51
|
+
metadata: {
|
|
52
|
+
type: "apiPackage",
|
|
53
|
+
title: "Soil Management",
|
|
54
|
+
childIndex: 0,
|
|
55
|
+
apiDefinitionId: "plant-api-def"
|
|
56
|
+
}
|
|
57
|
+
}),
|
|
58
|
+
// Leaf A1 — child of group A
|
|
59
|
+
segment({
|
|
60
|
+
segmentHash: "leaf-a1",
|
|
61
|
+
section: "api/soil-types",
|
|
62
|
+
sortOrder: 2,
|
|
63
|
+
metadata: { type: "apiPackage", title: "Soil Types", childIndex: 0, apiDefinitionId: "plant-api-def" }
|
|
64
|
+
}),
|
|
65
|
+
// Leaf A2 — child of group A
|
|
66
|
+
segment({
|
|
67
|
+
segmentHash: "leaf-a2",
|
|
68
|
+
section: "api/soil-nutrients",
|
|
69
|
+
sortOrder: 3,
|
|
70
|
+
metadata: {
|
|
71
|
+
type: "apiPackage",
|
|
72
|
+
title: "Soil Nutrients",
|
|
73
|
+
childIndex: 1,
|
|
74
|
+
apiDefinitionId: "plant-api-def"
|
|
75
|
+
}
|
|
76
|
+
}),
|
|
77
|
+
// Group B (skipUrlSlug — same section as apiReference)
|
|
78
|
+
segment({
|
|
79
|
+
segmentHash: "group-b",
|
|
80
|
+
section: "api",
|
|
81
|
+
sortOrder: 4,
|
|
82
|
+
metadata: { type: "apiPackage", title: "Watering", childIndex: 1, apiDefinitionId: "plant-api-def" }
|
|
83
|
+
}),
|
|
84
|
+
// Leaf B1 — child of group B
|
|
85
|
+
segment({
|
|
86
|
+
segmentHash: "leaf-b1",
|
|
87
|
+
section: "api/watering-schedules",
|
|
88
|
+
sortOrder: 5,
|
|
89
|
+
metadata: {
|
|
90
|
+
type: "apiPackage",
|
|
91
|
+
title: "Watering Schedules",
|
|
92
|
+
childIndex: 0,
|
|
93
|
+
apiDefinitionId: "plant-api-def"
|
|
94
|
+
}
|
|
95
|
+
}),
|
|
96
|
+
// Leaf B2 — child of group B
|
|
97
|
+
segment({
|
|
98
|
+
segmentHash: "leaf-b2",
|
|
99
|
+
section: "api/watering-methods",
|
|
100
|
+
sortOrder: 6,
|
|
101
|
+
metadata: {
|
|
102
|
+
type: "apiPackage",
|
|
103
|
+
title: "Watering Methods",
|
|
104
|
+
childIndex: 1,
|
|
105
|
+
apiDefinitionId: "plant-api-def"
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
];
|
|
109
|
+
const navBySegment = new Map([
|
|
110
|
+
["api-ref", []],
|
|
111
|
+
["group-a", []],
|
|
112
|
+
[
|
|
113
|
+
"leaf-a1",
|
|
114
|
+
[
|
|
115
|
+
restRoute({
|
|
116
|
+
fullPath: "api/soil-types/list",
|
|
117
|
+
title: "List Soil Types",
|
|
118
|
+
endpointId: "listSoilTypes",
|
|
119
|
+
displaySortOrder: 0
|
|
120
|
+
}),
|
|
121
|
+
restRoute({
|
|
122
|
+
fullPath: "api/soil-types/get",
|
|
123
|
+
title: "Get Soil Type",
|
|
124
|
+
endpointId: "getSoilType",
|
|
125
|
+
displaySortOrder: 1
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
],
|
|
129
|
+
[
|
|
130
|
+
"leaf-a2",
|
|
131
|
+
[
|
|
132
|
+
restRoute({
|
|
133
|
+
fullPath: "api/soil-nutrients/list",
|
|
134
|
+
title: "List Nutrients",
|
|
135
|
+
endpointId: "listNutrients",
|
|
136
|
+
displaySortOrder: 0
|
|
137
|
+
})
|
|
138
|
+
]
|
|
139
|
+
],
|
|
140
|
+
["group-b", []],
|
|
141
|
+
[
|
|
142
|
+
"leaf-b1",
|
|
143
|
+
[
|
|
144
|
+
restRoute({
|
|
145
|
+
fullPath: "api/watering-schedules/list",
|
|
146
|
+
title: "List Schedules",
|
|
147
|
+
endpointId: "listSchedules",
|
|
148
|
+
displaySortOrder: 0
|
|
149
|
+
})
|
|
150
|
+
]
|
|
151
|
+
],
|
|
152
|
+
[
|
|
153
|
+
"leaf-b2",
|
|
154
|
+
[
|
|
155
|
+
restRoute({
|
|
156
|
+
fullPath: "api/watering-methods/list",
|
|
157
|
+
title: "List Methods",
|
|
158
|
+
endpointId: "listMethods",
|
|
159
|
+
displaySortOrder: 0
|
|
160
|
+
})
|
|
161
|
+
]
|
|
162
|
+
]
|
|
163
|
+
]);
|
|
164
|
+
const root = buildFullRootFromSegments({
|
|
165
|
+
basePath: "docs",
|
|
166
|
+
title: "Plant Docs",
|
|
167
|
+
segments,
|
|
168
|
+
navBySegment
|
|
169
|
+
});
|
|
170
|
+
FernNavigation.utils.mutableUpdatePointsTo(root);
|
|
171
|
+
const sidebar = root.child.child;
|
|
172
|
+
const apiRef = sidebar.children[0];
|
|
173
|
+
expect(apiRef.type).toBe("apiReference");
|
|
174
|
+
// The apiReference should preserve DFS order: soil-types, soil-nutrients,
|
|
175
|
+
// watering-schedules, watering-methods (not round-robin: soil-types,
|
|
176
|
+
// watering-schedules, soil-nutrients, watering-methods).
|
|
177
|
+
const childTitles = apiRef.children.map((c) => c.title);
|
|
178
|
+
expect(childTitles).toEqual(["Soil Types", "Soil Nutrients", "Watering Schedules", "Watering Methods"]);
|
|
179
|
+
});
|
|
180
|
+
it("group packages do not create duplicate root-level nodes when sharing section with apiReference", () => {
|
|
181
|
+
const segments = [
|
|
182
|
+
segment({
|
|
183
|
+
segmentHash: "api-ref",
|
|
184
|
+
section: "api",
|
|
185
|
+
sortOrder: 0,
|
|
186
|
+
metadata: { type: "apiReference", title: "API", apiDefinitionId: "plant-api-def" }
|
|
187
|
+
}),
|
|
188
|
+
segment({
|
|
189
|
+
segmentHash: "group-a",
|
|
190
|
+
section: "api",
|
|
191
|
+
sortOrder: 1,
|
|
192
|
+
metadata: {
|
|
193
|
+
type: "apiPackage",
|
|
194
|
+
title: "Soil Management",
|
|
195
|
+
childIndex: 0,
|
|
196
|
+
apiDefinitionId: "plant-api-def"
|
|
197
|
+
}
|
|
198
|
+
}),
|
|
199
|
+
segment({
|
|
200
|
+
segmentHash: "leaf-a1",
|
|
201
|
+
section: "api/soil-types",
|
|
202
|
+
sortOrder: 2,
|
|
203
|
+
metadata: { type: "apiPackage", title: "Soil Types", childIndex: 0, apiDefinitionId: "plant-api-def" }
|
|
204
|
+
})
|
|
205
|
+
];
|
|
206
|
+
const navBySegment = new Map([
|
|
207
|
+
["api-ref", []],
|
|
208
|
+
["group-a", []],
|
|
209
|
+
[
|
|
210
|
+
"leaf-a1",
|
|
211
|
+
[
|
|
212
|
+
restRoute({
|
|
213
|
+
fullPath: "api/soil-types/list",
|
|
214
|
+
title: "List Soil Types",
|
|
215
|
+
endpointId: "listSoilTypes",
|
|
216
|
+
displaySortOrder: 0
|
|
217
|
+
})
|
|
218
|
+
]
|
|
219
|
+
]
|
|
220
|
+
]);
|
|
221
|
+
const root = buildFullRootFromSegments({
|
|
222
|
+
basePath: "docs",
|
|
223
|
+
title: "Plant Docs",
|
|
224
|
+
segments,
|
|
225
|
+
navBySegment
|
|
226
|
+
});
|
|
227
|
+
FernNavigation.utils.mutableUpdatePointsTo(root);
|
|
228
|
+
const sidebar = root.child.child;
|
|
229
|
+
// Only one apiReference node should exist (groups should not create duplicates)
|
|
230
|
+
const apiRefNodes = sidebar.children.filter((c) => c.type === "apiReference");
|
|
231
|
+
expect(apiRefNodes).toHaveLength(1);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
//# sourceMappingURL=ledger-root-builder.skipSlugGroupOrdering.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-root-builder.skipSlugGroupOrdering.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,8 @@ function seg(opts) {
|
|
|
39
39
|
metadata: {
|
|
40
40
|
type: opts.type,
|
|
41
41
|
...(opts.title != null ? { title: opts.title } : {}),
|
|
42
|
-
...(opts.childIndex != null ? { childIndex: opts.childIndex } : {})
|
|
42
|
+
...(opts.childIndex != null ? { childIndex: opts.childIndex } : {}),
|
|
43
|
+
...(opts.sidebarDepth != null ? { sidebarDepth: opts.sidebarDepth } : {})
|
|
43
44
|
},
|
|
44
45
|
product: null,
|
|
45
46
|
version: null,
|
|
@@ -196,6 +197,109 @@ describe("buildFullRootFromSegments — skipUrlSlug sibling sections are NOT ado
|
|
|
196
197
|
expect(breadcrumbTitles).not.toContain("Introduction");
|
|
197
198
|
});
|
|
198
199
|
});
|
|
200
|
+
describe("buildFullRootFromSegments — nested subsections with sidebarDepth are not promoted to root level", () => {
|
|
201
|
+
// Regression guard: when multiple skip-slug sections share sec="" and one
|
|
202
|
+
// contains nested subsections (sidebarDepth > 0), the nested subsections
|
|
203
|
+
// must stay under their parent — not be emitted as additional root children.
|
|
204
|
+
// Without the fix, sections with sidebarDepth > 0 bypassed the adoption
|
|
205
|
+
// skip (which only checked depth == null), causing duplication.
|
|
206
|
+
const tab = detail({
|
|
207
|
+
id: "t-docs",
|
|
208
|
+
name: "Docs",
|
|
209
|
+
slug: "docs",
|
|
210
|
+
pointsTo: "docs/getting-started"
|
|
211
|
+
});
|
|
212
|
+
it("subsections with sidebarDepth > 0 stay nested under their parent skip-slug section", () => {
|
|
213
|
+
const root = buildRoot({
|
|
214
|
+
basePath: "",
|
|
215
|
+
segments: [
|
|
216
|
+
seg({
|
|
217
|
+
segmentHash: "s-gs",
|
|
218
|
+
section: "",
|
|
219
|
+
type: "section",
|
|
220
|
+
title: "Getting Started",
|
|
221
|
+
sortOrder: 0,
|
|
222
|
+
childIndex: 0,
|
|
223
|
+
sidebarDepth: 0,
|
|
224
|
+
tab
|
|
225
|
+
}),
|
|
226
|
+
seg({
|
|
227
|
+
segmentHash: "s-dt",
|
|
228
|
+
section: "",
|
|
229
|
+
type: "section",
|
|
230
|
+
title: "Dev Tools",
|
|
231
|
+
sortOrder: 2,
|
|
232
|
+
childIndex: 1,
|
|
233
|
+
sidebarDepth: 0,
|
|
234
|
+
tab
|
|
235
|
+
}),
|
|
236
|
+
seg({
|
|
237
|
+
segmentHash: "s-cap",
|
|
238
|
+
section: "",
|
|
239
|
+
type: "section",
|
|
240
|
+
title: "Capabilities",
|
|
241
|
+
sortOrder: 4,
|
|
242
|
+
childIndex: 2,
|
|
243
|
+
sidebarDepth: 0,
|
|
244
|
+
tab
|
|
245
|
+
}),
|
|
246
|
+
// Nested under Capabilities — these must NOT appear at root level
|
|
247
|
+
seg({
|
|
248
|
+
segmentHash: "s-parsing",
|
|
249
|
+
section: "parsing",
|
|
250
|
+
type: "section",
|
|
251
|
+
title: "Parsing",
|
|
252
|
+
sortOrder: 5,
|
|
253
|
+
childIndex: 0,
|
|
254
|
+
sidebarDepth: 1,
|
|
255
|
+
tab
|
|
256
|
+
}),
|
|
257
|
+
seg({
|
|
258
|
+
segmentHash: "s-extraction",
|
|
259
|
+
section: "extraction",
|
|
260
|
+
type: "section",
|
|
261
|
+
title: "Extraction",
|
|
262
|
+
sortOrder: 6,
|
|
263
|
+
childIndex: 1,
|
|
264
|
+
sidebarDepth: 1,
|
|
265
|
+
tab
|
|
266
|
+
})
|
|
267
|
+
],
|
|
268
|
+
navBySegment: new Map([
|
|
269
|
+
["s-gs", [markdownRoute("docs/getting-started", "Intro", "pg-intro")]],
|
|
270
|
+
["s-dt", [markdownRoute("docs/dev-tools", "CLI", "pg-cli")]],
|
|
271
|
+
["s-cap", []],
|
|
272
|
+
["s-parsing", [markdownRoute("docs/parsing/overview", "Parsing Overview", "pg-parse")]],
|
|
273
|
+
["s-extraction", [markdownRoute("docs/extraction/overview", "Extraction Overview", "pg-extract")]]
|
|
274
|
+
])
|
|
275
|
+
});
|
|
276
|
+
const sidebarChildren = findSidebarRootChildren(root);
|
|
277
|
+
const topLevelTitles = [];
|
|
278
|
+
for (const child of sidebarChildren) {
|
|
279
|
+
if (child.type === "section") {
|
|
280
|
+
topLevelTitles.push(child.title);
|
|
281
|
+
}
|
|
282
|
+
else if (child.type === "sidebarGroup") {
|
|
283
|
+
for (const gc of child.children) {
|
|
284
|
+
if (gc.type === "section") {
|
|
285
|
+
topLevelTitles.push(gc.title);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// Only the three skip-slug root sections should appear at top level
|
|
291
|
+
expect(topLevelTitles).toEqual(["Getting Started", "Dev Tools", "Capabilities"]);
|
|
292
|
+
// Parsing and Extraction must be children of Capabilities, not root
|
|
293
|
+
const sections = findSectionNodes(root);
|
|
294
|
+
const capSec = sections.find((s) => s.title === "Capabilities");
|
|
295
|
+
expect(capSec).toBeDefined();
|
|
296
|
+
const capChildTitles = (capSec?.children ?? [])
|
|
297
|
+
.filter((c) => c.type === "section")
|
|
298
|
+
.map((c) => c.title);
|
|
299
|
+
expect(capChildTitles).toContain("Parsing");
|
|
300
|
+
expect(capChildTitles).toContain("Extraction");
|
|
301
|
+
});
|
|
302
|
+
});
|
|
199
303
|
describe("buildFullRootFromSegments — true root-section wrappers (no childIndex) still work", () => {
|
|
200
304
|
// Regression guard: when a section has section="" WITHOUT childIndex,
|
|
201
305
|
// it IS a true root wrapper and should adopt depth-0 children.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-root-builder.skipSlugSiblingSection.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger-root-builder.skipSlugSiblingSection.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-root-builder.d.ts","sourceRoot":"","sources":["../../src/navigation/ledger-root-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,KAAK,OAAO,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AA6B9C,MAAM,WAAW,gBAAgB;IAC7B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,6DAA6D;IAC7D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtC;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;AAID;;;;;;GAMG;AACH,UAAU,YAAY;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;IAC/C,kFAAkF;IAClF,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,cAAc,CAAC,IAAI,CAAC;CAC9D;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAuBjE;AAoRD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACjB,cAAc,CAAC,YAAY,GAC3B,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,aAAa,GAC5B,cAAc,CAAC,QAAQ,GACvB,cAAc,CAAC,WAAW,CAAC;AAOjC;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,EAChB,sBAAsB,EAAE,MAAM,GAC/B,WAAW,GAAG,SAAS,CAGzB;AA+KD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,sBAAsB,EAAE,MAAM,GAC/B,WAAW,EAAE,CAKf;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,CASxF;
|
|
1
|
+
{"version":3,"file":"ledger-root-builder.d.ts","sourceRoot":"","sources":["../../src/navigation/ledger-root-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,KAAK,OAAO,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AA6B9C,MAAM,WAAW,gBAAgB;IAC7B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,6DAA6D;IAC7D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtC;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;AAID;;;;;;GAMG;AACH,UAAU,YAAY;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;IAC/C,kFAAkF;IAClF,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,cAAc,CAAC,IAAI,CAAC;CAC9D;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAuBjE;AAoRD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACjB,cAAc,CAAC,YAAY,GAC3B,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,aAAa,GAC5B,cAAc,CAAC,QAAQ,GACvB,cAAc,CAAC,WAAW,CAAC;AAOjC;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,EAChB,sBAAsB,EAAE,MAAM,GAC/B,WAAW,GAAG,SAAS,CAGzB;AA+KD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,sBAAsB,EAAE,MAAM,GAC/B,WAAW,EAAE,CAKf;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,CASxF;AAsaD;;;;;;GAMG;AACH,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,WAAW,EAAE,EACxB,MAAM,EAAE,QAAQ,EAAE,GACnB,cAAc,CAAC,eAAe,EAAE,CAsElC;AAyrBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAmF5F"}
|
|
@@ -700,11 +700,37 @@ function buildApiChildren(ctx, scoped, scopeSegs, apiDefinitionId, scopePrefix)
|
|
|
700
700
|
// API leaf types.
|
|
701
701
|
const leafNodes = positionedApiLeafChildren(ctx, nav, apiDefinitionId);
|
|
702
702
|
// Build nested ApiPackageNodes from direct child apiPackage segments.
|
|
703
|
-
|
|
703
|
+
let childPackages = directChildApiPackages(seg.section, scopeSegs, apiDefinitionId);
|
|
704
|
+
// When multiple API-type segments share the same section path (skipUrlSlug
|
|
705
|
+
// group packages that collapse to their parent's section), children from
|
|
706
|
+
// different groups get mixed together. Scope children to this segment's DFS
|
|
707
|
+
// subtree using sortOrder boundaries to restore correct ownership.
|
|
708
|
+
const samePathApiSiblings = scopeSegs.filter((s) => s.seg.section === seg.section &&
|
|
709
|
+
s.seg.sortOrder !== seg.sortOrder &&
|
|
710
|
+
API_NODE_SEGMENT_TYPES.has(metaStr(s.seg.metadata, "type") ?? ""));
|
|
711
|
+
const hasCollapsedGroups = samePathApiSiblings.length > 0;
|
|
712
|
+
if (hasCollapsedGroups && metaStr(seg.metadata, "type") !== "apiReference") {
|
|
713
|
+
// This is a group package sharing its section with siblings.
|
|
714
|
+
// Only claim children whose sortOrder falls within our DFS subtree.
|
|
715
|
+
const nextSibling = samePathApiSiblings
|
|
716
|
+
.filter((s) => s.seg.sortOrder > seg.sortOrder)
|
|
717
|
+
.sort((a, b) => a.seg.sortOrder - b.seg.sortOrder)[0];
|
|
718
|
+
const lo = seg.sortOrder;
|
|
719
|
+
const hi = nextSibling?.seg.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
720
|
+
childPackages = childPackages.filter((c) => c.seg.sortOrder > lo && c.seg.sortOrder < hi);
|
|
721
|
+
}
|
|
704
722
|
const packageNodes = childPackages.map((child) => ({
|
|
705
723
|
node: apiPackageChildNode(ctx, child, scopeSegs, apiDefinitionId, scopePrefix),
|
|
706
724
|
childIndex: metaNum(child.seg.metadata, "childIndex")
|
|
707
725
|
}));
|
|
726
|
+
// When collapsed groups are detected at apiReference level, children's
|
|
727
|
+
// childIndex values are relative to different parent groups and cannot be
|
|
728
|
+
// used for interleaving. Fall back to sortOrder (DFS creation order).
|
|
729
|
+
if (hasCollapsedGroups && metaStr(seg.metadata, "type") === "apiReference") {
|
|
730
|
+
return [...leafNodes, ...packageNodes.map((p, i) => ({ node: p.node, pos: leafNodes.length + i }))]
|
|
731
|
+
.sort((a, b) => a.pos - b.pos)
|
|
732
|
+
.map((p) => p.node);
|
|
733
|
+
}
|
|
708
734
|
// Interleave by position when childIndex metadata is available
|
|
709
735
|
const hasChildIndex = packageNodes.some((p) => p.childIndex != null);
|
|
710
736
|
if (!hasChildIndex) {
|
|
@@ -1080,6 +1106,12 @@ function buildSectionTree(ctx, scopeSegs, parentPath, scopePrefix, changelogScop
|
|
|
1080
1106
|
if (hasOwningApiReference(s, scopeSegs) || isNestedApiPackage(s, scopeSegs)) {
|
|
1081
1107
|
return false;
|
|
1082
1108
|
}
|
|
1109
|
+
// Segments marked as sidebar depth 0 are V1 root-level peers and
|
|
1110
|
+
// must never be adopted as children of another section.
|
|
1111
|
+
const depth = metaNum(s.seg.metadata, "sidebarDepth");
|
|
1112
|
+
if (depth === 0) {
|
|
1113
|
+
return false;
|
|
1114
|
+
}
|
|
1083
1115
|
const parent = parentSectionPath(sec);
|
|
1084
1116
|
if (parent === parentPath) {
|
|
1085
1117
|
return true;
|
|
@@ -1144,8 +1176,11 @@ function computeSiblingSortBoundaries(ordered) {
|
|
|
1144
1176
|
rootSections.push(s);
|
|
1145
1177
|
continue;
|
|
1146
1178
|
}
|
|
1179
|
+
const depth = metaNum(s.seg.metadata, "sidebarDepth");
|
|
1147
1180
|
const parent = parentSectionPath(sec);
|
|
1148
|
-
const isRootLevel =
|
|
1181
|
+
const isRootLevel = depth === 0 ||
|
|
1182
|
+
parent === "" ||
|
|
1183
|
+
(!sectionPaths.has(parent) && nearestExistingAncestor(sec, sectionPaths) === "");
|
|
1149
1184
|
if (isRootLevel) {
|
|
1150
1185
|
rootSections.push(s);
|
|
1151
1186
|
}
|
|
@@ -1212,11 +1247,11 @@ function buildSidebarRootChildren(ctx, scopeSegs, scopePrefix, changelogScopePre
|
|
|
1212
1247
|
// │ → emit pages/links inline at their displaySortOrder
|
|
1213
1248
|
// │
|
|
1214
1249
|
// ├─ (B) the root section itself (sec=="", type=="section")
|
|
1215
|
-
// │ → buildSectionTree adopts
|
|
1216
|
-
// │ → emit one sectionNode wrapping the
|
|
1250
|
+
// │ → buildSectionTree adopts nested children (depth > 0)
|
|
1251
|
+
// │ → emit one sectionNode wrapping the subtree
|
|
1217
1252
|
// │
|
|
1218
|
-
// └─ (C) depth-0 sections (parentSectionPath=="")
|
|
1219
|
-
// →
|
|
1253
|
+
// └─ (C) depth-0 sections (sidebarDepth==0 or parentSectionPath=="")
|
|
1254
|
+
// → emit directly as root children (not adopted by B)
|
|
1220
1255
|
//
|
|
1221
1256
|
// Without a root section, depth-0 sections are emitted directly.
|
|
1222
1257
|
//
|
|
@@ -1239,6 +1274,15 @@ function buildSidebarRootChildren(ctx, scopeSegs, scopePrefix, changelogScopePre
|
|
|
1239
1274
|
if (hasOwningApiReference(s, scopeSegs) || isNestedApiPackage(s, scopeSegs)) {
|
|
1240
1275
|
continue;
|
|
1241
1276
|
}
|
|
1277
|
+
// Skip apiPackage segments that share their section path with an
|
|
1278
|
+
// apiReference sibling (skipUrlSlug structural wrappers). Their
|
|
1279
|
+
// children are already claimed by the apiReference via DFS ordering.
|
|
1280
|
+
if (type === "apiPackage") {
|
|
1281
|
+
const hasApiRefSibling = ordered.some((sib) => sib.seg.section === sec && metaStr(sib.seg.metadata, "type") === "apiReference");
|
|
1282
|
+
if (hasApiRefSibling) {
|
|
1283
|
+
continue;
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1242
1286
|
if (type === "tabRoot" && metaBool(s.seg.metadata, "landingPage") === true) {
|
|
1243
1287
|
continue;
|
|
1244
1288
|
}
|
|
@@ -1271,13 +1315,19 @@ function buildSidebarRootChildren(ctx, scopeSegs, scopePrefix, changelogScopePre
|
|
|
1271
1315
|
}
|
|
1272
1316
|
// (C) Depth-0 or orphaned sections — emit at root unless already
|
|
1273
1317
|
// adopted by a root section (B).
|
|
1318
|
+
const depth = metaNum(s.seg.metadata, "sidebarDepth");
|
|
1274
1319
|
const parent = parentSectionPath(sec);
|
|
1275
|
-
const isRootLevel =
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
//
|
|
1279
|
-
//
|
|
1280
|
-
|
|
1320
|
+
const isRootLevel = depth === 0 ||
|
|
1321
|
+
parent === "" ||
|
|
1322
|
+
(!sectionPaths.has(parent) && nearestExistingAncestor(sec, sectionPaths) === "");
|
|
1323
|
+
// Skip sections already adopted by the root section wrapper (B).
|
|
1324
|
+
// Sections with sidebarDepth===0 are true V1 root peers that
|
|
1325
|
+
// buildSectionTree now excludes — they must NOT be skipped.
|
|
1326
|
+
// Sections with sidebarDepth>0 are nested children that SHOULD
|
|
1327
|
+
// be adopted, so they must be skipped to avoid duplication.
|
|
1328
|
+
// Sections without sidebarDepth (old data) are also skipped —
|
|
1329
|
+
// they rely on path-based hierarchy in buildSectionTree.
|
|
1330
|
+
if (isRootLevel && hasRootSection && sec !== "" && depth !== 0) {
|
|
1281
1331
|
continue;
|
|
1282
1332
|
}
|
|
1283
1333
|
if (isRootLevel) {
|
|
@@ -2080,6 +2130,14 @@ function buildProductGroup(ctx, products, scoped, rootSlug, skipSharedSectionMer
|
|
|
2080
2130
|
};
|
|
2081
2131
|
return node;
|
|
2082
2132
|
});
|
|
2133
|
+
// Cross-product canonical slug deduplication (V2 parity).
|
|
2134
|
+
// V2's migrator deduplicates pages across products via a global pageId map:
|
|
2135
|
+
// the first product to register a pageId wins, and subsequent products'
|
|
2136
|
+
// pages with the same pageId receive a canonicalSlug pointing to the
|
|
2137
|
+
// canonical (default-product) page. Without this, shared content that is
|
|
2138
|
+
// materialized under every product scope (e.g. merge-api-basics pages)
|
|
2139
|
+
// appears as separate sitemap entries per product.
|
|
2140
|
+
markCrossProductCanonicalSlugs(children);
|
|
2083
2141
|
return {
|
|
2084
2142
|
type: "productgroup",
|
|
2085
2143
|
id: ctx.nodeId("productgroup"),
|
|
@@ -2088,5 +2146,43 @@ function buildProductGroup(ctx, products, scoped, rootSlug, skipSharedSectionMer
|
|
|
2088
2146
|
children
|
|
2089
2147
|
};
|
|
2090
2148
|
}
|
|
2149
|
+
/**
|
|
2150
|
+
* Deduplicate pages across products using pageId as a content-identity key.
|
|
2151
|
+
* Pages with the same pageId in different products are the same content
|
|
2152
|
+
* materialized per-scope; the default product's slug becomes canonical and
|
|
2153
|
+
* non-default copies receive `canonicalSlug` so the sitemap collapses them.
|
|
2154
|
+
*
|
|
2155
|
+
* API leaf nodes (endpoints, websockets, etc.) are unaffected — `getPageId`
|
|
2156
|
+
* returns undefined for those types, so product-specific API surface is
|
|
2157
|
+
* never suppressed.
|
|
2158
|
+
*/
|
|
2159
|
+
function markCrossProductCanonicalSlugs(productNodes) {
|
|
2160
|
+
const pageIdToCanonical = new Map();
|
|
2161
|
+
// Process default product first so its slugs become the canonical targets.
|
|
2162
|
+
const sorted = [...productNodes].sort((a, b) => {
|
|
2163
|
+
if (a.default !== b.default) {
|
|
2164
|
+
return a.default ? -1 : 1;
|
|
2165
|
+
}
|
|
2166
|
+
return 0;
|
|
2167
|
+
});
|
|
2168
|
+
for (const product of sorted) {
|
|
2169
|
+
FernNavigation.traverseDF(product, (child) => {
|
|
2170
|
+
if (FernNavigation.hasMetadata(child) && FernNavigation.isPage(child)) {
|
|
2171
|
+
const pid = FernNavigation.getPageId(child);
|
|
2172
|
+
if (pid == null) {
|
|
2173
|
+
return;
|
|
2174
|
+
}
|
|
2175
|
+
const key = `pid:${pid}`;
|
|
2176
|
+
const canonical = pageIdToCanonical.get(key);
|
|
2177
|
+
if (canonical != null && !product.default) {
|
|
2178
|
+
child.canonicalSlug = canonical;
|
|
2179
|
+
}
|
|
2180
|
+
else if (canonical == null) {
|
|
2181
|
+
pageIdToCanonical.set(key, child.canonicalSlug ?? child.slug);
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
});
|
|
2185
|
+
}
|
|
2186
|
+
}
|
|
2091
2187
|
// (root keeps the bare "root" id; it is the single tree root.)
|
|
2092
2188
|
//# sourceMappingURL=ledger-root-builder.js.map
|