@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.
Files changed (82) hide show
  1. package/dist/js/client/FdrClient.js +13 -3
  2. package/dist/js/client/FdrClient.js.map +1 -1
  3. package/dist/js/client/FdrClient.mjs +13 -3
  4. package/dist/js/client/FdrClient.mjs.map +1 -1
  5. package/dist/js/client/types.js.map +1 -1
  6. package/dist/js/client/types.mjs.map +1 -1
  7. package/dist/js/converters/index.js +39 -25
  8. package/dist/js/converters/index.js.map +1 -1
  9. package/dist/js/converters/index.mjs +39 -25
  10. package/dist/js/converters/index.mjs.map +1 -1
  11. package/dist/js/index.js +52 -28
  12. package/dist/js/index.js.map +1 -1
  13. package/dist/js/index.mjs +52 -28
  14. package/dist/js/index.mjs.map +1 -1
  15. package/dist/js/navigation/index.js +39 -25
  16. package/dist/js/navigation/index.js.map +1 -1
  17. package/dist/js/navigation/index.mjs +39 -25
  18. package/dist/js/navigation/index.mjs.map +1 -1
  19. package/dist/js/navigation/ledger-root-builder.js +29 -5
  20. package/dist/js/navigation/ledger-root-builder.js.map +1 -1
  21. package/dist/js/navigation/ledger-root-builder.mjs +29 -5
  22. package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
  23. package/dist/js/navigation/types/latest.js.map +1 -1
  24. package/dist/js/navigation/types/latest.mjs.map +1 -1
  25. package/dist/js/navigation/types/v1.js.map +1 -1
  26. package/dist/js/navigation/types/v1.mjs.map +1 -1
  27. package/dist/js/orpc-client.js +13 -3
  28. package/dist/js/orpc-client.js.map +1 -1
  29. package/dist/js/orpc-client.mjs +13 -3
  30. package/dist/js/orpc-client.mjs.map +1 -1
  31. package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts +2 -0
  32. package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts.map +1 -0
  33. package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.js +185 -0
  34. package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.js.map +1 -0
  35. package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
  36. package/dist/navigation/ledger-root-builder.js +41 -5
  37. package/dist/navigation/ledger-root-builder.js.map +1 -1
  38. package/dist/navigation/types/latest.d.ts +1 -0
  39. package/dist/navigation/types/latest.d.ts.map +1 -1
  40. package/dist/navigation/types/v1.d.ts +1 -0
  41. package/dist/navigation/types/v1.d.ts.map +1 -1
  42. package/dist/navigation/utils/__test__/resolveCurrentTab.test.d.ts +2 -0
  43. package/dist/navigation/utils/__test__/resolveCurrentTab.test.d.ts.map +1 -0
  44. package/dist/navigation/utils/__test__/resolveCurrentTab.test.js +70 -0
  45. package/dist/navigation/utils/__test__/resolveCurrentTab.test.js.map +1 -0
  46. package/dist/navigation/utils/findNode.d.ts.map +1 -1
  47. package/dist/navigation/utils/findNode.js +3 -30
  48. package/dist/navigation/utils/findNode.js.map +1 -1
  49. package/dist/navigation/utils/index.d.ts +1 -0
  50. package/dist/navigation/utils/index.d.ts.map +1 -1
  51. package/dist/navigation/utils/index.js +1 -0
  52. package/dist/navigation/utils/index.js.map +1 -1
  53. package/dist/navigation/utils/resolveCurrentTab.d.ts +26 -0
  54. package/dist/navigation/utils/resolveCurrentTab.d.ts.map +1 -0
  55. package/dist/navigation/utils/resolveCurrentTab.js +60 -0
  56. package/dist/navigation/utils/resolveCurrentTab.js.map +1 -0
  57. package/dist/orpc-client/docs-ledger/contract.d.ts +5126 -0
  58. package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  59. package/dist/orpc-client/docs-ledger/contract.js +17 -3
  60. package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
  61. package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts +7356 -0
  62. package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/dist/types/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts +2 -0
  65. package/dist/types/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts.map +1 -0
  66. package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
  67. package/dist/types/navigation/types/latest.d.ts +1 -0
  68. package/dist/types/navigation/types/latest.d.ts.map +1 -1
  69. package/dist/types/navigation/types/v1.d.ts +1 -0
  70. package/dist/types/navigation/types/v1.d.ts.map +1 -1
  71. package/dist/types/navigation/utils/__test__/resolveCurrentTab.test.d.ts +2 -0
  72. package/dist/types/navigation/utils/__test__/resolveCurrentTab.test.d.ts.map +1 -0
  73. package/dist/types/navigation/utils/findNode.d.ts.map +1 -1
  74. package/dist/types/navigation/utils/index.d.ts +1 -0
  75. package/dist/types/navigation/utils/index.d.ts.map +1 -1
  76. package/dist/types/navigation/utils/resolveCurrentTab.d.ts +26 -0
  77. package/dist/types/navigation/utils/resolveCurrentTab.d.ts.map +1 -0
  78. package/dist/types/orpc-client/docs-ledger/contract.d.ts +5126 -0
  79. package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
  80. package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts +7356 -0
  81. package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
  82. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ledger-root-builder.playgroundPreservation.test.d.ts.map
@@ -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;AA0RD;;;;;;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"}
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: undefined
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: undefined
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: undefined
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: undefined
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: undefined,
969
+ playground: metaPlayground(seg.metadata),
934
970
  postmanCollectionUrl: undefined
935
971
  };
936
972
  }