@stoplight/elements-core 9.0.12-beta-0.1 → 9.0.13

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 (417) hide show
  1. package/{dist/components → components}/Docs/Docs.d.ts +1 -14
  2. package/{dist/components → components}/Docs/HttpOperation/Body.d.ts +1 -9
  3. package/{dist/components → components}/Docs/HttpOperation/HttpOperation.d.ts +2 -6
  4. package/{dist/components → components}/Docs/HttpOperation/Request.d.ts +0 -6
  5. package/{dist/components → components}/Docs/HttpOperation/Responses.d.ts +1 -12
  6. package/{dist/components → components}/TableOfContents/types.d.ts +7 -0
  7. package/{dist/index.esm.js → index.esm.js} +86 -525
  8. package/{dist/index.js → index.js} +86 -525
  9. package/{dist/index.mjs → index.mjs} +86 -525
  10. package/package.json +14 -74
  11. package/.storybook/main.js +0 -6
  12. package/.storybook/manager.js +0 -1
  13. package/.storybook/preview.jsx +0 -50
  14. package/dist/LICENSE +0 -190
  15. package/dist/README.md +0 -1
  16. package/dist/components/Docs/HttpOperation/LazySchemaTreePreviewer.d.ts +0 -34
  17. package/dist/package.json +0 -64
  18. package/jest.config.js +0 -10
  19. package/src/__fixtures__/articles/basic.md +0 -10
  20. package/src/__fixtures__/articles/kitchen-sink.md +0 -318
  21. package/src/__fixtures__/articles/long-page-heading.md +0 -955
  22. package/src/__fixtures__/articles/multiple-try-its.md +0 -54
  23. package/src/__fixtures__/articles/schema-with-refs.ts +0 -82
  24. package/src/__fixtures__/http-request.json +0 -11
  25. package/src/__fixtures__/models/model-with-no-examples.json +0 -15
  26. package/src/__fixtures__/models/model-with-one-example.json +0 -23
  27. package/src/__fixtures__/models/model-with-three-examples.json +0 -35
  28. package/src/__fixtures__/operations/application-octet-stream-post.ts +0 -39
  29. package/src/__fixtures__/operations/base64-file-upload.ts +0 -43
  30. package/src/__fixtures__/operations/big-response.ts +0 -4690
  31. package/src/__fixtures__/operations/bundled-parameter.ts +0 -128
  32. package/src/__fixtures__/operations/empty-response.ts +0 -15
  33. package/src/__fixtures__/operations/examples-request-body.ts +0 -135
  34. package/src/__fixtures__/operations/head-todos.ts +0 -49
  35. package/src/__fixtures__/operations/invalid-response-example.ts +0 -45
  36. package/src/__fixtures__/operations/multipart-formdata-post.ts +0 -61
  37. package/src/__fixtures__/operations/operation-minimal.ts +0 -11
  38. package/src/__fixtures__/operations/operation-parameters.ts +0 -337
  39. package/src/__fixtures__/operations/operation-with-examples.ts +0 -113
  40. package/src/__fixtures__/operations/operation-without-servers.ts +0 -16
  41. package/src/__fixtures__/operations/patch-todos.ts +0 -49
  42. package/src/__fixtures__/operations/put-todos.ts +0 -862
  43. package/src/__fixtures__/operations/referenced-body.ts +0 -62
  44. package/src/__fixtures__/operations/request-body-empty-schema.ts +0 -35
  45. package/src/__fixtures__/operations/request-body.ts +0 -62
  46. package/src/__fixtures__/operations/securedOperation.ts +0 -118
  47. package/src/__fixtures__/operations/security-basic.ts +0 -24
  48. package/src/__fixtures__/operations/security-bearer.ts +0 -25
  49. package/src/__fixtures__/operations/simple-get.ts +0 -17
  50. package/src/__fixtures__/operations/simple.ts +0 -103
  51. package/src/__fixtures__/operations/string-numeric-enums.ts +0 -32
  52. package/src/__fixtures__/operations/urlencoded-post-oneof.ts +0 -81
  53. package/src/__fixtures__/operations/urlencoded-post.ts +0 -54
  54. package/src/__fixtures__/operations/vendor-extensions.ts +0 -337
  55. package/src/__fixtures__/operations/with-url-variables.ts +0 -47
  56. package/src/__fixtures__/operations/x-code-samples.ts +0 -348
  57. package/src/__fixtures__/schemas/circular.ts +0 -1906
  58. package/src/__fixtures__/schemas/contact.json +0 -293
  59. package/src/__fixtures__/schemas/media-entry.json +0 -69
  60. package/src/__fixtures__/schemas/simple.json +0 -27
  61. package/src/__fixtures__/schemas/todo-full.v1.json +0 -35
  62. package/src/__fixtures__/schemas/todo-partial.v1.json +0 -14
  63. package/src/__fixtures__/schemas/user.v1.json +0 -17
  64. package/src/__fixtures__/security-schemes/index.ts +0 -38
  65. package/src/__fixtures__/services/petstore.ts +0 -167
  66. package/src/__fixtures__/services/with-unnamed-servers.ts +0 -38
  67. package/src/__fixtures__/services/with-url-variables.ts +0 -83
  68. package/src/__fixtures__/services/without-origin.ts +0 -20
  69. package/src/__fixtures__/table-of-contents/nested.ts +0 -44
  70. package/src/__fixtures__/table-of-contents/studio-template.ts +0 -100
  71. package/src/__fixtures__/table-of-contents/studio.ts +0 -559
  72. package/src/components/Docs/Article/Article.spec.tsx +0 -38
  73. package/src/components/Docs/Article/Article.stories.tsx +0 -17
  74. package/src/components/Docs/Article/index.tsx +0 -38
  75. package/src/components/Docs/Docs.stories.tsx +0 -33
  76. package/src/components/Docs/Docs.tsx +0 -272
  77. package/src/components/Docs/HttpOperation/Badges.tsx +0 -49
  78. package/src/components/Docs/HttpOperation/Body.tsx +0 -115
  79. package/src/components/Docs/HttpOperation/Callbacks.tsx +0 -89
  80. package/src/components/Docs/HttpOperation/HttpOperation.spec.tsx +0 -787
  81. package/src/components/Docs/HttpOperation/HttpOperation.stories.ts +0 -14
  82. package/src/components/Docs/HttpOperation/HttpOperation.tsx +0 -260
  83. package/src/components/Docs/HttpOperation/LazySchemaTreePreviewer.tsx +0 -651
  84. package/src/components/Docs/HttpOperation/Parameters.spec.tsx +0 -101
  85. package/src/components/Docs/HttpOperation/Parameters.tsx +0 -118
  86. package/src/components/Docs/HttpOperation/Request.tsx +0 -152
  87. package/src/components/Docs/HttpOperation/Responses.tsx +0 -301
  88. package/src/components/Docs/HttpOperation/index.ts +0 -1
  89. package/src/components/Docs/HttpService/AdditionalInfo.stories.ts +0 -48
  90. package/src/components/Docs/HttpService/AdditionalInfo.tsx +0 -61
  91. package/src/components/Docs/HttpService/ExportButton.tsx +0 -35
  92. package/src/components/Docs/HttpService/HttpService.spec.tsx +0 -429
  93. package/src/components/Docs/HttpService/HttpService.stories.ts +0 -14
  94. package/src/components/Docs/HttpService/HttpService.tsx +0 -99
  95. package/src/components/Docs/HttpService/SecuritySchemes.tsx +0 -82
  96. package/src/components/Docs/HttpService/ServerInfo.tsx +0 -196
  97. package/src/components/Docs/HttpService/index.ts +0 -1
  98. package/src/components/Docs/Model/Model.spec.tsx +0 -241
  99. package/src/components/Docs/Model/Model.stories.tsx +0 -16
  100. package/src/components/Docs/Model/Model.tsx +0 -192
  101. package/src/components/Docs/Model/index.ts +0 -1
  102. package/src/components/Docs/NodeVendorExtensions.tsx +0 -55
  103. package/src/components/Docs/Sections.tsx +0 -54
  104. package/src/components/Docs/Security/PanelContent.tsx +0 -38
  105. package/src/components/Docs/Security/index.ts +0 -1
  106. package/src/components/Docs/Skeleton.tsx +0 -12
  107. package/src/components/Docs/TwoColumnLayout.tsx +0 -27
  108. package/src/components/Docs/index.ts +0 -1
  109. package/src/components/Docs/story-helper.ts +0 -46
  110. package/src/components/Docs/story-renderer-helper.tsx +0 -56
  111. package/src/components/Layout/MobileTopNav.tsx +0 -78
  112. package/src/components/Layout/ResponsiveSidebarLayout.tsx +0 -175
  113. package/src/components/Layout/SidebarLayout.tsx +0 -107
  114. package/src/components/LinkHeading.tsx +0 -21
  115. package/src/components/LoadMore.tsx +0 -20
  116. package/src/components/Loading/Loading.tsx +0 -9
  117. package/src/components/Logo.tsx +0 -25
  118. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.spec.ts +0 -90
  119. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.tsx +0 -164
  120. package/src/components/MarkdownViewer/CustomComponents/Provider.tsx +0 -20
  121. package/src/components/MarkdownViewer/CustomComponents/ReactRouterLink.tsx +0 -27
  122. package/src/components/MarkdownViewer/CustomComponents/ResolvedImage.tsx +0 -86
  123. package/src/components/MarkdownViewer/CustomComponents/ScrollToHashElement.tsx +0 -96
  124. package/src/components/MarkdownViewer/MarkdownViewer.spec.tsx +0 -170
  125. package/src/components/MarkdownViewer/index.tsx +0 -10
  126. package/src/components/NonIdealState.tsx +0 -20
  127. package/src/components/PoweredByLink.tsx +0 -30
  128. package/src/components/RequestSamples/RequestSamples.stories.tsx +0 -67
  129. package/src/components/RequestSamples/RequestSamples.tsx +0 -246
  130. package/src/components/RequestSamples/__tests__/RequestSamples.test.tsx +0 -131
  131. package/src/components/RequestSamples/__tests__/__snapshots__/convertRequestToSample.spec.ts.snap +0 -746
  132. package/src/components/RequestSamples/__tests__/convertRequestToSample.spec.ts +0 -118
  133. package/src/components/RequestSamples/convertRequestToSample.ts +0 -56
  134. package/src/components/RequestSamples/extractCodeSamples.ts +0 -50
  135. package/src/components/RequestSamples/index.ts +0 -2
  136. package/src/components/RequestSamples/requestSampleConfigs.ts +0 -182
  137. package/src/components/ResponseExamples/ResponseExamples.spec.tsx +0 -121
  138. package/src/components/ResponseExamples/ResponseExamples.stories.tsx +0 -21
  139. package/src/components/ResponseExamples/ResponseExamples.tsx +0 -79
  140. package/src/components/TableOfContents/TableOfContents.spec.tsx +0 -301
  141. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -121
  142. package/src/components/TableOfContents/TableOfContents.tsx +0 -406
  143. package/src/components/TableOfContents/constants.ts +0 -45
  144. package/src/components/TableOfContents/index.ts +0 -2
  145. package/src/components/TableOfContents/types.ts +0 -51
  146. package/src/components/TableOfContents/utils.ts +0 -84
  147. package/src/components/TryIt/Auth/APIKeyAuth.tsx +0 -19
  148. package/src/components/TryIt/Auth/Auth.tsx +0 -169
  149. package/src/components/TryIt/Auth/AuthTokenInput.tsx +0 -37
  150. package/src/components/TryIt/Auth/BasicAuth.tsx +0 -62
  151. package/src/components/TryIt/Auth/BearerAuth.tsx +0 -19
  152. package/src/components/TryIt/Auth/DigestAuth.tsx +0 -35
  153. package/src/components/TryIt/Auth/OAuth2Auth.tsx +0 -19
  154. package/src/components/TryIt/Auth/authentication-utils.ts +0 -113
  155. package/src/components/TryIt/Body/BinaryBody.tsx +0 -52
  156. package/src/components/TryIt/Body/FormDataBody.tsx +0 -145
  157. package/src/components/TryIt/Body/RequestBody.tsx +0 -71
  158. package/src/components/TryIt/Body/__tests__/BinaryBody.test.tsx +0 -29
  159. package/src/components/TryIt/Body/__tests__/FormDataBody.test.tsx +0 -94
  160. package/src/components/TryIt/Body/request-body-utils.ts +0 -127
  161. package/src/components/TryIt/Body/useTextRequestBodyState.ts +0 -27
  162. package/src/components/TryIt/Mocking/MockingButton.tsx +0 -98
  163. package/src/components/TryIt/Mocking/mocking-utils.ts +0 -56
  164. package/src/components/TryIt/Mocking/useMockingOptions.ts +0 -6
  165. package/src/components/TryIt/Parameters/FileUploadParameterEditors.tsx +0 -62
  166. package/src/components/TryIt/Parameters/OperationParameters.tsx +0 -39
  167. package/src/components/TryIt/Parameters/ParameterEditor.tsx +0 -118
  168. package/src/components/TryIt/Parameters/__tests__/parameter-utils.spec.ts +0 -60
  169. package/src/components/TryIt/Parameters/parameter-utils.spec.ts +0 -118
  170. package/src/components/TryIt/Parameters/parameter-utils.ts +0 -179
  171. package/src/components/TryIt/Parameters/useOperationParameters.ts +0 -60
  172. package/src/components/TryIt/Response/ReponseCodeViewer.tsx +0 -28
  173. package/src/components/TryIt/Response/Response.spec.tsx +0 -174
  174. package/src/components/TryIt/Response/Response.tsx +0 -172
  175. package/src/components/TryIt/Response/hooks/useLineCount.ts +0 -7
  176. package/src/components/TryIt/Servers/ServerVariables.tsx +0 -33
  177. package/src/components/TryIt/Servers/ServersDropdown.tsx +0 -53
  178. package/src/components/TryIt/Servers/VariableEditor.tsx +0 -51
  179. package/src/components/TryIt/Servers/useServerVariables.ts +0 -19
  180. package/src/components/TryIt/TryIt.spec.tsx +0 -1511
  181. package/src/components/TryIt/TryIt.stories.tsx +0 -77
  182. package/src/components/TryIt/TryIt.tsx +0 -384
  183. package/src/components/TryIt/TryItWithRequestSamples.spec.tsx +0 -143
  184. package/src/components/TryIt/TryItWithRequestSamples.stories.tsx +0 -32
  185. package/src/components/TryIt/TryItWithRequestSamples.tsx +0 -42
  186. package/src/components/TryIt/build-request.spec.ts +0 -213
  187. package/src/components/TryIt/build-request.ts +0 -357
  188. package/src/components/TryIt/chosenServer.ts +0 -5
  189. package/src/components/TryIt/index.ts +0 -3
  190. package/src/components/__tests__/LinkHeading.spec.tsx +0 -125
  191. package/src/constants.ts +0 -176
  192. package/src/containers/MockingProvider.tsx +0 -23
  193. package/src/context/InlineRefResolver.spec.tsx +0 -183
  194. package/src/context/InlineRefResolver.tsx +0 -94
  195. package/src/context/Options.tsx +0 -27
  196. package/src/context/Persistence.tsx +0 -24
  197. package/src/context/RouterType.tsx +0 -9
  198. package/src/core.css +0 -97
  199. package/src/hoc/utils.ts +0 -5
  200. package/src/hoc/withMosaicProvider.spec.tsx +0 -48
  201. package/src/hoc/withMosaicProvider.tsx +0 -28
  202. package/src/hoc/withQueryClientProvider.spec.tsx +0 -38
  203. package/src/hoc/withQueryClientProvider.tsx +0 -35
  204. package/src/hoc/withRouter.tsx +0 -71
  205. package/src/hooks/useBundleRefsIntoDocument.ts +0 -60
  206. package/src/hooks/useFirstRender.ts +0 -8
  207. package/src/hooks/useIsCompact.ts +0 -26
  208. package/src/hooks/useParsedData.ts +0 -99
  209. package/src/hooks/useParsedValue.ts +0 -19
  210. package/src/hooks/useResponsiveLayout.tsx +0 -51
  211. package/src/hooks/useRouter.tsx +0 -31
  212. package/src/hooks/useUniqueId.ts +0 -4
  213. package/src/index.ts +0 -48
  214. package/src/styled.tsx +0 -22
  215. package/src/styles.css +0 -4
  216. package/src/types.ts +0 -170
  217. package/src/utils/__tests__/securitySchemes.spec.ts +0 -137
  218. package/src/utils/exampleGeneration/exampleGeneration.spec.tsx +0 -18
  219. package/src/utils/exampleGeneration/exampleGeneration.ts +0 -110
  220. package/src/utils/fileToBase64.ts +0 -11
  221. package/src/utils/guards.ts +0 -48
  222. package/src/utils/headers.ts +0 -316
  223. package/src/utils/http-spec/IServer.ts +0 -100
  224. package/src/utils/http-spec/__tests__/IServer.spec.ts +0 -51
  225. package/src/utils/http-spec/examples.ts +0 -5
  226. package/src/utils/http.ts +0 -9
  227. package/src/utils/jotai/persistAtom.ts +0 -31
  228. package/src/utils/node.ts +0 -19
  229. package/src/utils/oas/__tests__/security.spec.ts +0 -18
  230. package/src/utils/oas/security.ts +0 -76
  231. package/src/utils/ref-resolving/ReferenceResolver.ts +0 -29
  232. package/src/utils/ref-resolving/resolvedObject.test.ts +0 -415
  233. package/src/utils/ref-resolving/resolvedObject.ts +0 -109
  234. package/src/utils/securitySchemes.ts +0 -117
  235. package/src/utils/string.ts +0 -15
  236. package/src/utils/tests/chooseOption.ts +0 -7
  237. package/src/web-components/createElementClass.ts +0 -154
  238. package/tsconfig.build.json +0 -14
  239. package/tsconfig.json +0 -7
  240. /package/{dist/__fixtures__ → __fixtures__}/articles/schema-with-refs.d.ts +0 -0
  241. /package/{dist/__fixtures__ → __fixtures__}/operations/application-octet-stream-post.d.ts +0 -0
  242. /package/{dist/__fixtures__ → __fixtures__}/operations/base64-file-upload.d.ts +0 -0
  243. /package/{dist/__fixtures__ → __fixtures__}/operations/big-response.d.ts +0 -0
  244. /package/{dist/__fixtures__ → __fixtures__}/operations/examples-request-body.d.ts +0 -0
  245. /package/{dist/__fixtures__ → __fixtures__}/operations/head-todos.d.ts +0 -0
  246. /package/{dist/__fixtures__ → __fixtures__}/operations/multipart-formdata-post.d.ts +0 -0
  247. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-minimal.d.ts +0 -0
  248. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-parameters.d.ts +0 -0
  249. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-with-examples.d.ts +0 -0
  250. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-without-servers.d.ts +0 -0
  251. /package/{dist/__fixtures__ → __fixtures__}/operations/patch-todos.d.ts +0 -0
  252. /package/{dist/__fixtures__ → __fixtures__}/operations/put-todos.d.ts +0 -0
  253. /package/{dist/__fixtures__ → __fixtures__}/operations/referenced-body.d.ts +0 -0
  254. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body-empty-schema.d.ts +0 -0
  255. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body.d.ts +0 -0
  256. /package/{dist/__fixtures__ → __fixtures__}/operations/securedOperation.d.ts +0 -0
  257. /package/{dist/__fixtures__ → __fixtures__}/operations/security-basic.d.ts +0 -0
  258. /package/{dist/__fixtures__ → __fixtures__}/operations/security-bearer.d.ts +0 -0
  259. /package/{dist/__fixtures__ → __fixtures__}/operations/simple-get.d.ts +0 -0
  260. /package/{dist/__fixtures__ → __fixtures__}/operations/string-numeric-enums.d.ts +0 -0
  261. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post-oneof.d.ts +0 -0
  262. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post.d.ts +0 -0
  263. /package/{dist/__fixtures__ → __fixtures__}/operations/with-url-variables.d.ts +0 -0
  264. /package/{dist/__fixtures__ → __fixtures__}/security-schemes/index.d.ts +0 -0
  265. /package/{dist/__fixtures__ → __fixtures__}/services/petstore.d.ts +0 -0
  266. /package/{dist/__fixtures__ → __fixtures__}/services/with-unnamed-servers.d.ts +0 -0
  267. /package/{dist/__fixtures__ → __fixtures__}/services/with-url-variables.d.ts +0 -0
  268. /package/{dist/__fixtures__ → __fixtures__}/services/without-origin.d.ts +0 -0
  269. /package/{dist/components → components}/Docs/Article/Article.spec.d.ts +0 -0
  270. /package/{dist/components → components}/Docs/Article/Article.stories.d.ts +0 -0
  271. /package/{dist/components → components}/Docs/Article/index.d.ts +0 -0
  272. /package/{dist/components → components}/Docs/Docs.stories.d.ts +0 -0
  273. /package/{dist/components → components}/Docs/HttpOperation/Badges.d.ts +0 -0
  274. /package/{dist/components → components}/Docs/HttpOperation/Callbacks.d.ts +0 -0
  275. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.spec.d.ts +0 -0
  276. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.stories.d.ts +0 -0
  277. /package/{dist/components → components}/Docs/HttpOperation/Parameters.d.ts +0 -0
  278. /package/{dist/components → components}/Docs/HttpOperation/Parameters.spec.d.ts +0 -0
  279. /package/{dist/components → components}/Docs/HttpOperation/index.d.ts +0 -0
  280. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.d.ts +0 -0
  281. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.stories.d.ts +0 -0
  282. /package/{dist/components → components}/Docs/HttpService/ExportButton.d.ts +0 -0
  283. /package/{dist/components → components}/Docs/HttpService/HttpService.d.ts +0 -0
  284. /package/{dist/components → components}/Docs/HttpService/HttpService.spec.d.ts +0 -0
  285. /package/{dist/components → components}/Docs/HttpService/HttpService.stories.d.ts +0 -0
  286. /package/{dist/components → components}/Docs/HttpService/SecuritySchemes.d.ts +0 -0
  287. /package/{dist/components → components}/Docs/HttpService/ServerInfo.d.ts +0 -0
  288. /package/{dist/components → components}/Docs/HttpService/index.d.ts +0 -0
  289. /package/{dist/components → components}/Docs/Model/Model.d.ts +0 -0
  290. /package/{dist/components → components}/Docs/Model/Model.spec.d.ts +0 -0
  291. /package/{dist/components → components}/Docs/Model/Model.stories.d.ts +0 -0
  292. /package/{dist/components → components}/Docs/Model/index.d.ts +0 -0
  293. /package/{dist/components → components}/Docs/NodeVendorExtensions.d.ts +0 -0
  294. /package/{dist/components → components}/Docs/Sections.d.ts +0 -0
  295. /package/{dist/components → components}/Docs/Security/PanelContent.d.ts +0 -0
  296. /package/{dist/components → components}/Docs/Security/index.d.ts +0 -0
  297. /package/{dist/components → components}/Docs/Skeleton.d.ts +0 -0
  298. /package/{dist/components → components}/Docs/TwoColumnLayout.d.ts +0 -0
  299. /package/{dist/components → components}/Docs/index.d.ts +0 -0
  300. /package/{dist/components → components}/Docs/story-helper.d.ts +0 -0
  301. /package/{dist/components → components}/Docs/story-renderer-helper.d.ts +0 -0
  302. /package/{dist/components → components}/Layout/MobileTopNav.d.ts +0 -0
  303. /package/{dist/components → components}/Layout/ResponsiveSidebarLayout.d.ts +0 -0
  304. /package/{dist/components → components}/Layout/SidebarLayout.d.ts +0 -0
  305. /package/{dist/components → components}/LinkHeading.d.ts +0 -0
  306. /package/{dist/components → components}/LoadMore.d.ts +0 -0
  307. /package/{dist/components → components}/Loading/Loading.d.ts +0 -0
  308. /package/{dist/components → components}/Logo.d.ts +0 -0
  309. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.d.ts +0 -0
  310. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.spec.d.ts +0 -0
  311. /package/{dist/components → components}/MarkdownViewer/CustomComponents/Provider.d.ts +0 -0
  312. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ReactRouterLink.d.ts +0 -0
  313. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ResolvedImage.d.ts +0 -0
  314. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ScrollToHashElement.d.ts +0 -0
  315. /package/{dist/components → components}/MarkdownViewer/MarkdownViewer.spec.d.ts +0 -0
  316. /package/{dist/components → components}/MarkdownViewer/index.d.ts +0 -0
  317. /package/{dist/components → components}/NonIdealState.d.ts +0 -0
  318. /package/{dist/components → components}/PoweredByLink.d.ts +0 -0
  319. /package/{dist/components → components}/RequestSamples/RequestSamples.d.ts +0 -0
  320. /package/{dist/components → components}/RequestSamples/RequestSamples.stories.d.ts +0 -0
  321. /package/{dist/components → components}/RequestSamples/convertRequestToSample.d.ts +0 -0
  322. /package/{dist/components → components}/RequestSamples/extractCodeSamples.d.ts +0 -0
  323. /package/{dist/components → components}/RequestSamples/index.d.ts +0 -0
  324. /package/{dist/components → components}/RequestSamples/requestSampleConfigs.d.ts +0 -0
  325. /package/{dist/components → components}/ResponseExamples/ResponseExamples.d.ts +0 -0
  326. /package/{dist/components → components}/ResponseExamples/ResponseExamples.spec.d.ts +0 -0
  327. /package/{dist/components → components}/ResponseExamples/ResponseExamples.stories.d.ts +0 -0
  328. /package/{dist/components → components}/TableOfContents/TableOfContents.d.ts +0 -0
  329. /package/{dist/components → components}/TableOfContents/TableOfContents.spec.d.ts +0 -0
  330. /package/{dist/components → components}/TableOfContents/TableOfContents.stories.d.ts +0 -0
  331. /package/{dist/components → components}/TableOfContents/constants.d.ts +0 -0
  332. /package/{dist/components → components}/TableOfContents/index.d.ts +0 -0
  333. /package/{dist/components → components}/TableOfContents/utils.d.ts +0 -0
  334. /package/{dist/components → components}/TryIt/Auth/APIKeyAuth.d.ts +0 -0
  335. /package/{dist/components → components}/TryIt/Auth/Auth.d.ts +0 -0
  336. /package/{dist/components → components}/TryIt/Auth/AuthTokenInput.d.ts +0 -0
  337. /package/{dist/components → components}/TryIt/Auth/BasicAuth.d.ts +0 -0
  338. /package/{dist/components → components}/TryIt/Auth/BearerAuth.d.ts +0 -0
  339. /package/{dist/components → components}/TryIt/Auth/DigestAuth.d.ts +0 -0
  340. /package/{dist/components → components}/TryIt/Auth/OAuth2Auth.d.ts +0 -0
  341. /package/{dist/components → components}/TryIt/Auth/authentication-utils.d.ts +0 -0
  342. /package/{dist/components → components}/TryIt/Body/BinaryBody.d.ts +0 -0
  343. /package/{dist/components → components}/TryIt/Body/FormDataBody.d.ts +0 -0
  344. /package/{dist/components → components}/TryIt/Body/RequestBody.d.ts +0 -0
  345. /package/{dist/components → components}/TryIt/Body/request-body-utils.d.ts +0 -0
  346. /package/{dist/components → components}/TryIt/Body/useTextRequestBodyState.d.ts +0 -0
  347. /package/{dist/components → components}/TryIt/Mocking/MockingButton.d.ts +0 -0
  348. /package/{dist/components → components}/TryIt/Mocking/mocking-utils.d.ts +0 -0
  349. /package/{dist/components → components}/TryIt/Mocking/useMockingOptions.d.ts +0 -0
  350. /package/{dist/components → components}/TryIt/Parameters/FileUploadParameterEditors.d.ts +0 -0
  351. /package/{dist/components → components}/TryIt/Parameters/OperationParameters.d.ts +0 -0
  352. /package/{dist/components → components}/TryIt/Parameters/ParameterEditor.d.ts +0 -0
  353. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.d.ts +0 -0
  354. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.spec.d.ts +0 -0
  355. /package/{dist/components → components}/TryIt/Parameters/useOperationParameters.d.ts +0 -0
  356. /package/{dist/components → components}/TryIt/Response/ReponseCodeViewer.d.ts +0 -0
  357. /package/{dist/components → components}/TryIt/Response/Response.d.ts +0 -0
  358. /package/{dist/components → components}/TryIt/Response/Response.spec.d.ts +0 -0
  359. /package/{dist/components → components}/TryIt/Response/hooks/useLineCount.d.ts +0 -0
  360. /package/{dist/components → components}/TryIt/Servers/ServerVariables.d.ts +0 -0
  361. /package/{dist/components → components}/TryIt/Servers/ServersDropdown.d.ts +0 -0
  362. /package/{dist/components → components}/TryIt/Servers/VariableEditor.d.ts +0 -0
  363. /package/{dist/components → components}/TryIt/Servers/useServerVariables.d.ts +0 -0
  364. /package/{dist/components → components}/TryIt/TryIt.d.ts +0 -0
  365. /package/{dist/components → components}/TryIt/TryIt.spec.d.ts +0 -0
  366. /package/{dist/components → components}/TryIt/TryIt.stories.d.ts +0 -0
  367. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.d.ts +0 -0
  368. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.spec.d.ts +0 -0
  369. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.stories.d.ts +0 -0
  370. /package/{dist/components → components}/TryIt/build-request.d.ts +0 -0
  371. /package/{dist/components → components}/TryIt/build-request.spec.d.ts +0 -0
  372. /package/{dist/components → components}/TryIt/chosenServer.d.ts +0 -0
  373. /package/{dist/components → components}/TryIt/index.d.ts +0 -0
  374. /package/{dist/constants.d.ts → constants.d.ts} +0 -0
  375. /package/{dist/containers → containers}/MockingProvider.d.ts +0 -0
  376. /package/{dist/context → context}/InlineRefResolver.d.ts +0 -0
  377. /package/{dist/context → context}/InlineRefResolver.spec.d.ts +0 -0
  378. /package/{dist/context → context}/Options.d.ts +0 -0
  379. /package/{dist/context → context}/Persistence.d.ts +0 -0
  380. /package/{dist/context → context}/RouterType.d.ts +0 -0
  381. /package/{dist/core.css → core.css} +0 -0
  382. /package/{dist/hoc → hoc}/utils.d.ts +0 -0
  383. /package/{dist/hoc → hoc}/withMosaicProvider.d.ts +0 -0
  384. /package/{dist/hoc → hoc}/withMosaicProvider.spec.d.ts +0 -0
  385. /package/{dist/hoc → hoc}/withQueryClientProvider.d.ts +0 -0
  386. /package/{dist/hoc → hoc}/withQueryClientProvider.spec.d.ts +0 -0
  387. /package/{dist/hoc → hoc}/withRouter.d.ts +0 -0
  388. /package/{dist/hooks → hooks}/useBundleRefsIntoDocument.d.ts +0 -0
  389. /package/{dist/hooks → hooks}/useFirstRender.d.ts +0 -0
  390. /package/{dist/hooks → hooks}/useIsCompact.d.ts +0 -0
  391. /package/{dist/hooks → hooks}/useParsedData.d.ts +0 -0
  392. /package/{dist/hooks → hooks}/useParsedValue.d.ts +0 -0
  393. /package/{dist/hooks → hooks}/useResponsiveLayout.d.ts +0 -0
  394. /package/{dist/hooks → hooks}/useRouter.d.ts +0 -0
  395. /package/{dist/hooks → hooks}/useUniqueId.d.ts +0 -0
  396. /package/{dist/index.d.ts → index.d.ts} +0 -0
  397. /package/{dist/styled.d.ts → styled.d.ts} +0 -0
  398. /package/{dist/styles.min.css → styles.min.css} +0 -0
  399. /package/{dist/types.d.ts → types.d.ts} +0 -0
  400. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.d.ts +0 -0
  401. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.spec.d.ts +0 -0
  402. /package/{dist/utils → utils}/fileToBase64.d.ts +0 -0
  403. /package/{dist/utils → utils}/guards.d.ts +0 -0
  404. /package/{dist/utils → utils}/headers.d.ts +0 -0
  405. /package/{dist/utils → utils}/http-spec/IServer.d.ts +0 -0
  406. /package/{dist/utils → utils}/http-spec/examples.d.ts +0 -0
  407. /package/{dist/utils → utils}/http.d.ts +0 -0
  408. /package/{dist/utils → utils}/jotai/persistAtom.d.ts +0 -0
  409. /package/{dist/utils → utils}/node.d.ts +0 -0
  410. /package/{dist/utils → utils}/oas/security.d.ts +0 -0
  411. /package/{dist/utils → utils}/ref-resolving/ReferenceResolver.d.ts +0 -0
  412. /package/{dist/utils → utils}/ref-resolving/resolvedObject.d.ts +0 -0
  413. /package/{dist/utils → utils}/ref-resolving/resolvedObject.test.d.ts +0 -0
  414. /package/{dist/utils → utils}/securitySchemes.d.ts +0 -0
  415. /package/{dist/utils → utils}/string.d.ts +0 -0
  416. /package/{dist/utils → utils}/tests/chooseOption.d.ts +0 -0
  417. /package/{dist/web-components → web-components}/createElementClass.d.ts +0 -0
@@ -1,48 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
-
3
- import { AdditionalInfo } from './AdditionalInfo';
4
-
5
- const meta: Meta<typeof AdditionalInfo> = {
6
- title: `Internal/Docs/AdditionalInfo`,
7
- component: AdditionalInfo,
8
- };
9
-
10
- export default meta;
11
- type Story = StoryObj<typeof AdditionalInfo>;
12
-
13
- // Story when only the license URL is provided
14
- export const LicenseWithOnlyURL: Story = {
15
- name: 'License with only URL',
16
- args: {
17
- id: 'id',
18
- license: {
19
- name: 'MIT License',
20
- url: 'https://mit.edu/license.html',
21
- },
22
- },
23
- };
24
-
25
- // Story when only the license identifier is provided
26
- export const LicenseWithOnlyIdentifier: Story = {
27
- name: 'License with only Identifier',
28
- args: {
29
- id: 'id',
30
- license: {
31
- name: 'MIT License',
32
- identifier: `MIT`,
33
- },
34
- },
35
- };
36
-
37
- // Story when both the license URL and identifier are provided (URL should take precedence)
38
- export const LicenseWithURLAndIdentifier: Story = {
39
- name: 'License with URL and Identifier (URL takes precedence)',
40
- args: {
41
- id: 'id',
42
- license: {
43
- name: 'MIT License',
44
- identifier: 'MIT',
45
- url: 'https://mit.edu/license.html',
46
- },
47
- },
48
- };
@@ -1,61 +0,0 @@
1
- import { NodeAnnotation, Panel } from '@stoplight/mosaic';
2
- import { IHttpService } from '@stoplight/types';
3
- import React from 'react';
4
-
5
- import { useOptionsCtx } from '../../../context/Options';
6
- import { MarkdownViewer } from '../../MarkdownViewer';
7
-
8
- interface AdditionalInfoProps {
9
- id: string;
10
- termsOfService?: string;
11
- contact?: IHttpService['contact'];
12
- license?: IHttpService['license'];
13
- }
14
-
15
- export const AdditionalInfo: React.FC<AdditionalInfoProps> = ({ id, termsOfService, contact, license }) => {
16
- const { nodeHasChanged } = useOptionsCtx();
17
- const hasChanged = nodeHasChanged?.({ nodeId: id, attr: ['termsOfService', 'contact', 'license'] });
18
-
19
- const contactLink =
20
- contact?.name && contact?.url
21
- ? `[Contact ${contact.name}](${contact.url})`
22
- : contact?.email
23
- ? `[Contact ${contact.name || contact.email}](mailto:${contact.email})`
24
- : '';
25
-
26
- //use spdx to look up url for license identifier if available
27
- // The licenseUrl is determined based on the mutual exclusivity of the `url` and `identifier` fields.
28
- // If a `license.url` is provided, it takes precedence over the `license.identifier`.
29
- // This is because the OpenAPI specification defines `url` and `identifier` as mutually exclusive fields,
30
- // meaning you should use either one or the other, but not both. If both are provided, the `url` should be used.
31
- // See: https://spec.openapis.org/oas/latest.html#license-object
32
- const licenseUrl = license?.url
33
- ? license?.url
34
- : license?.identifier
35
- ? `https://spdx.org/licenses/${license?.identifier}.html`
36
- : undefined;
37
-
38
- const licenseLink =
39
- license?.name && licenseUrl
40
- ? `[${license.name}](${licenseUrl})`
41
- : license?.identifier && licenseUrl
42
- ? `[${license?.identifier}](${licenseUrl})`
43
- : '';
44
- const tosLink = termsOfService ? `[Terms of Service](${termsOfService})` : '';
45
-
46
- return contactLink || licenseLink || tosLink ? (
47
- <Panel rounded isCollapsible={false} pos="relative">
48
- <Panel.Titlebar bg="canvas-300">
49
- <span role="heading">Additional Information</span>
50
- </Panel.Titlebar>
51
-
52
- <Panel.Content p={0}>
53
- <Panel.Content>
54
- <MarkdownViewer style={{ fontSize: 12 }} markdown={`${contactLink}\n \n${licenseLink}\n \n ${tosLink}`} />
55
- </Panel.Content>
56
- </Panel.Content>
57
-
58
- <NodeAnnotation change={hasChanged} />
59
- </Panel>
60
- ) : null;
61
- };
@@ -1,35 +0,0 @@
1
- import { Box, Button, Menu, MenuActionItem, MenuItems } from '@stoplight/mosaic';
2
- import * as React from 'react';
3
-
4
- type ExportMenuProps = Pick<MenuActionItem, 'href' | 'onPress'>;
5
-
6
- export interface ExportButtonProps {
7
- original: ExportMenuProps;
8
- bundled: ExportMenuProps;
9
- }
10
-
11
- export const ExportButton: React.FC<ExportButtonProps> = ({ original, bundled }) => {
12
- const menuItems = React.useMemo(() => {
13
- const items: MenuItems = [
14
- { id: 'original', title: 'Original', ...original },
15
- { id: 'bundled', title: 'Bundled References', ...bundled },
16
- ];
17
-
18
- return items;
19
- }, [original, bundled]);
20
-
21
- return (
22
- <Box>
23
- <Menu
24
- aria-label="Export"
25
- items={menuItems}
26
- placement="bottom right"
27
- renderTrigger={({ isOpen }) => (
28
- <Button iconRight="chevron-down" appearance="default" ml={2} active={isOpen} size="sm">
29
- Export
30
- </Button>
31
- )}
32
- />
33
- </Box>
34
- );
35
- };
@@ -1,429 +0,0 @@
1
- import { Provider as MosaicProvider } from '@stoplight/mosaic';
2
- import { render, screen, waitFor } from '@testing-library/react';
3
- import { renderHook } from '@testing-library/react-hooks';
4
- import userEvent from '@testing-library/user-event';
5
- import * as React from 'react';
6
- import { BrowserRouter as Router } from 'react-router-dom';
7
-
8
- import { apiKey, oauth } from '../../../__fixtures__/security-schemes';
9
- import httpService from '../../../__fixtures__/services/petstore';
10
- import { httpServiceWithUnnamedServers } from '../../../__fixtures__/services/with-unnamed-servers';
11
- import { httpServiceWithUrlVariables } from '../../../__fixtures__/services/with-url-variables';
12
- import { httpServiceWithoutOrigin } from '../../../__fixtures__/services/without-origin';
13
- import { AdditionalInfo } from './AdditionalInfo';
14
- import { HttpService } from './index';
15
- import { SecuritySchemes } from './SecuritySchemes';
16
- import { ServerInfo, useSplitUrl } from './ServerInfo';
17
-
18
- describe('HttpService', () => {
19
- it('Should render correctly', () => {
20
- const wrapper = render(
21
- <Router>
22
- <HttpService data={httpService} />
23
- </Router>,
24
- );
25
-
26
- expect(wrapper.getByText(httpService.name).tagName.toLowerCase()).toBe('h1');
27
- });
28
-
29
- it('should not display servers when hideServerInfo is provided', () => {
30
- render(
31
- <Router>
32
- <HttpService layoutOptions={{ hideServerInfo: true }} data={{ ...httpService, security: [] }} />
33
- </Router>,
34
- );
35
-
36
- const serverUrl = screen.queryByLabelText('Production API');
37
- expect(serverUrl).not.toBeInTheDocument();
38
- });
39
-
40
- it('displays all server urls', () => {
41
- render(<ServerInfo servers={httpService.servers ?? []} />);
42
-
43
- const serverUrl = screen.getByLabelText('Production API');
44
- expect(serverUrl).toHaveTextContent('https://api.stoplight.io');
45
-
46
- const secondServerUrl = screen.getByLabelText('Staging API');
47
- expect(secondServerUrl).toHaveTextContent('https://api.{environment}.stoplight.io');
48
-
49
- const thirdServerUrl = screen.getByLabelText('Development API');
50
- expect(thirdServerUrl).toHaveTextContent('https://localhost:{port}');
51
-
52
- expect(screen.queryByLabelText('Mock Server')).not.toBeInTheDocument();
53
- });
54
-
55
- it('generates names for servers without descriptions', () => {
56
- render(<ServerInfo servers={httpServiceWithUnnamedServers.servers ?? []} />);
57
-
58
- const secondServerUrl = screen.getByLabelText('Server 2');
59
- expect(secondServerUrl).toHaveTextContent('https://api.staging.stoplight.io');
60
-
61
- const fourthServerUrl = screen.getByLabelText('Server 4');
62
- expect(fourthServerUrl).toHaveTextContent('https://localhost:4060');
63
-
64
- expect(screen.queryByLabelText('Mock Server')).not.toBeInTheDocument();
65
- });
66
-
67
- it('keeps url variables in displayed url', () => {
68
- render(<ServerInfo servers={httpServiceWithUrlVariables.servers ?? []} />);
69
-
70
- const serverUrl = screen.getByLabelText('Production API');
71
- expect(serverUrl).toHaveTextContent('{protocol}://{namespace}.stoplight.io');
72
- });
73
-
74
- it('shows url variables in an expandable panel', async () => {
75
- render(<ServerInfo servers={httpServiceWithUrlVariables.servers ?? []} />);
76
-
77
- await waitFor(() => expect(screen.queryByRole('region')).toBeInTheDocument());
78
-
79
- expect(screen.getByRole('region')).toHaveTextContent(
80
- `protocolstringAllowed values:ftphttphttpsDefault:ftpnamespacestringDefault:default-namespace`,
81
- );
82
- });
83
-
84
- it('hides subsequent panels with server variables ', async () => {
85
- const servers = [
86
- ...httpServiceWithUrlVariables.servers!.slice(0, -1),
87
- {
88
- id: '?http-server-3?',
89
- url: 'https://localhost:{port}',
90
- description: 'Development API',
91
- variables: {
92
- port: {
93
- default: '443',
94
- },
95
- },
96
- },
97
- ];
98
-
99
- render(<ServerInfo servers={servers} />);
100
-
101
- await waitFor(() => expect(screen.queryAllByRole('region')).toHaveLength(1));
102
-
103
- const serverUrl = screen.getByLabelText('Development API');
104
- userEvent.click(serverUrl.parentElement!);
105
-
106
- await waitFor(() => expect(screen.queryAllByRole('region')).toHaveLength(2));
107
-
108
- expect(screen.getAllByRole('region')[1]).toHaveTextContent(`portstringDefault:443`);
109
- });
110
-
111
- it('handles urls without an origin', () => {
112
- render(<ServerInfo servers={httpServiceWithoutOrigin.servers ?? []} />);
113
-
114
- const serverUrl = screen.getByLabelText('Production API');
115
- expect(serverUrl).toHaveTextContent('api');
116
- });
117
-
118
- it('displays mock server url when embedded in Stoplight Project', async () => {
119
- render(<ServerInfo servers={httpService.servers ?? []} mockUrl="https://foo.stoplight.io/prism/123" />);
120
-
121
- const mockServer = screen.queryByLabelText('Mock Server');
122
- await waitFor(() => expect(mockServer).toHaveTextContent('https://foo.stoplight.io/prism/123'));
123
- });
124
-
125
- it('Base URL block handles an invalid URL', () => {
126
- const modifiedData = {
127
- ...httpService,
128
- servers: [
129
- {
130
- id: '?http-server-0?',
131
- url: 'https://///',
132
- name: 'Production API',
133
- },
134
- ],
135
- };
136
-
137
- render(
138
- <Router>
139
- <HttpService data={modifiedData} />
140
- </Router>,
141
- );
142
-
143
- expect(screen.queryByText(/api base url/i)).toBeInTheDocument();
144
- });
145
-
146
- describe('Security schemes', () => {
147
- it('should render single security scheme', () => {
148
- render(<SecuritySchemes secSchemes={[[apiKey]]} parentId="2@adfg4F" />);
149
-
150
- const title = screen.getByRole('heading', { name: 'Security' });
151
- const scheme = screen.getByRole('heading', { name: 'API Key' });
152
-
153
- expect(title).toBeInTheDocument();
154
- expect(scheme).toBeInTheDocument();
155
- });
156
-
157
- it('should not render if no security schemes provided', () => {
158
- render(
159
- <Router>
160
- <HttpService data={{ ...httpService, security: [] }} />
161
- </Router>,
162
- );
163
-
164
- const security = screen.queryByRole('heading', { name: 'Security' });
165
- expect(security).not.toBeInTheDocument();
166
- });
167
-
168
- it('should not render if hideSecurityInfo is provided', () => {
169
- render(
170
- <Router>
171
- <HttpService layoutOptions={{ hideSecurityInfo: true }} data={{ ...httpService, security: [] }} />
172
- </Router>,
173
- );
174
-
175
- const security = screen.queryByRole('heading', { name: 'Security' });
176
- expect(security).not.toBeInTheDocument();
177
- });
178
-
179
- it('should render default description', () => {
180
- render(<SecuritySchemes secSchemes={[[apiKey]]} parentId="2@adfg4F" />);
181
-
182
- const description = screen.getByText(/An API key/);
183
- expect(description).toBeInTheDocument();
184
- });
185
-
186
- it('should render custom description', () => {
187
- render(
188
- <SecuritySchemes secSchemes={[[{ ...apiKey, description: 'Api Key description' }]]} parentId="2@adfg4F" />,
189
- );
190
-
191
- const description = screen.getByText('Api Key description');
192
- expect(description).toBeInTheDocument();
193
- });
194
-
195
- it('should render both custom description and other scheme details', () => {
196
- render(
197
- <SecuritySchemes secSchemes={[[{ ...oauth, description: 'A custom description' }]]} parentId="2@adfg4F" />,
198
- );
199
-
200
- const description = screen.getByText('A custom description');
201
- const implicit = screen.getByText('Implicit OAuth Flow');
202
-
203
- expect(description).toBeInTheDocument();
204
- expect(implicit).toBeInTheDocument();
205
- });
206
-
207
- it('should render oauth flows for default description', () => {
208
- render(<SecuritySchemes secSchemes={[[oauth]]} parentId="2@adfg4F" />);
209
-
210
- const implicit = screen.getByText('Implicit OAuth Flow');
211
- const password = screen.getByText('Password OAuth Flow');
212
- const clientCredentials = screen.getByText('Client Credentials OAuth Flow');
213
- const authCode = screen.getByText('Authorization Code OAuth Flow');
214
-
215
- expect(implicit).toBeInTheDocument();
216
- expect(password).toBeInTheDocument();
217
- expect(clientCredentials).toBeInTheDocument();
218
- expect(authCode).toBeInTheDocument();
219
- });
220
-
221
- it('should render multiple schemes', () => {
222
- render(<SecuritySchemes secSchemes={[[apiKey], [oauth]]} parentId="2@adfg4F" />);
223
-
224
- const apiKeyScheme = screen.getByRole('heading', { name: 'API Key' });
225
- const oauthScheme = screen.getByRole('heading', { name: 'OAuth 2.0' });
226
- const expandButtons = screen.getAllByRole('button');
227
-
228
- expect(apiKeyScheme).toBeInTheDocument();
229
- expect(oauthScheme).toBeInTheDocument();
230
- expect(expandButtons.length).toEqual(2);
231
- });
232
-
233
- it('should expand first scheme by default', () => {
234
- render(<SecuritySchemes secSchemes={[[apiKey], [oauth]]} parentId="2@adfg4F" />);
235
-
236
- const apiKeyDescription = screen.queryByText(/An API key/);
237
- let oauthDescription = screen.queryByText('Implicit OAuth Flow');
238
-
239
- expect(apiKeyDescription).toBeInTheDocument();
240
- expect(oauthDescription).not.toBeInTheDocument();
241
-
242
- const oauthScheme = screen.getByRole('heading', { name: 'OAuth 2.0' });
243
- userEvent.click(oauthScheme);
244
- oauthDescription = screen.queryByText('Implicit OAuth Flow');
245
- expect(oauthDescription).toBeInTheDocument();
246
- });
247
- });
248
-
249
- describe('Additional information', () => {
250
- it('should render additional information', () => {
251
- const contact = {
252
- name: 'Developer',
253
- email: 'developer@stoplight.io',
254
- url: 'https://stoplight.io/contact-us/',
255
- };
256
-
257
- const license = {
258
- name: 'MIT',
259
- url: 'https://opensource.org/licenses/MIT',
260
- };
261
- render(
262
- <AdditionalInfo id="a" contact={contact} license={license} termsOfService="https://stoplight.io/terms/" />,
263
- );
264
-
265
- const title = screen.getByRole('heading', { name: 'Additional Information' });
266
-
267
- expect(title).toBeInTheDocument();
268
- });
269
-
270
- it('should render additional information with SPDX license identifier', () => {
271
- const contact = {
272
- name: 'Developer',
273
- email: 'developer@stoplight.io',
274
- url: 'https://stoplight.io/contact-us/',
275
- };
276
-
277
- const license = {
278
- name: 'MIT License',
279
- identifier: 'MIT',
280
- };
281
-
282
- render(
283
- <AdditionalInfo id="a" contact={contact} license={license} termsOfService="https://stoplight.io/terms/" />,
284
- );
285
-
286
- const licenseLink = screen.getByText('MIT License');
287
- expect(licenseLink).toHaveAttribute('href', 'https://spdx.org/licenses/MIT.html');
288
- });
289
-
290
- it('should prefer license URL over SPDX identifier if both are provided', () => {
291
- const license = {
292
- name: 'MIT License',
293
- url: 'https://opensource.org/licenses/MIT',
294
- identifier: 'MIT',
295
- };
296
-
297
- render(<AdditionalInfo id="a" license={license} />);
298
-
299
- const licenseLink = screen.getByText('MIT License');
300
- expect(licenseLink).toHaveAttribute('href', 'https://opensource.org/licenses/MIT');
301
- });
302
-
303
- it('should not render if contact, license, and terms of service do not exist', () => {
304
- render(<AdditionalInfo id="a" />);
305
-
306
- const title = screen.queryByRole('heading', { name: 'Additional Information' });
307
- expect(title).not.toBeInTheDocument();
308
- });
309
-
310
- it('should not render if props do not have sufficient subprops', () => {
311
- const contact = {
312
- name: 'Developer',
313
- };
314
-
315
- render(<AdditionalInfo id="a" contact={contact} />);
316
-
317
- const title = screen.queryByRole('heading', { name: 'Additional Information' });
318
- expect(title).not.toBeInTheDocument();
319
- });
320
- });
321
-
322
- describe('export button', () => {
323
- it('should render correctly', () => {
324
- const wrapper = render(
325
- <Router>
326
- <MosaicProvider>
327
- <HttpService
328
- data={httpService}
329
- exportProps={{ original: { onPress: jest.fn() }, bundled: { onPress: jest.fn() } }}
330
- />
331
- </MosaicProvider>
332
- </Router>,
333
- );
334
-
335
- const exportButton = wrapper.getByRole('button', { name: 'Export' });
336
- expect(exportButton).toBeInTheDocument();
337
-
338
- userEvent.click(exportButton);
339
- expect(wrapper.getByRole('menuitem', { name: 'Original' })).toBeInTheDocument();
340
- expect(wrapper.getByRole('menuitem', { name: 'Bundled References' })).toBeInTheDocument();
341
- });
342
-
343
- it('should not render if hideExport is true', () => {
344
- const wrapper = render(
345
- <Router>
346
- <MosaicProvider>
347
- <HttpService
348
- data={httpService}
349
- exportProps={{ original: { onPress: jest.fn() }, bundled: { onPress: jest.fn() } }}
350
- layoutOptions={{ hideExport: true }}
351
- />
352
- </MosaicProvider>
353
- </Router>,
354
- );
355
-
356
- const exportButton = wrapper.queryByRole('button', { name: 'Export' });
357
- expect(exportButton).not.toBeInTheDocument();
358
- });
359
-
360
- it('should not render if no exportProps are present', () => {
361
- const wrapper = render(
362
- <Router>
363
- <MosaicProvider>
364
- <HttpService data={httpService} />
365
- </MosaicProvider>
366
- </Router>,
367
- );
368
-
369
- const exportButton = wrapper.queryByRole('button', { name: 'Export' });
370
- expect(exportButton).not.toBeInTheDocument();
371
- });
372
- });
373
- });
374
-
375
- describe('useSplitUrl hook', () => {
376
- it('should correctly distinguish variables from static parts', () => {
377
- let { result } = renderHook(() => useSplitUrl('https://{api}.stoplight.io:{port}'));
378
-
379
- expect(result.current).toStrictEqual([
380
- { kind: 'static', value: 'https://' },
381
- { kind: 'variable', value: '{api}' },
382
- { kind: 'static', value: '.stoplight.io:' },
383
- { kind: 'variable', value: '{port}' },
384
- ]);
385
-
386
- ({ result } = renderHook(() => useSplitUrl('{protocol}://stoplight.io:{port}')));
387
-
388
- expect(result.current).toStrictEqual([
389
- { kind: 'variable', value: '{protocol}' },
390
- { kind: 'static', value: '://stoplight.io:' },
391
- { kind: 'variable', value: '{port}' },
392
- ]);
393
-
394
- ({ result } = renderHook(() => useSplitUrl('https://{version}{username}.stoplight.io')));
395
-
396
- expect(result.current).toStrictEqual([
397
- { kind: 'static', value: 'https://' },
398
- { kind: 'variable', value: '{version}' },
399
- { kind: 'variable', value: '{username}' },
400
- { kind: 'static', value: '.stoplight.io' },
401
- ]);
402
-
403
- ({ result } = renderHook(() => useSplitUrl('https://www.stoplight.io')));
404
-
405
- expect(result.current).toStrictEqual([{ kind: 'static', value: 'https://www.stoplight.io' }]);
406
- });
407
-
408
- it('should gracefully handle invalid input', () => {
409
- let { result } = renderHook(() => useSplitUrl('https://{{{{}'));
410
-
411
- expect(result.current).toStrictEqual([{ kind: 'static', value: 'https://{{{{}' }]);
412
-
413
- ({ result } = renderHook(() => useSplitUrl('{protocol://stoplight.io:{api}')));
414
-
415
- expect(result.current).toStrictEqual([
416
- { kind: 'static', value: '{protocol://stoplight.io:' },
417
- { kind: 'variable', value: '{api}' },
418
- ]);
419
-
420
- ({ result } = renderHook(() => useSplitUrl('https://{version}{username}.stoplight.io{test')));
421
-
422
- expect(result.current).toStrictEqual([
423
- { kind: 'static', value: 'https://' },
424
- { kind: 'variable', value: '{version}' },
425
- { kind: 'variable', value: '{username}' },
426
- { kind: 'static', value: '.stoplight.io{test' },
427
- ]);
428
- });
429
- });
@@ -1,14 +0,0 @@
1
- import { httpService } from '../../../__fixtures__/services/petstore';
2
- import { createStoriesForDocsComponent } from '../story-helper';
3
- import { renderExtensionRenderer } from '../story-renderer-helper';
4
- import { HttpService } from './HttpService';
5
-
6
- const { meta, createHoistedStory } = createStoriesForDocsComponent(HttpService, 'HttpService');
7
-
8
- export default meta;
9
-
10
- export const Story = createHoistedStory({
11
- data: httpService,
12
- layoutOptions: { compact: 600 },
13
- renderExtensionAddon: renderExtensionRenderer,
14
- });
@@ -1,99 +0,0 @@
1
- import { Box, Flex, Heading, NodeAnnotation, VStack } from '@stoplight/mosaic';
2
- import { withErrorBoundary } from '@stoplight/react-error-boundary';
3
- import { IHttpService } from '@stoplight/types';
4
- import * as React from 'react';
5
-
6
- import { MockingContext } from '../../../containers/MockingProvider';
7
- import { useResolvedObject } from '../../../context/InlineRefResolver';
8
- import { useOptionsCtx } from '../../../context/Options';
9
- import { useIsCompact } from '../../../hooks/useIsCompact';
10
- import { MarkdownViewer } from '../../MarkdownViewer';
11
- import { PoweredByLink } from '../../PoweredByLink';
12
- import { DocsComponentProps } from '..';
13
- import { VersionBadge } from '../HttpOperation/Badges';
14
- import { AdditionalInfo } from './AdditionalInfo';
15
- import { ExportButton } from './ExportButton';
16
- import { SecuritySchemes } from './SecuritySchemes';
17
- import { ServerInfo } from './ServerInfo';
18
-
19
- export type HttpServiceProps = DocsComponentProps<Partial<IHttpService>>;
20
-
21
- const HttpServiceComponent = React.memo<HttpServiceProps>(
22
- ({ data: unresolvedData, location = {}, layoutOptions, exportProps }) => {
23
- const { nodeHasChanged } = useOptionsCtx();
24
- const data = useResolvedObject(unresolvedData) as IHttpService;
25
- const { ref: layoutRef, isCompact } = useIsCompact(layoutOptions);
26
-
27
- const { search, pathname } = location;
28
- const mocking = React.useContext(MockingContext);
29
- const query = new URLSearchParams(search);
30
-
31
- const nameChanged = nodeHasChanged?.({ nodeId: data.id, attr: 'name' });
32
- const versionChanged = nodeHasChanged?.({ nodeId: data.id, attr: 'version' });
33
- const descriptionChanged = nodeHasChanged?.({ nodeId: data.id, attr: 'description' });
34
-
35
- return (
36
- <Box ref={layoutRef} mb={10} className="HttpService">
37
- {data.name && !layoutOptions?.noHeading && (
38
- <Flex justifyContent="between" alignItems="center">
39
- <Box pos="relative">
40
- <Heading size={1} mb={4} fontWeight="semibold">
41
- {data.name}
42
- </Heading>
43
- <NodeAnnotation change={nameChanged} />
44
- </Box>
45
- {exportProps && !layoutOptions?.hideExport && !isCompact && <ExportButton {...exportProps} />}
46
- </Flex>
47
- )}
48
-
49
- {data.version && (
50
- <Box mb={5} pos="relative">
51
- <VersionBadge value={data.version} />
52
- <NodeAnnotation change={versionChanged} />
53
- </Box>
54
- )}
55
-
56
- {pathname && layoutOptions?.showPoweredByLink && (
57
- <PoweredByLink source={data.name ?? 'no-title'} pathname={pathname} packageType="elements" layout="stacked" />
58
- )}
59
-
60
- <VStack spacing={6}>
61
- {layoutOptions?.hideServerInfo ? null : <ServerInfo servers={data.servers ?? []} mockUrl={mocking.mockUrl} />}
62
-
63
- {layoutOptions?.hideSecurityInfo ? null : (
64
- <Box data-test="security">
65
- {data.security?.length ? (
66
- <SecuritySchemes
67
- secSchemes={data.security}
68
- defaultScheme={query.get('security') || undefined}
69
- parentId={data.id}
70
- />
71
- ) : null}
72
- </Box>
73
- )}
74
-
75
- <Box data-test="additional-info">
76
- {(data.contact?.email || data.license || data.termsOfService) && (
77
- <AdditionalInfo
78
- id={data.id}
79
- contact={data.contact}
80
- license={data.license}
81
- termsOfService={data.termsOfService}
82
- />
83
- )}
84
- </Box>
85
- </VStack>
86
-
87
- {data.description && (
88
- <Box pos="relative">
89
- <MarkdownViewer className="sl-my-5" markdown={data.description} />
90
- <NodeAnnotation change={descriptionChanged} />
91
- </Box>
92
- )}
93
- </Box>
94
- );
95
- },
96
- );
97
- HttpServiceComponent.displayName = 'HttpService.Component';
98
-
99
- export const HttpService = withErrorBoundary<HttpServiceProps>(HttpServiceComponent, { recoverableProps: ['data'] });