@fern-api/fdr-sdk 1.2.42-d3871329d3 → 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 (58) 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 +107 -22
  10. package/dist/js/navigation/ledger-root-builder.js.map +1 -1
  11. package/dist/js/navigation/ledger-root-builder.mjs +107 -22
  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.sidebarDepth.test.d.ts +2 -0
  26. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts.map +1 -0
  27. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.js +273 -0
  28. package/dist/navigation/__test__/ledger-root-builder.sidebarDepth.test.js.map +1 -0
  29. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts +2 -0
  30. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts.map +1 -0
  31. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.js +234 -0
  32. package/dist/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.js.map +1 -0
  33. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts +2 -0
  34. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts.map +1 -0
  35. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js +256 -0
  36. package/dist/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.js.map +1 -0
  37. package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
  38. package/dist/navigation/ledger-root-builder.js +192 -33
  39. package/dist/navigation/ledger-root-builder.js.map +1 -1
  40. package/dist/orpc-client/docs-ledger/contract.d.ts +9 -0
  41. package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  42. package/dist/orpc-client/docs-ledger/contract.js +1 -0
  43. package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/dist/types/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts +2 -0
  46. package/dist/types/navigation/__test__/ledger-root-builder.crossProductDedup.test.d.ts.map +1 -0
  47. package/dist/types/navigation/__test__/ledger-root-builder.ledgerParity.test.d.ts +2 -0
  48. package/dist/types/navigation/__test__/ledger-root-builder.ledgerParity.test.d.ts.map +1 -0
  49. package/dist/types/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts +2 -0
  50. package/dist/types/navigation/__test__/ledger-root-builder.sidebarDepth.test.d.ts.map +1 -0
  51. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts +2 -0
  52. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugGroupOrdering.test.d.ts.map +1 -0
  53. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts +2 -0
  54. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugSiblingSection.test.d.ts.map +1 -0
  55. package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
  56. package/dist/types/orpc-client/docs-ledger/contract.d.ts +9 -0
  57. package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  58. package/package.json +3 -3
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-root-builder.crossProductDedup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.crossProductDedup.test.d.ts","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.crossProductDedup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,267 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import * as FernNavigation from "../index.js";
3
+ import { buildFullRootFromSegments } from "../ledger-root-builder.js";
4
+ function detail(opts) {
5
+ return {
6
+ id: opts.id,
7
+ displayName: opts.name,
8
+ icon: null,
9
+ sortOrder: 0,
10
+ hidden: false,
11
+ viewers: [],
12
+ orphaned: false,
13
+ featureFlags: [],
14
+ metadata: { slug: opts.slug, default: opts.isDefault ?? false, pointsTo: opts.pointsTo }
15
+ };
16
+ }
17
+ function seg(opts) {
18
+ return {
19
+ segmentId: opts.segmentHash,
20
+ segmentHash: opts.segmentHash,
21
+ section: opts.section ?? "",
22
+ locale: "en",
23
+ sortOrder: 0,
24
+ hidden: false,
25
+ metadata: opts.metadata ?? { type: "section" },
26
+ product: opts.product,
27
+ version: null,
28
+ variant: null,
29
+ tab: null
30
+ };
31
+ }
32
+ function mdRoute(opts) {
33
+ return {
34
+ type: "markdown",
35
+ fullPath: opts.fullPath,
36
+ hidden: false,
37
+ metadata: { title: opts.title, pageId: opts.pageId }
38
+ };
39
+ }
40
+ function epRoute(opts) {
41
+ return {
42
+ type: "endpoint-pair",
43
+ fullPath: opts.fullPath,
44
+ stream: null,
45
+ hidden: false,
46
+ metadata: {
47
+ title: opts.title,
48
+ endpointId: opts.endpointId,
49
+ method: opts.method,
50
+ apiDefinitionId: opts.apiDefinitionId,
51
+ isResponseStream: false
52
+ }
53
+ };
54
+ }
55
+ function findCanonicalSlug(root, slug) {
56
+ const result = FernNavigation.utils.findNode(root, FernNavigation.Slug(slug));
57
+ if (result.type === "found") {
58
+ return result.node.canonicalSlug;
59
+ }
60
+ return undefined;
61
+ }
62
+ describe("buildFullRootFromSegments - cross-product canonical slug deduplication", () => {
63
+ it("deduplicates shared pages across products via pageId", () => {
64
+ const defaultProduct = detail({
65
+ id: "p-hris",
66
+ name: "HRIS",
67
+ slug: "hris",
68
+ isDefault: true,
69
+ pointsTo: "hris/authentication"
70
+ });
71
+ const nonDefaultProduct = detail({
72
+ id: "p-accounting",
73
+ name: "Accounting",
74
+ slug: "accounting",
75
+ pointsTo: "accounting/authentication"
76
+ });
77
+ const root = buildFullRootFromSegments({
78
+ basePath: "",
79
+ title: "Merge",
80
+ segments: [
81
+ seg({ segmentHash: "seg-hris", product: defaultProduct }),
82
+ seg({ segmentHash: "seg-accounting", product: nonDefaultProduct })
83
+ ],
84
+ navBySegment: new Map([
85
+ [
86
+ "seg-hris",
87
+ [mdRoute({ fullPath: "hris/authentication", title: "Authentication", pageId: "pg-auth" })]
88
+ ],
89
+ [
90
+ "seg-accounting",
91
+ [
92
+ mdRoute({ fullPath: "accounting/authentication", title: "Authentication", pageId: "pg-auth" })
93
+ ]
94
+ ]
95
+ ])
96
+ });
97
+ // Default product's page: no cross-product canonicalSlug
98
+ expect(findCanonicalSlug(root, "hris/authentication")).toBeUndefined();
99
+ // Non-default product's shared page points to the default
100
+ expect(findCanonicalSlug(root, "accounting/authentication")).toBe("hris/authentication");
101
+ });
102
+ it("does NOT deduplicate pages with different pageIds", () => {
103
+ const defaultProduct = detail({
104
+ id: "p-hris",
105
+ name: "HRIS",
106
+ slug: "hris",
107
+ isDefault: true,
108
+ pointsTo: "hris/guide"
109
+ });
110
+ const nonDefaultProduct = detail({
111
+ id: "p-accounting",
112
+ name: "Accounting",
113
+ slug: "accounting",
114
+ pointsTo: "accounting/guide"
115
+ });
116
+ const root = buildFullRootFromSegments({
117
+ basePath: "",
118
+ title: "Merge",
119
+ segments: [
120
+ seg({ segmentHash: "seg-hris", product: defaultProduct }),
121
+ seg({ segmentHash: "seg-accounting", product: nonDefaultProduct })
122
+ ],
123
+ navBySegment: new Map([
124
+ ["seg-hris", [mdRoute({ fullPath: "hris/guide", title: "Guide", pageId: "pg-hris-guide" })]],
125
+ [
126
+ "seg-accounting",
127
+ [mdRoute({ fullPath: "accounting/guide", title: "Guide", pageId: "pg-acct-guide" })]
128
+ ]
129
+ ])
130
+ });
131
+ expect(findCanonicalSlug(root, "hris/guide")).toBeUndefined();
132
+ expect(findCanonicalSlug(root, "accounting/guide")).toBeUndefined();
133
+ });
134
+ it("does NOT deduplicate API endpoint nodes across products", () => {
135
+ const defaultProduct = detail({
136
+ id: "p-hris",
137
+ name: "HRIS",
138
+ slug: "hris",
139
+ isDefault: true,
140
+ pointsTo: "hris/list-employees"
141
+ });
142
+ const nonDefaultProduct = detail({
143
+ id: "p-accounting",
144
+ name: "Accounting",
145
+ slug: "accounting",
146
+ pointsTo: "accounting/list-accounts"
147
+ });
148
+ const root = buildFullRootFromSegments({
149
+ basePath: "",
150
+ title: "Merge",
151
+ segments: [
152
+ seg({
153
+ segmentHash: "seg-hris-api",
154
+ product: defaultProduct,
155
+ metadata: { type: "apiReference", apiDefinitionId: "api-hris" }
156
+ }),
157
+ seg({
158
+ segmentHash: "seg-acct-api",
159
+ product: nonDefaultProduct,
160
+ metadata: { type: "apiReference", apiDefinitionId: "api-acct" }
161
+ })
162
+ ],
163
+ navBySegment: new Map([
164
+ [
165
+ "seg-hris-api",
166
+ [
167
+ epRoute({
168
+ fullPath: "hris/list-employees",
169
+ title: "List Employees",
170
+ endpointId: "list-employees",
171
+ method: "GET",
172
+ apiDefinitionId: "api-hris"
173
+ })
174
+ ]
175
+ ],
176
+ [
177
+ "seg-acct-api",
178
+ [
179
+ epRoute({
180
+ fullPath: "accounting/list-accounts",
181
+ title: "List Accounts",
182
+ endpointId: "list-accounts",
183
+ method: "GET",
184
+ apiDefinitionId: "api-acct"
185
+ })
186
+ ]
187
+ ]
188
+ ])
189
+ });
190
+ expect(findCanonicalSlug(root, "hris/list-employees")).toBeUndefined();
191
+ expect(findCanonicalSlug(root, "accounting/list-accounts")).toBeUndefined();
192
+ });
193
+ it("deduplicates shared pages across many products (Merge-like fan-out)", () => {
194
+ const productNames = ["hris", "accounting", "ats", "crm"];
195
+ const sharedPageId = "pg-rate-limits";
196
+ const products = productNames.map((name, i) => detail({
197
+ id: `p-${name}`,
198
+ name,
199
+ slug: name,
200
+ isDefault: i === 0,
201
+ pointsTo: `${name}/rate-limits`
202
+ }));
203
+ const segments = productNames.map((name, i) => seg({ segmentHash: `seg-${name}`, product: products[i] }));
204
+ const routes = productNames.map((name) => mdRoute({ fullPath: `${name}/rate-limits`, title: "Rate Limits", pageId: sharedPageId }));
205
+ const root = buildFullRootFromSegments({
206
+ basePath: "",
207
+ title: "Merge",
208
+ segments: segments,
209
+ navBySegment: new Map(productNames.map((name, i) => [`seg-${name}`, [routes[i]]]))
210
+ });
211
+ // Default product (hris): no canonicalSlug
212
+ expect(findCanonicalSlug(root, "hris/rate-limits")).toBeUndefined();
213
+ // All non-default products' shared pages point to the default
214
+ for (const name of productNames.slice(1)) {
215
+ expect(findCanonicalSlug(root, `${name}/rate-limits`)).toBe("hris/rate-limits");
216
+ }
217
+ });
218
+ it("leaves product-specific pages alone when shared pages are deduped", () => {
219
+ const defaultProduct = detail({
220
+ id: "p-hris",
221
+ name: "HRIS",
222
+ slug: "hris",
223
+ isDefault: true,
224
+ pointsTo: "hris/authentication"
225
+ });
226
+ const nonDefaultProduct = detail({
227
+ id: "p-accounting",
228
+ name: "Accounting",
229
+ slug: "accounting",
230
+ pointsTo: "accounting/authentication"
231
+ });
232
+ const root = buildFullRootFromSegments({
233
+ basePath: "",
234
+ title: "Merge",
235
+ segments: [
236
+ seg({ segmentHash: "seg-hris", product: defaultProduct }),
237
+ seg({ segmentHash: "seg-accounting", product: nonDefaultProduct })
238
+ ],
239
+ navBySegment: new Map([
240
+ [
241
+ "seg-hris",
242
+ [
243
+ mdRoute({ fullPath: "hris/authentication", title: "Authentication", pageId: "pg-auth" }),
244
+ mdRoute({ fullPath: "hris/employee-guide", title: "Employee Guide", pageId: "pg-emp-guide" })
245
+ ]
246
+ ],
247
+ [
248
+ "seg-accounting",
249
+ [
250
+ mdRoute({ fullPath: "accounting/authentication", title: "Authentication", pageId: "pg-auth" }),
251
+ mdRoute({
252
+ fullPath: "accounting/invoice-guide",
253
+ title: "Invoice Guide",
254
+ pageId: "pg-inv-guide"
255
+ })
256
+ ]
257
+ ]
258
+ ])
259
+ });
260
+ // Shared page in non-default product is deduped
261
+ expect(findCanonicalSlug(root, "accounting/authentication")).toBe("hris/authentication");
262
+ // Product-specific pages are untouched
263
+ expect(findCanonicalSlug(root, "hris/employee-guide")).toBeUndefined();
264
+ expect(findCanonicalSlug(root, "accounting/invoice-guide")).toBeUndefined();
265
+ });
266
+ });
267
+ //# sourceMappingURL=ledger-root-builder.crossProductDedup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.crossProductDedup.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.crossProductDedup.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-root-builder.ledgerParity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.ledgerParity.test.d.ts","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.ledgerParity.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,306 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildFullRootFromSegments } from "../ledger-root-builder.js";
3
+ function segment(opts) {
4
+ return {
5
+ segmentId: opts.segmentHash,
6
+ segmentHash: opts.segmentHash,
7
+ section: opts.section,
8
+ locale: "en",
9
+ sortOrder: opts.sortOrder,
10
+ hidden: false,
11
+ metadata: opts.metadata,
12
+ product: null,
13
+ version: null,
14
+ variant: opts.variant ?? null,
15
+ tab: null
16
+ };
17
+ }
18
+ function pageRoute(opts) {
19
+ return {
20
+ type: "markdown",
21
+ fullPath: opts.fullPath,
22
+ hidden: false,
23
+ displaySortOrder: opts.displaySortOrder,
24
+ metadata: { title: opts.title, pageId: opts.pageId ?? `${opts.fullPath}.mdx` }
25
+ };
26
+ }
27
+ function changelogRoute(opts) {
28
+ return {
29
+ type: "changelog",
30
+ fullPath: opts.fullPath,
31
+ hidden: false,
32
+ displaySortOrder: opts.displaySortOrder,
33
+ metadata: {
34
+ title: opts.title,
35
+ pageId: `${opts.fullPath}.mdx`,
36
+ date: opts.date
37
+ }
38
+ };
39
+ }
40
+ const pythonVariant = {
41
+ id: "variant-python",
42
+ displayName: "Python",
43
+ icon: undefined,
44
+ sortOrder: 0,
45
+ hidden: false,
46
+ viewers: [],
47
+ orphaned: false,
48
+ featureFlags: [],
49
+ metadata: { slug: "python", default: true }
50
+ };
51
+ const typescriptVariant = {
52
+ id: "variant-typescript",
53
+ displayName: "TypeScript",
54
+ icon: undefined,
55
+ sortOrder: 1,
56
+ hidden: false,
57
+ viewers: [],
58
+ orphaned: false,
59
+ featureFlags: [],
60
+ metadata: { slug: "typescript" }
61
+ };
62
+ function collectByType(node, type) {
63
+ const results = [];
64
+ function walk(value) {
65
+ if (value == null || typeof value !== "object") {
66
+ return;
67
+ }
68
+ const current = value;
69
+ if (current.type === type) {
70
+ results.push(current);
71
+ }
72
+ for (const child of current.children ?? []) {
73
+ walk(child);
74
+ }
75
+ if (current.child != null) {
76
+ walk(current.child);
77
+ }
78
+ if (current.changelog != null) {
79
+ walk(current.changelog);
80
+ }
81
+ }
82
+ walk(node);
83
+ return results;
84
+ }
85
+ function buildRoot(opts) {
86
+ return buildFullRootFromSegments({
87
+ basePath: "",
88
+ title: "Ledger parity",
89
+ segments: opts.segments,
90
+ navBySegment: (opts.navBySegment ?? new Map())
91
+ });
92
+ }
93
+ describe("buildFullRootFromSegments — ledger/v2 parity repros", () => {
94
+ it("scopes structural children below their owning variant slug", () => {
95
+ const root = buildRoot({
96
+ segments: [
97
+ segment({
98
+ segmentHash: "seg-python-guides",
99
+ section: "guides",
100
+ sortOrder: 0,
101
+ metadata: { type: "section", title: "Guides" },
102
+ variant: pythonVariant
103
+ }),
104
+ segment({
105
+ segmentHash: "seg-typescript-guides",
106
+ section: "guides",
107
+ sortOrder: 1,
108
+ metadata: { type: "section", title: "Guides" },
109
+ variant: typescriptVariant
110
+ })
111
+ ]
112
+ });
113
+ expect(collectByType(root, "section")
114
+ .map((node) => node.slug)
115
+ .sort()).toEqual(["python/guides", "typescript/guides"]);
116
+ });
117
+ it("keeps api packages under the matching api definition", () => {
118
+ const root = buildRoot({
119
+ segments: [
120
+ segment({
121
+ segmentHash: "seg-api-a",
122
+ section: "",
123
+ sortOrder: 0,
124
+ metadata: { type: "apiReference", title: "Plant API", apiDefinitionId: "api-a" }
125
+ }),
126
+ segment({
127
+ segmentHash: "seg-users",
128
+ section: "users",
129
+ sortOrder: 1,
130
+ metadata: { type: "apiPackage", title: "Users", apiDefinitionId: "api-a" }
131
+ }),
132
+ segment({
133
+ segmentHash: "seg-api-b",
134
+ section: "",
135
+ sortOrder: 2,
136
+ metadata: { type: "apiReference", title: "Garden API", apiDefinitionId: "api-b" }
137
+ }),
138
+ segment({
139
+ segmentHash: "seg-orgs",
140
+ section: "orgs",
141
+ sortOrder: 3,
142
+ metadata: { type: "apiPackage", title: "Orgs", apiDefinitionId: "api-b" }
143
+ })
144
+ ]
145
+ });
146
+ const apiReferences = collectByType(root, "apiReference");
147
+ const plantApi = apiReferences.find((node) => node.title === "Plant API");
148
+ const gardenApi = apiReferences.find((node) => node.title === "Garden API");
149
+ expect(plantApi?.children?.map((node) => node.title)).toEqual(["Users"]);
150
+ expect(gardenApi?.children?.map((node) => node.title)).toEqual(["Orgs"]);
151
+ });
152
+ it("attaches an api changelog only to the matching repeated api reference", () => {
153
+ const root = buildRoot({
154
+ segments: [
155
+ segment({
156
+ segmentHash: "seg-public-api",
157
+ section: "public",
158
+ sortOrder: 0,
159
+ metadata: { type: "apiReference", title: "Public API", apiDefinitionId: "plants" }
160
+ }),
161
+ segment({
162
+ segmentHash: "seg-internal-api",
163
+ section: "internal",
164
+ sortOrder: 1,
165
+ metadata: { type: "apiReference", title: "Internal API", apiDefinitionId: "plants" }
166
+ }),
167
+ segment({
168
+ segmentHash: "seg-internal-changelog",
169
+ section: "internal/changelog",
170
+ sortOrder: 2,
171
+ metadata: { type: "changelog", title: "Internal changelog", apiDefinitionId: "plants" }
172
+ })
173
+ ],
174
+ navBySegment: new Map([
175
+ [
176
+ "seg-internal-changelog",
177
+ [
178
+ changelogRoute({
179
+ fullPath: "internal/changelog/2026/06/23/plant-updates",
180
+ title: "Plant updates",
181
+ date: "2026-06-23"
182
+ })
183
+ ]
184
+ ]
185
+ ])
186
+ });
187
+ const publicApi = collectByType(root, "apiReference").find((node) => node.title === "Public API");
188
+ const internalApi = collectByType(root, "apiReference").find((node) => node.title === "Internal API");
189
+ expect(publicApi?.changelog).toBeUndefined();
190
+ expect(internalApi?.changelog?.title).toBe("Internal changelog");
191
+ });
192
+ it("keeps duplicate nested sections from adopting sibling children", () => {
193
+ const root = buildRoot({
194
+ segments: [
195
+ segment({
196
+ segmentHash: "seg-guides",
197
+ section: "guides",
198
+ sortOrder: 0,
199
+ metadata: { type: "section", title: "Guides" }
200
+ }),
201
+ segment({
202
+ segmentHash: "seg-foo-a",
203
+ section: "guides/foo",
204
+ sortOrder: 10,
205
+ metadata: { type: "section", title: "Foo A" }
206
+ }),
207
+ segment({
208
+ segmentHash: "seg-a",
209
+ section: "guides/foo/a",
210
+ sortOrder: 11,
211
+ metadata: { type: "section", title: "A" }
212
+ }),
213
+ segment({
214
+ segmentHash: "seg-foo-b",
215
+ section: "guides/foo",
216
+ sortOrder: 20,
217
+ metadata: { type: "section", title: "Foo B" }
218
+ }),
219
+ segment({
220
+ segmentHash: "seg-b",
221
+ section: "guides/foo/b",
222
+ sortOrder: 21,
223
+ metadata: { type: "section", title: "B" }
224
+ })
225
+ ]
226
+ });
227
+ const fooA = collectByType(root, "section").find((node) => node.title === "Foo A");
228
+ const fooB = collectByType(root, "section").find((node) => node.title === "Foo B");
229
+ expect(fooA?.children?.map((node) => node.title)).toEqual(["A"]);
230
+ expect(fooB?.children?.map((node) => node.title)).toEqual(["B"]);
231
+ });
232
+ it("groups standalone changelogs with adjacent loose pages", () => {
233
+ const root = buildRoot({
234
+ segments: [
235
+ segment({
236
+ segmentHash: "seg-root",
237
+ section: "",
238
+ sortOrder: 0,
239
+ metadata: { type: "tabRoot" }
240
+ }),
241
+ segment({
242
+ segmentHash: "seg-changelog",
243
+ section: "changelog",
244
+ sortOrder: 1,
245
+ metadata: { type: "changelog", title: "Changelog", childIndex: 1 }
246
+ })
247
+ ],
248
+ navBySegment: new Map([
249
+ [
250
+ "seg-root",
251
+ [
252
+ pageRoute({ fullPath: "overview", title: "Overview", displaySortOrder: 0 }),
253
+ pageRoute({ fullPath: "guides", title: "Guides", displaySortOrder: 2 })
254
+ ]
255
+ ],
256
+ [
257
+ "seg-changelog",
258
+ [
259
+ changelogRoute({
260
+ fullPath: "changelog/2026/06/23/new-plant",
261
+ title: "New plant",
262
+ date: "2026-06-23"
263
+ })
264
+ ]
265
+ ]
266
+ ])
267
+ });
268
+ const sidebarGroups = collectByType(root, "sidebarGroup");
269
+ expect(sidebarGroups).toHaveLength(1);
270
+ expect(sidebarGroups[0]?.children?.map((node) => node.type)).toEqual(["page", "changelog", "page"]);
271
+ });
272
+ it("preserves api reference paginated metadata", () => {
273
+ const root = buildRoot({
274
+ segments: [
275
+ segment({
276
+ segmentHash: "seg-unpaginated-api",
277
+ section: "api",
278
+ sortOrder: 0,
279
+ metadata: { type: "apiReference", title: "API", apiDefinitionId: "plants", paginated: false }
280
+ }),
281
+ segment({
282
+ segmentHash: "seg-paginated-api",
283
+ section: "paginated-api",
284
+ sortOrder: 1,
285
+ metadata: {
286
+ type: "apiReference",
287
+ title: "Paginated API",
288
+ apiDefinitionId: "paginated-plants",
289
+ paginated: true
290
+ }
291
+ }),
292
+ segment({
293
+ segmentHash: "seg-default-api",
294
+ section: "default-api",
295
+ sortOrder: 2,
296
+ metadata: { type: "apiReference", title: "Default API", apiDefinitionId: "default-plants" }
297
+ })
298
+ ]
299
+ });
300
+ const apis = collectByType(root, "apiReference");
301
+ expect(apis.find((api) => api.title === "API")?.paginated).toBe(false);
302
+ expect(apis.find((api) => api.title === "Paginated API")?.paginated).toBe(true);
303
+ expect(apis.find((api) => api.title === "Default API")?.paginated).toBeUndefined();
304
+ });
305
+ });
306
+ //# sourceMappingURL=ledger-root-builder.ledgerParity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.ledgerParity.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.ledgerParity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,SAAS,OAAO,CAAC,IAMhB;IACG,OAAO;QACH,SAAS,EAAE,IAAI,CAAC,WAAW;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,GAAG,EAAE,IAAI;KACZ,CAAC;AACN,CAAC;AAED,SAAS,SAAS,CAAC,IAAqF;IACpG,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,KAAK;QACb,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,MAAM,EAAE;KACjF,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,IAAkF;IACtG,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,KAAK;QACb,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB;KACJ,CAAC;AACN,CAAC;AAED,MAAM,aAAa,GAAG;IAClB,EAAE,EAAE,gBAAgB;IACpB,WAAW,EAAE,QAAQ;IACrB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;CAC9C,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACtB,EAAE,EAAE,oBAAoB;IACxB,WAAW,EAAE,YAAY;IACzB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;CACnC,CAAC;AAaF,SAAS,aAAa,CAAC,IAAa,EAAE,IAAY;IAC9C,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,SAAS,IAAI,CAAC,KAAc;QACxB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,KAAiB,CAAC;QAClC,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,IAGlB;IACG,OAAO,yBAAyB,CAAC;QAC7B,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,IAAI,CAAC,QAAiB;QAChC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,EAAE,CAAU;KAC1D,CAAC,CAAC;AACP,CAAC;AAED,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;IACjE,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QAClE,MAAM,IAAI,GAAG,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,OAAO,CAAC;oBACJ,WAAW,EAAE,mBAAmB;oBAChC,OAAO,EAAE,QAAQ;oBACjB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC9C,OAAO,EAAE,aAAa;iBACzB,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,uBAAuB;oBACpC,OAAO,EAAE,QAAQ;oBACjB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC9C,OAAO,EAAE,iBAAiB;iBAC7B,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,MAAM,CACF,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;aACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,EAAE,CACd,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAG,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,OAAO,CAAC;oBACJ,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE;iBACnF,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,OAAO;oBAChB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE;iBAC7E,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE;iBACpF,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,MAAM;oBACf,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE;iBAC5E,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;QAE5E,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,OAAO,CAAC;oBACJ,WAAW,EAAE,gBAAgB;oBAC7B,OAAO,EAAE,QAAQ;oBACjB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE;iBACrF,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,kBAAkB;oBAC/B,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE;iBACvF,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,wBAAwB;oBACrC,OAAO,EAAE,oBAAoB;oBAC7B,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,QAAQ,EAAE;iBAC1F,CAAC;aACL;YACD,YAAY,EAAE,IAAI,GAAG,CAAC;gBAClB;oBACI,wBAAwB;oBACxB;wBACI,cAAc,CAAC;4BACX,QAAQ,EAAE,6CAA6C;4BACvD,KAAK,EAAE,eAAe;4BACtB,IAAI,EAAE,YAAY;yBACrB,CAAC;qBACL;iBACJ;aACJ,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;QAEtG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,OAAO,CAAC;oBACJ,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,QAAQ;oBACjB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACjD,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,YAAY;oBACrB,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;iBAChD,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,cAAc;oBACvB,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC5C,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,YAAY;oBACrB,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;iBAChD,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,cAAc;oBACvB,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC5C,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QAEnF,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,OAAO,CAAC;oBACJ,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAChC,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,eAAe;oBAC5B,OAAO,EAAE,WAAW;oBACpB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE;iBACrE,CAAC;aACL;YACD,YAAY,EAAE,IAAI,GAAG,CAAC;gBAClB;oBACI,UAAU;oBACV;wBACI,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;wBAC3E,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;qBAC1E;iBACJ;gBACD;oBACI,eAAe;oBACf;wBACI,cAAc,CAAC;4BACX,QAAQ,EAAE,gCAAgC;4BAC1C,KAAK,EAAE,WAAW;4BAClB,IAAI,EAAE,YAAY;yBACrB,CAAC;qBACL;iBACJ;aACJ,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAE1D,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,SAAS,CAAC;YACnB,QAAQ,EAAE;gBACN,OAAO,CAAC;oBACJ,WAAW,EAAE,qBAAqB;oBAClC,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;iBAChG,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,mBAAmB;oBAChC,OAAO,EAAE,eAAe;oBACxB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE;wBACN,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,eAAe;wBACtB,eAAe,EAAE,kBAAkB;wBACnC,SAAS,EAAE,IAAI;qBAClB;iBACJ,CAAC;gBACF,OAAO,CAAC;oBACJ,WAAW,EAAE,iBAAiB;oBAC9B,OAAO,EAAE,aAAa;oBACtB,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE;iBAC9F,CAAC;aACL;SACJ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IACvF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-root-builder.sidebarDepth.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.sidebarDepth.test.d.ts","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.sidebarDepth.test.ts"],"names":[],"mappings":""}