@redocly/api-docs 0.2.0-next.0 → 0.2.0-next.10

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 (302) hide show
  1. package/lib/RedocStandalone.d.ts +38 -0
  2. package/lib/RedocStandalone.js +1 -0
  3. package/lib/RedoclyApiDocs.js +1 -1
  4. package/lib/RedoclyApiDocsStandalone.d.ts +2 -0
  5. package/lib/RedoclyApiDocsStandalone.js +3 -3
  6. package/lib/adapters/asyncapi/build/navigation.js +1 -1
  7. package/lib/adapters/asyncapi/items/channel/content.js +1 -1
  8. package/lib/adapters/asyncapi/items/channel/item.js +1 -1
  9. package/lib/adapters/asyncapi/items/operation/item.js +1 -1
  10. package/lib/adapters/asyncapi/items/overview/content.js +1 -1
  11. package/lib/adapters/graphql/group/utils.js +1 -1
  12. package/lib/adapters/graphql/utils/createApiItem.js +1 -1
  13. package/lib/adapters/helpers.d.ts +3 -10
  14. package/lib/adapters/helpers.js +1 -1
  15. package/lib/adapters/openapi/build/context.js +1 -1
  16. package/lib/adapters/openapi/build-code-sample-source.d.ts +1 -1
  17. package/lib/adapters/openapi/build-code-sample-source.js +1 -1
  18. package/lib/adapters/openapi/configure/merge-utils.d.ts +1 -1
  19. package/lib/adapters/openapi/configure/resolve-request-values.js +1 -1
  20. package/lib/adapters/openapi/group/item.d.ts +0 -3
  21. package/lib/adapters/openapi/group/item.js +1 -1
  22. package/lib/adapters/openapi/index.js +1 -1
  23. package/lib/adapters/openapi/items/operation/content.js +1 -1
  24. package/lib/adapters/openapi/items/operation/item.d.ts +2 -2
  25. package/lib/adapters/openapi/items/operation/item.js +1 -1
  26. package/lib/adapters/openapi/items/overview/content.js +1 -1
  27. package/lib/adapters/openapi/items/schema/item.js +1 -1
  28. package/lib/adapters/openapi/store.js +1 -1
  29. package/lib/adapters/openapi/utils/merge-mock-server.d.ts +2 -2
  30. package/lib/adapters/rbac.d.ts +14 -0
  31. package/lib/adapters/rbac.js +1 -0
  32. package/lib/adapters/utils/descriptionToMarkdown.d.ts +6 -0
  33. package/lib/adapters/utils/descriptionToMarkdown.js +11 -0
  34. package/lib/adapters/utils/markdoc.d.ts +8 -1
  35. package/lib/adapters/utils/markdoc.js +1 -1
  36. package/lib/components/ErrorBoundary.d.ts +4 -2
  37. package/lib/components/ErrorBoundary.js +55 -1
  38. package/lib/components/Header/HeaderItem.js +5 -5
  39. package/lib/components/Header/HeaderPageActions.d.ts +4 -0
  40. package/lib/components/Header/HeaderPageActions.js +1 -0
  41. package/lib/components/Header/PageActions.d.ts +4 -0
  42. package/lib/components/Header/PageActions.js +11 -0
  43. package/lib/components/ItemContent/hooks.d.ts +12 -1
  44. package/lib/components/ItemContent/hooks.js +1 -1
  45. package/lib/components/ItemContent/sections/BodySection.js +3 -3
  46. package/lib/components/ItemContent/sections/CallbacksSection.js +4 -4
  47. package/lib/components/ItemContent/sections/MessagesSection.js +17 -17
  48. package/lib/components/ItemContent/sections/ResponsesSection.js +7 -7
  49. package/lib/components/Mcp/McpPrompt.js +1 -1
  50. package/lib/components/Mcp/McpTool.js +1 -1
  51. package/lib/components/Mcp/utils.d.ts +1 -1
  52. package/lib/components/Mcp/utils.js +1 -1
  53. package/lib/components/Schema/SchemaDescription.js +1 -1
  54. package/lib/components/Schema/styled.js +5 -5
  55. package/lib/components/Schema/views/ArrayRenderer.js +1 -1
  56. package/lib/components/Schema/views/CollapsibleNestedFields.js +1 -1
  57. package/lib/components/Schema/views/DiscriminatorPropertyRow.js +1 -1
  58. package/lib/components/Schema/views/Examples.js +1 -1
  59. package/lib/components/Schema/views/SwitcherRenderer.js +1 -1
  60. package/lib/components/Search/index.d.ts +15 -0
  61. package/lib/components/Search/index.js +1 -0
  62. package/lib/components/Security/SecurityFlowDetail.js +1 -1
  63. package/lib/components/Security/styled.js +7 -7
  64. package/lib/components/StickySidebar/FloatingButton.d.ts +1 -0
  65. package/lib/components/StickySidebar/FloatingButton.js +32 -0
  66. package/lib/components/StickySidebar/RedoclyAttributionLogo.d.ts +5 -0
  67. package/lib/components/StickySidebar/RedoclyAttributionLogo.js +1 -0
  68. package/lib/components/StickySidebar/StickySidebar.js +33 -9
  69. package/lib/components/common/Breadcrumbs.js +2 -2
  70. package/lib/components/common/DeepLinkAnchor.js +9 -9
  71. package/lib/components/common/PanelItem.js +5 -5
  72. package/lib/components/common/ResponseCodeTabs.js +1 -1
  73. package/lib/components/common/Tag.js +1 -1
  74. package/lib/components/common/VendorExtensions.js +1 -1
  75. package/lib/components/common/ViewNested.js +2 -2
  76. package/lib/components/graphql/GraphQLFieldView.js +1 -1
  77. package/lib/components/graphql/RequiresScopesModal.js +3 -3
  78. package/lib/components/graphql/sections/GraphQLArgsSection.js +1 -1
  79. package/lib/components/markdoc/SchemaDefinition.js +1 -1
  80. package/lib/components/markdoc/html/html-jsx-attribute-mapping.d.ts +5 -0
  81. package/lib/components/markdoc/html/html-jsx-attribute-mapping.js +1 -0
  82. package/lib/components/markdoc/html/process-html-tokens.d.ts +1 -0
  83. package/lib/components/markdoc/html/process-html-tokens.js +1 -0
  84. package/lib/components/markdoc/markdocParser.d.ts +2 -0
  85. package/lib/components/markdoc/markdocParser.js +1 -1
  86. package/lib/components/panels/ExampleItem/CallbackPayloadItem.js +2 -2
  87. package/lib/components/panels/ExampleItem/CodeSampleItem.js +1 -1
  88. package/lib/components/panels/ExampleItem/PayloadExampleItem.js +2 -2
  89. package/lib/components/panels/ExampleItem/ResponseExampleItem.js +1 -1
  90. package/lib/components/panels/ExampleItem/SecuritySchemeSelector.d.ts +9 -0
  91. package/lib/components/panels/ExampleItem/SecuritySchemeSelector.js +1 -0
  92. package/lib/components/panels/ExampleItem/ServerDropdown.js +2 -2
  93. package/lib/components/panels/ExampleItem/generate-request-sample.d.ts +28 -0
  94. package/lib/components/panels/ExampleItem/generate-request-sample.js +1 -0
  95. package/lib/components/panels/ExampleItem/selectors.d.ts +5 -2
  96. package/lib/components/panels/ExampleItem/selectors.js +1 -1
  97. package/lib/components/panels/ExampleItem/styled.d.ts +2 -49
  98. package/lib/components/panels/ExampleItem/styled.js +11 -5
  99. package/lib/components/panels/ExampleItem/useActiveServer.d.ts +17 -0
  100. package/lib/components/panels/ExampleItem/useActiveServer.js +1 -0
  101. package/lib/components/panels/ExampleItem/useCodeSampleLanguages.d.ts +23 -0
  102. package/lib/components/panels/ExampleItem/useCodeSampleLanguages.js +1 -0
  103. package/lib/components/panels/ExampleItem/useReplayRequestState.d.ts +18 -0
  104. package/lib/components/panels/ExampleItem/useReplayRequestState.js +1 -0
  105. package/lib/components/panels/ExampleItem/useTryItFooter.d.ts +3 -0
  106. package/lib/components/panels/ExampleItem/useTryItFooter.js +7 -0
  107. package/lib/components/panels/GroupPanelItem.js +1 -1
  108. package/lib/components/panels/LanguageItem/LanguagePanelItem.js +5 -1
  109. package/lib/components/panels/LanguageItem/styled.js +17 -14
  110. package/lib/components/panels/McpExamplePanelItem.js +2 -2
  111. package/lib/components/panels/McpPanelItem.js +2 -2
  112. package/lib/components/panels/ServerItem/ServerItem.js +1 -1
  113. package/lib/components/panels/asyncapi/BrokerItem/BrokerModal.js +1 -1
  114. package/lib/components/panels/asyncapi/BrokerItem/BrokerPanelItem.js +1 -1
  115. package/lib/components/panels/asyncapi/MessageBindingItem/MessageBindingItem.js +1 -1
  116. package/lib/components/panels/shared-panel-styles.js +1 -1
  117. package/lib/components/panels/styled.js +1 -1
  118. package/lib/components/pluggable/RedocExample.js +5 -2
  119. package/lib/components/pluggable/RedocResponseSamples.js +1 -1
  120. package/lib/hoc/withLicenseGate.d.ts +5 -0
  121. package/lib/hoc/withLicenseGate.js +1 -0
  122. package/lib/hoc/withRouter.js +1 -1
  123. package/lib/hoc/withStoreProvider.d.ts +2 -0
  124. package/lib/hoc/withStoreProvider.js +1 -1
  125. package/lib/hooks/deepLinkHash.d.ts +5 -0
  126. package/lib/hooks/deepLinkHash.js +1 -0
  127. package/lib/hooks/useApiDocsScroll.js +1 -1
  128. package/lib/hooks/useCopySpecSlice.d.ts +9 -0
  129. package/lib/hooks/useCopySpecSlice.js +1 -0
  130. package/lib/hooks/useDeepLinkSection.js +1 -1
  131. package/lib/hooks/useInitialTelemetry.d.ts +2 -0
  132. package/lib/hooks/useInitialTelemetry.js +1 -0
  133. package/lib/hooks/useLicense.js +1 -1
  134. package/lib/hooks/useLicenseGate.d.ts +6 -0
  135. package/lib/hooks/useLicenseGate.js +1 -0
  136. package/lib/hooks/useRouterHashBridge.d.ts +4 -0
  137. package/lib/hooks/useRouterHashBridge.js +1 -1
  138. package/lib/hooks/useScrollSpyUrlSync.js +1 -1
  139. package/lib/hooks/useUrlHash.d.ts +3 -2
  140. package/lib/hooks/useUrlHash.js +1 -1
  141. package/lib/hooks/useUrlHashReassert.d.ts +2 -0
  142. package/lib/hooks/useUrlHashReassert.js +1 -0
  143. package/lib/index.d.ts +5 -1
  144. package/lib/index.js +1 -1
  145. package/lib/jotai/app.d.ts +6 -0
  146. package/lib/jotai/app.js +1 -1
  147. package/lib/jotai/examples.js +1 -1
  148. package/lib/jotai/itemStore.d.ts +1 -0
  149. package/lib/jotai/itemStore.js +1 -1
  150. package/lib/jotai/store.d.ts +4 -0
  151. package/lib/jotai/store.js +1 -1
  152. package/lib/options/editionOverrides.d.ts +3 -0
  153. package/lib/options/editionOverrides.js +1 -0
  154. package/lib/options/helpers.d.ts +1 -2
  155. package/lib/options/helpers.js +1 -1
  156. package/lib/options/normalizeOptions.d.ts +1 -1
  157. package/lib/options/normalizeOptions.js +1 -1
  158. package/lib/options/standaloneLayoutVars.d.ts +3 -0
  159. package/lib/options/standaloneLayoutVars.js +1 -0
  160. package/lib/otel-semantic-conventions.d.ts +10 -0
  161. package/lib/otel-semantic-conventions.js +1 -0
  162. package/lib/pages/ItemPage.js +4 -2
  163. package/lib/pages/NotFoundPage.js +40 -1
  164. package/lib/services/code-samples/apply-env-variables.d.ts +8 -0
  165. package/lib/services/code-samples/apply-env-variables.js +1 -0
  166. package/lib/services/code-samples/builder.d.ts +8 -5
  167. package/lib/services/code-samples/builder.js +1 -1
  168. package/lib/services/code-samples/discriminator.d.ts +16 -10
  169. package/lib/services/code-samples/discriminator.js +1 -1
  170. package/lib/services/code-samples/generators/java8.js +2 -2
  171. package/lib/services/code-samples/language-availability.d.ts +4 -0
  172. package/lib/services/code-samples/language-availability.js +1 -0
  173. package/lib/services/code-samples/{replay/normalize-servers.d.ts → normalize-servers.d.ts} +1 -1
  174. package/lib/services/code-samples/normalize-servers.js +1 -0
  175. package/lib/services/code-samples/replay/embedded-replay-converter.d.ts +1 -1
  176. package/lib/services/code-samples/replay/embedded-replay-converter.js +1 -1
  177. package/lib/services/code-samples/replay/find-operation.d.ts +17 -0
  178. package/lib/services/code-samples/replay/find-operation.js +1 -0
  179. package/lib/services/code-samples/replay/from-openapi-document.d.ts +12 -2
  180. package/lib/services/code-samples/replay/from-openapi-document.js +1 -1
  181. package/lib/services/code-samples/replay/index.d.ts +1 -1
  182. package/lib/services/code-samples/replay/index.js +1 -1
  183. package/lib/services/code-samples/replay/overlay-converter.js +1 -1
  184. package/lib/services/code-samples/replay/parameter-descriptions.d.ts +7 -0
  185. package/lib/services/code-samples/replay/parameter-descriptions.js +1 -0
  186. package/lib/services/code-samples/replay/replay-adapter.d.ts +1 -1
  187. package/lib/services/code-samples/replay/replay-adapter.js +1 -1
  188. package/lib/services/code-samples/replay/replay-handler.js +1 -1
  189. package/lib/services/code-samples/replay/replay-predefined-env.d.ts +1 -2
  190. package/lib/services/code-samples/replay/replay-predefined-env.js +1 -1
  191. package/lib/services/code-samples/replay/schema-declared-value.d.ts +2 -0
  192. package/lib/services/code-samples/replay/schema-declared-value.js +1 -0
  193. package/lib/services/code-samples/resolvers.js +1 -1
  194. package/lib/services/code-samples/server-env.d.ts +3 -0
  195. package/lib/services/code-samples/server-env.js +1 -0
  196. package/lib/services/code-samples/source.d.ts +3 -3
  197. package/lib/services/license/check.d.ts +1 -0
  198. package/lib/services/license/check.js +1 -1
  199. package/lib/services/operation-samples/index.js +1 -1
  200. package/lib/services/schema/dialects/jsonSchema.d.ts +5 -1
  201. package/lib/services/schema/dialects/jsonSchema.js +1 -1
  202. package/lib/services/schema/propertyTreeBuilder.js +1 -1
  203. package/lib/services/search/index.d.ts +2 -0
  204. package/lib/services/search/index.js +1 -0
  205. package/lib/services/search/indexer/context.d.ts +8 -0
  206. package/lib/services/search/indexer/context.js +0 -0
  207. package/lib/services/search/indexer/deep-links.d.ts +12 -0
  208. package/lib/services/search/indexer/deep-links.js +1 -0
  209. package/lib/services/search/indexer/extractors/asyncapi.d.ts +8 -0
  210. package/lib/services/search/indexer/extractors/asyncapi.js +1 -0
  211. package/lib/services/search/indexer/extractors/body.d.ts +2 -0
  212. package/lib/services/search/indexer/extractors/body.js +1 -0
  213. package/lib/services/search/indexer/extractors/callbacks.d.ts +4 -0
  214. package/lib/services/search/indexer/extractors/callbacks.js +1 -0
  215. package/lib/services/search/indexer/extractors/context.d.ts +25 -0
  216. package/lib/services/search/indexer/extractors/context.js +1 -0
  217. package/lib/services/search/indexer/extractors/examples.d.ts +3 -0
  218. package/lib/services/search/indexer/extractors/examples.js +1 -0
  219. package/lib/services/search/indexer/extractors/graphql.d.ts +2 -0
  220. package/lib/services/search/indexer/extractors/graphql.js +1 -0
  221. package/lib/services/search/indexer/extractors/heading-sections.d.ts +3 -0
  222. package/lib/services/search/indexer/extractors/heading-sections.js +1 -0
  223. package/lib/services/search/indexer/extractors/index.d.ts +12 -0
  224. package/lib/services/search/indexer/extractors/index.js +1 -0
  225. package/lib/services/search/indexer/extractors/mcp.d.ts +9 -0
  226. package/lib/services/search/indexer/extractors/mcp.js +1 -0
  227. package/lib/services/search/indexer/extractors/named-rows.d.ts +9 -0
  228. package/lib/services/search/indexer/extractors/named-rows.js +1 -0
  229. package/lib/services/search/indexer/extractors/panels.d.ts +10 -0
  230. package/lib/services/search/indexer/extractors/panels.js +1 -0
  231. package/lib/services/search/indexer/extractors/parameters.d.ts +2 -0
  232. package/lib/services/search/indexer/extractors/parameters.js +1 -0
  233. package/lib/services/search/indexer/extractors/responses.d.ts +2 -0
  234. package/lib/services/search/indexer/extractors/responses.js +1 -0
  235. package/lib/services/search/indexer/extractors/schema-page.d.ts +9 -0
  236. package/lib/services/search/indexer/extractors/schema-page.js +1 -0
  237. package/lib/services/search/indexer/extractors/security.d.ts +4 -0
  238. package/lib/services/search/indexer/extractors/security.js +1 -0
  239. package/lib/services/search/indexer/index.d.ts +14 -0
  240. package/lib/services/search/indexer/index.js +1 -0
  241. package/lib/services/search/indexer/param.d.ts +7 -0
  242. package/lib/services/search/indexer/param.js +1 -0
  243. package/lib/services/search/indexer/places.d.ts +40 -0
  244. package/lib/services/search/indexer/places.js +1 -0
  245. package/lib/services/search/indexer/schema-walker.d.ts +29 -0
  246. package/lib/services/search/indexer/schema-walker.js +1 -0
  247. package/lib/services/search/indexer/text.d.ts +2 -0
  248. package/lib/services/search/indexer/text.js +1 -0
  249. package/lib/services/search/types.d.ts +28 -0
  250. package/lib/services/search/types.js +0 -0
  251. package/lib/services/spec-slice/assistant-links.d.ts +9 -0
  252. package/lib/services/spec-slice/assistant-links.js +5 -0
  253. package/lib/services/spec-slice/asyncapi-slice.d.ts +5 -0
  254. package/lib/services/spec-slice/asyncapi-slice.js +1 -0
  255. package/lib/services/spec-slice/clone-strip.d.ts +1 -0
  256. package/lib/services/spec-slice/clone-strip.js +1 -0
  257. package/lib/services/spec-slice/component-closure.d.ts +6 -0
  258. package/lib/services/spec-slice/component-closure.js +1 -0
  259. package/lib/services/spec-slice/graphql-slice.d.ts +2 -0
  260. package/lib/services/spec-slice/graphql-slice.js +1 -0
  261. package/lib/services/spec-slice/index.d.ts +6 -0
  262. package/lib/services/spec-slice/index.js +1 -0
  263. package/lib/services/spec-slice/openapi-slice.d.ts +6 -0
  264. package/lib/services/spec-slice/openapi-slice.js +1 -0
  265. package/lib/services/spec-slice/resolve-scope.d.ts +4 -0
  266. package/lib/services/spec-slice/resolve-scope.js +1 -0
  267. package/lib/services/spec-slice/types.d.ts +37 -0
  268. package/lib/services/spec-slice/types.js +0 -0
  269. package/lib/standalone.d.ts +19 -0
  270. package/lib/standalone.js +2 -0
  271. package/lib/standaloneThemeConfig.d.ts +3 -0
  272. package/lib/standaloneThemeConfig.js +1 -0
  273. package/lib/telemetry/RedocTelemetry.d.ts +3 -0
  274. package/lib/telemetry/RedocTelemetry.js +1 -1
  275. package/lib/telemetry/defaults.d.ts +2 -0
  276. package/lib/telemetry/defaults.js +1 -0
  277. package/lib/types/asyncapi.d.ts +2 -1
  278. package/lib/types/code-samples-config.d.ts +68 -0
  279. package/lib/types/code-samples-config.js +0 -0
  280. package/lib/types/common.d.ts +1 -2
  281. package/lib/types/content.d.ts +6 -4
  282. package/lib/types/edition-config.d.ts +4 -0
  283. package/lib/types/edition-config.js +0 -0
  284. package/lib/types/events.d.ts +2 -2
  285. package/lib/types/openapi.d.ts +3 -3
  286. package/lib/types/options.d.ts +24 -88
  287. package/lib/types/store.d.ts +3 -2
  288. package/lib/url-compat.d.ts +22 -0
  289. package/lib/url-compat.js +1 -0
  290. package/lib/utils/compose.d.ts +1 -0
  291. package/lib/utils/deep-link.d.ts +2 -1
  292. package/lib/utils/deep-link.js +1 -1
  293. package/lib/utils/extract-extensions.js +1 -1
  294. package/lib/utils/graphql-parse.d.ts +1 -0
  295. package/lib/utils/graphql-parse.js +1 -0
  296. package/lib/utils/scroll-anchoring.d.ts +2 -1
  297. package/lib/utils/x-logo.d.ts +13 -0
  298. package/lib/utils/x-logo.js +1 -0
  299. package/lib/yaml-compat.d.ts +7 -0
  300. package/lib/yaml-compat.js +1 -0
  301. package/package.json +36 -15
  302. package/lib/services/code-samples/replay/normalize-servers.js +0 -1
@@ -15,6 +15,7 @@ export type AppSessionStore = {
15
15
  export type AppStore = {
16
16
  activeMimeName: string;
17
17
  layout: LayoutVariant;
18
+ colorMode: string;
18
19
  language: string;
19
20
  environment: string;
20
21
  environments: Record<string, Record<string, string>>;
@@ -47,6 +48,11 @@ export declare const allowedEnvironmentsAtom: import("jotai").WritableAtom<strin
47
48
  * appSessionStore saved to session storage
48
49
  */
49
50
  export declare const appSessionStore: import("jotai").WritableAtom<AppSessionStore, [typeof import("jotai/utils").RESET | AppSessionStore | ((prev: AppSessionStore) => typeof import("jotai/utils").RESET | AppSessionStore)], void>;
51
+ /** Mobile sidebar drawer — open state is per-view, never persisted. */
52
+ export declare const isSidebarOpenedAtom: import("jotai").PrimitiveAtom<boolean> & {
53
+ init: boolean;
54
+ };
55
+ export declare const colorModeAtom: import("jotai").WritableAtom<string, string[], void>;
50
56
  export declare const collapsedSidebarAtom: import("jotai").WritableAtom<boolean, boolean[], void>;
51
57
  export declare const languageAtom: import("jotai").WritableAtom<LanguageAtom, [string], void>;
52
58
  export declare const selectedSecuritySchemeIdxAtom: import("jotai").PrimitiveAtom<number> & {
package/lib/jotai/app.js CHANGED
@@ -1 +1 @@
1
- import{atom as r}from"jotai";import{atomWithStorage as v,createJSONStorage as A}from"jotai/utils";import{LayoutVariant as y}from"@redocly/config";import{getCookie as x,removeCookie as k,setCookie as C}from"../utils/cookies.js";import{mergeEnvData as l,IS_BROWSER as E}from"../utils/environments.js";import{keepReadingSectionAnchored as N}from"../utils/scroll-anchoring.js";import{safeJsonParse as g}from"../utils/string.js";import{fromSessionStorage as O,toSessionStorage as b}from"../utils/session-storage.js";import{DEFAULT_LAYOUT as V}from"../options/constants.js";import{globalOptionsAtom as I}from"./store.js";const d={activeMimeName:"",layout:V,language:"",environment:"",environments:{},userClaims:{},allowedEnvironments:null},L={getItem:e=>{const o=g(x(e,globalThis.redoclyCookieStorage?.getStore?.())),t=g(O(e));return{...d,...t,...o}},setItem:(e,o)=>{const{environments:t,...n}=o,a={environments:t};C(e,JSON.stringify(n)),b(e,JSON.stringify(a))},removeItem:e=>{k(e),sessionStorage.removeItem(e)}},s=v("redoc.appStore",d,L),U=r(e=>{const o=e(s);return l(o.environments,{})}),W=r(e=>{const o=e(s),t=l(o.environments,{}),n=o.environment,a=Object.keys(t).find(c=>t[c]?.server===n),i=t[n]?n:a??Object.keys(t)[0];let m=t[i]||{};return!m.server&&a&&(m={...t[a],...m}),[m,i||""]},(e,o,{environment:t,environments:n})=>{const a=e(s);o(s,{...a,environment:t||a.environment,environments:l(a.environments||{},n)})}),_=r(e=>e(s).environment),p=r(e=>e(s).activeMimeName,(e,o,t)=>{const n=e(s);o(s,{...n,activeMimeName:t})}),S=r(void 0),q=r(e=>e(S)??(e(p)||void 0),(e,o,t)=>{o(S,void 0),(t??"")!==e(p)&&N(),o(p,t??"")}),B=r(e=>e(s).layout,(e,o,t=y.STACKED)=>{const n=e(s);o(s,{...n,layout:t})}),P=r(e=>e(s).userClaims,(e,o,t)=>{const n=e(s);o(s,{...n,userClaims:t})}),Y=r(e=>e(s).allowedEnvironments,(e,o,t)=>{const n=e(s);o(s,{...n,allowedEnvironments:t})}),u=v("redoc.appSessionStore",{collapsedSidebar:!1,unsupportedFeatureScreen:!1},E?A(()=>sessionStorage):void 0),z=r(e=>e(u).collapsedSidebar,(e,o,t)=>{const n=e(u);o(u,{...n,collapsedSidebar:t})}),G=r(e=>{const o=e(I),{codeSamples:t}=o;if(!t?.languages)return{languages:[],activeLanguage:e(s).language||""};const n=t.languages.map(({key:i,label:m,lang:c},f)=>({key:i,lang:c,title:m,order:f})),a=e(s).language||n[0]?.key;return{languages:n,activeLanguage:n.find(({key:i})=>i===a)?.key||n[0]?.key}},(e,o,t)=>{const n=e(s);o(s,{...n,language:t})}),H=r(0),Q=r({}),X=r(null),Z=r([]);export{q as activeMediaTypeAtom,p as activeMimeNameAtom,X as activeScrollSectionAtom,Y as allowedEnvironmentsAtom,u as appSessionStore,s as appStore,z as collapsedSidebarAtom,W as environmentAtom,U as environmentsAtom,G as languageAtom,B as layoutAtom,S as mediaTypeOverrideAtom,Q as requestValuesAtom,_ as savedEnvironmentNameAtom,H as selectedSecuritySchemeIdxAtom,P as userClaimsAtom,Z as visitedChannelsAtom};
1
+ import{atom as r}from"jotai";import{atomWithStorage as g,createJSONStorage as y}from"jotai/utils";import{LayoutVariant as O}from"@redocly/config";import{DEFAULT_COLOR_MODES as c}from"@redocly/theme/core/constants";import{getCookie as E,removeCookie as L,setCookie as k}from"../utils/cookies.js";import{mergeEnvData as p,IS_BROWSER as d}from"../utils/environments.js";import{keepReadingSectionAnchored as C}from"../utils/scroll-anchoring.js";import{safeJsonParse as S}from"../utils/string.js";import{fromSessionStorage as M,toSessionStorage as h}from"../utils/session-storage.js";import{DEFAULT_LAYOUT as N}from"../options/constants.js";import{globalOptionsAtom as T}from"./store.js";const f={activeMimeName:"",layout:N,colorMode:"",language:"",environment:"",environments:{},userClaims:{},allowedEnvironments:null},b={getItem:e=>{const o=S(E(e,globalThis.redoclyCookieStorage?.getStore?.())),t=S(M(e));return{...f,...t,...o}},setItem:(e,o)=>{const{environments:t,...n}=o,a={environments:t};k(e,JSON.stringify(n)),h(e,JSON.stringify(a))},removeItem:e=>{L(e),sessionStorage.removeItem(e)}},s=g("redoc.appStore",f,b),H=r(e=>{const o=e(s);return p(o.environments,{})}),W=r(e=>{const o=e(s),t=p(o.environments,{}),n=o.environment,a=Object.keys(t).find(l=>t[l]?.server===n),i=t[n]?n:a??Object.keys(t)[0];let m=t[i]||{};return!m.server&&a&&(m={...t[a],...m}),[m,i||""]},(e,o,{environment:t,environments:n})=>{const a=e(s);o(s,{...a,environment:t||a.environment,environments:p(a.environments||{},n)})}),B=r(e=>e(s).environment),u=r(e=>e(s).activeMimeName,(e,o,t)=>{const n=e(s);o(s,{...n,activeMimeName:t})}),A=r(void 0),P=r(e=>e(A)??(e(u)||void 0),(e,o,t)=>{o(A,void 0),(t??"")!==e(u)&&C(),o(u,t??"")}),Y=r(e=>e(s).layout,(e,o,t=O.STACKED)=>{const n=e(s);o(s,{...n,layout:t})}),z=r(e=>e(s).userClaims,(e,o,t)=>{const n=e(s);o(s,{...n,userClaims:t})}),Q=r(e=>e(s).allowedEnvironments,(e,o,t)=>{const n=e(s);o(s,{...n,allowedEnvironments:t})}),v=g("redoc.appSessionStore",{collapsedSidebar:!1,unsupportedFeatureScreen:!1},d?y(()=>sessionStorage):void 0),X=r(!1),D=[c.LIGHT,c.DARK];function I(e){const o=document.documentElement;D.forEach(t=>o.classList.remove(t)),o.classList.add(e,"notransition"),window.requestAnimationFrame(()=>{o.classList.remove("notransition")})}const Z=r(e=>{const o=e(s).colorMode||(d&&window.matchMedia?.("(prefers-color-scheme: dark)").matches?c.DARK:c.LIGHT);return d&&I(o),o},(e,o,t)=>{const n=e(s);o(s,{...n,colorMode:t})}),$=r(e=>e(v).collapsedSidebar,(e,o,t)=>{const n=e(v);o(v,{...n,collapsedSidebar:t})}),ee=r(e=>{const o=e(T),{codeSamples:t}=o;if(!t?.languages)return{languages:[],activeLanguage:e(s).language||""};const n=t.languages.map(({key:i,label:m,lang:l},x)=>({key:i,lang:l,title:m,order:x})),a=e(s).language||n[0]?.key;return{languages:n,activeLanguage:n.find(({key:i})=>i===a)?.key||n[0]?.key}},(e,o,t)=>{const n=e(s);o(s,{...n,language:t})}),oe=r(0),te=r({}),ne=r(null),se=r([]);export{P as activeMediaTypeAtom,u as activeMimeNameAtom,ne as activeScrollSectionAtom,Q as allowedEnvironmentsAtom,v as appSessionStore,s as appStore,$ as collapsedSidebarAtom,Z as colorModeAtom,W as environmentAtom,H as environmentsAtom,X as isSidebarOpenedAtom,ee as languageAtom,Y as layoutAtom,A as mediaTypeOverrideAtom,te as requestValuesAtom,B as savedEnvironmentNameAtom,oe as selectedSecuritySchemeIdxAtom,z as userClaimsAtom,se as visitedChannelsAtom};
@@ -1 +1 @@
1
- import{atom as m}from"jotai";import{atomFamily as f}from"jotai-family";import*as q from"openapi-sampler";import{schemaKind as g}from"../types/common.js";import{convertSampleToString as y}from"../services/code-samples/index.js";import{applyActiveVariantsToStore as h}from"../services/code-samples/discriminator.js";import{isSequentialMediaType as E}from"../utils/media-type.js";import{storeAtom as M,globalOptionsAtom as j}from"./store.js";import{schemaStoreAtom as l}from"./schema.js";import{activeDiscriminatorSelectAtom as F,activeOneOfSelectAtom as N}from"./itemStore.js";const G=m(t=>t(M).exampleStore??{});function x(t){const e={};for(const[n,r]of Object.entries(t)){const o=n.startsWith("components/schemas/")?n.replace("components/schemas/",""):n;e[o]=r}return{openapi:"3.0.0",info:{title:"",version:""},paths:{},components:{schemas:e}}}function R(t,e){return!!t&&Object.keys(t).length>0||!!e&&Object.keys(e).length>0}const u=m(t=>h(t(l))),A=f(t=>m(e=>{if(!t)return e(u);const n=e(F(t)),r=e(N(t));return R(n,r)?h(e(l),n,r):e(u)})),V=m(t=>x(t(u))),C=f(t=>m(e=>{const n=e(A(t));return n===e(u)?e(V):x(n)})),D="";function Q(t,e,n,r){return t?JSON.stringify({itemId:r??"",schemaId:t,context:e??"",mediaType:n??""}):D}function J(t){if(t)try{const e=JSON.parse(t);if(!e||typeof e.schemaId!="string"||!e.schemaId)return;const n=typeof e.itemId=="string"?e.itemId:"",r=typeof e.context=="string"?e.context:"",o=typeof e.mediaType=="string"?e.mediaType:"";return{itemId:n,schemaId:e.schemaId,context:r==="request"||r==="response"?r:void 0,mediaType:o||void 0}}catch{return}}const U=f(t=>{const e=J(t);return m(n=>{if(!e)return;const{itemId:r,schemaId:o,context:i,mediaType:p}=e,s=n(l)[o];if(!s||s.kind!==g.JSON_SCHEMA)return;const d=n(C(r)),b=n(A(r))[o]??s.data,{onlyRequiredInSamples:v,generatedSamplesMaxDepth:I,unstable_skipSamples:T}=n(j);if(T)return;const a=p?.toLowerCase(),k=a?a.includes("xml"):!1;try{const S={context:i,skipNonRequired:i==="request"&&v,maxSampleDepth:I,isXml:k},c=O(b,d,S);return c==null?c:a&&E(a)?K(s.data,c,d,S,a):c}catch{return}})});function K(t,e,n,r,o){const i=_(t);if(i.length>0){const p=i.map(s=>O(s,n,r)).filter(s=>s!=null);if(p.length>0)return y(p,o,t,!1)}return y(e,o,t,!0)}function _(t){const e=t.oneOf;return Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null):[]}function O(t,e,{context:n,skipNonRequired:r,maxSampleDepth:o,isXml:i}){return q.sample(t,{skipReadOnly:n==="request",skipWriteOnly:n==="response",quiet:!0,skipNonRequired:r,maxSampleDepth:o,...i&&{format:"xml"}},e)}export{Q as buildExampleAtomKey,G as exampleStoreAtom,U as generatedExampleAtom,C as itemSpecForSamplerAtom};
1
+ import{atom as m}from"jotai";import{atomFamily as f}from"jotai-family";import*as E from"openapi-sampler";import{schemaKind as g}from"../types/common.js";import{convertSampleToString as y}from"../services/code-samples/index.js";import{applyActiveVariantsToStore as h}from"../services/code-samples/discriminator.js";import{isSequentialMediaType as M}from"../utils/media-type.js";import{storeAtom as j,globalOptionsAtom as x}from"./store.js";import{schemaStoreAtom as l}from"./schema.js";import{activeDiscriminatorSelectAtom as F,activeOneOfSelectAtom as N}from"./itemStore.js";const G=m(t=>t(j).exampleStore??{});function A(t){const e={};for(const[n,r]of Object.entries(t)){const o=n.startsWith("components/schemas/")?n.replace("components/schemas/",""):n;e[o]=r}return{openapi:"3.0.0",info:{title:"",version:""},paths:{},components:{schemas:e}}}function R(t,e){return!!t&&Object.keys(t).length>0||!!e&&Object.keys(e).length>0}const u=m(t=>h(t(l))),O=f(t=>m(e=>{if(!t)return e(u);const n=e(F(t)),r=e(N(t));return R(n,r)?h(e(l),n,r):e(u)})),V=m(t=>A(t(u))),C=f(t=>m(e=>{const n=e(O(t));return n===e(u)?e(V):A(n)})),D="";function Q(t,e,n,r){return t?JSON.stringify({itemId:r??"",schemaId:t,context:e??"",mediaType:n??""}):D}function J(t){if(t)try{const e=JSON.parse(t);if(!e||typeof e.schemaId!="string"||!e.schemaId)return;const n=typeof e.itemId=="string"?e.itemId:"",r=typeof e.context=="string"?e.context:"",o=typeof e.mediaType=="string"?e.mediaType:"";return{itemId:n,schemaId:e.schemaId,context:r==="request"||r==="response"?r:void 0,mediaType:o||void 0}}catch{return}}const U=f(t=>{const e=J(t);return m(n=>{if(!e)return;const{itemId:r,schemaId:o,context:i,mediaType:p}=e,s=n(l)[o];if(!s||s.kind!==g.JSON_SCHEMA)return;const d=n(C(r)),v=n(O(r))[o]??s.data,{onlyRequiredInSamples:I,generatedSamplesMaxDepth:T}=n(x),{unstable_skipSamples:k}=n(x);if(k)return;const a=p?.toLowerCase(),q=a?a.includes("xml"):!1;try{const S={context:i,skipNonRequired:i==="request"&&I,maxSampleDepth:T,isXml:q},c=b(v,d,S);return c==null?c:a&&M(a)?K(s.data,c,d,S,a):c}catch{return}})});function K(t,e,n,r,o){const i=_(t);if(i.length>0){const p=i.map(s=>b(s,n,r)).filter(s=>s!=null);if(p.length>0)return y(p,o,t,!1)}return y(e,o,t,!0)}function _(t){const e=t.oneOf;return Array.isArray(e)?e.filter(n=>typeof n=="object"&&n!==null):[]}function b(t,e,{context:n,skipNonRequired:r,maxSampleDepth:o,isXml:i}){return E.sample(t,{skipReadOnly:n==="request",skipWriteOnly:n==="response",quiet:!0,skipNonRequired:r,maxSampleDepth:o,...i&&{format:"xml"}},e)}export{Q as buildExampleAtomKey,G as exampleStoreAtom,U as generatedExampleAtom,C as itemSpecForSamplerAtom};
@@ -3,6 +3,7 @@ export type ItemStore = {
3
3
  activeDiscriminator: Record<string, number>;
4
4
  activeOneOf: Record<string, number>;
5
5
  activeResponseCode: string;
6
+ activeExampleKey: string;
6
7
  activeMessageKey: string;
7
8
  selectedCallback: string;
8
9
  expandableSections: Record<string, boolean | undefined>;
@@ -1 +1 @@
1
- import{atom as p}from"jotai";import{selectAtom as m}from"jotai/utils";import{atomFamily as c}from"jotai-family";import{keepReadingSectionAnchored as x}from"../utils/scroll-anchoring.js";const O=Object.freeze({activeDiscriminator:Object.freeze({}),activeOneOf:Object.freeze({}),activeResponseCode:"",activeMessageKey:"",selectedCallback:"",expandableSections:Object.freeze({}),collapsibles:Object.freeze({})});function u(){return O}const l=p({}),y=["activeResponseCode","activeMessageKey","activeOneOf","activeDiscriminator"],f=c(e=>p(t=>t(l)[e]??u(),(t,n,o)=>{const i=t(l),r=i[e]??u(),a=typeof o=="function"?o(r):o;y.some(s=>s in a&&a[s]!==r[s])&&x(),n(l,{...i,[e]:{...r,...a}})})),A=c(e=>m(f(e.itemId),t=>t[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function S(e){return A(e)}function j(e,t){const n=e?.length?e.join("/"):"";return n?`${n}/${t}`:t}function R(e){return S({itemId:e,key:"activeDiscriminator"})}function D(e){return S({itemId:e,key:"activeOneOf"})}const b=c(e=>m(f(e.itemId),t=>t.expandableSections[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function F(e,t){return b({itemId:e,key:t})}const d="#";function K(e,t){return`${e}${d}${t}`}function T(e){const t=e.indexOf(d);return t===-1?e:e.slice(0,t)}const v=c(e=>m(f(e),t=>Object.keys(t.expandableSections),(t,n)=>t.length===n.length&&t.every((o,i)=>o===n[i])));function _(e){return v(e)}export{R as activeDiscriminatorSelectAtom,D as activeOneOfSelectAtom,K as buildCollapsibleEntryKey,j as buildVariantStateKey,T as collapsibleEntrySection,F as expandableSectionAtom,_ as expandableSectionKeysAtom,f as itemStoreAtom,S as itemStoreFieldAtom};
1
+ import{atom as p}from"jotai";import{selectAtom as s}from"jotai/utils";import{atomFamily as c}from"jotai-family";import{keepReadingSectionAnchored as S}from"../utils/scroll-anchoring.js";const d=Object.freeze({activeDiscriminator:Object.freeze({}),activeOneOf:Object.freeze({}),activeResponseCode:"",activeExampleKey:"",activeMessageKey:"",selectedCallback:"",expandableSections:Object.freeze({}),collapsibles:Object.freeze({})});function u(){return d}const l=p({}),O=["activeResponseCode","activeMessageKey","activeExampleKey","activeOneOf","activeDiscriminator"],f=c(e=>p(t=>t(l)[e]??u(),(t,n,o)=>{const i=t(l),r=i[e]??u(),a=typeof o=="function"?o(r):o;O.some(m=>m in a&&a[m]!==r[m])&&S(),n(l,{...i,[e]:{...r,...a}})})),A=c(e=>s(f(e.itemId),t=>t[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function x(e){return A(e)}function g(e,t){const n=e?.length?e.join("/"):"";return n?`${n}/${t}`:t}function j(e){return x({itemId:e,key:"activeDiscriminator"})}function R(e){return x({itemId:e,key:"activeOneOf"})}const b=c(e=>s(f(e.itemId),t=>t.expandableSections[e.key]),(e,t)=>e.itemId===t.itemId&&e.key===t.key);function D(e,t){return b({itemId:e,key:t})}const y="#";function F(e,t){return`${e}${y}${t}`}function T(e){const t=e.indexOf(y);return t===-1?e:e.slice(0,t)}const v=c(e=>s(f(e),t=>Object.keys(t.expandableSections),(t,n)=>t.length===n.length&&t.every((o,i)=>o===n[i])));function _(e){return v(e)}export{j as activeDiscriminatorSelectAtom,R as activeOneOfSelectAtom,F as buildCollapsibleEntryKey,g as buildVariantStateKey,T as collapsibleEntrySection,D as expandableSectionAtom,_ as expandableSectionKeysAtom,f as itemStoreAtom,x as itemStoreFieldAtom};
@@ -6,6 +6,8 @@ export type GlobalStoreAtom = {
6
6
  items: ApiItem[];
7
7
  store: ApiStore;
8
8
  options: ApiDocsOptions;
9
+ definition?: Record<string, unknown> | string;
10
+ definitionUrl?: string;
9
11
  replayDefinition: OpenAPIDefinition | null;
10
12
  };
11
13
  export declare const globalStoreAtom: import("jotai").PrimitiveAtom<GlobalStoreAtom> & {
@@ -19,6 +21,8 @@ export declare const specTypeAtom: import("jotai").Atom<ApiSpecType>;
19
21
  export declare const routingBasePathAtom: import("jotai").Atom<string>;
20
22
  export declare const licenseKeyAtom: import("jotai").Atom<string | undefined>;
21
23
  export declare const storeAtom: import("jotai").Atom<ApiStore>;
24
+ export declare const definitionAtom: import("jotai").Atom<string | Record<string, unknown> | undefined>;
25
+ export declare const definitionUrlAtom: import("jotai").Atom<string | undefined>;
22
26
  export declare const replayDefinitionAtom: import("jotai").Atom<OpenAPIDefinition | null>;
23
27
  export declare const setReplayDefinitionAtom: import("jotai").WritableAtom<null, [value: OpenAPIDefinition | null], void> & {
24
28
  init: null;
@@ -1 +1 @@
1
- import{atom as o}from"jotai";const m={schemaStore:{},exampleStore:{},securitySchemeStore:{}},e=o({items:[],store:m,options:{},replayDefinition:null}),c=o(t=>t(e).items),l=o(t=>{const s={};function i(p){for(const n of p){const r=n.content?.meta?.name;n.httpVerb==="schema"&&r&&n.routeSlug&&(s[r]=n.routeSlug),"items"in n&&Array.isArray(n.items)&&i(n.items)}}return i(t(e).items),s}),f=o(t=>t(e).options),y=o(t=>t(e).options.specType),A=o(t=>t(e).options.basePath),u=o(t=>t(e).options.licenseKey),x=o(t=>t(e).store??m),S=o(t=>t(e).replayDefinition),g=o(null,(t,s,i)=>{s(e,{...t(e),replayDefinition:i})});export{c as globalItemsAtom,f as globalOptionsAtom,e as globalStoreAtom,u as licenseKeyAtom,S as replayDefinitionAtom,A as routingBasePathAtom,l as schemaDefinitionSlugMapAtom,g as setReplayDefinitionAtom,y as specTypeAtom,x as storeAtom};
1
+ import{atom as o}from"jotai";const m={schemaStore:{},exampleStore:{},securitySchemeStore:{}},e=o({items:[],store:m,options:{},replayDefinition:null}),a=o(t=>t(e).items),l=o(t=>{const i={};function s(p){for(const n of p){const r=n.content?.meta?.name;n.httpVerb==="schema"&&r&&n.routeSlug&&(i[r]=n.routeSlug),"items"in n&&Array.isArray(n.items)&&s(n.items)}}return s(t(e).items),i}),f=o(t=>t(e).options),A=o(t=>t(e).options.specType),x=o(t=>t(e).options.basePath),y=o(t=>t(e).options.licenseKey),u=o(t=>t(e).store??m),S=o(t=>t(e).definition),g=o(t=>t(e).definitionUrl),h=o(t=>t(e).replayDefinition),D=o(null,(t,i,s)=>{i(e,{...t(e),replayDefinition:s})});export{S as definitionAtom,g as definitionUrlAtom,a as globalItemsAtom,f as globalOptionsAtom,e as globalStoreAtom,y as licenseKeyAtom,h as replayDefinitionAtom,x as routingBasePathAtom,l as schemaDefinitionSlugMapAtom,D as setReplayDefinitionAtom,A as specTypeAtom,u as storeAtom};
@@ -0,0 +1,3 @@
1
+ import type { RawApiDocsOptions } from '../types/options.js';
2
+ /** Option overrides applied on top of host options in `normalizeOptions`. The community edition forces enterprise options off here. */
3
+ export declare const EDITION_OPTION_OVERRIDES: Partial<RawApiDocsOptions>;
@@ -0,0 +1 @@
1
+ const I={};export{I as EDITION_OPTION_OVERRIDES};
@@ -1,7 +1,7 @@
1
1
  import { LayoutVariant, type RedocConfig } from '@redocly/config';
2
2
  import type { ApiSpecType } from '../types/common.js';
3
3
  import type { RawApiDocsOptions } from '../types/options.js';
4
- import type { CodeSamplesConfig } from '../types/options.js';
4
+ import type { CodeSamplesConfig } from '../types/code-samples-config.js';
5
5
  export declare function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean;
6
6
  export declare function argValueToNumber(value: number | string | undefined, defaultValue?: number): number;
7
7
  export declare function argValueToInt(value: number | string | undefined, defaultValue?: number): number;
@@ -23,4 +23,3 @@ export declare function normalizeDownloadUrls(downloadUrls: {
23
23
  url: string;
24
24
  }[];
25
25
  export declare function normalizeLayout(layout: RawApiDocsOptions['layout']): LayoutVariant;
26
- export declare function isGraphqlDocsSidebarHidden(options: Pick<RawApiDocsOptions, 'specType' | 'sidebar'>): boolean;
@@ -1 +1 @@
1
- import{LayoutVariant as o}from"@redocly/config";import{apiSpecType as i}from"../types/common.js";import{DEFAULT_LAYOUT as f}from"./constants.js";import{DEFAULT_LANGUAGES as p,getLangKey as s}from"../utils/languages.js";function u(r,t){return r===void 0?t??!1:typeof r=="string"?r!=="false":r}function A(r,t=0){return typeof r=="string"?parseInt(r,10):typeof r=="number"?r:t}function a(r,t=0){return typeof r=="string"?parseInt(r,10):typeof r=="number"?Math.ceil(r):t}function x(r,t){return r===void 0?t:r==="all"?1/0:a(r,t)}function h(r){let t=r;return t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t.startsWith("/")||(t="/"+t),t}function T(r){if(typeof r>"u")return!1;if(r==="")return!0;if(typeof r!="string")return r;switch(r){case"true":return!0;case"false":return!1;default:return r.split(",").map(t=>t.trim()).filter(Boolean)}}function c(r){return/^-?\d+(\.\d+)?$/.test(r)}function E(r){return typeof r=="number"?()=>r:typeof r=="string"&&c(r)?()=>parseFloat(r):typeof r=="function"?()=>{const t=r();return typeof t=="number"?t:0}:()=>0}function L(r){const t=typeof r=="object"&&r!==null?r:{},e=t.languages??p.map(({label:n})=>({lang:n}));return{...t,languages:e.map(n=>({...n,key:s(n),label:n.label??n.lang}))}}function b(r){return Array.isArray(r)?r:typeof r=="string"?r.split(",").map(t=>t.trim()):[]}function S(r,t){return r.map(e=>({...e,title:e.title??m(e.url,t)}))}function m(r,t){const e=r.split("?")[0].split(/[\\/]/).pop();if(e&&["yaml","json","gql","graphql"].some(n=>e.includes(n)))return e;switch(t){case i.OPENAPI:return"openapi.yaml";case i.ASYNCAPI:return"asyncapi.yaml";case i.GRAPHQL:return"graphql.gql";default:return"description.json"}}function N(r){return r===void 0?f:r===o.STACKED?o.STACKED:o.THREE_PANEL}function z(r){return r.specType===i.GRAPHQL&&u(r.sidebar?.hide,!1)}export{u as argValueToBoolean,x as argValueToExpandLevel,a as argValueToInt,A as argValueToNumber,z as isGraphqlDocsSidebarHidden,L as normalizeCodeSamples,S as normalizeDownloadUrls,b as normalizeIgnoreNamedSchemas,N as normalizeLayout,h as normalizePath,E as normalizeScrollYOffset,T as normalizeShowExtensions};
1
+ import{LayoutVariant as i}from"@redocly/config";import{apiSpecType as o}from"../types/common.js";import{DEFAULT_LAYOUT as f}from"./constants.js";import{DEFAULT_LANGUAGES as p,getLangKey as s}from"../utils/languages.js";function d(r,t){return r===void 0?t??!1:typeof r=="string"?r!=="false":r}function A(r,t=0){return typeof r=="string"?parseInt(r,10):typeof r=="number"?r:t}function u(r,t=0){return typeof r=="string"?parseInt(r,10):typeof r=="number"?Math.ceil(r):t}function x(r,t){return r===void 0?t:r==="all"?1/0:u(r,t)}function h(r){let t=r;return t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t.startsWith("/")||(t="/"+t),t}function E(r){if(typeof r>"u")return!1;if(r==="")return!0;if(typeof r!="string")return r;switch(r){case"true":return!0;case"false":return!1;default:return r.split(",").map(t=>t.trim()).filter(Boolean)}}function a(r){return/^-?\d+(\.\d+)?$/.test(r)}function T(r){return typeof r=="number"?()=>r:typeof r=="string"&&a(r)?()=>parseFloat(r):typeof r=="function"?()=>{const t=r();return typeof t=="number"?t:0}:()=>0}function L(r){const t=typeof r=="object"&&r!==null?r:{},n=t.languages??p.map(({label:e})=>({lang:e}));return{...t,languages:n.map(e=>({...e,key:s(e),label:e.label??e.lang}))}}function S(r){return Array.isArray(r)?r:typeof r=="string"?r.split(",").map(t=>t.trim()):[]}function b(r,t){return r.map(n=>({...n,title:n.title??m(n.url,t)}))}function m(r,t){const n=r.split("?")[0].split(/[\\/]/).pop();if(n&&["yaml","json","gql","graphql"].some(e=>n.includes(e)))return n;switch(t){case o.OPENAPI:return"openapi.yaml";case o.ASYNCAPI:return"asyncapi.yaml";case o.GRAPHQL:return"graphql.gql";default:return"description.json"}}function N(r){return r===void 0?f:r===i.STACKED?i.STACKED:i.THREE_PANEL}export{d as argValueToBoolean,x as argValueToExpandLevel,u as argValueToInt,A as argValueToNumber,L as normalizeCodeSamples,b as normalizeDownloadUrls,S as normalizeIgnoreNamedSchemas,N as normalizeLayout,h as normalizePath,T as normalizeScrollYOffset,E as normalizeShowExtensions};
@@ -1,2 +1,2 @@
1
1
  import type { ApiDocsOptions, RawApiDocsOptions } from '../types/options.js';
2
- export declare function normalizeOptions(options: RawApiDocsOptions): ApiDocsOptions;
2
+ export declare function normalizeOptions(rawOptions: RawApiDocsOptions): ApiDocsOptions;
@@ -1 +1 @@
1
- import{addTrailingSlash as d}from"@redocly/theme/core/openapi";import{WindowReferenceOptions as m}from"../constants/openapi.js";import{argValueToBoolean as a,argValueToExpandLevel as r,argValueToInt as l,argValueToNumber as S,normalizeCodeSamples as i,normalizeDownloadUrls as n,normalizeIgnoreNamedSchemas as E,normalizeLayout as h,normalizePath as c,normalizeScrollYOffset as u,normalizeShowExtensions as _}from"./helpers.js";import{ASYNCAPI_DEFAULT_JSON_SAMPLES_DEPTH as L,DEFAULT_FEEDBACK as f,DEFAULT_MAX_DISPLAYED_ENUM_VALUES as P,GENERATED_SAMPLES_MAX_DEPTH_DEFAULT as A,GRAPHQL_DEFAULT_FIELD_EXPAND_LEVEL as D,GRAPHQL_DEFAULT_JSON_SAMPLES_DEPTH as t,GRAPHQL_DEFAULT_SAMPLES_MAX_INLINE_ARGS as T,JSON_SAMPLES_EXPAND_LEVEL_DEFAULT as s,MOCK_SERVER_DEFAULT_DESCRIPTION as I,MOCK_SERVER_DEFAULT_POSITION as x,DEFAULT_ROUTING_BASE_PATH as R}from"./constants.js";import{apiSpecType as U}from"../types/common.js";function b(e){return{specType:e.specType,licenseKey:e.licenseKey,metadata:e.metadata??{},downloadUrls:n(e.downloadUrls??[],e.specType),userClaims:e.userClaims,dynamicRequestValues:e.dynamicRequestValues,schemaDefinitionsTagName:e.schemaDefinitionsTagName,corsProxyUrl:e.corsProxyUrl?d(e.corsProxyUrl):void 0,hideSidebar:a(e.hideSidebar,!1),jsonSamplesExpandLevel:r(e.jsonSamplesExpandLevel,s)??s,generatedSamplesMaxDepth:l(e.generatedSamplesMaxDepth,A),hideDownloadButtons:a(e.hideDownloadButtons,!1),hideInfoMetadata:a(e.hideInfoMetadata,!1),hideLoading:a(e.hideLoading,!1),hideSchemaTitles:a(e.hideSchemaTitles,!1),hideSchemaPattern:a(e.hideSchemaPattern,!1),maxDisplayedEnumValues:S(e.maxDisplayedEnumValues,P),mockServer:e.mockServer?.url?{url:e.mockServer.url,position:e.mockServer.position||x,description:e.mockServer.description||I}:void 0,hideReplay:a(e.hideReplay,!1),oAuth2RedirectURI:e.oAuth2RedirectURI,onlyRequiredInSamples:a(e.onlyRequiredInSamples,!1),[m.ON_DEEP_LINK_CLICK]:e.onDeepLinkClick??null,basePath:e.basePath?c(e.basePath):R,schemasExpansionLevel:r(e.schemasExpansionLevel),feedback:e.feedback??f,sortRequiredPropsFirst:a(e.sortRequiredPropsFirst??e.requiredPropsFirst,!1),scrollYOffset:u(e.scrollYOffset),showExtensions:_(e.showExtensions),sanitize:a(e.sanitize,!1),skipBundle:a(e.skipBundle,!1),ignoreNamedSchemas:new Set(E(e.ignoreNamedSchemas)),markdocOptions:e.markdocOptions,markdownParser:e.markdownParser,codeSamples:i(e.codeSamples),layout:h(e.layout),events:e.events??{},unstable_hooks:e.unstable_hooks??{},unstable_skipSamples:a(e.unstable_skipSamples,!1),unstable_externalCodeSamples:e.unstable_externalCodeSamples??[],hidePropertiesPrefix:a(e?.hidePropertiesPrefix,!1),showSchemaCatalogLinks:a(e?.showSchemaCatalogLinks,!1),baseUrlPath:e.baseUrlPath,jsonSamplesDepth:l(e.jsonSamplesDepth,e.specType===U.ASYNCAPI?L:t),samplesMaxInlineArgs:l(e.samplesMaxInlineArgs,T),fieldExpandLevel:l(e.fieldExpandLevel,D),menu:e.menu,sidebar:e.sidebar,showBuiltInScalars:e.showBuiltInScalars,showBuiltInDirectives:e.showBuiltInDirectives,info:e.info,markdown:e.markdown,apiLogo:e.apiLogo,protocol:e.protocol}}export{b as normalizeOptions};
1
+ import{addTrailingSlash as r}from"@redocly/theme/core/openapi";import{WindowReferenceOptions as t}from"../constants/openapi.js";import{argValueToBoolean as a,argValueToExpandLevel as n,argValueToInt as s,argValueToNumber as m,normalizeCodeSamples as d,normalizeDownloadUrls as p,normalizeIgnoreNamedSchemas as S,normalizeLayout as E,normalizePath as c,normalizeScrollYOffset as u,normalizeShowExtensions as h}from"./helpers.js";import{ASYNCAPI_DEFAULT_JSON_SAMPLES_DEPTH as _,DEFAULT_FEEDBACK as L,DEFAULT_MAX_DISPLAYED_ENUM_VALUES as f,GENERATED_SAMPLES_MAX_DEPTH_DEFAULT as P,GRAPHQL_DEFAULT_FIELD_EXPAND_LEVEL as A,GRAPHQL_DEFAULT_JSON_SAMPLES_DEPTH as D,GRAPHQL_DEFAULT_SAMPLES_MAX_INLINE_ARGS as T,JSON_SAMPLES_EXPAND_LEVEL_DEFAULT as i,MOCK_SERVER_DEFAULT_DESCRIPTION as I,MOCK_SERVER_DEFAULT_POSITION as R,DEFAULT_ROUTING_BASE_PATH as x}from"./constants.js";import{apiSpecType as N}from"../types/common.js";import{EDITION_OPTION_OVERRIDES as k}from"./editionOverrides.js";function v(l){const e={...l,...k},o=e.basePath||e.routingBasePath;return{specType:e.specType,licenseKey:e.licenseKey,metadata:e.metadata??{},downloadUrls:p(e.downloadUrls??[],e.specType),userClaims:e.userClaims,dynamicRequestValues:e.dynamicRequestValues,schemaDefinitionsTagName:e.schemaDefinitionsTagName,corsProxyUrl:e.corsProxyUrl?r(e.corsProxyUrl):void 0,jsonSamplesExpandLevel:n(e.jsonSamplesExpandLevel,i)??i,generatedSamplesMaxDepth:s(e.generatedSamplesMaxDepth,P),hideDownloadButtons:a(e.hideDownloadButtons,!1),hideInfoMetadata:a(e.hideInfoMetadata,!1),hideLoading:a(e.hideLoading,!1),hideSchemaTitles:a(e.hideSchemaTitles,!1),hideSchemaPattern:a(e.hideSchemaPattern,!1),maxDisplayedEnumValues:m(e.maxDisplayedEnumValues,f),mockServer:e.mockServer?.url?{url:e.mockServer.url,position:e.mockServer.position||R,description:e.mockServer.description||I}:void 0,hideReplay:a(e.hideReplay,!1),oAuth2RedirectURI:e.oAuth2RedirectURI,onlyRequiredInSamples:a(e.onlyRequiredInSamples,!1),[t.ON_DEEP_LINK_CLICK]:e.onDeepLinkClick??null,basePath:o?c(o):x,schemasExpansionLevel:n(e.schemasExpansionLevel),feedback:e.feedback??L,sortRequiredPropsFirst:a(e.sortRequiredPropsFirst??e.requiredPropsFirst,!1),scrollYOffset:u(e.scrollYOffset),showExtensions:h(e.showExtensions),sanitize:a(e.sanitize,!1),skipBundle:a(e.skipBundle,!1),ignoreNamedSchemas:new Set(S(e.ignoreNamedSchemas)),markdocOptions:e.markdocOptions,markdownParser:e.markdownParser,codeSamples:d(e.codeSamples),layout:E(e.layout),events:e.events??{},unstable_hooks:e.unstable_hooks??{},unstable_skipSamples:a(e.unstable_skipSamples,!1),unstable_externalCodeSamples:e.unstable_externalCodeSamples??[],hidePropertiesPrefix:a(e?.hidePropertiesPrefix,!1),showSchemaCatalogLinks:a(e?.showSchemaCatalogLinks,!1),jsonSamplesDepth:s(e.jsonSamplesDepth,e.specType===N.ASYNCAPI?_:D),samplesMaxInlineArgs:s(e.samplesMaxInlineArgs,T),fieldExpandLevel:s(e.fieldExpandLevel,A),menu:e.menu,showBuiltInScalars:e.showBuiltInScalars,showBuiltInDirectives:e.showBuiltInDirectives,info:e.info,markdown:e.markdown,apiLogo:e.apiLogo,protocol:e.protocol}}export{v as normalizeOptions};
@@ -0,0 +1,3 @@
1
+ import type { CSSProperties } from 'react';
2
+ import type { ApiDocsOptions } from '../types/options.js';
3
+ export declare function getStandaloneLayoutStyle({ scrollYOffset, }: ApiDocsOptions): CSSProperties | undefined;
@@ -0,0 +1 @@
1
+ function n({scrollYOffset:e}){const t=e?.()??0;if(!(t<=0))return{"--navbar-height":`${t}px`,"--navbar-stack-height":`${t}px`}}export{n as getStandaloneLayoutStyle};
@@ -0,0 +1,10 @@
1
+ export declare const ATTR_EXCEPTION_MESSAGE = "exception.message";
2
+ export declare const ATTR_EXCEPTION_STACKTRACE = "exception.stacktrace";
3
+ export declare const ATTR_EXCEPTION_TYPE = "exception.type";
4
+ export declare const ATTR_SERVICE_NAME = "service.name";
5
+ export declare const ATTR_SERVICE_VERSION = "service.version";
6
+ export declare const ATTR_TELEMETRY_SDK_LANGUAGE = "telemetry.sdk.language";
7
+ export declare const ATTR_TELEMETRY_SDK_NAME = "telemetry.sdk.name";
8
+ export declare const ATTR_TELEMETRY_SDK_VERSION = "telemetry.sdk.version";
9
+ export declare const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = "nodejs";
10
+ export declare const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = "webjs";
@@ -0,0 +1 @@
1
+ const e="exception.message",E="exception.stacktrace",t="exception.type",T="service.name",_="service.version",o="telemetry.sdk.language",s="telemetry.sdk.name",A="telemetry.sdk.version",n="nodejs",r="webjs";export{e as ATTR_EXCEPTION_MESSAGE,E as ATTR_EXCEPTION_STACKTRACE,t as ATTR_EXCEPTION_TYPE,T as ATTR_SERVICE_NAME,_ as ATTR_SERVICE_VERSION,o as ATTR_TELEMETRY_SDK_LANGUAGE,s as ATTR_TELEMETRY_SDK_NAME,A as ATTR_TELEMETRY_SDK_VERSION,n as TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,r as TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS};
@@ -1,4 +1,4 @@
1
- import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Fragment as v,memo as u}from"react";import{styled as p}from"styled-components";import{useAtomValue as s}from"jotai";import{ComponentMapper as k}from"../components/Mapper.js";import{SchemaCatalogLink as I}from"../components/SchemaCatalogLink.js";import{RenderHook as c}from"../components/RenderHook.js";import{ContentWrapper as l}from"../components/common/ContentWrapper.js";import{globalOptionsAtom as x,routingBasePathAtom as y}from"../jotai/store.js";import{compose as A}from"../utils/compose.js";import{toElementId as O}from"../utils/url.js";import{withItemId as C}from"../hoc/withItemId.js";import{SECTION_ATTR as T}from"../constants/openapi.js";function j({content:o,itemPath:e,sectionId:a}){const{children:f}=o||{},i=o?.meta?.pointer,{unstable_hooks:n}=s(x),b=s(y),g=a?{[T]:a}:{},h=e?O(e,b):void 0;return m(P,{id:h,...g,"data-item-kind":o.itemVariant,"data-has-divider":o.showDivider||void 0,children:[r(c,{Hook:n?.BeforeOperation,props:{operation:o}}),f?.map((t,d)=>m(v,{children:[r(k,{type:t.nodeType,node:t,itemPath:e}),d===0&&i&&r(l,{children:r(I,{schemaRef:"#"+i})})]},`${e}-${t.nodeType}-${d}`)),r(c,{Hook:n?.AfterOperation,props:{operation:o}}),o.showDivider&&r(l,{children:r(w,{})})]})}const N=A(C,u)(j),w=p.div`
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{Fragment as v,memo as u}from"react";import{styled as p}from"styled-components";import{useAtomValue as s}from"jotai";import{ComponentMapper as k}from"../components/Mapper.js";import{SchemaCatalogLink as y}from"../components/SchemaCatalogLink.js";import{RenderHook as c}from"../components/RenderHook.js";import{globalOptionsAtom as I}from"../jotai/store.js";import{ContentWrapper as l}from"../components/common/ContentWrapper.js";import{routingBasePathAtom as x}from"../jotai/store.js";import{compose as A}from"../utils/compose.js";import{toElementId as O}from"../utils/url.js";import{withItemId as C}from"../hoc/withItemId.js";import{SECTION_ATTR as T}from"../constants/openapi.js";function j({content:o,itemPath:e,sectionId:i}){const{children:f}=o||{},a=o?.meta?.pointer,{unstable_hooks:n}=s(I),g=s(x),b=i?{[T]:i}:{},h=e?O(e,g):void 0;return d(P,{id:h,...b,"data-item-kind":o.itemVariant,"data-has-divider":o.showDivider||void 0,children:[r(c,{Hook:n?.BeforeOperation,props:{operation:o}}),f?.map((t,m)=>d(v,{children:[r(k,{type:t.nodeType,node:t,itemPath:e}),m===0&&a&&r(l,{children:r(y,{schemaRef:"#"+a})})]},`${e}-${t.nodeType}-${m}`)),r(c,{Hook:n?.AfterOperation,props:{operation:o}}),o.showDivider&&r(l,{children:r(w,{})})]})}const q=A(C,u)(j),w=p.div`
2
2
  border-bottom: 1px solid var(--border-color-secondary);
3
3
  `,P=p.div`
4
4
  padding-top: calc(var(--spacing-unit) * 16);
@@ -10,9 +10,11 @@ import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Fragment as v,memo as u
10
10
  padding-top: calc(var(--spacing-unit) * 16);
11
11
  padding-bottom: 0;
12
12
 
13
+ // @community-ignore
13
14
  [data-component-name='FeedbackItem'] {
14
15
  margin: 0;
15
16
  }
17
+ // @community-ignore-end
16
18
  }
17
19
 
18
20
  &[data-item-kind='channel'],
@@ -23,4 +25,4 @@ import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Fragment as v,memo as u
23
25
  &[data-item-kind='channelOperation']:not([data-has-divider]) {
24
26
  border-bottom: 1px solid var(--border-color-secondary);
25
27
  }
26
- `;export{N as ItemPage};
28
+ `;export{q as ItemPage};
@@ -1 +1,40 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{Link as c,useLocation as i}from"react-router";import{useNormalizeUrl as d}from"../hooks/useNormalizeUrl.js";function m({routingBasePath:n}){const t=i(),a=d(n||"/");return e("div",{className:"not-found-page",children:o("div",{className:"not-found-content",children:[e("h1",{children:"404"}),e("h2",{children:"Page Not Found"}),o("p",{children:["The page ",e("code",{children:t.pathname})," could not be found."]}),e("p",{children:"This documentation page doesn't exist. It may have been moved or deleted."}),e(c,{to:a,className:"back-link",children:"\u2190 Back to API Documentation"})]})})}export{m as NotFoundPage};
1
+ import{jsx as t,jsxs as e}from"react/jsx-runtime";import{useLocation as s}from"react-router";import{styled as a}from"styled-components";import{Button as p}from"@redocly/theme/components/Button/Button";import{ArrowLeftIcon as g}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{breakpoints as c}from"@redocly/theme/core/openapi";import{withoutPathPrefix as h}from"@redocly/theme/core/utils";import{useNormalizeUrl as l}from"../hooks/useNormalizeUrl.js";import{useTranslate as m}from"../hooks/useTranslate.js";function T({routingBasePath:i}){const n=s(),r=h(l(i||"/")),o=m();return e(d,{className:"not-found-page",children:[t(f,{children:"404"}),t(v,{children:o("page.apiNotFound.title","No page at this address")}),e(x,{children:[o("page.apiNotFound.description","There's no page at")," ",t(w,{children:n.pathname}),".",t("br",{}),o("page.apiNotFound.hint","It may have been moved or deleted.")]}),t(u,{children:t(p,{variant:"primary",size:"medium",to:r,icon:t(g,{}),children:o("page.apiNotFound.backButton","Back to docs")})})]})}const d=a.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ box-sizing: border-box;
6
+ min-height: calc(100vh - var(--navbar-height, 0px) - var(--banner-height, 0px));
7
+ min-height: calc(100dvh - var(--navbar-height, 0px) - var(--banner-height, 0px));
8
+ max-width: var(--page-404-max-width);
9
+ margin: 0 var(--page-404-margin-horizontal);
10
+ padding: var(--page-404-margin-vertical) 0;
11
+ font-family: var(--page-404-font-family);
12
+
13
+ @media screen and (max-width: ${c.small}) {
14
+ margin: 0 var(--spacing-lg);
15
+ }
16
+ `,f=a.div`
17
+ color: var(--page-404-status-text-color);
18
+ font-family: var(--font-family-monospaced);
19
+ font-size: var(--page-404-status-font-size);
20
+ line-height: var(--page-404-status-line-height);
21
+ font-weight: var(--page-404-status-font-weight);
22
+ `,v=a.h1`
23
+ margin: var(--spacing-xs) 0 0;
24
+ color: var(--page-404-title-text-color);
25
+ font-size: 32px;
26
+ line-height: 40px;
27
+ font-weight: var(--page-404-title-font-weight);
28
+ `,x=a.p`
29
+ margin: var(--spacing-lg) 0 0;
30
+ color: var(--page-404-description-text-color);
31
+ font-size: var(--font-size-lg);
32
+ line-height: var(--line-height-lg);
33
+ font-weight: var(--page-404-description-font-weight);
34
+ `,u=a.div`
35
+ margin-top: var(--spacing-xl);
36
+ `,w=a.code`
37
+ font-family: var(--font-family-monospaced);
38
+ font-weight: var(--font-weight-bold);
39
+ overflow-wrap: anywhere;
40
+ `;export{T as NotFoundPage};
@@ -0,0 +1,8 @@
1
+ import type { CodeSampleRequestValues } from './source.js';
2
+ /**
3
+ * Substitutes `{{name}}` environment-variable placeholders in a sample using
4
+ * the base env variables plus the active server's scoped overrides.
5
+ * `requestValues.serverEnvVariables` is keyed by the raw (templated) spec
6
+ * server URL.
7
+ */
8
+ export declare function applyEnvVariables(sample: string, requestValues: CodeSampleRequestValues | undefined, activeServerSpecUrl: string | undefined): string;
@@ -0,0 +1 @@
1
+ function o(a,n,r){const l={...n?.envVariables,...r&&n?.serverEnvVariables?.[r]};let e=a;for(const[s,t]of Object.entries(l))e=e.replaceAll(`{{${s}}}`,t);return e}export{o as applyEnvVariables};
@@ -1,5 +1,6 @@
1
1
  import type { CodeSampleHAR } from './sample-har.js';
2
2
  import type { CodeSampleSource, ParameterEntry } from './source.js';
3
+ import type { HoistedVariant } from './discriminator.js';
3
4
  export type HARBuildSelections = {
4
5
  serverUrl?: string;
5
6
  mediaType?: string;
@@ -29,10 +30,12 @@ export type HARBuildResolvers = {
29
30
  format?: string;
30
31
  }) => unknown;
31
32
  serializeParameter?: (param: ParameterEntry, value: unknown) => string;
32
- resolveVariantSchemaForSampling?: (schemaId: string) => {
33
- schema: Record<string, unknown>;
34
- variantSchemaId: string;
35
- } | undefined;
36
- applyDiscriminatorValue?: (sample: unknown, variantSchemaId: string) => void;
33
+ resolveVariantSchemaForSampling?: (schemaId: string) => HoistedVariant | undefined;
34
+ applyDiscriminatorValue?: (sample: unknown, variantSchemaId: string, mappingKey?: string) => void;
37
35
  };
38
36
  export declare function buildCodeSampleHAR(source: CodeSampleSource, selections: HARBuildSelections, options: HARBuildOptions, resolvers: HARBuildResolvers): CodeSampleHAR;
37
+ /**
38
+ * Reducer that mirrors openapi-docs `httpsnippet/helpers/reducer.ts`:
39
+ * collapse duplicate keys into arrays so generators can render them correctly.
40
+ */
41
+ export declare function appendKeyValue(obj: Record<string, string | string[]>, name: string, value: string): void;
@@ -1 +1 @@
1
- import $ from"url-template";import{SecurityVariablesEnvSuffix as g}from"@redocly/theme/core/openapi";import{mergeBodyValue as F}from"../../adapters/openapi/configure/merge-utils.js";import{formUrlEncodeValue as H,stringifyFormFieldValue as E}from"../../utils/form-urlencoded.js";import{isSequentialMediaType as K}from"../../utils/media-type.js";import{parseMultipartFormData as M}from"../../utils/multipart.js";import{objectToHarParams as J}from"../../utils/serialize-querystring.js";import{jsonToXml as L}from"../../utils/xml.js";import{MediaTypes as k}from"../../constants/openapi.js";import{convertSampleToString as Y}from"./convertSampleToString.js";import{findExampleIdByKey as Q,mediaTypeContainingKey as X}from"./example-key.js";import{resolveServerUrl as G}from"./replay/normalize-servers.js";import{serverMatchesUrl as W}from"./server-variables.js";function Ie(e,n,a,r){const o=e.servers.find(f=>W(f,n.serverUrl))||e.servers[0],u=o?.url?.replace(/\/$/,"")??"",c=u?G(u).replace(/\/$/,""):"",t={};if(o?.variables)for(const[f,A]of Object.entries(o.variables))t[f]=n.environment?.[f]||A.default||"";const l=e.path.replace(/^\//,""),i=`${c}/${l}`,d={skipReadOnly:!0,maxDepth:a.generatedPayloadSamplesMaxDepth??8,format:"json"},s=o?.url??n.serverUrl??"",p=n.requestValues??{},m=Z(e.security,n.activeSecuritySchemeIds),y=ee(m,n,a,s),S=b(e.parameters.header,"header",s,p,a,r,d).concat(y.headers),h=n.mediaType||X(e.requestBody,n.exampleName,r.resolveExample)||(e.requestBody?Object.keys(e.requestBody)[0]:void 0);let R=!1;for(const f of S)f.name.toLowerCase()==="content-type"&&h&&(f.value=h,R=!0);!R&&h&&S.unshift({name:"Content-Type",value:h});const v=b(e.parameters.cookie,"cookie",s,p,a,r,d).concat(y.cookies),O=e.parameters.querystring.length>0,C=b(O?e.parameters.querystring:e.parameters.query,O?"querystring":"query",s,p,a,r,d).concat(y.queries),U={};for(const f of e.parameters.path)U[f.name]=p.path?.[f.name]||f.serverValues?.[s]?.example||f.example||"";let x;if(h&&e.requestBody?.[h]){const f=e.requestBody[h],A=e.requestValues?.serverBody?.[s]??e.requestValues?.body;x=le(f,h,n,r,d,s,A)}const w={};for(const f of S)w[f.name]=f.value;const I={};v.length&&(I.cookie=v.map(f=>`${encodeURIComponent(f.name)}=${encodeURIComponent(f.value)}`).join("; ")),Object.assign(I,w);const j={};for(const f of C)V(j,f.name,f.value);const B=x?.text?ue(x.text):void 0;let _;if(x?.params?.length){_={};for(const f of x.params)V(_,f.name,f.value??"")}const P=C.map(f=>`${encodeURIComponent(f.name)}=${encodeURIComponent(f.value)}`).join("&"),q=P?`${i}?${P}`:i;return{method:e.method.toUpperCase(),url:i,pathname:q,httpVersion:"HTTP/1.1",cookies:v,headers:S,queryString:C,postData:x,headersSize:-1,bodySize:-1,fullUrl:q,headersObj:w,allHeaders:I,queryObj:j,jsonObj:B,paramsObj:_,basicAuth:y.basicAuth,pathParameters:U,serverVariables:t,responseCodes:e.responseCodes,allResponseCodes:e.responseCodes,oAuth2PreRequests:y.oAuth2PreRequests}}function V(e,n,a){const r=e[n];r===void 0?e[n]=a:Array.isArray(r)?r.push(a):e[n]=[r,a]}function Z(e,n){if(e.length){if(n?.length){const a=e.find(r=>{const o=r.schemes.map(u=>u.id);return o.length===n.length&&o.every(u=>n.includes(u))});if(a)return a}return e[0]}}function ee(e,n,a,r){const o={headers:[],cookies:[],queries:[]};if(!e)return o;for(const u of e.schemes)ne(u,o,n,a,r,e.scopes);return o}const te={"x-defaultUsername":g.Username,"x-defaultPassword":g.Password,"x-defaultClientId":g.ClientId,"x-defaultClientSecret":g.ClientSecret};function ne(e,n,a,r,o,u=[]){const c=a.requestValues?.security,t=l=>{const i=e.serverValues?.[o];if(i){const y=i[l];if(y!=null)return String(y)}const d=e[l];if(d!=null&&typeof d=="string")return d;const s=c?.[l];if(s!=null)return String(s);const p=l==="x-defaultAccessToken"?e.type==="apiKey"?g.APIKey:g.Token:te[l],m=p!==void 0?a.environment?.[e.id+p]:void 0;if(m)return m};if(e.type==="http"&&e.scheme==="basic")n.basicAuth={username:t("x-defaultUsername")||c?.username||"<username>",password:t("x-defaultPassword")||c?.password||"<password>"};else if(e.type==="http"){const l=t("x-defaultAccessToken"),i=e.scheme||"bearer",d=i.charAt(0).toUpperCase()+i.slice(1),s=e.bearerFormat?`<YOUR_${e.bearerFormat}_HERE>`:"<YOUR_TOKEN_HERE>";n.headers.push({name:"Authorization",value:l?`${d} ${l}`:`${d} ${s}`})}else if(e.type==="apiKey"&&e.name){const l=t("x-defaultAccessToken")||"YOUR_API_KEY_HERE",i={name:e.name,value:l};e.in==="header"?n.headers.push(i):e.in==="cookie"?n.cookies.push({name:e.name,value:l}):(e.in==="query"||e.in==="querystring"||e.in===void 0)&&n.queries.push({name:e.name,value:l})}else if(e.type==="oauth2"){const l=t("x-defaultAccessToken"),i=t("x-defaultTokenType")||"Bearer";if(n.headers.push({name:"Authorization",value:l?`${i} ${l}`:"Bearer <YOUR_TOKEN_HERE>"}),r.withOAuth2Call&&e.flows){const d=[];if(e.flows.deviceAuthorization){const s=e.flows.deviceAuthorization;d.push(ae(s.deviceAuthorizationUrl,s.tokenUrl,e,o,u))}else if(e.flows.clientCredentials){const s=e.flows.clientCredentials;d.push(z("clientCredentials",s.tokenUrl,e,o,u))}else if(e.flows.password){const s=e.flows.password;d.push(z("password",s.tokenUrl,e,o,u))}d.length>0&&(n.oAuth2PreRequests=(n.oAuth2PreRequests??[]).concat(d))}}else if(e.type==="openIdConnect"){const l=t("x-defaultAccessToken"),i=t("x-defaultTokenType")||"Bearer";n.headers.push({name:"Authorization",value:l?`${i} ${l}`:"Bearer <YOUR_TOKEN_HERE>"})}}function ae(e,n,a,r,o=[]){const u=a.serverValues?.[r]?.["x-defaultClientId"]||a["x-defaultClientId"]||"YOUR_CLIENT_ID",c=[{name:"client_id",value:u}];return o.length>0&&c.push({name:"scope",value:o.join(" ")}),{flowType:"deviceAuthorization",tokenUrl:n,clientId:u,scopes:o.length>0?o:void 0,method:"POST",url:e,httpVersion:"HTTP/1.1",cookies:[],headers:[{name:"Content-Type",value:"application/x-www-form-urlencoded"},{name:"Accept",value:"application/json"}],queryString:[],postData:{mimeType:"application/x-www-form-urlencoded",params:c,text:c.map(t=>`${encodeURIComponent(t.name)}=${encodeURIComponent(t.value??"")}`).join("&")},headersSize:-1,bodySize:-1}}function z(e,n,a,r,o=[]){const u=a.serverValues?.[r]?.["x-defaultClientId"]||a["x-defaultClientId"]||"YOUR_CLIENT_ID",c=a.serverValues?.[r]?.["x-defaultClientSecret"]||a["x-defaultClientSecret"],t=a.serverValues?.[r]?.["x-defaultUsername"]||a["x-defaultUsername"],l=a.serverValues?.[r]?.["x-defaultPassword"]||a["x-defaultPassword"],i=[];return e==="clientCredentials"?i.push({name:"grant_type",value:"client_credentials"}):e==="password"&&i.push({name:"grant_type",value:"password"}),i.push({name:"client_id",value:u}),i.push({name:"client_secret",value:c||"YOUR_CLIENT_SECRET"}),e==="password"&&(i.push({name:"username",value:t||"<username>"}),i.push({name:"password",value:l||"<password>"})),o.length>0&&i.push({name:"scope",value:o.join(" ")}),{flowType:e,tokenUrl:n,clientId:u,clientSecret:c,username:t,password:l,scopes:o.length>0?o:void 0,method:"POST",url:n,httpVersion:"HTTP/1.1",cookies:[],headers:[{name:"Content-Type",value:"application/x-www-form-urlencoded"},{name:"Accept",value:"application/json"}],queryString:[],postData:{mimeType:"application/x-www-form-urlencoded",params:i,text:i.map(d=>`${encodeURIComponent(d.name)}=${encodeURIComponent(d.value??"")}`).join("&")},headersSize:-1,bodySize:-1}}function N(e,n,a){return n==="querystring"&&e.serializationMime===k.URL_ENCODED&&typeof a=="object"&&a!==null?re(J(a)):null}function re(e){const n=new Map,a=[];for(const r of e){const o=n.get(r.name);o?o.push(r.value):(n.set(r.name,[r.value]),a.push(r.name))}return a.map(r=>({name:r,value:(n.get(r)??[]).join(",")}))}function b(e,n,a,r,o,u,c){return e.filter(t=>!o.skipOptionalParameters||t.required).flatMap(t=>{const i=r[n==="querystring"?"query":n]?.[t.name];if(i!=null)return[{name:t.name,value:String(i)}];const d=t.serverValues?.[a]?.example;if(d!=null)return[{name:t.name,value:T(t,d)}];if(t.example!=null){const s=N(t,n,t.example);return s||(t.serializationMime&&u.serializeParameter?[{name:t.name,value:u.serializeParameter(t,t.example)}]:[{name:t.name,value:T(t,t.example)}])}if(n==="querystring"&&t.serializationMime===k.URL_ENCODED&&t.schemaId){const s=u.resolveSchema(t.schemaId);if(s){const p=u.sampleFromSchema(s,c),m=N(t,n,p);if(m)return m}}return[{name:t.name,value:oe(t,u,c)}]})}function oe(e,n,a){if(e.schemaId){const r=n.resolveSchema(e.schemaId);if(r){const o=n.sampleFromSchema(r,a);if(o!=null)return e.serializationMime&&n.serializeParameter?n.serializeParameter(e,o):T(e,o)}}return`{${e.name}}`}function ie(e){switch(e){case"query":case"querystring":case"cookie":return"form";case"path":case"header":return"simple";default:return"form"}}function T(e,n){if(n==null)return"";if(typeof n!="object")return String(n);const a=e.style??ie(e.in),o=e.explode??a==="form"?"*":"",u="__redoc_param_name__";try{switch(a){case"form":{const l=$.parse(`{?${u}${o}}`).expand({[u]:n}).substring(1).replace(/__redoc_param_name__/g,e.name).split(`&${e.name}=`);return l[0]=l[0].replace(new RegExp(`^${se(e.name)}=`),""),l.map(D).join(",")}case"spaceDelimited":return Array.isArray(n)?n.map(String).join(" "):String(n);case"pipeDelimited":return Array.isArray(n)?n.map(String).join("|"):String(n);case"simple":case"label":case"matrix":{const c=a==="label"?".":a==="matrix"?";":"",t=$.parse(`{${c}${u}${o}}`);return D(t.expand({[u]:n}).replace(/__redoc_param_name__/g,e.name))}case"deepObject":return JSON.stringify(n);default:return JSON.stringify(n)}}catch{return Array.isArray(n)?n.map(String).join(","):JSON.stringify(n)}}function se(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function D(e){try{return decodeURIComponent(e)}catch{return e}}function le(e,n,a,r,o,u,c){let t;if(a.replayBody!==void 0&&(t=a.replayBody),t===void 0&&a.exampleName){const s=Q(e.exampleIds,a.exampleName,r.resolveExample),p=s?r.resolveExample(s):void 0;p&&(t=p.value)}if(t===void 0&&e.exampleIds?.length){const s=r.resolveExample(e.exampleIds[0]);s&&(t=s.value)}if(t===void 0&&e.schemaId){const s=r.resolveVariantSchemaForSampling?.(e.schemaId),p=s?.schema??r.resolveSchema(e.schemaId),m=s?.variantSchemaId??e.schemaId;if(p){const y=n.toLowerCase().includes("xml");t=r.sampleFromSchema(p,{...o,format:y?"xml":o.format}),t&&typeof t=="object"&&!Array.isArray(t)&&m!==e.schemaId&&r.applyDiscriminatorValue?.(t,m)}}if(c!==void 0&&a.replayBody===void 0&&(t===void 0?t=c:t=F(t,c)),t===void 0)return;const l=n.toLowerCase();let i,d=[];if(l.includes("x-www-form-urlencoded"))typeof t=="object"&&t!==null?(d=Object.entries(t).map(([s,p])=>({name:s,value:E(p)})),i=H(t)):i=String(t);else if(l.includes("multipart/form-data"))typeof t=="string"?(d=M(t)??[],i=t):(typeof t=="object"&&t!==null&&!Array.isArray(t)&&(d=Object.entries(t).map(([s,p])=>({name:s,value:E(p)}))),i=JSON.stringify(t,null,2));else if(K(l))if(typeof t=="string")i=t;else{const s=e.schemaId?r.resolveSchema(e.schemaId):void 0;i=String(Y(t,l,s,!0))}else l.includes("json")?i=typeof t=="string"?t:JSON.stringify(t,null,2):l.includes("xml")?i=typeof t=="string"?t:t&&typeof t=="object"?L(t):String(t):i=typeof t=="string"?t:JSON.stringify(t,null,2);return{mimeType:n,params:d,text:i}}function ue(e){try{const n=JSON.parse(e);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{}}export{Ie as buildCodeSampleHAR};
1
+ import $ from"url-template";import{SecurityVariablesEnvSuffix as g}from"@redocly/theme/core/openapi";import{mergeBodyValue as F}from"../../adapters/openapi/configure/merge-utils.js";import{formUrlEncodeValue as K,stringifyFormFieldValue as E}from"../../utils/form-urlencoded.js";import{isSequentialMediaType as H}from"../../utils/media-type.js";import{parseMultipartFormData as M}from"../../utils/multipart.js";import{objectToHarParams as J}from"../../utils/serialize-querystring.js";import{jsonToXml as L}from"../../utils/xml.js";import{MediaTypes as k}from"../../constants/openapi.js";import{convertSampleToString as Y}from"./convertSampleToString.js";import{findExampleIdByKey as Q,mediaTypeContainingKey as X}from"./example-key.js";import{resolveServerUrl as G}from"./normalize-servers.js";import{serverMatchesUrl as W}from"./server-variables.js";function Ie(e,n,a,r){const o=e.servers.find(f=>W(f,n.serverUrl))||e.servers[0],u=o?.url?.replace(/\/$/,"")??"",c=u?G(u).replace(/\/$/,""):"",t={};if(o?.variables)for(const[f,A]of Object.entries(o.variables))t[f]=n.environment?.[f]||A.default||"";const l=e.path.replace(/^\//,""),s=`${c}/${l}`,d={skipReadOnly:!0,maxDepth:a.generatedPayloadSamplesMaxDepth??8,format:"json"},i=o?.url??n.serverUrl??"",p=n.requestValues??{},m=Z(e.security,n.activeSecuritySchemeIds),y=ee(m,n,a,i),S=b(e.parameters.header,"header",i,p,a,r,d).concat(y.headers),h=n.mediaType||X(e.requestBody,n.exampleName,r.resolveExample)||(e.requestBody?Object.keys(e.requestBody)[0]:void 0);let R=!1;for(const f of S)f.name.toLowerCase()==="content-type"&&h&&(f.value=h,R=!0);!R&&h&&S.unshift({name:"Content-Type",value:h});const v=b(e.parameters.cookie,"cookie",i,p,a,r,d).concat(y.cookies),O=e.parameters.querystring.length>0,C=b(O?e.parameters.querystring:e.parameters.query,O?"querystring":"query",i,p,a,r,d).concat(y.queries),U={};for(const f of e.parameters.path)U[f.name]=p.path?.[f.name]||f.serverValues?.[i]?.example||f.example||"";let x;if(h&&e.requestBody?.[h]){const f=e.requestBody[h],A=e.requestValues?.serverBody?.[i]??e.requestValues?.body;x=le(f,h,n,r,d,i,A)}const w={};for(const f of S)w[f.name]=f.value;const I={};v.length&&(I.cookie=v.map(f=>`${encodeURIComponent(f.name)}=${encodeURIComponent(f.value)}`).join("; ")),Object.assign(I,w);const j={};for(const f of C)V(j,f.name,f.value);const B=x?.text?ue(x.text):void 0;let _;if(x?.params?.length){_={};for(const f of x.params)V(_,f.name,f.value??"")}const P=C.map(f=>`${encodeURIComponent(f.name)}=${encodeURIComponent(f.value)}`).join("&"),q=P?`${s}?${P}`:s;return{method:e.method.toUpperCase(),url:s,pathname:q,httpVersion:"HTTP/1.1",cookies:v,headers:S,queryString:C,postData:x,headersSize:-1,bodySize:-1,fullUrl:q,headersObj:w,allHeaders:I,queryObj:j,jsonObj:B,paramsObj:_,basicAuth:y.basicAuth,pathParameters:U,serverVariables:t,responseCodes:e.responseCodes,allResponseCodes:e.responseCodes,oAuth2PreRequests:y.oAuth2PreRequests}}function V(e,n,a){const r=e[n];r===void 0?e[n]=a:Array.isArray(r)?r.push(a):e[n]=[r,a]}function Z(e,n){if(e.length){if(n?.length){const a=e.find(r=>{const o=r.schemes.map(u=>u.id);return o.length===n.length&&o.every(u=>n.includes(u))});if(a)return a}return e[0]}}function ee(e,n,a,r){const o={headers:[],cookies:[],queries:[]};if(!e)return o;for(const u of e.schemes)ne(u,o,n,a,r,e.scopes);return o}const te={"x-defaultUsername":g.Username,"x-defaultPassword":g.Password,"x-defaultClientId":g.ClientId,"x-defaultClientSecret":g.ClientSecret};function ne(e,n,a,r,o,u=[]){const c=a.requestValues?.security,t=l=>{const s=e.serverValues?.[o];if(s){const y=s[l];if(y!=null)return String(y)}const d=e[l];if(d!=null&&typeof d=="string")return d;const i=c?.[l];if(i!=null)return String(i);const p=l==="x-defaultAccessToken"?e.type==="apiKey"?g.APIKey:g.Token:te[l],m=p!==void 0?a.environment?.[e.id+p]:void 0;if(m)return m};if(e.type==="http"&&e.scheme==="basic")n.basicAuth={username:t("x-defaultUsername")||c?.username||"<username>",password:t("x-defaultPassword")||c?.password||"<password>"};else if(e.type==="http"){const l=t("x-defaultAccessToken"),s=e.scheme||"bearer",d=s.charAt(0).toUpperCase()+s.slice(1),i=e.bearerFormat?`<YOUR_${e.bearerFormat}_HERE>`:"<YOUR_TOKEN_HERE>";n.headers.push({name:"Authorization",value:l?`${d} ${l}`:`${d} ${i}`})}else if(e.type==="apiKey"&&e.name){const l=t("x-defaultAccessToken")||"YOUR_API_KEY_HERE",s={name:e.name,value:l};e.in==="header"?n.headers.push(s):e.in==="cookie"?n.cookies.push({name:e.name,value:l}):(e.in==="query"||e.in==="querystring"||e.in===void 0)&&n.queries.push({name:e.name,value:l})}else if(e.type==="oauth2"){const l=t("x-defaultAccessToken"),s=t("x-defaultTokenType")||"Bearer";if(n.headers.push({name:"Authorization",value:l?`${s} ${l}`:"Bearer <YOUR_TOKEN_HERE>"}),r.withOAuth2Call&&e.flows){const d=[];if(e.flows.deviceAuthorization){const i=e.flows.deviceAuthorization;d.push(ae(i.deviceAuthorizationUrl,i.tokenUrl,e,o,u))}else if(e.flows.clientCredentials){const i=e.flows.clientCredentials;d.push(z("clientCredentials",i.tokenUrl,e,o,u))}else if(e.flows.password){const i=e.flows.password;d.push(z("password",i.tokenUrl,e,o,u))}d.length>0&&(n.oAuth2PreRequests=(n.oAuth2PreRequests??[]).concat(d))}}else if(e.type==="openIdConnect"){const l=t("x-defaultAccessToken"),s=t("x-defaultTokenType")||"Bearer";n.headers.push({name:"Authorization",value:l?`${s} ${l}`:"Bearer <YOUR_TOKEN_HERE>"})}}function ae(e,n,a,r,o=[]){const u=a.serverValues?.[r]?.["x-defaultClientId"]||a["x-defaultClientId"]||"YOUR_CLIENT_ID",c=[{name:"client_id",value:u}];return o.length>0&&c.push({name:"scope",value:o.join(" ")}),{flowType:"deviceAuthorization",tokenUrl:n,clientId:u,scopes:o.length>0?o:void 0,method:"POST",url:e,httpVersion:"HTTP/1.1",cookies:[],headers:[{name:"Content-Type",value:"application/x-www-form-urlencoded"},{name:"Accept",value:"application/json"}],queryString:[],postData:{mimeType:"application/x-www-form-urlencoded",params:c,text:c.map(t=>`${encodeURIComponent(t.name)}=${encodeURIComponent(t.value??"")}`).join("&")},headersSize:-1,bodySize:-1}}function z(e,n,a,r,o=[]){const u=a.serverValues?.[r]?.["x-defaultClientId"]||a["x-defaultClientId"]||"YOUR_CLIENT_ID",c=a.serverValues?.[r]?.["x-defaultClientSecret"]||a["x-defaultClientSecret"],t=a.serverValues?.[r]?.["x-defaultUsername"]||a["x-defaultUsername"],l=a.serverValues?.[r]?.["x-defaultPassword"]||a["x-defaultPassword"],s=[];return e==="clientCredentials"?s.push({name:"grant_type",value:"client_credentials"}):e==="password"&&s.push({name:"grant_type",value:"password"}),s.push({name:"client_id",value:u}),s.push({name:"client_secret",value:c||"YOUR_CLIENT_SECRET"}),e==="password"&&(s.push({name:"username",value:t||"<username>"}),s.push({name:"password",value:l||"<password>"})),o.length>0&&s.push({name:"scope",value:o.join(" ")}),{flowType:e,tokenUrl:n,clientId:u,clientSecret:c,username:t,password:l,scopes:o.length>0?o:void 0,method:"POST",url:n,httpVersion:"HTTP/1.1",cookies:[],headers:[{name:"Content-Type",value:"application/x-www-form-urlencoded"},{name:"Accept",value:"application/json"}],queryString:[],postData:{mimeType:"application/x-www-form-urlencoded",params:s,text:s.map(d=>`${encodeURIComponent(d.name)}=${encodeURIComponent(d.value??"")}`).join("&")},headersSize:-1,bodySize:-1}}function N(e,n,a){return n==="querystring"&&e.serializationMime===k.URL_ENCODED&&typeof a=="object"&&a!==null?re(J(a)):null}function re(e){const n=new Map,a=[];for(const r of e){const o=n.get(r.name);o?o.push(r.value):(n.set(r.name,[r.value]),a.push(r.name))}return a.map(r=>({name:r,value:(n.get(r)??[]).join(",")}))}function b(e,n,a,r,o,u,c){return e.filter(t=>!o.skipOptionalParameters||t.required).flatMap(t=>{const s=r[n==="querystring"?"query":n]?.[t.name];if(s!=null)return[{name:t.name,value:String(s)}];const d=t.serverValues?.[a]?.example;if(d!=null)return[{name:t.name,value:T(t,d)}];if(t.example!=null){const i=N(t,n,t.example);return i||(t.serializationMime&&u.serializeParameter?[{name:t.name,value:u.serializeParameter(t,t.example)}]:[{name:t.name,value:T(t,t.example)}])}if(n==="querystring"&&t.serializationMime===k.URL_ENCODED&&t.schemaId){const i=u.resolveSchema(t.schemaId);if(i){const p=u.sampleFromSchema(i,c),m=N(t,n,p);if(m)return m}}return[{name:t.name,value:oe(t,u,c)}]})}function oe(e,n,a){if(e.schemaId){const r=n.resolveSchema(e.schemaId);if(r){const o=n.sampleFromSchema(r,a);if(o!=null)return e.serializationMime&&n.serializeParameter?n.serializeParameter(e,o):T(e,o)}}return`{${e.name}}`}function ie(e){switch(e){case"query":case"querystring":case"cookie":return"form";case"path":case"header":return"simple";default:return"form"}}function T(e,n){if(n==null)return"";if(typeof n!="object")return String(n);const a=e.style??ie(e.in),o=e.explode??a==="form"?"*":"",u="__redoc_param_name__";try{switch(a){case"form":{const l=$.parse(`{?${u}${o}}`).expand({[u]:n}).substring(1).replace(/__redoc_param_name__/g,e.name).split(`&${e.name}=`);return l[0]=l[0].replace(new RegExp(`^${se(e.name)}=`),""),l.map(D).join(",")}case"spaceDelimited":return Array.isArray(n)?n.map(String).join(" "):String(n);case"pipeDelimited":return Array.isArray(n)?n.map(String).join("|"):String(n);case"simple":case"label":case"matrix":{const c=a==="label"?".":a==="matrix"?";":"",t=$.parse(`{${c}${u}${o}}`);return D(t.expand({[u]:n}).replace(/__redoc_param_name__/g,e.name))}case"deepObject":return JSON.stringify(n);default:return JSON.stringify(n)}}catch{return Array.isArray(n)?n.map(String).join(","):JSON.stringify(n)}}function se(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function D(e){try{return decodeURIComponent(e)}catch{return e}}function le(e,n,a,r,o,u,c){let t;if(a.replayBody!==void 0&&(t=a.replayBody),t===void 0&&a.exampleName){const i=Q(e.exampleIds,a.exampleName,r.resolveExample),p=i?r.resolveExample(i):void 0;p&&(t=p.value)}if(t===void 0&&e.exampleIds?.length){const i=r.resolveExample(e.exampleIds[0]);i&&(t=i.value)}if(t===void 0&&e.schemaId){const i=r.resolveVariantSchemaForSampling?.(e.schemaId),p=i?.schema??r.resolveSchema(e.schemaId),m=i?.variantSchemaId??e.schemaId;if(p){const y=n.toLowerCase().includes("xml");t=r.sampleFromSchema(p,{...o,format:y?"xml":o.format}),t&&typeof t=="object"&&!Array.isArray(t)&&m!==e.schemaId&&r.applyDiscriminatorValue?.(t,m,i?.mappingKey)}}if(c!==void 0&&a.replayBody===void 0&&(t===void 0?t=c:t=F(t,c)),t===void 0)return;const l=n.toLowerCase();let s,d=[];if(l.includes("x-www-form-urlencoded"))typeof t=="object"&&t!==null?(d=Object.entries(t).map(([i,p])=>({name:i,value:E(p)})),s=K(t)):s=String(t);else if(l.includes("multipart/form-data"))typeof t=="string"?(d=M(t)??[],s=t):(typeof t=="object"&&t!==null&&!Array.isArray(t)&&(d=Object.entries(t).map(([i,p])=>({name:i,value:E(p)}))),s=JSON.stringify(t,null,2));else if(H(l))if(typeof t=="string")s=t;else{const i=e.schemaId?r.resolveSchema(e.schemaId):void 0;s=String(Y(t,l,i,!0))}else l.includes("json")?s=typeof t=="string"?t:JSON.stringify(t,null,2):l.includes("xml")?s=typeof t=="string"?t:t&&typeof t=="object"?L(t):String(t):s=typeof t=="string"?t:JSON.stringify(t,null,2);return{mimeType:n,params:d,text:s}}function ue(e){try{const n=JSON.parse(e);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{}}export{V as appendKeyValue,Ie as buildCodeSampleHAR};
@@ -2,9 +2,11 @@ import type { SchemaEntry } from '../../types/store.js';
2
2
  export type EffectiveDiscriminator = {
3
3
  propertyName: string;
4
4
  mapping: Record<string, string>;
5
+ defaultMapping?: string;
6
+ variantsNode?: Record<string, unknown>;
5
7
  };
6
8
  export declare function findEffectiveDiscriminator(schemaData: Record<string, unknown> | undefined, schemaStore: Record<string, SchemaEntry>, visited?: Set<string>): EffectiveDiscriminator | undefined;
7
- export declare function applyDiscriminatorValue(sample: Record<string, unknown>, variantSchemaId: string, schemaStore: Record<string, SchemaEntry>): void;
9
+ export declare function applyDiscriminatorValue(sample: Record<string, unknown>, variantSchemaId: string, schemaStore: Record<string, SchemaEntry>, mappingKey?: string): void;
8
10
  export type SchemaVariantOption = {
9
11
  label: string;
10
12
  schemaId: string;
@@ -12,6 +14,11 @@ export type SchemaVariantOption = {
12
14
  isDefaultMapping?: boolean;
13
15
  isDeprecated?: boolean;
14
16
  };
17
+ export type HoistedVariant = {
18
+ schema: Record<string, unknown>;
19
+ variantSchemaId: string;
20
+ mappingKey?: string;
21
+ };
15
22
  export type SchemaVariantAxis = {
16
23
  kind: 'discriminator' | 'oneOf' | 'anyOf';
17
24
  stateKey: string;
@@ -25,15 +32,14 @@ export declare function findSchemaVariantAxis(schemaId: string, schemaStore: Rec
25
32
  }): SchemaVariantAxis | undefined;
26
33
  export declare function resolveActiveVariantIndex(axis: SchemaVariantAxis, activeDiscriminator?: Record<string, number>, activeOneOf?: Record<string, number>): number;
27
34
  export declare function resolveActiveVariantSchemaId(schemaId: string, schemaStore: Record<string, SchemaEntry>, activeDiscriminator?: Record<string, number>, activeOneOf?: Record<string, number>): string;
28
- export declare function hoistActiveVariantSchemaForSampling(schemaId: string, schemaStore: Record<string, SchemaEntry>, activeDiscriminator?: Record<string, number>, activeOneOf?: Record<string, number>): {
29
- schema: Record<string, unknown>;
30
- variantSchemaId: string;
31
- } | undefined;
35
+ export declare function hoistActiveVariantSchemaForSampling(schemaId: string, schemaStore: Record<string, SchemaEntry>, activeDiscriminator?: Record<string, number>, activeOneOf?: Record<string, number>): HoistedVariant | undefined;
32
36
  /**
33
- * Deep-collapse inline nested oneOf/anyOf to the active branch (default 0) so
34
- * generated samples follow the switcher and so null branches sample as `null`:
35
- * the sampler turns any surviving `oneOf: [{type: 'null'}]` wrapper into `{}`.
36
- * Returns a structural clone.
37
+ * Deep-collapse inline nested variant axes to the active option so generated
38
+ * samples follow the switcher: oneOf/anyOf collapse to the active branch
39
+ * (default 0) so null branches sample as `null`: the sampler turns any
40
+ * surviving `oneOf: [{type: 'null'}]` wrapper into `{}` — and inline
41
+ * discriminator hosts collapse to the active variant with its mapping key
42
+ * stamped. Returns a structural clone.
37
43
  */
38
- export declare function applyActiveVariantsToSchema(data: Record<string, unknown>, schemaStore: Record<string, SchemaEntry>, activeOneOf?: Record<string, number>, parentPath?: string[]): Record<string, unknown>;
44
+ export declare function applyActiveVariantsToSchema(data: Record<string, unknown>, schemaStore: Record<string, SchemaEntry>, activeDiscriminator?: Record<string, number>, activeOneOf?: Record<string, number>, parentPath?: string[]): Record<string, unknown>;
39
45
  export declare function applyActiveVariantsToStore(schemaStore: Record<string, SchemaEntry>, activeDiscriminator?: Record<string, number>, activeOneOf?: Record<string, number>): Record<string, Record<string, unknown>>;
@@ -1 +1 @@
1
- import{buildVariantStateKey as L}from"../../jotai/itemStore.js";import{deriveVariantLabel as H}from"../schema/variant-label.js";function A(n){return n.discriminator}function O(n){return n.startsWith("#/")?n.slice(2):n}function m(n,e,i=new Set){if(!n)return;const r=A(n);if(r?.propertyName&&r.mapping)return{propertyName:r.propertyName,mapping:r.mapping};const t=n.allOf;if(Array.isArray(t))for(const o of t){if(!o||typeof o!="object")continue;const f=o;if(typeof f.$ref=="string"){const c=O(f.$ref);if(i.has(c))continue;i.add(c);const s=e[c];if(s){const a=m(s.data,e,i);if(a)return a}continue}const u=m(f,e,i);if(u)return u}}function nn(n,e,i){for(const r of Object.values(i)){const t=A(r.data);if(!(!t?.propertyName||!t.mapping)&&t.propertyName in n){if(t.defaultMapping&&O(t.defaultMapping)===e)return;for(const[o,f]of Object.entries(t.mapping))if(O(f)===e){n[t.propertyName]=o;return}}}}function $({oneOfList:n,oneOfOwner:e,extraSiblings:i,fallbackSchemaId:r,schemaStore:t,activeIdx:o=0}){const f=o>=0&&o<n.length?o:0,u=n[f],c=k(u,t);if(!c)return;const{oneOf:s,anyOf:a,...p}=e,d=[...i,p].filter(j),y=[...Array.isArray(c.allOf)?c.allOf:[],...d],{allOf:T,...x}=c,C=y.length?{...x,allOf:y}:{...x},v=F(u,t)??r;return{schema:C,variantSchemaId:v}}function j(n){return!!n&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).length>0}function k(n,e){if(!n||typeof n!="object")return;const i=n;if(typeof i.$ref!="string")return i;const r=O(i.$ref);return e[r]?.data}function F(n,e){if(!n||typeof n!="object")return;const i=n;if(typeof i.$ref!="string")return;const r=O(i.$ref);return e[r]?r:void 0}const W="One of:",P="Any of:",B="Default mapping";function N(n){return!!n?.deprecated}function z(n,e){if(!n||typeof n!="object")return{};const i=n;if(typeof i.$ref=="string"){const r=O(i.$ref),o={...e[r]?.data??{}};return o["x-original-ref"]=i.$ref,o}return i}function D(n,e,i,r){const t=Object.entries(e.mapping);if(t.length===0)return;const o=n.discriminator?.defaultMapping,f=[];for(const[u,c]of t){if(o&&c===o)continue;const s=O(c);f.push({label:u,schemaId:s,mappingKey:u,isDeprecated:N(i[s]?.data)})}if(o){const u=O(o);f.push({label:B,schemaId:u,isDefaultMapping:!0,isDeprecated:N(i[u]?.data)})}return{kind:"discriminator",stateKey:L(r,e.propertyName),options:f,localPart:e.propertyName,parentPath:r}}function g(n,e,i,r,t){if(!n.length)return;const o=t==="anyOf"?P:W,f=[],u=new Map;for(let c=0;c<n.length;c++){const s=n[c],a=z(s,i),{label:p}=H(a,e),d=(u.get(p)??0)+1;u.set(p,d);const l=d===1?p:`${p} (${d})`,y=F(s,i)??"";f.push({label:l,schemaId:y,isDeprecated:N(i[y]?.data??s)})}return{kind:t,stateKey:L(r,o),options:f,localPart:o,parentPath:r}}function _(n,e,i){const r=m(n,e);if(r){const t=D(n,r,e,i);if(t&&t.options.length>0)return t}if(Array.isArray(n.oneOf)&&n.oneOf.length>0){const t=g(n.oneOf,n,e,i,"oneOf");if(t&&t.options.length>0)return t}if(Array.isArray(n.anyOf)&&n.anyOf.length>0){const t=g(n.anyOf,n,e,i,"anyOf");if(t&&t.options.length>0)return t}}function I(n,e,i=new Map,r=new Set,t=[]){if(!n)return i;const o=(c,s=t)=>{if(!c||typeof c!="object")return;const a=c;if(typeof a.$ref=="string"){const d=O(a.$ref);if(r.has(d))return;r.add(d);const l=e[d]?.data;if(!l)return;const y=_(l,e,s);y&&y.options.length>1&&i.set(y.stateKey,y),I(l,e,i,r,s);return}const p=_(a,e,s);p&&p.options.length>1&&i.set(p.stateKey,p),I(a,e,i,r,s)},f=n.properties;if(f&&typeof f=="object")for(const[c,s]of Object.entries(f))o(s,[...t,c]);const u=t.length>0?[...t.slice(0,-1),`${t[t.length-1]}[]`]:t;o(n.items,u);for(const c of["oneOf","anyOf","allOf"]){const s=n[c];if(Array.isArray(s))for(const a of s)o(a,t)}return i}function G(n,e,{includeNested:i=!1}={}){const r=e[n];if(!r)return;const t=_(r.data,e,[]);if(t&&t.options.length>0)return t;if(!i)return;const o=I(r.data,e);if(o.size===1)return o.values().next().value}function b(n,e,i){const r=n.kind==="discriminator"?e:i;if(!r)return 0;const t=r[n.stateKey];if(t!==void 0&&t>=0&&t<n.options.length)return t;const o=Object.entries(r).filter(([f])=>f.endsWith(`/${n.stateKey}`)||f.includes("/")&&n.stateKey.endsWith(`/${f}`));if(o.length===1){const[,f]=o[0];if(f>=0&&f<n.options.length)return f}return 0}function M(n,e,i,r){const t=G(n,e);if(!t)return n;const o=b(t,i,r),f=t.options[o]??t.options[0];return f?.schemaId&&e[f.schemaId]?f.schemaId:n}function tn(n,e,i,r){const t=U(n,e,r);if(t)return t;const o=M(n,e,i,r);if(o!==n){const f=e[o];if(f)return{schema:f.data,variantSchemaId:o}}}function U(n,e,i){const r=e[n];if(!r||A(r.data))return;const t=r.data;if(Array.isArray(t.oneOf)&&t.oneOf.length>0){const o=g(t.oneOf,t,e,[],"oneOf"),f=o?b(o,void 0,i):0;return $({oneOfList:t.oneOf,oneOfOwner:t,extraSiblings:[],fallbackSchemaId:n,schemaStore:e,activeIdx:f})}if(Array.isArray(t.anyOf)&&t.anyOf.length>0){const o=g(t.anyOf,t,e,[],"anyOf"),f=o?b(o,void 0,i):0;return $({oneOfList:t.anyOf,oneOfOwner:t,extraSiblings:[],fallbackSchemaId:n,schemaStore:e,activeIdx:f})}if(Array.isArray(t.allOf)){let o,f,u="oneOf";const c=[];for(const p of t.allOf){const d=k(p,e)??p,l=Array.isArray(d.oneOf)?d.oneOf:Array.isArray(d.anyOf)?d.anyOf:void 0;!f&&l?.length&&!A(d)?(o=d,f=l,u=Array.isArray(d.oneOf)?"oneOf":"anyOf"):c.push(p)}if(!f||!o)return;const s=g(f,o,e,[],u),a=s?b(s,void 0,i):0;return $({oneOfList:f,oneOfOwner:o,extraSiblings:c,fallbackSchemaId:n,schemaStore:e,activeIdx:a})}}function X(n){return n.length===0?n:[...n.slice(0,-1),`${n[n.length-1]}[]`]}function Y(n,e,i,r=[]){const t=(o,f)=>{if(!o||typeof o!="object")return o;if(Array.isArray(o))return o.map(s=>t(s,f));const u=o;if(typeof u.$ref=="string")return u;if(!A(u))for(const s of["oneOf","anyOf"]){const a=u[s];if(!Array.isArray(a)||a.length===0)continue;const p=g(a,u,e,f,s),d=p?b(p,void 0,i):0,l=a[d]??a[0];if(!j(l))continue;const{oneOf:y,anyOf:T,...x}=u;return t({...x,...l},f)}const c={};for(const[s,a]of Object.entries(u))if(s==="properties"&&j(a)){const p={};for(const[d,l]of Object.entries(a))p[d]=t(l,[...f,d]);c[s]=p}else s==="items"?c[s]=t(a,X(f)):s==="allOf"||s==="oneOf"||s==="anyOf"?c[s]=t(a,f):c[s]=a;return c};return t(n,r)}function E(n,e){return n.type!==void 0||e.type===void 0?n:{...n,type:e.type}}function en(n,e,i){const r={};for(const[t,o]of Object.entries(n)){if(!o.data)continue;const f=A(o.data);if(f?.propertyName&&f.mapping){const c=M(t,n,e,i),s=n[c]?.data;if(s&&c!==t){const a=R(s,t,o.data);r[t]=E(q(a,f,c),o.data)}else r[t]=o.data;continue}let u=!1;for(const c of["oneOf","anyOf"]){const s=o.data[c];if(!Array.isArray(s))continue;const a=g(s,o.data,n,[],c);if(!a||a.options.length<=1)continue;const p=b(a,void 0,i),d=a.options[p]??a.options[0];if(!d?.schemaId||!n[d.schemaId])continue;const l=n[d.schemaId].data;r[t]=E(R(l,t,o.data),o.data),u=!0;break}u||(r[t]=o.data)}for(const[t,o]of Object.entries(r))r[t]=Y(o,n,i);return r}const K="#/";function q(n,e,i){const r=J(e,i);if(!r||!e.propertyName)return n;const t={properties:{[e.propertyName]:{enum:[r]}}};return Array.isArray(n.allOf)?{...n,allOf:[...n.allOf,t]}:{allOf:[n,t]}}function J(n,e){if(n.mapping&&!(n.defaultMapping&&O(n.defaultMapping)===e)){for(const[i,r]of Object.entries(n.mapping))if(O(r)===e)return i}}function Q(n){const e=new Set([`${K}${n}`]);return n.startsWith("components/schemas/")?e.add(`${K}${n.replace("components/schemas/","")}`):e.add(`${K}components/schemas/${n}`),Array.from(e)}function Z(n){const{discriminator:e,oneOf:i,anyOf:r,...t}=n;return t}function R(n,e,i){const r=Q(e);if(!V(n,r))return n;const t=Z(i);return w(n,r,t)}function V(n,e){if(!n||typeof n!="object")return!1;if(Array.isArray(n))return n.some(r=>V(r,e));const i=n;if(typeof i.$ref=="string"&&e.includes(i.$ref))return!0;for(const r of Object.values(i))if(V(r,e))return!0;return!1}function w(n,e,i){if(!n||typeof n!="object")return n;if(Array.isArray(n))return n.map(o=>w(o,e,i));const r=n;if(typeof r.$ref=="string"&&e.includes(r.$ref))return{...i};const t={};for(const[o,f]of Object.entries(r))t[o]=w(f,e,i);return t}export{Y as applyActiveVariantsToSchema,en as applyActiveVariantsToStore,nn as applyDiscriminatorValue,I as collectNestedVariantAxes,m as findEffectiveDiscriminator,G as findSchemaVariantAxis,tn as hoistActiveVariantSchemaForSampling,b as resolveActiveVariantIndex,M as resolveActiveVariantSchemaId};
1
+ import{buildVariantStateKey as j}from"../../jotai/itemStore.js";import{deriveVariantLabel as B}from"../schema/variant-label.js";function g(n){return n.discriminator}function O(n){return n.startsWith("#/")?n.slice(2):n}function _(n,r,o=new Set){if(!n)return;const i=g(n);if(i?.propertyName&&(i.mapping||n.oneOf||n.anyOf))return{propertyName:i.propertyName,mapping:i.mapping??{},...i.defaultMapping&&{defaultMapping:i.defaultMapping},...(Array.isArray(n.oneOf)||Array.isArray(n.anyOf))&&{variantsNode:n}};const t=n.allOf;if(Array.isArray(t))for(const e of t){if(!e||typeof e!="object")continue;const f=e;if(typeof f.$ref=="string"){const s=O(f.$ref);if(o.has(s))continue;o.add(s);const c=r[s];if(c){const p=_(c.data,r,o);if(p)return p}continue}const a=_(f,r,o);if(a)return a}}function tn(n,r,o,i){for(const t of Object.values(o)){const e=g(t.data);if(!(!e?.propertyName||!e.mapping)&&e.propertyName in n){if(i!==void 0){const f=e.mapping[i];if(f&&O(f)===r){n[e.propertyName]=i;return}continue}if(e.defaultMapping&&O(e.defaultMapping)===r)return;for(const[f,a]of Object.entries(e.mapping))if(O(a)===r){n[e.propertyName]=f;return}}}}function K({oneOfList:n,oneOfOwner:r,extraSiblings:o,fallbackSchemaId:i,schemaStore:t,activeIdx:e=0}){const f=e>=0&&e<n.length?e:0,a=n[f],s=M(a,t);if(!s)return;const{oneOf:c,anyOf:p,...d}=r,u=[...o,d].filter(V),y=[...Array.isArray(s.allOf)?s.allOf:[],...u],{allOf:m,...I}=s,E=y.length?{...I,allOf:y}:{...I},N=R(a,t)??i;return{schema:E,variantSchemaId:N}}function V(n){return!!n&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).length>0}function M(n,r){if(!n||typeof n!="object")return;const o=n;if(typeof o.$ref!="string")return o;const i=O(o.$ref);return r[i]?.data}function R(n,r){if(!n||typeof n!="object")return;const o=n;if(typeof o.$ref!="string")return;const i=O(o.$ref);return r[i]?i:void 0}const P="One of:",z="Any of:",G="Default mapping";function v(n){return!!n?.deprecated}function U(n,r){if(!n||typeof n!="object")return{};const o=n;if(typeof o.$ref=="string"){const i=r[O(o.$ref)];if(!i)return{};const t={...i.data};return t["x-original-ref"]=o.$ref,t}return o}function T(n,r){const o=O(n),i=r[o];return i?{schemaId:o,entry:i}:void 0}function X(n,r,o){const i=Object.entries(n.mapping);if(i.length===0)return;const t=n.defaultMapping,e=[];for(const[a,s]of i){const c=T(s,r);c&&e.push({label:a,schemaId:c.schemaId,mappingKey:a,isDeprecated:v(c.entry.data)})}const f=t?T(t,r):void 0;if(t&&f){const a=t.split("/").pop(),s=e.findIndex(c=>c.label===a);s!==-1&&e.splice(s,1),e.push({label:G,schemaId:f.schemaId,isDefaultMapping:!0,isDeprecated:v(f.entry.data)})}return{kind:"discriminator",stateKey:j(o,n.propertyName),options:e,localPart:n.propertyName,parentPath:o}}function A(n,r,o,i,t){if(!n.length)return;const e=t==="anyOf"?z:P,f=[],a=new Map;for(let s=0;s<n.length;s++){const c=n[s],p=U(c,o),{label:d}=B(p,r),u=(a.get(d)??0)+1;a.set(d,u);const l=u===1?d:`${d} (${u})`,y=R(c,o)??"";f.push({label:l,schemaId:y,isDeprecated:v(o[y]?.data??c)})}return{kind:t,stateKey:j(i,e),options:f,localPart:e,parentPath:i}}function x(n,r,o){const i=_(n,r);if(i){const t=X(i,r,o);if(t&&t.options.length>0)return t;const e=i.variantsNode??n;for(const f of["oneOf","anyOf"]){const a=e[f];if(!Array.isArray(a)||a.length===0)continue;const s=A(a,e,r,o,f);if(s&&s.options.length>0)return{...s,kind:"discriminator",localPart:i.propertyName,stateKey:j(o,i.propertyName)}}}if(Array.isArray(n.oneOf)&&n.oneOf.length>0){const t=A(n.oneOf,n,r,o,"oneOf");if(t&&t.options.length>0)return t}if(Array.isArray(n.anyOf)&&n.anyOf.length>0){const t=A(n.anyOf,n,r,o,"anyOf");if(t&&t.options.length>0)return t}}function k(n,r,o=new Map,i=new Set,t=[]){if(!n)return o;const e=(s,c=t)=>{if(!s||typeof s!="object")return;const p=s;if(typeof p.$ref=="string"){const u=O(p.$ref);if(i.has(u))return;i.add(u);const l=r[u]?.data;if(!l)return;const y=x(l,r,c);y&&y.options.length>1&&o.set(y.stateKey,y),k(l,r,o,i,c);return}const d=x(p,r,c);d&&d.options.length>1&&o.set(d.stateKey,d),k(p,r,o,i,c)},f=n.properties;if(f&&typeof f=="object")for(const[s,c]of Object.entries(f))e(c,[...t,s]);const a=t.length>0?[...t.slice(0,-1),`${t[t.length-1]}[]`]:t;e(n.items,a);for(const s of["oneOf","anyOf","allOf"]){const c=n[s];if(Array.isArray(c))for(const p of c)e(p,t)}return o}function Y(n,r,{includeNested:o=!1}={}){const i=r[n];if(!i)return;const t=x(i.data,r,[]);if(t&&t.options.length>0)return t;if(!o)return;const e=k(i.data,r);if(e.size===1)return e.values().next().value}function b(n,r,o){const i=n.kind==="discriminator"?r:o;if(!i)return 0;const t=i[n.stateKey];if(t!==void 0&&t>=0&&t<n.options.length)return t;const e=Object.entries(i).filter(([f])=>f.endsWith(`/${n.stateKey}`)||f.includes("/")&&n.stateKey.endsWith(`/${f}`));if(e.length===1){const[,f]=e[0];if(f>=0&&f<n.options.length)return f}return 0}function w(n,r,o,i){const t=Y(n,r);if(!t)return;const e=b(t,o,i),f=t.options[e]??t.options[0];if(!(!f?.schemaId||!r[f.schemaId]))return f}function en(n,r,o,i){return w(n,r,o,i)?.schemaId??n}function rn(n,r,o,i){const t=q(n,r,i);if(t)return t;const e=w(n,r,o,i);if(!e||e.schemaId===n)return;const f=r[e.schemaId];if(f)return{schema:f.data,variantSchemaId:e.schemaId,mappingKey:e.mappingKey}}function q(n,r,o){const i=r[n];if(!i||g(i.data))return;const t=i.data;if(Array.isArray(t.oneOf)&&t.oneOf.length>0){const e=A(t.oneOf,t,r,[],"oneOf"),f=e?b(e,void 0,o):0;return K({oneOfList:t.oneOf,oneOfOwner:t,extraSiblings:[],fallbackSchemaId:n,schemaStore:r,activeIdx:f})}if(Array.isArray(t.anyOf)&&t.anyOf.length>0){const e=A(t.anyOf,t,r,[],"anyOf"),f=e?b(e,void 0,o):0;return K({oneOfList:t.anyOf,oneOfOwner:t,extraSiblings:[],fallbackSchemaId:n,schemaStore:r,activeIdx:f})}if(Array.isArray(t.allOf)){let e,f,a="oneOf";const s=[];for(const d of t.allOf){const u=M(d,r)??d,l=Array.isArray(u.oneOf)?u.oneOf:Array.isArray(u.anyOf)?u.anyOf:void 0;!f&&l?.length&&!g(u)?(e=u,f=l,a=Array.isArray(u.oneOf)?"oneOf":"anyOf"):s.push(d)}if(!f||!e)return;const c=A(f,e,r,[],a),p=c?b(c,void 0,o):0;return K({oneOfList:f,oneOfOwner:e,extraSiblings:s,fallbackSchemaId:n,schemaStore:r,activeIdx:p})}}function J(n){return n.length===0?n:[...n.slice(0,-1),`${n[n.length-1]}[]`]}function Q(n,r,o,i,t){const e=g(n);if(!e?.propertyName)return;const f=x(n,r,o);if(!f)return;const a=b(f,i,t),s=f.options[a]??f.options[0];if(!s?.schemaId||!r[s.schemaId])return;const{oneOf:c,anyOf:p,discriminator:d,...u}=n,l={allOf:[{$ref:`${$}${s.schemaId}`}]};return{...u,...H(l,e.propertyName,s.mappingKey)}}function Z(n,r,o,i,t=[]){const e=(f,a,s=!1)=>{if(!f||typeof f!="object")return f;if(Array.isArray(f))return f.map(d=>e(d,a));const c=f;if(typeof c.$ref=="string")return c;if(!s){const d=Q(c,r,a,o,i);if(d)return e(d,a)}if(!g(c))for(const d of["oneOf","anyOf"]){const u=c[d];if(!Array.isArray(u)||u.length===0)continue;const l=A(u,c,r,a,d),y=l?b(l,void 0,i):0,m=u[y]??u[0];if(!V(m))continue;const{oneOf:I,anyOf:E,...N}=c;return e({...N,...m},a)}const p={};for(const[d,u]of Object.entries(c))if(d==="properties"&&V(u)){const l={};for(const[y,m]of Object.entries(u))l[y]=e(m,[...a,y]);p[d]=l}else d==="items"?p[d]=e(u,J(a)):d==="allOf"||d==="oneOf"||d==="anyOf"?p[d]=e(u,a):p[d]=u;return p};return e(n,t,!0)}function C(n,r){return n.type!==void 0||r.type===void 0?n:{...n,type:r.type}}function on(n,r,o){const i={};for(const[t,e]of Object.entries(n)){if(!e.data)continue;const f=g(e.data);if(f?.propertyName&&(f.mapping||Array.isArray(e.data.oneOf)||Array.isArray(e.data.anyOf))){const s=w(t,n,r,o),c=s&&s.schemaId!==t?n[s.schemaId]?.data:void 0;if(c){const p=W(c,t,e.data);i[t]=C(H(p,f.propertyName,s?.mappingKey),e.data)}else i[t]=e.data;continue}let a=!1;for(const s of["oneOf","anyOf"]){const c=e.data[s];if(!Array.isArray(c))continue;const p=A(c,e.data,n,[],s);if(!p||p.options.length<=1)continue;const d=b(p,void 0,o),u=p.options[d]??p.options[0];if(!u?.schemaId||!n[u.schemaId])continue;const l=n[u.schemaId].data;i[t]=C(W(l,t,e.data),e.data),a=!0;break}a||(i[t]=e.data)}for(const[t,e]of Object.entries(i))i[t]=Z(e,n,r,o);return i}const $="#/";function H(n,r,o){if(!o)return n;const i={properties:{[r]:{enum:[o]}}};return Array.isArray(n.allOf)?{...n,allOf:[...n.allOf,i]}:{allOf:[n,i]}}function D(n){const r=new Set([`${$}${n}`]);return n.startsWith("components/schemas/")?r.add(`${$}${n.replace("components/schemas/","")}`):r.add(`${$}components/schemas/${n}`),Array.from(r)}function h(n){const{discriminator:r,oneOf:o,anyOf:i,...t}=n;return t}function W(n,r,o){const i=D(r);if(!L(n,i))return n;const t=h(o);return F(n,i,t)}function L(n,r){if(!n||typeof n!="object")return!1;if(Array.isArray(n))return n.some(i=>L(i,r));const o=n;if(typeof o.$ref=="string"&&r.includes(o.$ref))return!0;for(const i of Object.values(o))if(L(i,r))return!0;return!1}function F(n,r,o){if(!n||typeof n!="object")return n;if(Array.isArray(n))return n.map(e=>F(e,r,o));const i=n;if(typeof i.$ref=="string"&&r.includes(i.$ref))return{...o};const t={};for(const[e,f]of Object.entries(i))t[e]=F(f,r,o);return t}export{Z as applyActiveVariantsToSchema,on as applyActiveVariantsToStore,tn as applyDiscriminatorValue,k as collectNestedVariantAxes,_ as findEffectiveDiscriminator,Y as findSchemaVariantAxis,rn as hoistActiveVariantSchemaForSampling,b as resolveActiveVariantIndex,en as resolveActiveVariantSchemaId};
@@ -1,2 +1,2 @@
1
- import{CodeBuilder as j,Lang as w}from"./helpers/code-builder.js";import{buildUrlExpression as A,printUrlVariablesDeclarations as k}from"./helpers/url-helpers.js";import{buildJava8DeviceAuthorizationCodeSnippet as v}from"./helpers/oauth2-snippets.js";import{normalizeMimeType as D}from"./helpers/mime.js";import{MediaTypes as r}from"../../../constants/openapi.js";import{toCodeSampleHAR as N}from"./helpers/sub-request.js";function C(e){return e.charAt(0).toUpperCase()+e.slice(1)}function g(e){return"Http"+C(e.toLowerCase())}function d(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0}function b(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function S(e){return typeof e=="string"}function c(e){return S(e)?JSON.stringify(e):e==null?"JSONObject.NULL":String(e)}function q(e,E){const p={indent:" ",withWrapper:!0,...E},t=new j({indentation:p.indent,variablesPrefix:p.variablesPrefix,capitalize:!0,lang:w.JAVA8}),l=g(e.method),a=e.oAuth2PreRequests?.[0],m=D(e.postData?.mimeType);p.withComments&&(t.push("/**"),t.push(" * Requires JDK >= 8"),t.push(" *"),t.push(" * Requires Apache HttpComponents Client >= 4.3.5"),t.push(" * See here for installation details:"),t.push(" * https://search.maven.org/artifact/org.apache.httpcomponents/httpcomponents-client"),t.push(" *"),t.push(' * Requires package "junit4"'),t.push(" * See here for installation details:"),t.push(" * https://junit.org/junit4"),t.push(" *"),t.push(' * Requires package "org.json" >= 20180130'),t.push(" * See here for installation details:"),t.push(" * https://search.maven.org/artifact/org.json/json"),t.push(" */"),t.blank()),p.withImports&&(t.push("import org.apache.http.util.EntityUtils;"),t.push("import org.apache.http.NameValuePair;"),t.push("import org.apache.http.client.HttpClient;"),t.push("import org.apache.http.client.entity.UrlEncodedFormEntity;"),e.method&&t.push(`import org.apache.http.client.methods.${l};`),a&&a.method.toLowerCase()!==e.method.toLowerCase()&&t.push(`import org.apache.http.client.methods.${g(a.method)};`),t.push("import org.apache.http.impl.client.HttpClientBuilder;"),t.push("import org.apache.http.message.BasicNameValuePair;"),t.push("import org.apache.http.entity.StringEntity;"),t.push("import org.json.JSONObject;"),t.push("import org.json.JSONArray;"),t.push("import java.util.ArrayList;"),t.push("import java.util.List;"),t.push("import org.apache.http.entity.mime.MultipartEntity;"),t.push("import org.apache.http.entity.mime.content.StringBody;"),!e.postData?.params?.length&&e.postData?.text&&m===r.MULTIPART&&(t.push("import org.apache.http.entity.mime.content.FileBody;"),t.push("import java.io.File;")),e.basicAuth&&t.push("import java.util.Base64;"),t.blank()),p.withWrapper&&(t.push("public class App {"),t.push(1,"public static void main(String[] args ) throws java.io.IOException {"),t.push(2,"HttpClient httpClient = HttpClientBuilder.create().build();"),t.blank());const f={...e.allHeaders??e.headersObj};if(a){const s=q(N(a),{...p,withImports:!1,withWrapper:!1,withComments:!1,variablesPrefix:"oauth2"});t.push(s),t.push(2,"JSONObject %s = new JSONObject(EntityUtils.toString(httpClient.execute(%s).getEntity()));","oauth2Response","oauth2Request"),a.flowType==="deviceAuthorization"?v(t,{tokenUrl:a.tokenUrl??"YOUR_TOKEN_URL",clientId:a.clientId??"YOUR_CLIENT_ID",level:2}):(t.push(2,'String accessToken = %s.getString("access_token");',"oauth2Response"),t.blank())}k(e,t,2);const O=A(e,t);t.push(2,`%s ${t.var("request")} = new %s(%s);`,l,l,O);const y=Object.keys(f);if(y.length&&!(e.postData&&e.postData.mimeType===r.MULTIPART))for(const s of y){const i=s.toLowerCase()==="authorization";t.push(2,'%s.setHeader("%s", %s);',t.var("request"),s,a&&i?'"Bearer " + accessToken':`"${f[s]}"`)}if(e.basicAuth){const{username:s,password:i}=e.basicAuth;t.push(2,`String encodedString = Base64.getEncoder().encodeToString("${s}:${i}".getBytes());`),t.push(2,'%s.setHeader("%s", "%s"+encodedString);',t.var("request"),"Authorization","Basic ")}const h=(s,i)=>{const n=Array.isArray(s)?s.map((u,o)=>[String(o),u]):Object.entries(s);for(const[u,o]of n)o!==null&&typeof o=="object"?(t.push(i,'.put("%s", new JSONObject()',u),h(o,i+1),t.push(i,")")):t.push(i,'.put("%s", %s)',u,c(o))};if(e.postData)switch(m){case r.URL_ENCODED:if(e.postData.params?.length){t.blank(),t.push(2,"List<NameValuePair> params = new ArrayList<NameValuePair>();");for(const s of e.postData.params)t.push(2,'params.add(new BasicNameValuePair("%s", "%s"));',s.name,s.value??"");t.push(2,"%s.setEntity(new UrlEncodedFormEntity(params));",t.var("request")),t.blank()}else e.postData.text&&(t.blank(),t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),e.postData.text),t.blank());break;case r.MULTIPART:if(e.postData.params&&e.postData.params.length>0){t.push(2,"MultipartEntity reqEntity = new MultipartEntity();");for(const s of e.postData.params)s.fileName?t.push(2,'reqEntity.addPart("%s", new FileBody(new File("%s")));',s.name,s.fileName):t.push(2,'reqEntity.addPart("%s", %s);',s.name,S(s.value)?`new StringBody("${s.value}")`:s.value);t.push(2,"%s.setEntity(reqEntity);",t.var("request"))}else e.postData.text&&t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),e.postData.text.replace(/\\/g,"\\\\").replace(/"/g,'\\"'));break;case r.JSON:if(e.jsonObj){t.push(2,"JSONObject payload = new JSONObject();");for(const[s,i]of Object.entries(e.jsonObj))if(Array.isArray(i)){t.push(2,'payload.put("%s", new JSONArray()',s);for(const n of i)b(n)?(t.push(3,".put(new JSONObject()"),h(n,4),t.push(3,")")):t.push(3,".put(%s)",c(n));t.push(2,");")}else b(i)?(t.push(2,'payload.put("%s", new JSONObject()%s',s,d(i)?");":""),h(i,3),d(i)||t.push(2,");")):t.push(2,'payload.put("%s", %s);',s,c(i));t.push(2,"%s.setEntity(new StringEntity(payload.toString()));",t.var("request"))}break;case r.XML:if(e.postData.text){t.push(2,'String payload = String.join("\\n"');for(const s of e.postData.text.trim().split(`
2
- `)){const i=s.replace(/"/g,'\\"');t.push(3,`"${i}", `)}t.push(2,");"),t.push(2,"%s.setEntity(new StringEntity(payload));",t.var("request"))}break;case r.OCTET_STREAM:e.postData.text&&t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),e.postData.text);break}return p.withWrapper&&(t.push(2,`String ${t.var("response")} = EntityUtils.toString(httpClient.execute(request).getEntity());`),t.blank(),t.push(2,"System.out.println(response);"),t.push(1,"}"),t.push("}")),t.join()}export{q as generateJava8};
1
+ import{CodeBuilder as w,Lang as A}from"./helpers/code-builder.js";import{buildUrlExpression as d,printUrlVariablesDeclarations as k}from"./helpers/url-helpers.js";import{buildJava8DeviceAuthorizationCodeSnippet as v}from"./helpers/oauth2-snippets.js";import{normalizeMimeType as D}from"./helpers/mime.js";import{MediaTypes as o}from"../../../constants/openapi.js";import{toCodeSampleHAR as N}from"./helpers/sub-request.js";function C(t){return t.charAt(0).toUpperCase()+t.slice(1)}function g(t){return"Http"+C(t.toLowerCase())}function b(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===0}function S(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function E(t){return typeof t=="string"}function m(t){return E(t)?JSON.stringify(t):t==null?"JSONObject.NULL":String(t)}function q(t,a){const r={indent:" ",withWrapper:!0,...a},e=new w({indentation:r.indent,variablesPrefix:r.variablesPrefix,capitalize:!0,lang:A.JAVA8}),s=g(t.method),i=t.oAuth2PreRequests?.[0],u=D(t.postData?.mimeType);r.withComments&&(e.push("/**"),e.push(" * Requires JDK >= 8"),e.push(" *"),e.push(" * Requires Apache HttpComponents Client >= 4.3.5"),e.push(" * See here for installation details:"),e.push(" * https://search.maven.org/artifact/org.apache.httpcomponents/httpcomponents-client"),e.push(" *"),e.push(' * Requires package "junit4"'),e.push(" * See here for installation details:"),e.push(" * https://junit.org/junit4"),e.push(" *"),e.push(' * Requires package "org.json" >= 20180130'),e.push(" * See here for installation details:"),e.push(" * https://search.maven.org/artifact/org.json/json"),e.push(" */"),e.blank()),r.withImports&&(e.push("import org.apache.http.util.EntityUtils;"),e.push("import org.apache.http.NameValuePair;"),e.push("import org.apache.http.client.HttpClient;"),e.push("import org.apache.http.client.entity.UrlEncodedFormEntity;"),t.method&&e.push(`import org.apache.http.client.methods.${s};`),i&&i.method.toLowerCase()!==t.method.toLowerCase()&&e.push(`import org.apache.http.client.methods.${g(i.method)};`),e.push("import org.apache.http.impl.client.HttpClientBuilder;"),e.push("import org.apache.http.message.BasicNameValuePair;"),e.push("import org.apache.http.entity.StringEntity;"),e.push("import org.json.JSONObject;"),e.push("import org.json.JSONArray;"),e.push("import java.util.ArrayList;"),e.push("import java.util.List;"),e.push("import org.apache.http.entity.mime.MultipartEntity;"),e.push("import org.apache.http.entity.mime.content.StringBody;"),!t.postData?.params?.length&&t.postData?.text&&u===o.MULTIPART&&(e.push("import org.apache.http.entity.mime.content.FileBody;"),e.push("import java.io.File;")),t.basicAuth&&e.push("import java.util.Base64;"),e.blank()),r.withWrapper&&(e.push("public class App {"),e.push(1,"public static void main(String[] args ) throws java.io.IOException {"),e.push(2,"HttpClient httpClient = HttpClientBuilder.create().build();"),e.blank());const c={...t.allHeaders??t.headersObj};if(i){const p=q(N(i),{...r,withImports:!1,withWrapper:!1,withComments:!1,variablesPrefix:"oauth2"});e.push(p),e.push(2,"JSONObject %s = new JSONObject(EntityUtils.toString(httpClient.execute(%s).getEntity()));","oauth2Response","oauth2Request"),i.flowType==="deviceAuthorization"?v(e,{tokenUrl:i.tokenUrl??"YOUR_TOKEN_URL",clientId:i.clientId??"YOUR_CLIENT_ID",level:2}):(e.push(2,'String accessToken = %s.getString("access_token");',"oauth2Response"),e.blank())}k(t,e,2);const O=d(t,e);e.push(2,`%s ${e.var("request")} = new %s(%s);`,s,s,O);const f=Object.keys(c);if(f.length&&!(t.postData&&t.postData.mimeType===o.MULTIPART))for(const p of f){const n=p.toLowerCase()==="authorization";e.push(2,'%s.setHeader("%s", %s);',e.var("request"),p,i&&n?'"Bearer " + accessToken':`"${c[p]}"`)}if(t.basicAuth){const{username:p,password:n}=t.basicAuth;e.push(2,`String encodedString = Base64.getEncoder().encodeToString("${p}:${n}".getBytes());`),e.push(2,'%s.setHeader("%s", "%s"+encodedString);',e.var("request"),"Authorization","Basic ")}const y=(p,n)=>{const j=Array.isArray(p)?p.map((h,l)=>[String(l),h]):Object.entries(p);for(const[h,l]of j)l!==null&&typeof l=="object"?(e.push(n,'.put("%s", new JSONObject()',h),y(l,n+1),e.push(n,")")):e.push(n,'.put("%s", %s)',h,m(l))};return L(e,t,u,y),r.withWrapper&&(e.push(2,`String ${e.var("response")} = EntityUtils.toString(httpClient.execute(request).getEntity());`),e.blank(),e.push(2,"System.out.println(response);"),e.push(1,"}"),e.push("}")),e.join()}function L(t,a,r,e){if(a.postData)switch(r){case o.URL_ENCODED:if(a.postData.params?.length){t.blank(),t.push(2,"List<NameValuePair> params = new ArrayList<NameValuePair>();");for(const s of a.postData.params)t.push(2,'params.add(new BasicNameValuePair("%s", "%s"));',s.name,s.value??"");t.push(2,"%s.setEntity(new UrlEncodedFormEntity(params));",t.var("request")),t.blank()}else a.postData.text&&(t.blank(),t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),a.postData.text),t.blank());break;case o.MULTIPART:if(a.postData.params&&a.postData.params.length>0){t.push(2,"MultipartEntity reqEntity = new MultipartEntity();");for(const s of a.postData.params)s.fileName?t.push(2,'reqEntity.addPart("%s", new FileBody(new File("%s")));',s.name,s.fileName):t.push(2,'reqEntity.addPart("%s", %s);',s.name,E(s.value)?`new StringBody("${s.value}")`:s.value);t.push(2,"%s.setEntity(reqEntity);",t.var("request"))}else a.postData.text&&t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),a.postData.text.replace(/\\/g,"\\\\").replace(/"/g,'\\"'));break;case o.JSON:if(a.jsonObj){t.push(2,"JSONObject payload = new JSONObject();");for(const[s,i]of Object.entries(a.jsonObj))if(Array.isArray(i)){t.push(2,'payload.put("%s", new JSONArray()',s);for(const u of i)S(u)?(t.push(3,".put(new JSONObject()"),e(u,4),t.push(3,")")):t.push(3,".put(%s)",m(u));t.push(2,");")}else S(i)?(t.push(2,'payload.put("%s", new JSONObject()%s',s,b(i)?");":""),e(i,3),b(i)||t.push(2,");")):t.push(2,'payload.put("%s", %s);',s,m(i));t.push(2,"%s.setEntity(new StringEntity(payload.toString()));",t.var("request"))}break;case o.XML:if(a.postData.text){t.push(2,'String payload = String.join("\\n"');for(const s of a.postData.text.trim().split(`
2
+ `)){const i=s.replace(/"/g,'\\"');t.push(3,`"${i}", `)}t.push(2,");"),t.push(2,"%s.setEntity(new StringEntity(payload));",t.var("request"))}break;case o.OCTET_STREAM:a.postData.text&&t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),a.postData.text);break}}export{q as generateJava8};
@@ -0,0 +1,4 @@
1
+ /** Which configured languages are offered in the code-sample panel. The community edition keeps only payload and x-codeSamples languages. */
2
+ export declare function filterAvailableLanguages<L extends {
3
+ key: string;
4
+ }>(languages: L[], _definitionSampleKeys: Set<string>): L[];
@@ -0,0 +1 @@
1
+ function n(e,i){return e}export{n as filterAvailableLanguages};
@@ -1,3 +1,3 @@
1
- import type { OpenAPIServer } from '../../../types/openapi.js';
1
+ import type { OpenAPIServer } from '../../types/openapi.js';
2
2
  export declare function resolveServerUrl(url: string, specUrl?: string): string;
3
3
  export declare function normalizeServers(specUrl: string | undefined, servers: OpenAPIServer[]): OpenAPIServer[];
@@ -0,0 +1 @@
1
+ import{isAbsoluteUrl as l,removeQueryStringAndHash as o,resolveUrl as s}from"../../adapters/openapi/utils/helpers.js";import{getUrlDirname as i}from"../../adapters/openapi/utils/url.js";import{IS_BROWSER as u}from"../../utils/environments.js";function f(e){const t=o(e);if(!t||t.endsWith("/"))return t;const r=t.lastIndexOf("/");return r===-1?"":t.slice(0,r)}function a(e){return e===void 0?o((()=>{if(!u)return globalThis.SSR_HOSTNAME||"";const r=window.location.href;return r.endsWith(".html")&&i(r)||r})()):l(e)?i(e):f(e)}function m(e,t){const r=a(t);return r?s(r,e):e}function S(e,t){let r=t;return r.length===0&&(r=[{url:"/"}]),r.map(n=>({...n,url:m(n.url,e),description:n.description||""}))}export{S as normalizeServers,m as resolveServerUrl};