@stoplight/elements-core 9.0.12-beta-0.2 → 9.0.12-beta-0.4

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