@fern-api/fdr-sdk 1.2.42-b174eece86 → 1.2.42-e01a8637c3

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 (60) hide show
  1. package/dist/js/client/FdrClient.js +1 -0
  2. package/dist/js/client/FdrClient.js.map +1 -1
  3. package/dist/js/client/FdrClient.mjs +1 -0
  4. package/dist/js/client/FdrClient.mjs.map +1 -1
  5. package/dist/js/index.js +1 -0
  6. package/dist/js/index.js.map +1 -1
  7. package/dist/js/index.mjs +1 -0
  8. package/dist/js/index.mjs.map +1 -1
  9. package/dist/js/navigation/ledger-root-builder.js +115 -24
  10. package/dist/js/navigation/ledger-root-builder.js.map +1 -1
  11. package/dist/js/navigation/ledger-root-builder.mjs +115 -24
  12. package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
  13. package/dist/js/orpc-client.js +1 -0
  14. package/dist/js/orpc-client.js.map +1 -1
  15. package/dist/js/orpc-client.mjs +1 -0
  16. package/dist/js/orpc-client.mjs.map +1 -1
  17. package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts +2 -0
  18. package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts.map +1 -0
  19. package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.js +267 -0
  20. package/dist/navigation/__test__/ledger-root-builder.crossProductDedup.test.js.map +1 -0
  21. package/dist/navigation/__test__/ledger-root-builder.ledgerParity.test.d.ts +2 -0
  22. package/dist/navigation/__test__/ledger-root-builder.ledgerParity.test.d.ts.map +1 -0
  23. package/dist/navigation/__test__/ledger-root-builder.ledgerParity.test.js +306 -0
  24. package/dist/navigation/__test__/ledger-root-builder.ledgerParity.test.js.map +1 -0
  25. package/dist/navigation/__test__/ledger-root-builder.rootChildOrder.test.js +102 -0
  26. package/dist/navigation/__test__/ledger-root-builder.rootChildOrder.test.js.map +1 -1
  27. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts +2 -0
  28. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts.map +1 -0
  29. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.js +273 -0
  30. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.js.map +1 -0
  31. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts +2 -0
  32. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts.map +1 -0
  33. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.js +234 -0
  34. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.js.map +1 -0
  35. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts +2 -0
  36. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts.map +1 -0
  37. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js +256 -0
  38. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js.map +1 -0
  39. package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
  40. package/dist/navigation/ledger-root-builder.js +207 -35
  41. package/dist/navigation/ledger-root-builder.js.map +1 -1
  42. package/dist/orpc-client/docs-ledger/contract.d.ts +9 -0
  43. package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  44. package/dist/orpc-client/docs-ledger/contract.js +1 -0
  45. package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/dist/types/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts +2 -0
  48. package/dist/types/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts.map +1 -0
  49. package/dist/types/navigation/__test__/ledger-root-builder.ledgerParity.test.d.ts +2 -0
  50. package/dist/types/navigation/__test__/ledger-root-builder.ledgerParity.test.d.ts.map +1 -0
  51. package/dist/types/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts +2 -0
  52. package/dist/types/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts.map +1 -0
  53. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts +2 -0
  54. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts.map +1 -0
  55. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts +2 -0
  56. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts.map +1 -0
  57. package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
  58. package/dist/types/orpc-client/docs-ledger/contract.d.ts +9 -0
  59. package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  60. package/package.json +3 -3
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-root-builder.skipSlugSiblingSection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.skipSlugSiblingSection.test.d.ts","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,256 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import * as FernNavigation from "../index.js";
3
+ import { buildFullRootFromSegments } from "../ledger-root-builder.js";
4
+ /**
5
+ * Tests for the case where a section with skipUrlSlug (section="") sits inside
6
+ * a sidebarGroup alongside sibling sections. The `childIndex` metadata field
7
+ * (set by `walkNavSubTrees` on the write side) distinguishes these from true
8
+ * root-section wrappers (direct sidebarRoot children with no childIndex).
9
+ *
10
+ * Without the fix, the builder treats ANY section="" segment as a root wrapper,
11
+ * incorrectly nesting all depth-0 siblings under it and producing spurious
12
+ * breadcrumb entries (e.g. "Introduction > Echo" instead of just "Echo").
13
+ *
14
+ * Real-world repro: mangopay-ledger-test, where the "Introduction" section
15
+ * has skipUrlSlug (slug == tab slug) and shares a sidebarGroup with ~10 peer
16
+ * sections (Users, Echo, SCA, Payouts, …).
17
+ */
18
+ function detail(opts) {
19
+ return {
20
+ id: opts.id,
21
+ displayName: opts.name,
22
+ icon: null,
23
+ sortOrder: 0,
24
+ hidden: false,
25
+ viewers: [],
26
+ orphaned: false,
27
+ featureFlags: [],
28
+ metadata: { slug: opts.slug, default: false, pointsTo: opts.pointsTo }
29
+ };
30
+ }
31
+ function seg(opts) {
32
+ return {
33
+ segmentId: opts.segmentHash,
34
+ segmentHash: opts.segmentHash,
35
+ section: opts.section,
36
+ locale: "en",
37
+ sortOrder: opts.sortOrder ?? 0,
38
+ hidden: false,
39
+ metadata: {
40
+ type: opts.type,
41
+ ...(opts.title != null ? { title: opts.title } : {}),
42
+ ...(opts.childIndex != null ? { childIndex: opts.childIndex } : {})
43
+ },
44
+ product: null,
45
+ version: null,
46
+ variant: null,
47
+ tab: opts.tab ?? null
48
+ };
49
+ }
50
+ function markdownRoute(fullPath, title, pageId) {
51
+ return { type: "markdown", fullPath, hidden: false, metadata: { title, pageId } };
52
+ }
53
+ function buildRoot(opts) {
54
+ return buildFullRootFromSegments({
55
+ basePath: opts.basePath,
56
+ title: "Test",
57
+ segments: opts.segments,
58
+ navBySegment: opts.navBySegment
59
+ });
60
+ }
61
+ function findSectionNodes(root) {
62
+ const sections = [];
63
+ FernNavigation.traverseDF(root, (node) => {
64
+ if (node.type === "section") {
65
+ sections.push(node);
66
+ }
67
+ });
68
+ return sections;
69
+ }
70
+ function findSidebarRootChildren(root) {
71
+ let sidebarChildren = [];
72
+ FernNavigation.traverseDF(root, (node) => {
73
+ if (node.type === "sidebarRoot" && sidebarChildren.length === 0) {
74
+ sidebarChildren = [...node.children];
75
+ }
76
+ });
77
+ return sidebarChildren;
78
+ }
79
+ describe("buildFullRootFromSegments — skipUrlSlug sibling sections are NOT adopted as root-section children", () => {
80
+ // Reproduces the mangopay-ledger-test bug: "Introduction" (section="",
81
+ // childIndex=0) shares a sidebarGroup with "Echo" and "Users".
82
+ // Without the fix, "Echo" and "Users" are incorrectly nested inside
83
+ // "Introduction", adding a spurious "Introduction" breadcrumb to every
84
+ // page under Echo and Users.
85
+ const tab = detail({
86
+ id: "t-guides",
87
+ name: "Guides",
88
+ slug: "guides",
89
+ pointsTo: "guides/e-wallet-system"
90
+ });
91
+ const tabRoot = seg({
92
+ segmentHash: "s-tabroot",
93
+ section: "",
94
+ type: "tabRoot",
95
+ tab
96
+ });
97
+ // "Introduction" section with skipUrlSlug — its slug matches the tab slug,
98
+ // so the write side assigns section="" with childIndex=0 (from walkNavSubTrees).
99
+ const introSection = seg({
100
+ segmentHash: "s-intro",
101
+ section: "",
102
+ type: "section",
103
+ title: "Introduction",
104
+ sortOrder: 1,
105
+ childIndex: 0,
106
+ tab
107
+ });
108
+ // Sibling sections — these should NOT be nested inside Introduction.
109
+ const echoSection = seg({
110
+ segmentHash: "s-echo",
111
+ section: "echo",
112
+ type: "section",
113
+ title: "Echo",
114
+ sortOrder: 2,
115
+ childIndex: 1,
116
+ tab
117
+ });
118
+ const usersSection = seg({
119
+ segmentHash: "s-users",
120
+ section: "users",
121
+ type: "section",
122
+ title: "Users",
123
+ sortOrder: 3,
124
+ childIndex: 2,
125
+ tab
126
+ });
127
+ const segments = [tabRoot, introSection, echoSection, usersSection];
128
+ const navBySegment = new Map([
129
+ ["s-tabroot", []],
130
+ ["s-intro", [markdownRoute("guides/e-wallet-system", "E-wallet system", "pg-ewallet")]],
131
+ [
132
+ "s-echo",
133
+ [
134
+ markdownRoute("guides/echo", "Mangopay Echo", "pg-echo"),
135
+ markdownRoute("guides/echo/reconciliation", "Reconciliation", "pg-recon")
136
+ ]
137
+ ],
138
+ ["s-users", [markdownRoute("guides/users/types", "Types", "pg-user-types")]]
139
+ ]);
140
+ it("sections with childIndex remain siblings, not nested under section='' segment", () => {
141
+ const root = buildRoot({ basePath: "", segments, navBySegment });
142
+ const sections = findSectionNodes(root);
143
+ const introSec = sections.find((s) => s.title === "Introduction");
144
+ const echoSec = sections.find((s) => s.title === "Echo");
145
+ const usersSec = sections.find((s) => s.title === "Users");
146
+ expect(introSec).toBeDefined();
147
+ expect(echoSec).toBeDefined();
148
+ expect(usersSec).toBeDefined();
149
+ // Echo and Users must NOT be children of Introduction.
150
+ const introChildren = (introSec?.children ?? [])
151
+ .filter((c) => c.type === "section")
152
+ .map((c) => c.title);
153
+ expect(introChildren).not.toContain("Echo");
154
+ expect(introChildren).not.toContain("Users");
155
+ // All three should be at the sidebar root level (possibly inside sidebarGroups).
156
+ const sidebarChildren = findSidebarRootChildren(root);
157
+ const topLevelTitles = [];
158
+ for (const child of sidebarChildren) {
159
+ if (child.type === "section") {
160
+ topLevelTitles.push(child.title);
161
+ }
162
+ else if (child.type === "sidebarGroup") {
163
+ for (const gc of child.children) {
164
+ if (gc.type === "section") {
165
+ topLevelTitles.push(gc.title);
166
+ }
167
+ }
168
+ }
169
+ }
170
+ expect(topLevelTitles).toContain("Introduction");
171
+ expect(topLevelTitles).toContain("Echo");
172
+ expect(topLevelTitles).toContain("Users");
173
+ });
174
+ it("breadcrumb for a page inside Echo does NOT include Introduction", () => {
175
+ const root = buildRoot({ basePath: "", segments, navBySegment });
176
+ FernNavigation.utils.mutableUpdatePointsTo(root);
177
+ const found = FernNavigation.utils.findNode(root, FernNavigation.Slug("guides/echo"));
178
+ expect(found.type).toBe("found");
179
+ if (found.type !== "found") {
180
+ return;
181
+ }
182
+ const breadcrumbTitles = found.breadcrumb.map((b) => b.title);
183
+ expect(breadcrumbTitles).toContain("Echo");
184
+ expect(breadcrumbTitles).not.toContain("Introduction");
185
+ });
186
+ it("breadcrumb for a page inside Users does NOT include Introduction", () => {
187
+ const root = buildRoot({ basePath: "", segments, navBySegment });
188
+ FernNavigation.utils.mutableUpdatePointsTo(root);
189
+ const found = FernNavigation.utils.findNode(root, FernNavigation.Slug("guides/users/types"));
190
+ expect(found.type).toBe("found");
191
+ if (found.type !== "found") {
192
+ return;
193
+ }
194
+ const breadcrumbTitles = found.breadcrumb.map((b) => b.title);
195
+ expect(breadcrumbTitles).toContain("Users");
196
+ expect(breadcrumbTitles).not.toContain("Introduction");
197
+ });
198
+ });
199
+ describe("buildFullRootFromSegments — true root-section wrappers (no childIndex) still work", () => {
200
+ // Regression guard: when a section has section="" WITHOUT childIndex,
201
+ // it IS a true root wrapper and should adopt depth-0 children.
202
+ const tab = detail({
203
+ id: "t-docs",
204
+ name: "Docs",
205
+ slug: "docs",
206
+ pointsTo: "docs/overview/intro"
207
+ });
208
+ it("adopts depth-0 children when childIndex is absent", () => {
209
+ const root = buildRoot({
210
+ basePath: "",
211
+ segments: [
212
+ // True root section wrapper (no childIndex)
213
+ seg({
214
+ segmentHash: "s-root",
215
+ section: "",
216
+ type: "section",
217
+ title: "Overview",
218
+ tab
219
+ }),
220
+ seg({
221
+ segmentHash: "s-gs",
222
+ section: "get-started",
223
+ type: "section",
224
+ title: "Get Started",
225
+ sortOrder: 1,
226
+ tab
227
+ }),
228
+ seg({
229
+ segmentHash: "s-adv",
230
+ section: "advanced",
231
+ type: "section",
232
+ title: "Advanced",
233
+ sortOrder: 2,
234
+ tab
235
+ })
236
+ ],
237
+ navBySegment: new Map([
238
+ ["s-root", [markdownRoute("docs/overview/intro", "Intro", "pg-intro")]],
239
+ ["s-gs", [markdownRoute("docs/overview/get-started/setup", "Setup", "pg-setup")]],
240
+ ["s-adv", [markdownRoute("docs/overview/advanced/tips", "Tips", "pg-tips")]]
241
+ ])
242
+ });
243
+ const sections = findSectionNodes(root);
244
+ const overviewSec = sections.find((s) => s.title === "Overview");
245
+ expect(overviewSec).toBeDefined();
246
+ // Child sections should be nested under Overview (root wrapper behavior)
247
+ const childTitles = (overviewSec?.children ?? [])
248
+ .filter((c) => c.type === "section")
249
+ .map((c) => c.title);
250
+ expect(childTitles).toContain("Get Started");
251
+ expect(childTitles).toContain("Advanced");
252
+ // 3 total sections (Overview + Get Started + Advanced), not duplicated
253
+ expect(sections.length).toBe(3);
254
+ });
255
+ });
256
+ //# sourceMappingURL=ledger-root-builder.skipSlugSiblingSection.test.js.map
@@ -0,0 +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 +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;AAiWD;;;;;;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;AAkmBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAmF5F"}
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;AAurBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAmF5F"}