@fern-api/fdr-sdk 1.2.39-4ae10c3282 → 1.2.39-4e8e68c5b4

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/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/converters/index.js +4 -9
  6. package/dist/js/converters/index.js.map +1 -1
  7. package/dist/js/converters/index.mjs +4 -9
  8. package/dist/js/converters/index.mjs.map +1 -1
  9. package/dist/js/index.js +5 -9
  10. package/dist/js/index.js.map +1 -1
  11. package/dist/js/index.mjs +5 -9
  12. package/dist/js/index.mjs.map +1 -1
  13. package/dist/js/navigation/index.js +4 -9
  14. package/dist/js/navigation/index.js.map +1 -1
  15. package/dist/js/navigation/index.mjs +4 -9
  16. package/dist/js/navigation/index.mjs.map +1 -1
  17. package/dist/js/navigation/ledger-root-builder.js +241 -63
  18. package/dist/js/navigation/ledger-root-builder.js.map +1 -1
  19. package/dist/js/navigation/ledger-root-builder.mjs +241 -63
  20. package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
  21. package/dist/js/orpc-client.js +1 -0
  22. package/dist/js/orpc-client.js.map +1 -1
  23. package/dist/js/orpc-client.mjs +1 -0
  24. package/dist/js/orpc-client.mjs.map +1 -1
  25. package/dist/navigation/__test__/findNode.authedRedirect.test.d.ts +2 -0
  26. package/dist/navigation/__test__/findNode.authedRedirect.test.d.ts.map +1 -0
  27. package/dist/navigation/__test__/findNode.authedRedirect.test.js +184 -0
  28. package/dist/navigation/__test__/findNode.authedRedirect.test.js.map +1 -0
  29. package/dist/navigation/__test__/ledger-root-builder.apiReferenceChildren.test.d.ts +2 -0
  30. package/dist/navigation/__test__/ledger-root-builder.apiReferenceChildren.test.d.ts.map +1 -0
  31. package/dist/navigation/__test__/ledger-root-builder.apiReferenceChildren.test.js +85 -0
  32. package/dist/navigation/__test__/ledger-root-builder.apiReferenceChildren.test.js.map +1 -0
  33. package/dist/navigation/__test__/ledger-root-builder.collapsedDeterminism.test.d.ts +2 -0
  34. package/dist/navigation/__test__/ledger-root-builder.collapsedDeterminism.test.d.ts.map +1 -0
  35. package/dist/navigation/__test__/ledger-root-builder.collapsedDeterminism.test.js +85 -0
  36. package/dist/navigation/__test__/ledger-root-builder.collapsedDeterminism.test.js.map +1 -0
  37. package/dist/navigation/__test__/ledger-root-builder.landingPage.test.d.ts +2 -0
  38. package/dist/navigation/__test__/ledger-root-builder.landingPage.test.d.ts.map +1 -0
  39. package/dist/navigation/__test__/ledger-root-builder.landingPage.test.js +82 -0
  40. package/dist/navigation/__test__/ledger-root-builder.landingPage.test.js.map +1 -0
  41. package/dist/navigation/__test__/ledger-root-builder.metadataPreservation.test.d.ts +2 -0
  42. package/dist/navigation/__test__/ledger-root-builder.metadataPreservation.test.d.ts.map +1 -0
  43. package/dist/navigation/__test__/ledger-root-builder.metadataPreservation.test.js +1031 -0
  44. package/dist/navigation/__test__/ledger-root-builder.metadataPreservation.test.js.map +1 -0
  45. package/dist/navigation/__test__/ledger-root-builder.rootChildOrder.test.js +22 -9
  46. package/dist/navigation/__test__/ledger-root-builder.rootChildOrder.test.js.map +1 -1
  47. package/dist/navigation/__test__/ledger-root-builder.rootSlug.test.d.ts +2 -0
  48. package/dist/navigation/__test__/ledger-root-builder.rootSlug.test.d.ts.map +1 -0
  49. package/dist/navigation/__test__/ledger-root-builder.rootSlug.test.js +47 -0
  50. package/dist/navigation/__test__/ledger-root-builder.rootSlug.test.js.map +1 -0
  51. package/dist/navigation/__test__/ledger-root-builder.skipSlugApiReference.test.d.ts +2 -0
  52. package/dist/navigation/__test__/ledger-root-builder.skipSlugApiReference.test.d.ts.map +1 -0
  53. package/dist/navigation/__test__/ledger-root-builder.skipSlugApiReference.test.js +210 -0
  54. package/dist/navigation/__test__/ledger-root-builder.skipSlugApiReference.test.js.map +1 -0
  55. package/dist/navigation/__test__/ledger-root-builder.variantSharedSegments.test.d.ts +2 -0
  56. package/dist/navigation/__test__/ledger-root-builder.variantSharedSegments.test.d.ts.map +1 -0
  57. package/dist/navigation/__test__/ledger-root-builder.variantSharedSegments.test.js +262 -0
  58. package/dist/navigation/__test__/ledger-root-builder.variantSharedSegments.test.js.map +1 -0
  59. package/dist/navigation/ledger-root-builder.d.ts +17 -1
  60. package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
  61. package/dist/navigation/ledger-root-builder.js +318 -80
  62. package/dist/navigation/ledger-root-builder.js.map +1 -1
  63. package/dist/navigation/utils/findNode.d.ts +1 -0
  64. package/dist/navigation/utils/findNode.d.ts.map +1 -1
  65. package/dist/navigation/utils/findNode.js +3 -11
  66. package/dist/navigation/utils/findNode.js.map +1 -1
  67. package/dist/navigation/utils/followRedirect.d.ts.map +1 -1
  68. package/dist/navigation/utils/followRedirect.js +2 -0
  69. package/dist/navigation/utils/followRedirect.js.map +1 -1
  70. package/dist/orpc-client/docs-ledger/contract.d.ts +50 -0
  71. package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  72. package/dist/orpc-client/docs-ledger/contract.js +1 -0
  73. package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
  74. package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts +12 -0
  75. package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/dist/types/navigation/__test__/findNode.authedRedirect.test.d.ts +2 -0
  78. package/dist/types/navigation/__test__/findNode.authedRedirect.test.d.ts.map +1 -0
  79. package/dist/types/navigation/__test__/ledger-root-builder.apiReferenceChildren.test.d.ts +2 -0
  80. package/dist/types/navigation/__test__/ledger-root-builder.apiReferenceChildren.test.d.ts.map +1 -0
  81. package/dist/types/navigation/__test__/ledger-root-builder.collapsedDeterminism.test.d.ts +2 -0
  82. package/dist/types/navigation/__test__/ledger-root-builder.collapsedDeterminism.test.d.ts.map +1 -0
  83. package/dist/types/navigation/__test__/ledger-root-builder.landingPage.test.d.ts +2 -0
  84. package/dist/types/navigation/__test__/ledger-root-builder.landingPage.test.d.ts.map +1 -0
  85. package/dist/types/navigation/__test__/ledger-root-builder.metadataPreservation.test.d.ts +2 -0
  86. package/dist/types/navigation/__test__/ledger-root-builder.metadataPreservation.test.d.ts.map +1 -0
  87. package/dist/types/navigation/__test__/ledger-root-builder.rootSlug.test.d.ts +2 -0
  88. package/dist/types/navigation/__test__/ledger-root-builder.rootSlug.test.d.ts.map +1 -0
  89. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugApiReference.test.d.ts +2 -0
  90. package/dist/types/navigation/__test__/ledger-root-builder.skipSlugApiReference.test.d.ts.map +1 -0
  91. package/dist/types/navigation/__test__/ledger-root-builder.variantSharedSegments.test.d.ts +2 -0
  92. package/dist/types/navigation/__test__/ledger-root-builder.variantSharedSegments.test.d.ts.map +1 -0
  93. package/dist/types/navigation/ledger-root-builder.d.ts +17 -1
  94. package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
  95. package/dist/types/navigation/utils/findNode.d.ts +1 -0
  96. package/dist/types/navigation/utils/findNode.d.ts.map +1 -1
  97. package/dist/types/navigation/utils/followRedirect.d.ts.map +1 -1
  98. package/dist/types/orpc-client/docs-ledger/contract.d.ts +50 -0
  99. package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  100. package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts +12 -0
  101. package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
  102. package/package.json +1 -1
@@ -0,0 +1,262 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildFullRootFromSegments } from "../ledger-root-builder.js";
3
+ /**
4
+ * When a sidebar scope contains both variant-scoped segments (e.g., API
5
+ * references inside variants) and non-variant segments (e.g., guide sections
6
+ * at the product level), the non-variant segments must appear alongside the
7
+ * VariantedNode — not be silently dropped.
8
+ */
9
+ function pageRoute(opts) {
10
+ return {
11
+ type: "markdown",
12
+ fullPath: opts.fullPath,
13
+ hidden: false,
14
+ metadata: { title: opts.title, pageId: `pg-${opts.title}` },
15
+ ...(opts.displaySortOrder != null ? { displaySortOrder: opts.displaySortOrder } : {})
16
+ };
17
+ }
18
+ function endpointRoute(opts) {
19
+ return {
20
+ type: "rest",
21
+ fullPath: opts.fullPath,
22
+ hidden: false,
23
+ metadata: {
24
+ title: opts.title,
25
+ slug: opts.title.toLowerCase().replace(/\s+/g, "-"),
26
+ apiDefinitionId: opts.apiDefinitionId,
27
+ endpointId: opts.title.toLowerCase().replace(/\s+/g, "-"),
28
+ method: "GET"
29
+ },
30
+ ...(opts.displaySortOrder != null ? { displaySortOrder: opts.displaySortOrder } : {})
31
+ };
32
+ }
33
+ const variantA = {
34
+ id: "variant-a-id",
35
+ displayName: "Accounting",
36
+ icon: undefined,
37
+ sortOrder: 0,
38
+ hidden: false,
39
+ viewers: [],
40
+ orphaned: false,
41
+ featureFlags: [],
42
+ metadata: { slug: "accounting", default: true, pointsTo: "prod/accounting/list-accounts" }
43
+ };
44
+ const variantB = {
45
+ id: "variant-b-id",
46
+ displayName: "HRIS",
47
+ icon: undefined,
48
+ sortOrder: 1,
49
+ hidden: false,
50
+ viewers: [],
51
+ orphaned: false,
52
+ featureFlags: [],
53
+ metadata: { slug: "hris", pointsTo: "prod/hris/list-employees" }
54
+ };
55
+ function segment(opts) {
56
+ return {
57
+ segmentId: opts.segmentHash,
58
+ segmentHash: opts.segmentHash,
59
+ section: opts.section,
60
+ locale: "en",
61
+ sortOrder: opts.sortOrder,
62
+ hidden: false,
63
+ metadata: opts.metadata,
64
+ product: opts.product ?? null,
65
+ version: null,
66
+ variant: opts.variant ?? null,
67
+ tab: null
68
+ };
69
+ }
70
+ /** Collect all page/endpoint slugs from the tree. */
71
+ function collectSlugs(node) {
72
+ const slugs = [];
73
+ function walk(n) {
74
+ if (n == null || typeof n !== "object") {
75
+ return;
76
+ }
77
+ const obj = n;
78
+ const type = obj.type;
79
+ if (type === "page" || type === "endpoint") {
80
+ if (typeof obj.slug === "string") {
81
+ slugs.push(obj.slug);
82
+ }
83
+ }
84
+ if (Array.isArray(obj.children)) {
85
+ for (const c of obj.children) {
86
+ walk(c);
87
+ }
88
+ }
89
+ if (obj.child != null) {
90
+ walk(obj.child);
91
+ }
92
+ }
93
+ walk(node);
94
+ return slugs;
95
+ }
96
+ /** Find all top-level sidebar child types under unversioned. */
97
+ function sidebarChildTypes(root) {
98
+ const unversioned = root.child;
99
+ // child might be sidebarRoot or varianted
100
+ const sidebar = unversioned.child;
101
+ if (sidebar.type === "sidebarRoot") {
102
+ return sidebar.children.map((c) => c.type);
103
+ }
104
+ return [sidebar.type];
105
+ }
106
+ describe("buildFullRootFromSegments — non-variant segments alongside variants", () => {
107
+ it("includes non-variant guide sections when variants are present (no tabs)", () => {
108
+ const root = buildFullRootFromSegments({
109
+ basePath: "",
110
+ title: "Test",
111
+ segments: [
112
+ // Non-variant guide section
113
+ segment({
114
+ segmentHash: "seg-guides",
115
+ section: "guides",
116
+ sortOrder: 0,
117
+ metadata: { type: "section", title: "Guides" }
118
+ }),
119
+ // Variant A: API reference
120
+ segment({
121
+ segmentHash: "seg-acct-api",
122
+ section: "accounting",
123
+ sortOrder: 1,
124
+ metadata: { type: "apiReference", title: "Accounting API", apiDefinitionId: "api-acct" },
125
+ variant: variantA
126
+ }),
127
+ // Variant B: API reference
128
+ segment({
129
+ segmentHash: "seg-hris-api",
130
+ section: "hris",
131
+ sortOrder: 2,
132
+ metadata: { type: "apiReference", title: "HRIS API", apiDefinitionId: "api-hris" },
133
+ variant: variantB
134
+ })
135
+ ],
136
+ navBySegment: new Map([
137
+ [
138
+ "seg-guides",
139
+ [
140
+ pageRoute({ fullPath: "guides/overview", title: "Overview", displaySortOrder: 0 }),
141
+ pageRoute({ fullPath: "guides/quickstart", title: "Quickstart", displaySortOrder: 1 })
142
+ ]
143
+ ],
144
+ [
145
+ "seg-acct-api",
146
+ [
147
+ endpointRoute({
148
+ fullPath: "accounting/list-accounts",
149
+ title: "List Accounts",
150
+ apiDefinitionId: "api-acct",
151
+ displaySortOrder: 0
152
+ })
153
+ ]
154
+ ],
155
+ [
156
+ "seg-hris-api",
157
+ [
158
+ endpointRoute({
159
+ fullPath: "hris/list-employees",
160
+ title: "List Employees",
161
+ apiDefinitionId: "api-hris",
162
+ displaySortOrder: 0
163
+ })
164
+ ]
165
+ ]
166
+ ])
167
+ });
168
+ const slugs = collectSlugs(root);
169
+ // Guide pages from non-variant segment must survive
170
+ expect(slugs).toContain("guides/overview");
171
+ expect(slugs).toContain("guides/quickstart");
172
+ // Variant-scoped endpoints must also survive
173
+ expect(slugs).toContain("accounting/list-accounts");
174
+ expect(slugs).toContain("hris/list-employees");
175
+ // The sidebar should contain both a section and a varianted node
176
+ const types = sidebarChildTypes(root);
177
+ expect(types).toContain("section");
178
+ expect(types).toContain("varianted");
179
+ });
180
+ it("includes non-variant sections when variants exist inside a tab", () => {
181
+ const tab = {
182
+ id: "tab-main",
183
+ displayName: "Main",
184
+ icon: undefined,
185
+ sortOrder: 0,
186
+ hidden: false,
187
+ viewers: [],
188
+ orphaned: false,
189
+ featureFlags: [],
190
+ metadata: { slug: "main" }
191
+ };
192
+ const root = buildFullRootFromSegments({
193
+ basePath: "",
194
+ title: "Test",
195
+ segments: [
196
+ // Non-variant guide section inside tab
197
+ segment({
198
+ segmentHash: "seg-tab-guides",
199
+ section: "guides",
200
+ sortOrder: 0,
201
+ metadata: { type: "section", title: "Guides" },
202
+ variant: undefined
203
+ }),
204
+ // Variant A inside same tab
205
+ segment({
206
+ segmentHash: "seg-tab-acct",
207
+ section: "accounting",
208
+ sortOrder: 1,
209
+ metadata: { type: "apiReference", title: "Accounting API", apiDefinitionId: "api-acct" },
210
+ variant: variantA
211
+ }),
212
+ // Variant B inside same tab
213
+ segment({
214
+ segmentHash: "seg-tab-hris",
215
+ section: "hris",
216
+ sortOrder: 2,
217
+ metadata: { type: "apiReference", title: "HRIS API", apiDefinitionId: "api-hris" },
218
+ variant: variantB
219
+ })
220
+ ].map((s) => ({ ...s, tab })),
221
+ navBySegment: new Map([
222
+ [
223
+ "seg-tab-guides",
224
+ [
225
+ pageRoute({ fullPath: "main/guides/overview", title: "Overview", displaySortOrder: 0 }),
226
+ pageRoute({ fullPath: "main/guides/quickstart", title: "Quickstart", displaySortOrder: 1 })
227
+ ]
228
+ ],
229
+ [
230
+ "seg-tab-acct",
231
+ [
232
+ endpointRoute({
233
+ fullPath: "main/accounting/list-accounts",
234
+ title: "List Accounts",
235
+ apiDefinitionId: "api-acct",
236
+ displaySortOrder: 0
237
+ })
238
+ ]
239
+ ],
240
+ [
241
+ "seg-tab-hris",
242
+ [
243
+ endpointRoute({
244
+ fullPath: "main/hris/list-employees",
245
+ title: "List Employees",
246
+ apiDefinitionId: "api-hris",
247
+ displaySortOrder: 0
248
+ })
249
+ ]
250
+ ]
251
+ ])
252
+ });
253
+ const slugs = collectSlugs(root);
254
+ // Non-variant guide pages must survive inside tab
255
+ expect(slugs).toContain("main/guides/overview");
256
+ expect(slugs).toContain("main/guides/quickstart");
257
+ // Variant-scoped endpoints must also survive
258
+ expect(slugs).toContain("main/accounting/list-accounts");
259
+ expect(slugs).toContain("main/hris/list-employees");
260
+ });
261
+ });
262
+ //# sourceMappingURL=ledger-root-builder.variantSharedSegments.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger-root-builder.variantSharedSegments.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.variantSharedSegments.test.ts"],"names":[],"mappings":"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"}
@@ -44,12 +44,24 @@ type NavRoute = NavResponse["routes"][number];
44
44
  export interface BuildRootOptions {
45
45
  /** The deployment's root slug — the cleaned basepath (e.g. "" or "docs"). */
46
46
  basePath: string;
47
+ /** V1 root slug. Usually equals basePath, but can be empty on sites served under a platform basepath. */
48
+ rootSlug?: string;
47
49
  /** The site title (RootNode.title). */
48
50
  title: string;
49
51
  /** Segments for the resolved locale (already locale-deduped by the DAO). */
50
52
  segments: Segment[];
51
53
  /** Per-segment sidebar nav entries, keyed by segmentHash. */
52
54
  navBySegment: Map<string, NavRoute[]>;
55
+ /**
56
+ * When true, skip merging shared (tab-level) sections from sibling
57
+ * versions into the default version. Scoped roots (route-first renders)
58
+ * must set this to avoid slug conflicts: the scoped root only loads nav
59
+ * for the requested route's scope, so merged sections carry the source
60
+ * version's fullPaths into the default version's tree, creating
61
+ * duplicate slugs that cause NodeCollector to orphan the real version's
62
+ * pages and return wrong tabs/sidebar.
63
+ */
64
+ skipSharedSectionMerge?: boolean;
53
65
  }
54
66
  /**
55
67
  * Per-build state. Created once per {@link buildFullRootFromSegments} call and
@@ -89,7 +101,11 @@ export declare function apiLeafNodeFromNavRoute(route: NavRoute, basePath: strin
89
101
  * @internal Exported for the ledger loader's scoped explorer methods.
90
102
  */
91
103
  export declare function collectApiLeafNodesFromNav(routes: NavRoute[], basePath: string, segmentApiDefinitionId: string): ApiLeafNode[];
92
- /** Read the apiDefinitionId off a segment's metadata, or undefined. */
104
+ /**
105
+ * Read the apiDefinitionId off a segment's metadata, or undefined.
106
+ * The matched types (apiReference, apiPackage, changelog) are the
107
+ * subset of {@link StructuralSegmentType} that carry an apiDefinitionId.
108
+ */
93
109
  export declare function segmentApiDefinitionId(metadata: Segment["metadata"]): string | undefined;
94
110
  /**
95
111
  * Merge endpoint nodes that were originally part of an `endpointPair` in the V1
@@ -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;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAE9C,MAAM,WAAW,gBAAgB;IAC7B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,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;CACzC;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;AAmPD;;;;;;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;AAEjC;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,EAChB,sBAAsB,EAAE,MAAM,GAC/B,WAAW,GAAG,SAAS,CAGzB;AA+GD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,sBAAsB,EAAE,MAAM,GAC/B,WAAW,EAAE,CAKf;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,CASxF;AA8WD;;;;;;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;AA2cD;;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;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AA+OD;;;;;;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;AAgWD;;;;;;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;AAsiBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAmF5F"}