@stoplight/elements-core 9.0.25-beta-0.2 → 9.0.25-beta-0.3

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