@fern-api/fdr-sdk 1.2.79-88e3cf0ca5 → 1.2.80-050d6c9417
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 +13 -3
- package/dist/js/client/FdrClient.js.map +1 -1
- package/dist/js/client/FdrClient.mjs +13 -3
- package/dist/js/client/FdrClient.mjs.map +1 -1
- package/dist/js/client/types.js.map +1 -1
- package/dist/js/client/types.mjs.map +1 -1
- package/dist/js/converters/index.js +39 -25
- package/dist/js/converters/index.js.map +1 -1
- package/dist/js/converters/index.mjs +39 -25
- package/dist/js/converters/index.mjs.map +1 -1
- package/dist/js/index.js +52 -28
- package/dist/js/index.js.map +1 -1
- package/dist/js/index.mjs +52 -28
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/navigation/index.js +39 -25
- package/dist/js/navigation/index.js.map +1 -1
- package/dist/js/navigation/index.mjs +39 -25
- package/dist/js/navigation/index.mjs.map +1 -1
- package/dist/js/navigation/ledger-root-builder.js +29 -5
- package/dist/js/navigation/ledger-root-builder.js.map +1 -1
- package/dist/js/navigation/ledger-root-builder.mjs +29 -5
- package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
- package/dist/js/navigation/types/latest.js.map +1 -1
- package/dist/js/navigation/types/latest.mjs.map +1 -1
- package/dist/js/navigation/types/v1.js.map +1 -1
- package/dist/js/navigation/types/v1.mjs.map +1 -1
- package/dist/js/orpc-client.js +13 -3
- package/dist/js/orpc-client.js.map +1 -1
- package/dist/js/orpc-client.mjs +13 -3
- package/dist/js/orpc-client.mjs.map +1 -1
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts +2 -0
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.js +185 -0
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.js.map +1 -0
- package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
- package/dist/navigation/ledger-root-builder.js +41 -5
- package/dist/navigation/ledger-root-builder.js.map +1 -1
- package/dist/navigation/types/latest.d.ts +1 -0
- package/dist/navigation/types/latest.d.ts.map +1 -1
- package/dist/navigation/types/v1.d.ts +1 -0
- package/dist/navigation/types/v1.d.ts.map +1 -1
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.d.ts +2 -0
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.d.ts.map +1 -0
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.js +70 -0
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.js.map +1 -0
- package/dist/navigation/utils/findNode.d.ts.map +1 -1
- package/dist/navigation/utils/findNode.js +3 -30
- package/dist/navigation/utils/findNode.js.map +1 -1
- package/dist/navigation/utils/index.d.ts +1 -0
- package/dist/navigation/utils/index.d.ts.map +1 -1
- package/dist/navigation/utils/index.js +1 -0
- package/dist/navigation/utils/index.js.map +1 -1
- package/dist/navigation/utils/resolveCurrentTab.d.ts +26 -0
- package/dist/navigation/utils/resolveCurrentTab.d.ts.map +1 -0
- package/dist/navigation/utils/resolveCurrentTab.js +60 -0
- package/dist/navigation/utils/resolveCurrentTab.js.map +1 -0
- package/dist/orpc-client/docs-ledger/contract.d.ts +5126 -0
- package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
- package/dist/orpc-client/docs-ledger/contract.js +17 -3
- package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
- package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts +7356 -0
- package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts +2 -0
- package/dist/types/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts.map +1 -0
- package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
- package/dist/types/navigation/types/latest.d.ts +1 -0
- package/dist/types/navigation/types/latest.d.ts.map +1 -1
- package/dist/types/navigation/types/v1.d.ts +1 -0
- package/dist/types/navigation/types/v1.d.ts.map +1 -1
- package/dist/types/navigation/utils/__test__/resolveCurrentTab.test.d.ts +2 -0
- package/dist/types/navigation/utils/__test__/resolveCurrentTab.test.d.ts.map +1 -0
- package/dist/types/navigation/utils/findNode.d.ts.map +1 -1
- package/dist/types/navigation/utils/index.d.ts +1 -0
- package/dist/types/navigation/utils/index.d.ts.map +1 -1
- package/dist/types/navigation/utils/resolveCurrentTab.d.ts +26 -0
- package/dist/types/navigation/utils/resolveCurrentTab.d.ts.map +1 -0
- package/dist/types/orpc-client/docs-ledger/contract.d.ts +5126 -0
- package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
- package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts +7356 -0
- package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-root-builder.playgroundPreservation.test.d.ts","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.playgroundPreservation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { buildFullRootFromSegments } from "../ledger-root-builder.js";
|
|
3
|
+
/**
|
|
4
|
+
* Regression test for docs.yml `playground` settings (e.g. `playground.hidden: true`)
|
|
5
|
+
* being dropped when the navigation tree is rebuilt from ledger segments.
|
|
6
|
+
*
|
|
7
|
+
* The ledger rebuild (`ledger-root-builder.ts`) currently hardcodes `playground: undefined`
|
|
8
|
+
* on apiReference / apiPackage / endpoint / webSocket / graphql nodes, and the flatten step
|
|
9
|
+
* never writes `playground` into segment metadata. As a result, `playground.hidden` (and every
|
|
10
|
+
* other playground setting) is a no-op on any ledger-backed (published) docs site, even though
|
|
11
|
+
* it works locally under `fern docs dev` (which uses the legacy DocsV1Read path).
|
|
12
|
+
*
|
|
13
|
+
* These tests assert the DESIRED behavior: playground settings present in segment / route
|
|
14
|
+
* metadata are read back onto the rebuilt nodes. They fail before the fix (value comes back
|
|
15
|
+
* `undefined`) and pass once the builder reads `playground` from metadata.
|
|
16
|
+
*/
|
|
17
|
+
function segment(opts) {
|
|
18
|
+
return {
|
|
19
|
+
segmentId: opts.segmentHash,
|
|
20
|
+
segmentHash: opts.segmentHash,
|
|
21
|
+
section: opts.section,
|
|
22
|
+
locale: "en",
|
|
23
|
+
sortOrder: opts.sortOrder,
|
|
24
|
+
hidden: false,
|
|
25
|
+
metadata: opts.metadata,
|
|
26
|
+
product: null,
|
|
27
|
+
version: null,
|
|
28
|
+
variant: null,
|
|
29
|
+
tab: null
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function restRoute(opts) {
|
|
33
|
+
return {
|
|
34
|
+
type: "rest",
|
|
35
|
+
fullPath: opts.fullPath,
|
|
36
|
+
hidden: false,
|
|
37
|
+
metadata: {
|
|
38
|
+
title: opts.title,
|
|
39
|
+
endpointId: opts.endpointId,
|
|
40
|
+
method: opts.method,
|
|
41
|
+
apiDefinitionId: "api-def-1",
|
|
42
|
+
...(opts.playground != null ? { playground: opts.playground } : {})
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
function collectByType(node, targetType) {
|
|
48
|
+
const results = [];
|
|
49
|
+
if (node == null || typeof node !== "object") {
|
|
50
|
+
return results;
|
|
51
|
+
}
|
|
52
|
+
if (node.type === targetType) {
|
|
53
|
+
results.push(node);
|
|
54
|
+
}
|
|
55
|
+
for (const child of node.children ?? []) {
|
|
56
|
+
results.push(...collectByType(child, targetType));
|
|
57
|
+
}
|
|
58
|
+
if (node.child != null) {
|
|
59
|
+
results.push(...collectByType(node.child, targetType));
|
|
60
|
+
}
|
|
61
|
+
return results;
|
|
62
|
+
}
|
|
63
|
+
describe("playground preservation on ledger rebuild", () => {
|
|
64
|
+
it("reads playground.hidden from apiReference segment metadata", () => {
|
|
65
|
+
const root = buildFullRootFromSegments({
|
|
66
|
+
basePath: "",
|
|
67
|
+
title: "Test",
|
|
68
|
+
segments: [
|
|
69
|
+
segment({
|
|
70
|
+
segmentHash: "seg-api",
|
|
71
|
+
section: "api",
|
|
72
|
+
sortOrder: 0,
|
|
73
|
+
metadata: {
|
|
74
|
+
type: "apiReference",
|
|
75
|
+
title: "API",
|
|
76
|
+
apiDefinitionId: "api-def-1",
|
|
77
|
+
playground: { hidden: true }
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
],
|
|
81
|
+
navBySegment: new Map([
|
|
82
|
+
[
|
|
83
|
+
"seg-api",
|
|
84
|
+
[
|
|
85
|
+
restRoute({
|
|
86
|
+
fullPath: "api/create",
|
|
87
|
+
title: "Create",
|
|
88
|
+
endpointId: "create",
|
|
89
|
+
method: "POST"
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
]
|
|
93
|
+
])
|
|
94
|
+
});
|
|
95
|
+
const apis = collectByType(root, "apiReference");
|
|
96
|
+
expect(apis).toHaveLength(1);
|
|
97
|
+
expect(apis[0].playground).toEqual({ hidden: true });
|
|
98
|
+
});
|
|
99
|
+
it("reads playground.hidden from endpoint route metadata", () => {
|
|
100
|
+
const root = buildFullRootFromSegments({
|
|
101
|
+
basePath: "",
|
|
102
|
+
title: "Test",
|
|
103
|
+
segments: [
|
|
104
|
+
segment({
|
|
105
|
+
segmentHash: "seg-api",
|
|
106
|
+
section: "api",
|
|
107
|
+
sortOrder: 0,
|
|
108
|
+
metadata: { type: "apiReference", title: "API", apiDefinitionId: "api-def-1" }
|
|
109
|
+
})
|
|
110
|
+
],
|
|
111
|
+
navBySegment: new Map([
|
|
112
|
+
[
|
|
113
|
+
"seg-api",
|
|
114
|
+
[
|
|
115
|
+
restRoute({
|
|
116
|
+
fullPath: "api/create",
|
|
117
|
+
title: "Create",
|
|
118
|
+
endpointId: "create",
|
|
119
|
+
method: "POST",
|
|
120
|
+
playground: { hidden: true }
|
|
121
|
+
})
|
|
122
|
+
]
|
|
123
|
+
]
|
|
124
|
+
])
|
|
125
|
+
});
|
|
126
|
+
const endpoints = collectByType(root, "endpoint");
|
|
127
|
+
expect(endpoints).toHaveLength(1);
|
|
128
|
+
expect(endpoints[0].playground).toEqual({ hidden: true });
|
|
129
|
+
});
|
|
130
|
+
it("reads playground.send-optional-defaults from endpoint route metadata", () => {
|
|
131
|
+
const root = buildFullRootFromSegments({
|
|
132
|
+
basePath: "",
|
|
133
|
+
title: "Test",
|
|
134
|
+
segments: [
|
|
135
|
+
segment({
|
|
136
|
+
segmentHash: "seg-api",
|
|
137
|
+
section: "api",
|
|
138
|
+
sortOrder: 0,
|
|
139
|
+
metadata: { type: "apiReference", title: "API", apiDefinitionId: "api-def-1" }
|
|
140
|
+
})
|
|
141
|
+
],
|
|
142
|
+
navBySegment: new Map([
|
|
143
|
+
[
|
|
144
|
+
"seg-api",
|
|
145
|
+
[
|
|
146
|
+
restRoute({
|
|
147
|
+
fullPath: "api/create",
|
|
148
|
+
title: "Create",
|
|
149
|
+
endpointId: "create",
|
|
150
|
+
method: "POST",
|
|
151
|
+
playground: { "send-optional-defaults": true }
|
|
152
|
+
})
|
|
153
|
+
]
|
|
154
|
+
]
|
|
155
|
+
])
|
|
156
|
+
});
|
|
157
|
+
const endpoints = collectByType(root, "endpoint");
|
|
158
|
+
expect(endpoints).toHaveLength(1);
|
|
159
|
+
expect(endpoints[0].playground).toEqual({ "send-optional-defaults": true });
|
|
160
|
+
});
|
|
161
|
+
it("leaves playground undefined when metadata carries none", () => {
|
|
162
|
+
const root = buildFullRootFromSegments({
|
|
163
|
+
basePath: "",
|
|
164
|
+
title: "Test",
|
|
165
|
+
segments: [
|
|
166
|
+
segment({
|
|
167
|
+
segmentHash: "seg-api",
|
|
168
|
+
section: "api",
|
|
169
|
+
sortOrder: 0,
|
|
170
|
+
metadata: { type: "apiReference", title: "API", apiDefinitionId: "api-def-1" }
|
|
171
|
+
})
|
|
172
|
+
],
|
|
173
|
+
navBySegment: new Map([
|
|
174
|
+
[
|
|
175
|
+
"seg-api",
|
|
176
|
+
[restRoute({ fullPath: "api/list", title: "List", endpointId: "list", method: "GET" })]
|
|
177
|
+
]
|
|
178
|
+
])
|
|
179
|
+
});
|
|
180
|
+
const endpoints = collectByType(root, "endpoint");
|
|
181
|
+
expect(endpoints).toHaveLength(1);
|
|
182
|
+
expect(endpoints[0].playground).toBeUndefined();
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
//# sourceMappingURL=ledger-root-builder.playgroundPreservation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-root-builder.playgroundPreservation.test.js","sourceRoot":"","sources":["../../../src/navigation/__test__/ledger-root-builder.playgroundPreservation.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;
|
|
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;AAiUD;;;;;;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;AAqLD;;;;;;;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;AA2bD;;;;;;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;AA21BD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CA0F5F"}
|
|
@@ -127,6 +127,42 @@ function metaCollapsed(metadata) {
|
|
|
127
127
|
}
|
|
128
128
|
return undefined;
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Read docs.yml `playground` settings from a metadata blob. The flatten step
|
|
132
|
+
* (docsPublishTransform) writes the nav node's `playground` object verbatim into
|
|
133
|
+
* segment / api-artifact metadata; here we read it back and coerce the known
|
|
134
|
+
* fields onto a branded PlaygroundSettings. Returns undefined when absent, so the
|
|
135
|
+
* nearest-apiReference inheritance in withPrunedNavigation still applies to leaves.
|
|
136
|
+
*/
|
|
137
|
+
function metaPlayground(metadata) {
|
|
138
|
+
if (metadata == null || typeof metadata !== "object" || !("playground" in metadata)) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
const raw = metadata.playground;
|
|
142
|
+
if (raw == null || typeof raw !== "object") {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
const pg = raw;
|
|
146
|
+
const environments = Array.isArray(pg.environments)
|
|
147
|
+
? pg.environments.filter((x) => typeof x === "string")
|
|
148
|
+
: undefined;
|
|
149
|
+
// Preserve a button object whenever one is present (matching the schema, where
|
|
150
|
+
// `href` is optional); only its `href` is coerced to a branded Url.
|
|
151
|
+
const hasButton = pg.button != null && typeof pg.button === "object";
|
|
152
|
+
const buttonHref = hasButton ? pg.button.href : undefined;
|
|
153
|
+
const limit = pg["limit-websocket-messages-per-connection"];
|
|
154
|
+
return {
|
|
155
|
+
environments: environments != null && environments.length > 0
|
|
156
|
+
? environments.map((e) => FernNavigation.EnvironmentId(e))
|
|
157
|
+
: undefined,
|
|
158
|
+
button: hasButton
|
|
159
|
+
? { href: typeof buttonHref === "string" ? FernNavigation.Url(buttonHref) : undefined }
|
|
160
|
+
: undefined,
|
|
161
|
+
"limit-websocket-messages-per-connection": typeof limit === "number" ? limit : undefined,
|
|
162
|
+
hidden: typeof pg.hidden === "boolean" ? pg.hidden : undefined,
|
|
163
|
+
"send-optional-defaults": typeof pg["send-optional-defaults"] === "boolean" ? pg["send-optional-defaults"] : undefined
|
|
164
|
+
};
|
|
165
|
+
}
|
|
130
166
|
/** Extract a string array from a metadata blob (e.g. page-level `viewers`). */
|
|
131
167
|
function metaStrArr(metadata, key) {
|
|
132
168
|
if (metadata != null && typeof metadata === "object" && key in metadata) {
|
|
@@ -316,7 +352,7 @@ function apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefinitionId) {
|
|
|
316
352
|
apiDefinitionId,
|
|
317
353
|
isResponseStream: metaBool(md, "isResponseStream"),
|
|
318
354
|
availability: metaAvailability(md),
|
|
319
|
-
playground:
|
|
355
|
+
playground: metaPlayground(md)
|
|
320
356
|
};
|
|
321
357
|
}
|
|
322
358
|
if (route.type === "webhook") {
|
|
@@ -345,7 +381,7 @@ function apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefinitionId) {
|
|
|
345
381
|
webSocketId: FernNavigation.WebSocketId(webSocketId),
|
|
346
382
|
apiDefinitionId,
|
|
347
383
|
availability: metaAvailability(md),
|
|
348
|
-
playground:
|
|
384
|
+
playground: metaPlayground(md)
|
|
349
385
|
};
|
|
350
386
|
}
|
|
351
387
|
if (route.type === "grpc") {
|
|
@@ -377,7 +413,7 @@ function apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefinitionId) {
|
|
|
377
413
|
graphqlOperationIds: undefined,
|
|
378
414
|
apiDefinitionId,
|
|
379
415
|
availability: metaAvailability(md),
|
|
380
|
-
playground:
|
|
416
|
+
playground: metaPlayground(md)
|
|
381
417
|
};
|
|
382
418
|
}
|
|
383
419
|
return undefined;
|
|
@@ -812,7 +848,7 @@ function apiPackageChildNode(ctx, scoped, scopeSegs, parentApiDefinitionId, scop
|
|
|
812
848
|
// compute it via followRedirect, matching v2 behavior.
|
|
813
849
|
pointsTo: undefined,
|
|
814
850
|
children,
|
|
815
|
-
playground:
|
|
851
|
+
playground: metaPlayground(seg.metadata)
|
|
816
852
|
};
|
|
817
853
|
}
|
|
818
854
|
/**
|
|
@@ -930,7 +966,7 @@ function apiReferenceNode(ctx, scoped, scopeSegs, scopePrefix) {
|
|
|
930
966
|
pointsTo: undefined,
|
|
931
967
|
children,
|
|
932
968
|
changelog,
|
|
933
|
-
playground:
|
|
969
|
+
playground: metaPlayground(seg.metadata),
|
|
934
970
|
postmanCollectionUrl: undefined
|
|
935
971
|
};
|
|
936
972
|
}
|