@stoplight/elements-core 9.0.16-beta-0.3 → 9.0.17

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 (415) hide show
  1. package/{dist/index.esm.js → index.esm.js} +34 -46
  2. package/{dist/index.js → index.js} +33 -45
  3. package/{dist/index.mjs → index.mjs} +34 -46
  4. package/package.json +14 -74
  5. package/.storybook/main.js +0 -6
  6. package/.storybook/manager.js +0 -1
  7. package/.storybook/preview.jsx +0 -50
  8. package/dist/LICENSE +0 -190
  9. package/dist/README.md +0 -1
  10. package/dist/package.json +0 -64
  11. package/jest.config.js +0 -10
  12. package/src/__fixtures__/articles/basic.md +0 -10
  13. package/src/__fixtures__/articles/kitchen-sink.md +0 -318
  14. package/src/__fixtures__/articles/long-page-heading.md +0 -955
  15. package/src/__fixtures__/articles/multiple-try-its.md +0 -54
  16. package/src/__fixtures__/articles/schema-with-refs.ts +0 -82
  17. package/src/__fixtures__/http-request.json +0 -11
  18. package/src/__fixtures__/models/model-with-no-examples.json +0 -15
  19. package/src/__fixtures__/models/model-with-one-example.json +0 -23
  20. package/src/__fixtures__/models/model-with-three-examples.json +0 -35
  21. package/src/__fixtures__/operations/application-octet-stream-post.ts +0 -39
  22. package/src/__fixtures__/operations/base64-file-upload.ts +0 -43
  23. package/src/__fixtures__/operations/big-response.ts +0 -4690
  24. package/src/__fixtures__/operations/bundled-parameter.ts +0 -128
  25. package/src/__fixtures__/operations/empty-response.ts +0 -15
  26. package/src/__fixtures__/operations/examples-request-body.ts +0 -135
  27. package/src/__fixtures__/operations/head-todos.ts +0 -49
  28. package/src/__fixtures__/operations/invalid-response-example.ts +0 -45
  29. package/src/__fixtures__/operations/multipart-formdata-post.ts +0 -61
  30. package/src/__fixtures__/operations/operation-minimal.ts +0 -11
  31. package/src/__fixtures__/operations/operation-parameters.ts +0 -337
  32. package/src/__fixtures__/operations/operation-with-examples.ts +0 -113
  33. package/src/__fixtures__/operations/operation-without-servers.ts +0 -16
  34. package/src/__fixtures__/operations/patch-todos.ts +0 -49
  35. package/src/__fixtures__/operations/put-todos.ts +0 -862
  36. package/src/__fixtures__/operations/referenced-body.ts +0 -62
  37. package/src/__fixtures__/operations/request-body-empty-schema.ts +0 -35
  38. package/src/__fixtures__/operations/request-body.ts +0 -62
  39. package/src/__fixtures__/operations/securedOperation.ts +0 -118
  40. package/src/__fixtures__/operations/security-basic.ts +0 -24
  41. package/src/__fixtures__/operations/security-bearer.ts +0 -25
  42. package/src/__fixtures__/operations/simple-get.ts +0 -17
  43. package/src/__fixtures__/operations/simple.ts +0 -103
  44. package/src/__fixtures__/operations/string-numeric-enums.ts +0 -32
  45. package/src/__fixtures__/operations/urlencoded-post-oneof.ts +0 -81
  46. package/src/__fixtures__/operations/urlencoded-post.ts +0 -54
  47. package/src/__fixtures__/operations/vendor-extensions.ts +0 -337
  48. package/src/__fixtures__/operations/with-url-variables.ts +0 -47
  49. package/src/__fixtures__/operations/x-code-samples.ts +0 -348
  50. package/src/__fixtures__/schemas/circular.ts +0 -1906
  51. package/src/__fixtures__/schemas/contact.json +0 -293
  52. package/src/__fixtures__/schemas/media-entry.json +0 -69
  53. package/src/__fixtures__/schemas/simple.json +0 -27
  54. package/src/__fixtures__/schemas/todo-full.v1.json +0 -35
  55. package/src/__fixtures__/schemas/todo-partial.v1.json +0 -14
  56. package/src/__fixtures__/schemas/user.v1.json +0 -17
  57. package/src/__fixtures__/security-schemes/index.ts +0 -38
  58. package/src/__fixtures__/services/petstore.ts +0 -167
  59. package/src/__fixtures__/services/with-unnamed-servers.ts +0 -38
  60. package/src/__fixtures__/services/with-url-variables.ts +0 -83
  61. package/src/__fixtures__/services/without-origin.ts +0 -20
  62. package/src/__fixtures__/table-of-contents/nested.ts +0 -44
  63. package/src/__fixtures__/table-of-contents/studio-template.ts +0 -100
  64. package/src/__fixtures__/table-of-contents/studio.ts +0 -559
  65. package/src/components/Docs/Article/Article.spec.tsx +0 -38
  66. package/src/components/Docs/Article/Article.stories.tsx +0 -17
  67. package/src/components/Docs/Article/index.tsx +0 -38
  68. package/src/components/Docs/Docs.stories.tsx +0 -33
  69. package/src/components/Docs/Docs.tsx +0 -233
  70. package/src/components/Docs/HttpOperation/Badges.tsx +0 -49
  71. package/src/components/Docs/HttpOperation/Body.tsx +0 -79
  72. package/src/components/Docs/HttpOperation/Callbacks.tsx +0 -89
  73. package/src/components/Docs/HttpOperation/HttpOperation.spec.tsx +0 -787
  74. package/src/components/Docs/HttpOperation/HttpOperation.stories.ts +0 -14
  75. package/src/components/Docs/HttpOperation/HttpOperation.tsx +0 -255
  76. package/src/components/Docs/HttpOperation/Parameters.spec.tsx +0 -101
  77. package/src/components/Docs/HttpOperation/Parameters.tsx +0 -118
  78. package/src/components/Docs/HttpOperation/Request.tsx +0 -140
  79. package/src/components/Docs/HttpOperation/Responses.tsx +0 -247
  80. package/src/components/Docs/HttpOperation/index.ts +0 -1
  81. package/src/components/Docs/HttpService/AdditionalInfo.stories.ts +0 -48
  82. package/src/components/Docs/HttpService/AdditionalInfo.tsx +0 -61
  83. package/src/components/Docs/HttpService/ExportButton.tsx +0 -35
  84. package/src/components/Docs/HttpService/HttpService.spec.tsx +0 -429
  85. package/src/components/Docs/HttpService/HttpService.stories.ts +0 -14
  86. package/src/components/Docs/HttpService/HttpService.tsx +0 -99
  87. package/src/components/Docs/HttpService/SecuritySchemes.tsx +0 -82
  88. package/src/components/Docs/HttpService/ServerInfo.tsx +0 -196
  89. package/src/components/Docs/HttpService/index.ts +0 -1
  90. package/src/components/Docs/Model/Model.spec.tsx +0 -241
  91. package/src/components/Docs/Model/Model.stories.tsx +0 -16
  92. package/src/components/Docs/Model/Model.tsx +0 -160
  93. package/src/components/Docs/Model/index.ts +0 -1
  94. package/src/components/Docs/NodeVendorExtensions.tsx +0 -55
  95. package/src/components/Docs/Sections.tsx +0 -54
  96. package/src/components/Docs/Security/PanelContent.tsx +0 -38
  97. package/src/components/Docs/Security/index.ts +0 -1
  98. package/src/components/Docs/Skeleton.tsx +0 -12
  99. package/src/components/Docs/TwoColumnLayout.tsx +0 -28
  100. package/src/components/Docs/index.ts +0 -1
  101. package/src/components/Docs/story-helper.ts +0 -46
  102. package/src/components/Docs/story-renderer-helper.tsx +0 -56
  103. package/src/components/Layout/MobileTopNav.tsx +0 -78
  104. package/src/components/Layout/ResponsiveSidebarLayout.tsx +0 -175
  105. package/src/components/Layout/SidebarLayout.tsx +0 -107
  106. package/src/components/LinkHeading.tsx +0 -21
  107. package/src/components/LoadMore.tsx +0 -20
  108. package/src/components/Loading/Loading.tsx +0 -9
  109. package/src/components/Logo.tsx +0 -25
  110. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.spec.ts +0 -90
  111. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.tsx +0 -164
  112. package/src/components/MarkdownViewer/CustomComponents/Provider.tsx +0 -20
  113. package/src/components/MarkdownViewer/CustomComponents/ReactRouterLink.tsx +0 -27
  114. package/src/components/MarkdownViewer/CustomComponents/ResolvedImage.tsx +0 -86
  115. package/src/components/MarkdownViewer/CustomComponents/ScrollToHashElement.tsx +0 -96
  116. package/src/components/MarkdownViewer/MarkdownViewer.spec.tsx +0 -170
  117. package/src/components/MarkdownViewer/index.tsx +0 -10
  118. package/src/components/NonIdealState.tsx +0 -20
  119. package/src/components/PoweredByLink.tsx +0 -30
  120. package/src/components/RequestSamples/RequestSamples.stories.tsx +0 -67
  121. package/src/components/RequestSamples/RequestSamples.tsx +0 -246
  122. package/src/components/RequestSamples/__tests__/RequestSamples.test.tsx +0 -131
  123. package/src/components/RequestSamples/__tests__/__snapshots__/convertRequestToSample.spec.ts.snap +0 -746
  124. package/src/components/RequestSamples/__tests__/convertRequestToSample.spec.ts +0 -118
  125. package/src/components/RequestSamples/convertRequestToSample.ts +0 -56
  126. package/src/components/RequestSamples/extractCodeSamples.ts +0 -50
  127. package/src/components/RequestSamples/index.ts +0 -2
  128. package/src/components/RequestSamples/requestSampleConfigs.ts +0 -182
  129. package/src/components/ResponseExamples/ResponseExamples.spec.tsx +0 -121
  130. package/src/components/ResponseExamples/ResponseExamples.stories.tsx +0 -21
  131. package/src/components/ResponseExamples/ResponseExamples.tsx +0 -79
  132. package/src/components/TableOfContents/TableOfContents.spec.tsx +0 -316
  133. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -136
  134. package/src/components/TableOfContents/TableOfContents.tsx +0 -530
  135. package/src/components/TableOfContents/constants.ts +0 -45
  136. package/src/components/TableOfContents/index.ts +0 -2
  137. package/src/components/TableOfContents/types.ts +0 -59
  138. package/src/components/TableOfContents/utils.ts +0 -84
  139. package/src/components/TryIt/Auth/APIKeyAuth.tsx +0 -19
  140. package/src/components/TryIt/Auth/Auth.tsx +0 -169
  141. package/src/components/TryIt/Auth/AuthTokenInput.tsx +0 -37
  142. package/src/components/TryIt/Auth/BasicAuth.tsx +0 -62
  143. package/src/components/TryIt/Auth/BearerAuth.tsx +0 -19
  144. package/src/components/TryIt/Auth/DigestAuth.tsx +0 -35
  145. package/src/components/TryIt/Auth/OAuth2Auth.tsx +0 -19
  146. package/src/components/TryIt/Auth/authentication-utils.ts +0 -113
  147. package/src/components/TryIt/Body/BinaryBody.tsx +0 -52
  148. package/src/components/TryIt/Body/FormDataBody.tsx +0 -145
  149. package/src/components/TryIt/Body/RequestBody.tsx +0 -71
  150. package/src/components/TryIt/Body/__tests__/BinaryBody.test.tsx +0 -29
  151. package/src/components/TryIt/Body/__tests__/FormDataBody.test.tsx +0 -94
  152. package/src/components/TryIt/Body/request-body-utils.ts +0 -127
  153. package/src/components/TryIt/Body/useTextRequestBodyState.ts +0 -27
  154. package/src/components/TryIt/Mocking/MockingButton.tsx +0 -98
  155. package/src/components/TryIt/Mocking/mocking-utils.ts +0 -56
  156. package/src/components/TryIt/Mocking/useMockingOptions.ts +0 -6
  157. package/src/components/TryIt/Parameters/FileUploadParameterEditors.tsx +0 -62
  158. package/src/components/TryIt/Parameters/OperationParameters.tsx +0 -39
  159. package/src/components/TryIt/Parameters/ParameterEditor.tsx +0 -135
  160. package/src/components/TryIt/Parameters/__tests__/parameter-utils.spec.ts +0 -60
  161. package/src/components/TryIt/Parameters/parameter-utils.spec.ts +0 -118
  162. package/src/components/TryIt/Parameters/parameter-utils.ts +0 -245
  163. package/src/components/TryIt/Parameters/useOperationParameters.ts +0 -60
  164. package/src/components/TryIt/Response/ReponseCodeViewer.tsx +0 -28
  165. package/src/components/TryIt/Response/Response.spec.tsx +0 -174
  166. package/src/components/TryIt/Response/Response.tsx +0 -172
  167. package/src/components/TryIt/Response/hooks/useLineCount.ts +0 -7
  168. package/src/components/TryIt/Servers/ServerVariables.tsx +0 -33
  169. package/src/components/TryIt/Servers/ServersDropdown.tsx +0 -53
  170. package/src/components/TryIt/Servers/VariableEditor.tsx +0 -64
  171. package/src/components/TryIt/Servers/useServerVariables.ts +0 -19
  172. package/src/components/TryIt/TryIt.spec.tsx +0 -1511
  173. package/src/components/TryIt/TryIt.stories.tsx +0 -77
  174. package/src/components/TryIt/TryIt.tsx +0 -384
  175. package/src/components/TryIt/TryItWithRequestSamples.spec.tsx +0 -143
  176. package/src/components/TryIt/TryItWithRequestSamples.stories.tsx +0 -32
  177. package/src/components/TryIt/TryItWithRequestSamples.tsx +0 -42
  178. package/src/components/TryIt/build-request.spec.ts +0 -261
  179. package/src/components/TryIt/build-request.ts +0 -358
  180. package/src/components/TryIt/chosenServer.ts +0 -5
  181. package/src/components/TryIt/index.ts +0 -3
  182. package/src/components/__tests__/LinkHeading.spec.tsx +0 -125
  183. package/src/constants.ts +0 -176
  184. package/src/containers/MockingProvider.tsx +0 -23
  185. package/src/context/InlineRefResolver.spec.tsx +0 -183
  186. package/src/context/InlineRefResolver.tsx +0 -94
  187. package/src/context/Options.tsx +0 -27
  188. package/src/context/Persistence.tsx +0 -24
  189. package/src/context/RouterType.tsx +0 -9
  190. package/src/core.css +0 -97
  191. package/src/hoc/utils.ts +0 -5
  192. package/src/hoc/withMosaicProvider.spec.tsx +0 -48
  193. package/src/hoc/withMosaicProvider.tsx +0 -28
  194. package/src/hoc/withQueryClientProvider.spec.tsx +0 -38
  195. package/src/hoc/withQueryClientProvider.tsx +0 -35
  196. package/src/hoc/withRouter.tsx +0 -71
  197. package/src/hooks/useBundleRefsIntoDocument.ts +0 -60
  198. package/src/hooks/useFirstRender.ts +0 -8
  199. package/src/hooks/useIsCompact.ts +0 -26
  200. package/src/hooks/useParsedData.ts +0 -99
  201. package/src/hooks/useParsedValue.ts +0 -19
  202. package/src/hooks/useResponsiveLayout.tsx +0 -51
  203. package/src/hooks/useRouter.tsx +0 -31
  204. package/src/hooks/useUniqueId.ts +0 -4
  205. package/src/index.ts +0 -48
  206. package/src/styled.tsx +0 -22
  207. package/src/styles.css +0 -4
  208. package/src/types.ts +0 -170
  209. package/src/utils/__tests__/securitySchemes.spec.ts +0 -137
  210. package/src/utils/exampleGeneration/exampleGeneration.spec.tsx +0 -18
  211. package/src/utils/exampleGeneration/exampleGeneration.ts +0 -110
  212. package/src/utils/fileToBase64.ts +0 -11
  213. package/src/utils/guards.ts +0 -48
  214. package/src/utils/headers.ts +0 -316
  215. package/src/utils/http-spec/IServer.ts +0 -100
  216. package/src/utils/http-spec/__tests__/IServer.spec.ts +0 -51
  217. package/src/utils/http-spec/examples.ts +0 -5
  218. package/src/utils/http.ts +0 -9
  219. package/src/utils/jotai/persistAtom.ts +0 -31
  220. package/src/utils/node.ts +0 -19
  221. package/src/utils/oas/__tests__/security.spec.ts +0 -18
  222. package/src/utils/oas/security.ts +0 -76
  223. package/src/utils/ref-resolving/ReferenceResolver.ts +0 -29
  224. package/src/utils/ref-resolving/resolvedObject.test.ts +0 -415
  225. package/src/utils/ref-resolving/resolvedObject.ts +0 -107
  226. package/src/utils/securitySchemes.ts +0 -117
  227. package/src/utils/string.ts +0 -15
  228. package/src/utils/tests/chooseOption.ts +0 -7
  229. package/src/web-components/createElementClass.ts +0 -154
  230. package/tsconfig.build.json +0 -14
  231. package/tsconfig.json +0 -7
  232. /package/{dist/__fixtures__ → __fixtures__}/articles/schema-with-refs.d.ts +0 -0
  233. /package/{dist/__fixtures__ → __fixtures__}/operations/application-octet-stream-post.d.ts +0 -0
  234. /package/{dist/__fixtures__ → __fixtures__}/operations/base64-file-upload.d.ts +0 -0
  235. /package/{dist/__fixtures__ → __fixtures__}/operations/big-response.d.ts +0 -0
  236. /package/{dist/__fixtures__ → __fixtures__}/operations/examples-request-body.d.ts +0 -0
  237. /package/{dist/__fixtures__ → __fixtures__}/operations/head-todos.d.ts +0 -0
  238. /package/{dist/__fixtures__ → __fixtures__}/operations/multipart-formdata-post.d.ts +0 -0
  239. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-minimal.d.ts +0 -0
  240. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-parameters.d.ts +0 -0
  241. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-with-examples.d.ts +0 -0
  242. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-without-servers.d.ts +0 -0
  243. /package/{dist/__fixtures__ → __fixtures__}/operations/patch-todos.d.ts +0 -0
  244. /package/{dist/__fixtures__ → __fixtures__}/operations/put-todos.d.ts +0 -0
  245. /package/{dist/__fixtures__ → __fixtures__}/operations/referenced-body.d.ts +0 -0
  246. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body-empty-schema.d.ts +0 -0
  247. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body.d.ts +0 -0
  248. /package/{dist/__fixtures__ → __fixtures__}/operations/securedOperation.d.ts +0 -0
  249. /package/{dist/__fixtures__ → __fixtures__}/operations/security-basic.d.ts +0 -0
  250. /package/{dist/__fixtures__ → __fixtures__}/operations/security-bearer.d.ts +0 -0
  251. /package/{dist/__fixtures__ → __fixtures__}/operations/simple-get.d.ts +0 -0
  252. /package/{dist/__fixtures__ → __fixtures__}/operations/string-numeric-enums.d.ts +0 -0
  253. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post-oneof.d.ts +0 -0
  254. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post.d.ts +0 -0
  255. /package/{dist/__fixtures__ → __fixtures__}/operations/with-url-variables.d.ts +0 -0
  256. /package/{dist/__fixtures__ → __fixtures__}/security-schemes/index.d.ts +0 -0
  257. /package/{dist/__fixtures__ → __fixtures__}/services/petstore.d.ts +0 -0
  258. /package/{dist/__fixtures__ → __fixtures__}/services/with-unnamed-servers.d.ts +0 -0
  259. /package/{dist/__fixtures__ → __fixtures__}/services/with-url-variables.d.ts +0 -0
  260. /package/{dist/__fixtures__ → __fixtures__}/services/without-origin.d.ts +0 -0
  261. /package/{dist/components → components}/Docs/Article/Article.spec.d.ts +0 -0
  262. /package/{dist/components → components}/Docs/Article/Article.stories.d.ts +0 -0
  263. /package/{dist/components → components}/Docs/Article/index.d.ts +0 -0
  264. /package/{dist/components → components}/Docs/Docs.d.ts +0 -0
  265. /package/{dist/components → components}/Docs/Docs.stories.d.ts +0 -0
  266. /package/{dist/components → components}/Docs/HttpOperation/Badges.d.ts +0 -0
  267. /package/{dist/components → components}/Docs/HttpOperation/Body.d.ts +0 -0
  268. /package/{dist/components → components}/Docs/HttpOperation/Callbacks.d.ts +0 -0
  269. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.d.ts +0 -0
  270. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.spec.d.ts +0 -0
  271. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.stories.d.ts +0 -0
  272. /package/{dist/components → components}/Docs/HttpOperation/Parameters.d.ts +0 -0
  273. /package/{dist/components → components}/Docs/HttpOperation/Parameters.spec.d.ts +0 -0
  274. /package/{dist/components → components}/Docs/HttpOperation/Request.d.ts +0 -0
  275. /package/{dist/components → components}/Docs/HttpOperation/Responses.d.ts +0 -0
  276. /package/{dist/components → components}/Docs/HttpOperation/index.d.ts +0 -0
  277. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.d.ts +0 -0
  278. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.stories.d.ts +0 -0
  279. /package/{dist/components → components}/Docs/HttpService/ExportButton.d.ts +0 -0
  280. /package/{dist/components → components}/Docs/HttpService/HttpService.d.ts +0 -0
  281. /package/{dist/components → components}/Docs/HttpService/HttpService.spec.d.ts +0 -0
  282. /package/{dist/components → components}/Docs/HttpService/HttpService.stories.d.ts +0 -0
  283. /package/{dist/components → components}/Docs/HttpService/SecuritySchemes.d.ts +0 -0
  284. /package/{dist/components → components}/Docs/HttpService/ServerInfo.d.ts +0 -0
  285. /package/{dist/components → components}/Docs/HttpService/index.d.ts +0 -0
  286. /package/{dist/components → components}/Docs/Model/Model.d.ts +0 -0
  287. /package/{dist/components → components}/Docs/Model/Model.spec.d.ts +0 -0
  288. /package/{dist/components → components}/Docs/Model/Model.stories.d.ts +0 -0
  289. /package/{dist/components → components}/Docs/Model/index.d.ts +0 -0
  290. /package/{dist/components → components}/Docs/NodeVendorExtensions.d.ts +0 -0
  291. /package/{dist/components → components}/Docs/Sections.d.ts +0 -0
  292. /package/{dist/components → components}/Docs/Security/PanelContent.d.ts +0 -0
  293. /package/{dist/components → components}/Docs/Security/index.d.ts +0 -0
  294. /package/{dist/components → components}/Docs/Skeleton.d.ts +0 -0
  295. /package/{dist/components → components}/Docs/TwoColumnLayout.d.ts +0 -0
  296. /package/{dist/components → components}/Docs/index.d.ts +0 -0
  297. /package/{dist/components → components}/Docs/story-helper.d.ts +0 -0
  298. /package/{dist/components → components}/Docs/story-renderer-helper.d.ts +0 -0
  299. /package/{dist/components → components}/Layout/MobileTopNav.d.ts +0 -0
  300. /package/{dist/components → components}/Layout/ResponsiveSidebarLayout.d.ts +0 -0
  301. /package/{dist/components → components}/Layout/SidebarLayout.d.ts +0 -0
  302. /package/{dist/components → components}/LinkHeading.d.ts +0 -0
  303. /package/{dist/components → components}/LoadMore.d.ts +0 -0
  304. /package/{dist/components → components}/Loading/Loading.d.ts +0 -0
  305. /package/{dist/components → components}/Logo.d.ts +0 -0
  306. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.d.ts +0 -0
  307. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.spec.d.ts +0 -0
  308. /package/{dist/components → components}/MarkdownViewer/CustomComponents/Provider.d.ts +0 -0
  309. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ReactRouterLink.d.ts +0 -0
  310. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ResolvedImage.d.ts +0 -0
  311. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ScrollToHashElement.d.ts +0 -0
  312. /package/{dist/components → components}/MarkdownViewer/MarkdownViewer.spec.d.ts +0 -0
  313. /package/{dist/components → components}/MarkdownViewer/index.d.ts +0 -0
  314. /package/{dist/components → components}/NonIdealState.d.ts +0 -0
  315. /package/{dist/components → components}/PoweredByLink.d.ts +0 -0
  316. /package/{dist/components → components}/RequestSamples/RequestSamples.d.ts +0 -0
  317. /package/{dist/components → components}/RequestSamples/RequestSamples.stories.d.ts +0 -0
  318. /package/{dist/components → components}/RequestSamples/convertRequestToSample.d.ts +0 -0
  319. /package/{dist/components → components}/RequestSamples/extractCodeSamples.d.ts +0 -0
  320. /package/{dist/components → components}/RequestSamples/index.d.ts +0 -0
  321. /package/{dist/components → components}/RequestSamples/requestSampleConfigs.d.ts +0 -0
  322. /package/{dist/components → components}/ResponseExamples/ResponseExamples.d.ts +0 -0
  323. /package/{dist/components → components}/ResponseExamples/ResponseExamples.spec.d.ts +0 -0
  324. /package/{dist/components → components}/ResponseExamples/ResponseExamples.stories.d.ts +0 -0
  325. /package/{dist/components → components}/TableOfContents/TableOfContents.d.ts +0 -0
  326. /package/{dist/components → components}/TableOfContents/TableOfContents.spec.d.ts +0 -0
  327. /package/{dist/components → components}/TableOfContents/TableOfContents.stories.d.ts +0 -0
  328. /package/{dist/components → components}/TableOfContents/constants.d.ts +0 -0
  329. /package/{dist/components → components}/TableOfContents/index.d.ts +0 -0
  330. /package/{dist/components → components}/TableOfContents/types.d.ts +0 -0
  331. /package/{dist/components → components}/TableOfContents/utils.d.ts +0 -0
  332. /package/{dist/components → components}/TryIt/Auth/APIKeyAuth.d.ts +0 -0
  333. /package/{dist/components → components}/TryIt/Auth/Auth.d.ts +0 -0
  334. /package/{dist/components → components}/TryIt/Auth/AuthTokenInput.d.ts +0 -0
  335. /package/{dist/components → components}/TryIt/Auth/BasicAuth.d.ts +0 -0
  336. /package/{dist/components → components}/TryIt/Auth/BearerAuth.d.ts +0 -0
  337. /package/{dist/components → components}/TryIt/Auth/DigestAuth.d.ts +0 -0
  338. /package/{dist/components → components}/TryIt/Auth/OAuth2Auth.d.ts +0 -0
  339. /package/{dist/components → components}/TryIt/Auth/authentication-utils.d.ts +0 -0
  340. /package/{dist/components → components}/TryIt/Body/BinaryBody.d.ts +0 -0
  341. /package/{dist/components → components}/TryIt/Body/FormDataBody.d.ts +0 -0
  342. /package/{dist/components → components}/TryIt/Body/RequestBody.d.ts +0 -0
  343. /package/{dist/components → components}/TryIt/Body/request-body-utils.d.ts +0 -0
  344. /package/{dist/components → components}/TryIt/Body/useTextRequestBodyState.d.ts +0 -0
  345. /package/{dist/components → components}/TryIt/Mocking/MockingButton.d.ts +0 -0
  346. /package/{dist/components → components}/TryIt/Mocking/mocking-utils.d.ts +0 -0
  347. /package/{dist/components → components}/TryIt/Mocking/useMockingOptions.d.ts +0 -0
  348. /package/{dist/components → components}/TryIt/Parameters/FileUploadParameterEditors.d.ts +0 -0
  349. /package/{dist/components → components}/TryIt/Parameters/OperationParameters.d.ts +0 -0
  350. /package/{dist/components → components}/TryIt/Parameters/ParameterEditor.d.ts +0 -0
  351. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.d.ts +0 -0
  352. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.spec.d.ts +0 -0
  353. /package/{dist/components → components}/TryIt/Parameters/useOperationParameters.d.ts +0 -0
  354. /package/{dist/components → components}/TryIt/Response/ReponseCodeViewer.d.ts +0 -0
  355. /package/{dist/components → components}/TryIt/Response/Response.d.ts +0 -0
  356. /package/{dist/components → components}/TryIt/Response/Response.spec.d.ts +0 -0
  357. /package/{dist/components → components}/TryIt/Response/hooks/useLineCount.d.ts +0 -0
  358. /package/{dist/components → components}/TryIt/Servers/ServerVariables.d.ts +0 -0
  359. /package/{dist/components → components}/TryIt/Servers/ServersDropdown.d.ts +0 -0
  360. /package/{dist/components → components}/TryIt/Servers/VariableEditor.d.ts +0 -0
  361. /package/{dist/components → components}/TryIt/Servers/useServerVariables.d.ts +0 -0
  362. /package/{dist/components → components}/TryIt/TryIt.d.ts +0 -0
  363. /package/{dist/components → components}/TryIt/TryIt.spec.d.ts +0 -0
  364. /package/{dist/components → components}/TryIt/TryIt.stories.d.ts +0 -0
  365. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.d.ts +0 -0
  366. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.spec.d.ts +0 -0
  367. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.stories.d.ts +0 -0
  368. /package/{dist/components → components}/TryIt/build-request.d.ts +0 -0
  369. /package/{dist/components → components}/TryIt/build-request.spec.d.ts +0 -0
  370. /package/{dist/components → components}/TryIt/chosenServer.d.ts +0 -0
  371. /package/{dist/components → components}/TryIt/index.d.ts +0 -0
  372. /package/{dist/constants.d.ts → constants.d.ts} +0 -0
  373. /package/{dist/containers → containers}/MockingProvider.d.ts +0 -0
  374. /package/{dist/context → context}/InlineRefResolver.d.ts +0 -0
  375. /package/{dist/context → context}/InlineRefResolver.spec.d.ts +0 -0
  376. /package/{dist/context → context}/Options.d.ts +0 -0
  377. /package/{dist/context → context}/Persistence.d.ts +0 -0
  378. /package/{dist/context → context}/RouterType.d.ts +0 -0
  379. /package/{dist/core.css → core.css} +0 -0
  380. /package/{dist/hoc → hoc}/utils.d.ts +0 -0
  381. /package/{dist/hoc → hoc}/withMosaicProvider.d.ts +0 -0
  382. /package/{dist/hoc → hoc}/withMosaicProvider.spec.d.ts +0 -0
  383. /package/{dist/hoc → hoc}/withQueryClientProvider.d.ts +0 -0
  384. /package/{dist/hoc → hoc}/withQueryClientProvider.spec.d.ts +0 -0
  385. /package/{dist/hoc → hoc}/withRouter.d.ts +0 -0
  386. /package/{dist/hooks → hooks}/useBundleRefsIntoDocument.d.ts +0 -0
  387. /package/{dist/hooks → hooks}/useFirstRender.d.ts +0 -0
  388. /package/{dist/hooks → hooks}/useIsCompact.d.ts +0 -0
  389. /package/{dist/hooks → hooks}/useParsedData.d.ts +0 -0
  390. /package/{dist/hooks → hooks}/useParsedValue.d.ts +0 -0
  391. /package/{dist/hooks → hooks}/useResponsiveLayout.d.ts +0 -0
  392. /package/{dist/hooks → hooks}/useRouter.d.ts +0 -0
  393. /package/{dist/hooks → hooks}/useUniqueId.d.ts +0 -0
  394. /package/{dist/index.d.ts → index.d.ts} +0 -0
  395. /package/{dist/styled.d.ts → styled.d.ts} +0 -0
  396. /package/{dist/styles.min.css → styles.min.css} +0 -0
  397. /package/{dist/types.d.ts → types.d.ts} +0 -0
  398. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.d.ts +0 -0
  399. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.spec.d.ts +0 -0
  400. /package/{dist/utils → utils}/fileToBase64.d.ts +0 -0
  401. /package/{dist/utils → utils}/guards.d.ts +0 -0
  402. /package/{dist/utils → utils}/headers.d.ts +0 -0
  403. /package/{dist/utils → utils}/http-spec/IServer.d.ts +0 -0
  404. /package/{dist/utils → utils}/http-spec/examples.d.ts +0 -0
  405. /package/{dist/utils → utils}/http.d.ts +0 -0
  406. /package/{dist/utils → utils}/jotai/persistAtom.d.ts +0 -0
  407. /package/{dist/utils → utils}/node.d.ts +0 -0
  408. /package/{dist/utils → utils}/oas/security.d.ts +0 -0
  409. /package/{dist/utils → utils}/ref-resolving/ReferenceResolver.d.ts +0 -0
  410. /package/{dist/utils → utils}/ref-resolving/resolvedObject.d.ts +0 -0
  411. /package/{dist/utils → utils}/ref-resolving/resolvedObject.test.d.ts +0 -0
  412. /package/{dist/utils → utils}/securitySchemes.d.ts +0 -0
  413. /package/{dist/utils → utils}/string.d.ts +0 -0
  414. /package/{dist/utils → utils}/tests/chooseOption.d.ts +0 -0
  415. /package/{dist/web-components → web-components}/createElementClass.d.ts +0 -0
@@ -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 } = useIsCompact(layoutOptions);
26
- const { search, pathname } = location;
27
- const mocking = React.useContext(MockingContext);
28
- const query = new URLSearchParams(search);
29
-
30
- const nameChanged = nodeHasChanged?.({ nodeId: data.id, attr: 'name' });
31
- const versionChanged = nodeHasChanged?.({ nodeId: data.id, attr: 'version' });
32
- const descriptionChanged = nodeHasChanged?.({ nodeId: data.id, attr: 'description' });
33
-
34
- return (
35
- <Box ref={layoutRef} mb={10} className="HttpService">
36
- {data.name && !layoutOptions?.noHeading && (
37
- <Flex justifyContent="between" alignItems="center">
38
- <Box pos="relative">
39
- <Heading size={1} mb={4} fontWeight="semibold">
40
- {data.name}
41
- </Heading>
42
- <NodeAnnotation change={nameChanged} />
43
- </Box>
44
-
45
- {exportProps && !layoutOptions?.hideExport && <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'] });
@@ -1,82 +0,0 @@
1
- import { Box, NodeAnnotation, Panel, PanelProps, Text } from '@stoplight/mosaic';
2
- import { HttpSecurityScheme } from '@stoplight/types';
3
- import React from 'react';
4
-
5
- import { OptionalSecurityMessage } from '../../../constants';
6
- import { useOptionsCtx } from '../../../context/Options';
7
- import { getReadableSecurityNames, getSecurityGroupId, shouldAddKey } from '../../../utils/oas/security';
8
- import { PanelContent } from '../Security/PanelContent';
9
-
10
- interface SecuritySchemesProps {
11
- secSchemes: HttpSecurityScheme[][];
12
- defaultScheme?: string;
13
- defaultCollapsed?: boolean;
14
- parentId: string;
15
- }
16
-
17
- export const SecuritySchemes: React.FC<SecuritySchemesProps> = ({
18
- secSchemes,
19
- defaultScheme,
20
- defaultCollapsed = false,
21
- parentId,
22
- }) => {
23
- const includeOptional = secSchemes.length > 1 && secSchemes.some(schemes => schemes.length === 0);
24
- const { nodeHasChanged } = useOptionsCtx();
25
-
26
- return (
27
- <Panel rounded isCollapsible={defaultCollapsed} data-test="security-row">
28
- <Panel.Titlebar bg="canvas-300">
29
- <Box as="span" role="heading">
30
- Security
31
- </Box>
32
- </Panel.Titlebar>
33
- <Panel.Content p={0}>
34
- {includeOptional && <OptionalMessage />}
35
- {secSchemes
36
- .filter(scheme => scheme.length > 0) // Remove the None scheme from listed display
37
- .map((schemes, i) => {
38
- const secGroupId = getSecurityGroupId(parentId, i);
39
- return (
40
- <Box key={secGroupId} data-test="http-service-security-row">
41
- <NodeAnnotation change={nodeHasChanged?.({ nodeId: secGroupId })} />
42
- <SecurityScheme
43
- schemes={schemes}
44
- defaultIsOpen={defaultScheme ? schemes.length === 1 && schemes[0].key === defaultScheme : i === 0}
45
- isCollapsible={secSchemes.length > 1}
46
- showSchemeKey={shouldAddKey(schemes, secSchemes)}
47
- />
48
- </Box>
49
- );
50
- })}
51
- </Panel.Content>
52
- </Panel>
53
- );
54
- };
55
-
56
- const SecurityScheme: React.FC<
57
- {
58
- schemes: HttpSecurityScheme[];
59
- showSchemeKey?: boolean;
60
- } & Pick<PanelProps, 'defaultIsOpen' | 'isCollapsible'>
61
- > = ({ schemes, defaultIsOpen, isCollapsible, showSchemeKey }) => {
62
- return (
63
- <Panel defaultIsOpen={defaultIsOpen} isCollapsible={isCollapsible} pos="relative">
64
- <Panel.Titlebar>
65
- <Box as="span" role="heading">
66
- {getReadableSecurityNames(schemes, showSchemeKey)}
67
- </Box>
68
- </Panel.Titlebar>
69
- <Panel.Content>
70
- <PanelContent schemes={schemes} />
71
- </Panel.Content>
72
- </Panel>
73
- );
74
- };
75
-
76
- const OptionalMessage: React.FC = () => {
77
- return (
78
- <Box p={2} pl={6} border>
79
- <Text fontSize="base">{OptionalSecurityMessage}</Text>
80
- </Box>
81
- );
82
- };