@stoplight/elements-core 9.0.16-beta-0.1 → 9.0.16-beta-0.2

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 -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 -233
  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 -316
  130. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -136
  131. package/src/components/TableOfContents/TableOfContents.tsx +0 -530
  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 -172
  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 -1511
  170. package/src/components/TryIt/TryIt.stories.tsx +0 -77
  171. package/src/components/TryIt/TryIt.tsx +0 -384
  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 -18
  208. package/src/utils/exampleGeneration/exampleGeneration.ts +0 -110
  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 -107
  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,62 +0,0 @@
1
- import { Flex, Icon, Input, Text } from '@stoplight/mosaic';
2
- import * as React from 'react';
3
-
4
- import { useUniqueId } from '../../../hooks/useUniqueId';
5
- import { ParameterSpec } from './parameter-utils';
6
-
7
- interface FileUploadParameterEditorProps {
8
- parameter: ParameterSpec;
9
- value?: File;
10
- onChange: (parameterValue: File | undefined) => void;
11
- }
12
-
13
- export const FileUploadParameterEditor: React.FC<FileUploadParameterEditorProps> = ({ parameter, value, onChange }) => {
14
- const parameterDisplayName = `${parameter.name}${parameter.required ? '*' : ''}`;
15
- const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {
16
- const file = event.currentTarget.files?.[0];
17
- if (file === undefined) return;
18
-
19
- onChange(file);
20
- };
21
-
22
- const clearFile = () => {
23
- onChange(undefined);
24
- };
25
-
26
- const parameterInputId = useUniqueId(`id_${parameter.name}_`);
27
- const fileUploadInputId = `${parameterInputId}-file-input`;
28
-
29
- return (
30
- <>
31
- <label aria-hidden="true" data-testid="param-label" htmlFor={parameterInputId}>
32
- {parameterDisplayName}
33
- </label>
34
- <Text mx={3}>:</Text>
35
- <Flex flex={1} alignItems="center">
36
- <Input
37
- id={parameterInputId}
38
- style={{ paddingLeft: 15 }}
39
- aria-label={parameter.name}
40
- appearance="minimal"
41
- flex={1}
42
- placeholder="pick a file"
43
- type="text"
44
- required
45
- value={value?.name ?? ''}
46
- disabled
47
- />
48
- {value && (
49
- <button className="sl-mr-3 sl-p-2" aria-label="Remove file" onClick={clearFile}>
50
- <Icon icon="times" />
51
- </button>
52
- )}
53
- <div>
54
- <label role="button" htmlFor={fileUploadInputId}>
55
- Upload
56
- </label>
57
- <input onChange={handleFileChange} type="file" hidden id={fileUploadInputId} />
58
- </div>
59
- </Flex>
60
- </>
61
- );
62
- };
@@ -1,39 +0,0 @@
1
- import { Panel } from '@stoplight/mosaic';
2
- import * as React from 'react';
3
-
4
- import { ParameterSpec } from './parameter-utils';
5
- import { ParameterEditor } from './ParameterEditor';
6
-
7
- interface OperationParametersProps<P extends keyof any = string> {
8
- parameters: readonly ParameterSpec[];
9
- values: Record<P, string>;
10
- onChangeValue: (parameterName: P, newValue: string) => void;
11
- validate?: boolean;
12
- }
13
-
14
- export const OperationParameters: React.FC<OperationParametersProps> = ({
15
- parameters,
16
- values,
17
- onChangeValue,
18
- validate,
19
- }) => {
20
- return (
21
- <Panel defaultIsOpen>
22
- <Panel.Titlebar>Parameters</Panel.Titlebar>
23
- <Panel.Content className="sl-overflow-y-auto ParameterGrid OperationParametersContent">
24
- {parameters.map(parameter => (
25
- <ParameterEditor
26
- key={parameter.name}
27
- parameter={parameter}
28
- value={values[parameter.name]}
29
- onChange={value => onChangeValue(parameter.name, String(value))}
30
- validate={validate}
31
- isOptional={false}
32
- canChangeOptional={false}
33
- onChangeOptional={() => {}}
34
- />
35
- ))}
36
- </Panel.Content>
37
- </Panel>
38
- );
39
- };
@@ -1,135 +0,0 @@
1
- import { Flex, Input, Select, SelectProps, Text } from '@stoplight/mosaic';
2
- import * as React from 'react';
3
-
4
- import { useUniqueId } from '../../../hooks/useUniqueId';
5
- import {
6
- decodeSafeSelectorValue,
7
- exampleOptions,
8
- getPlaceholderForParameter,
9
- getPlaceholderForSelectedParameter,
10
- parameterOptions,
11
- ParameterSpec,
12
- selectExampleOption,
13
- } from './parameter-utils';
14
-
15
- interface ParameterProps {
16
- parameter: ParameterSpec;
17
- value?: string;
18
- onChange: SelectProps['onChange'];
19
- isOptional: boolean;
20
- onChangeOptional: (optional: boolean) => void;
21
- canChangeOptional: boolean;
22
- validate?: boolean;
23
- }
24
-
25
- export const ParameterEditor: React.FC<ParameterProps> = ({
26
- parameter,
27
- value,
28
- onChange,
29
- isOptional,
30
- onChangeOptional,
31
- canChangeOptional,
32
- validate,
33
- }) => {
34
- const inputId = useUniqueId(`id_${parameter.name}_`);
35
- const inputCheckId = useUniqueId(`id_${parameter.name}_checked`);
36
- const parameterValueOptions = parameterOptions(parameter);
37
- const examples = exampleOptions(parameter);
38
- // Find the encoded example value that matches the current (decoded) value
39
- const selectedExample = React.useMemo(() => {
40
- if (!examples) return selectExampleOption;
41
- const matchingExample = examples.find(e => {
42
- return String(decodeSafeSelectorValue(e.value as string | number)) === value;
43
- });
44
- return matchingExample ?? selectExampleOption;
45
- }, [examples, value]);
46
- const parameterDisplayName = `${parameter.name}${parameter.required ? '*' : ''}`;
47
-
48
- // Find the encoded value that matches the current (decoded) value
49
- const encodedValue = React.useMemo(() => {
50
- if (!value || !parameterValueOptions) return value || '';
51
- const matchingOption = parameterValueOptions.find(opt => {
52
- return String(decodeSafeSelectorValue(opt.value as string | number)) === value;
53
- });
54
- return matchingOption ? String(matchingOption.value) : value;
55
- }, [value, parameterValueOptions]);
56
-
57
- const requiredButEmpty = validate && parameter.required && !value;
58
-
59
- return (
60
- <>
61
- <Text as="label" aria-hidden="true" data-testid="param-label" htmlFor={inputId} fontSize="base">
62
- {parameterDisplayName}
63
- </Text>
64
- <Text mx={3}>:</Text>
65
- <div>
66
- {parameterValueOptions ? (
67
- <Select
68
- flex={1}
69
- aria-label={parameter.name}
70
- options={parameterValueOptions}
71
- value={encodedValue}
72
- onChange={val => onChange && onChange(String(decodeSafeSelectorValue(val as string | number)))}
73
- placeholder={getPlaceholderForSelectedParameter(parameter)}
74
- />
75
- ) : (
76
- <Flex flex={1}>
77
- <Input
78
- id={inputId}
79
- aria-label={parameter.name}
80
- appearance={requiredButEmpty ? 'default' : 'minimal'}
81
- flex={1}
82
- placeholder={getPlaceholderForParameter(parameter)}
83
- type={parameter.schema?.type === 'number' ? 'number' : 'text'}
84
- required
85
- intent={requiredButEmpty ? 'danger' : 'default'}
86
- value={value || ''}
87
- onChange={e => onChange && onChange(e.currentTarget.value)}
88
- />
89
- {examples && (
90
- <Select
91
- aria-label={`${parameter.name}-select`}
92
- flex={1}
93
- value={selectedExample.value}
94
- options={examples}
95
- onChange={val => onChange && onChange(String(decodeSafeSelectorValue(val as string | number)))}
96
- />
97
- )}
98
- </Flex>
99
- )}
100
- </div>
101
- {canChangeOptional && !parameter.required && (
102
- <>
103
- <div></div>
104
- <div></div>
105
- <div>
106
- <Flex flex={1}>
107
- <Input
108
- className="Checkbox"
109
- aria-label={`${parameter.name}-checkbox`}
110
- id={inputCheckId}
111
- flex={1}
112
- type="checkbox"
113
- intent="success"
114
- size="sm"
115
- checked={isOptional}
116
- onChange={e => onChangeOptional(!e.target.checked)}
117
- />
118
- <Text
119
- className="TextForCheckBox"
120
- flex={1}
121
- as="label"
122
- aria-hidden="true"
123
- data-testid="param-check"
124
- htmlFor={inputCheckId}
125
- fontSize="base"
126
- >
127
- Omit {parameterDisplayName}
128
- </Text>
129
- </Flex>
130
- </div>
131
- </>
132
- )}
133
- </>
134
- );
135
- };
@@ -1,60 +0,0 @@
1
- import { isRegularNode, SchemaTree } from '@stoplight/json-schema-tree';
2
- import { last } from 'lodash';
3
-
4
- import { isRequired } from '../parameter-utils';
5
-
6
- describe('isRequired', () => {
7
- it('happy path', () => {
8
- // Arrange
9
- const schema = {
10
- $schema: 'http://json-schema.org/draft-07/schema#',
11
- description: 'Authenticate for a refresh and access token',
12
- title: 'authenticate',
13
- allOf: [
14
- {
15
- type: 'object',
16
- properties: {
17
- username: { type: 'string' },
18
- password: { type: 'string' },
19
- },
20
- },
21
- {
22
- type: 'object',
23
- properties: {
24
- client_id: { type: 'string' },
25
- client_secret: { type: 'string' },
26
- },
27
- required: ['client_id', 'client_secret'],
28
- },
29
- ],
30
- };
31
- const tree = new SchemaTree(schema, { mergeAllOf: true, refResolver: null });
32
- tree.populate();
33
- const root = tree.root.children[0];
34
- if (!isRegularNode(root)) {
35
- fail('the schema should have been parsed so that this is a RegularNode');
36
- }
37
-
38
- if (!root.children) {
39
- fail('the combined properties in the allOf should be the children of this RegularNode');
40
- }
41
-
42
- const children = root.children ?? [];
43
-
44
- // Act
45
- const unknownChildren = children.filter(c => isRequired(c) === undefined);
46
- const requiredChildren = children
47
- .filter(c => isRequired(c) === true)
48
- .map(c => last(c.path))
49
- .sort();
50
- const optionalChildren = children
51
- .filter(c => isRequired(c) === false)
52
- .map(c => last(c.path))
53
- .sort();
54
-
55
- // Assert
56
- expect(unknownChildren).toStrictEqual([]);
57
- expect(requiredChildren).toStrictEqual(['client_id', 'client_secret']);
58
- expect(optionalChildren).toStrictEqual(['password', 'username']);
59
- });
60
- });
@@ -1,118 +0,0 @@
1
- import { JSONSchema7Definition } from 'json-schema';
2
-
3
- import { httpOperation } from '../../../__fixtures__/operations/put-todos';
4
- import {
5
- getPlaceholderForSelectedParameter,
6
- initialParameterValues,
7
- mapSchemaPropertiesToParameters,
8
- ParameterSpec,
9
- } from './parameter-utils';
10
-
11
- describe('Parameter Utils', () => {
12
- describe('initialParameterValues.name', () => {
13
- it('should fill initial parameters', () => {
14
- const allParameters = [
15
- ...(httpOperation.request?.path ?? []),
16
- ...(httpOperation.request?.query ?? []),
17
- ...(httpOperation.request?.headers ?? []),
18
- ];
19
-
20
- const parameters = initialParameterValues(allParameters);
21
-
22
- expect(parameters).toMatchObject({
23
- type: 'something',
24
- value: '1',
25
- 'account-id': 'account-id-default',
26
- 'message-id': 'example value',
27
- });
28
- });
29
- });
30
-
31
- describe('mapSchemaPropertiesToParameters.name', () => {
32
- it('should convert schema properties to parameters', () => {
33
- const properties: { [key: string]: JSONSchema7Definition } = {
34
- withExamples: { type: 'string', examples: ['blah'] },
35
- withEmptyExamples: { type: 'string', examples: [] },
36
- withNoExamples: { type: 'string' },
37
- requiredWithExamples: { type: 'string', examples: ['blah'] },
38
- requiredWithEmptyExamples: { type: 'string', examples: [] },
39
- requiredWithNoExamples: { type: 'string' },
40
- requiredBoolean: true,
41
- boolean: false,
42
- };
43
- const required = [
44
- 'requiredWithExamples',
45
- 'requiredWithEmptyExamples',
46
- 'requiredWithNoExamples',
47
- 'requiredBoolean',
48
- ];
49
- expect(mapSchemaPropertiesToParameters(properties, required)).toEqual([
50
- {
51
- name: 'withExamples',
52
- schema: { type: 'string', examples: ['blah'] },
53
- examples: [{ key: 'example', value: 'blah' }],
54
- },
55
- {
56
- name: 'withEmptyExamples',
57
- schema: { type: 'string', examples: [] },
58
- },
59
- {
60
- name: 'withNoExamples',
61
- schema: { type: 'string' },
62
- },
63
- {
64
- name: 'requiredWithExamples',
65
- schema: { type: 'string', examples: ['blah'] },
66
- examples: [{ key: 'example', value: 'blah' }],
67
- required: true,
68
- },
69
- {
70
- name: 'requiredWithEmptyExamples',
71
- schema: { type: 'string', examples: [] },
72
- required: true,
73
- },
74
- {
75
- name: 'requiredWithNoExamples',
76
- schema: { type: 'string' },
77
- required: true,
78
- },
79
- {
80
- name: 'requiredBoolean',
81
- required: true,
82
- },
83
- {
84
- name: 'boolean',
85
- },
86
- ]);
87
- });
88
- });
89
-
90
- describe('getPlaceholderForSelectedParameter', () => {
91
- let parameter: ParameterSpec;
92
-
93
- it('should return placeholder text with default value when parameter has a default value', () => {
94
- parameter = {
95
- name: 'name',
96
- schema: {
97
- default: 0,
98
- enum: [0, 1, 3],
99
- },
100
- };
101
-
102
- const result = getPlaceholderForSelectedParameter(parameter);
103
- expect(result).toEqual(`select an option (defaults to: ${parameter?.schema?.default})`);
104
- });
105
-
106
- it('should return undefined when parameter does not have a default value', () => {
107
- parameter = {
108
- name: 'name',
109
- schema: {
110
- enum: [0, 1, 3],
111
- },
112
- };
113
-
114
- const result = getPlaceholderForSelectedParameter(parameter);
115
- expect(result).toBeUndefined();
116
- });
117
- });
118
- });
@@ -1,245 +0,0 @@
1
- import { safeStringify } from '@stoplight/json';
2
- import { isRegularNode, RegularNode, SchemaNode } from '@stoplight/json-schema-tree';
3
- import type { IHttpParam, INodeExample, INodeExternalExample } from '@stoplight/types';
4
- import { JSONSchema7, JSONSchema7Definition, JSONSchema7Type } from 'json-schema';
5
- import { isObject, keyBy, last, map, mapValues } from 'lodash';
6
-
7
- export type ParameterSpec = Pick<IHttpParam, 'name' | 'schema' | 'required'> & {
8
- examples?: (Omit<INodeExample, 'id'> | Omit<INodeExternalExample, 'id'>)[];
9
- };
10
- const booleanOptions = [
11
- { label: 'Not Set', value: '' },
12
- { label: 'False', value: 'false' },
13
- { label: 'True', value: 'true' },
14
- ];
15
-
16
- /**
17
- * Encodes a value to be safe for use in CSS selectors (data-key attributes).
18
- * Special characters like quotes, brackets, etc. can break querySelector,
19
- * so we encode them using base64.
20
- */
21
- export function encodeSafeSelectorValue(value: string | number): string | number {
22
- // Numbers are safe to use as-is
23
- if (typeof value === 'number') {
24
- return value;
25
- }
26
- // Check if the value contains characters that would break CSS selectors
27
- // This includes quotes, brackets, backslashes, etc.
28
- const hasSpecialChars = /["'\[\]\\(){}]/.test(value);
29
- if (!hasSpecialChars) {
30
- return value;
31
- }
32
- // Encode to base64 to make it safe for CSS selectors
33
- // We prefix with 'b64:' so we can decode it later if needed
34
- try {
35
- return 'b64:' + btoa(value);
36
- } catch (e) {
37
- // If btoa fails (e.g., with unicode), fallback to encodeURIComponent
38
- return 'enc:' + encodeURIComponent(value);
39
- }
40
- }
41
-
42
- /**
43
- * Decodes a value that was encoded by encodeSafeSelectorValue
44
- */
45
- export function decodeSafeSelectorValue(value: string | number): string | number {
46
- if (typeof value === 'number') {
47
- return value;
48
- }
49
-
50
- if (value.startsWith('b64:')) {
51
- try {
52
- return atob(value.substring(4));
53
- } catch (e) {
54
- return value;
55
- }
56
- }
57
- if (value.startsWith('enc:')) {
58
- try {
59
- return decodeURIComponent(value.substring(4));
60
- } catch (e) {
61
- return value;
62
- }
63
- }
64
- return value;
65
- }
66
-
67
- function enumOptions(enumValues: JSONSchema7Type[], required?: boolean) {
68
- const options = map(enumValues, v => {
69
- // Handle objects and arrays by stringifying them
70
- const stringValue =
71
- typeof v === 'object' && v !== null ? safeStringify(v) ?? String(v) : typeof v === 'number' ? v : String(v);
72
- // Encode the value to be safe for CSS selectors, but keep the original label
73
- const safeValue = encodeSafeSelectorValue(stringValue);
74
- return { value: safeValue, label: String(stringValue) };
75
- });
76
- return required ? options : [{ label: 'Not Set', value: '' }, ...options];
77
- }
78
-
79
- export function parameterOptions(parameter: ParameterSpec) {
80
- return parameter.schema?.type === 'boolean'
81
- ? booleanOptions
82
- : parameter.schema?.enum !== undefined
83
- ? enumOptions(parameter.schema.enum, parameter.required)
84
- : null;
85
- }
86
-
87
- export const selectExampleOption = { value: '', label: 'Pick an example' };
88
-
89
- export function exampleOptions(parameter: ParameterSpec) {
90
- return parameter.examples?.length && parameter.examples.length > 1
91
- ? [
92
- selectExampleOption,
93
- ...parameter.examples.map(example => ({
94
- label: example.key,
95
- value: encodeSafeSelectorValue(exampleValue(example)),
96
- })),
97
- ]
98
- : null;
99
- }
100
-
101
- export function parameterSupportsFileUpload(parameter?: Pick<ParameterSpec, 'schema'>) {
102
- return (
103
- parameter &&
104
- parameter.schema &&
105
- parameter.schema?.type === 'string' &&
106
- (parameter.schema?.contentEncoding === 'base64' ||
107
- parameter.schema?.contentMediaType === 'application/octet-stream')
108
- );
109
- }
110
-
111
- function stringifyValue(value: unknown) {
112
- if (typeof value === 'object' && value !== null) {
113
- return safeStringify(value) ?? String(value);
114
- }
115
- return String(value);
116
- }
117
-
118
- function escapeQuotes(value: string) {
119
- return value.replace(/"/g, '\\"');
120
- }
121
-
122
- function exampleValue(example: Omit<INodeExample, 'id'> | Omit<INodeExternalExample, 'id'>) {
123
- const value = 'value' in example ? example.value : example.externalValue;
124
- return escapeQuotes(stringifyValue(value));
125
- }
126
-
127
- export function getPlaceholderForParameter(parameter: ParameterSpec) {
128
- const { value: parameterValue, isDefault } = getValueForParameter(parameter);
129
-
130
- if (parameterValue) return `${isDefault ? 'defaults to' : 'example'}: ${parameterValue}`;
131
-
132
- return String(parameter.schema?.type ?? '');
133
- }
134
-
135
- export function getPlaceholderForSelectedParameter(parameter: ParameterSpec) {
136
- const { value: parameterValue, isDefault } = getValueForParameter(parameter);
137
-
138
- if (isDefault) {
139
- return `select an option (defaults to: ${parameterValue})`;
140
- }
141
-
142
- return undefined;
143
- }
144
-
145
- function retrieveDefaultFromSchema(parameter: ParameterSpec) {
146
- const defaultValue = parameter.schema?.default;
147
- return isObject(defaultValue) ? safeStringify(defaultValue) : defaultValue;
148
- }
149
-
150
- const getValueForParameter = (parameter: ParameterSpec) => {
151
- const defaultValue = retrieveDefaultFromSchema(parameter);
152
- if (typeof defaultValue !== 'undefined') {
153
- return { value: stringifyValue(defaultValue), isDefault: true };
154
- }
155
-
156
- // If the parameter has enums, prioritize using the first enum value
157
- // over examples, as examples might not match the enum values
158
- const enums = parameter.schema?.enum ?? [];
159
- if (enums.length > 0) {
160
- return { value: stringifyValue(enums[0]) };
161
- }
162
-
163
- const examples = parameter.examples ?? [];
164
- if (examples.length > 0) {
165
- return { value: exampleValue(examples[0]) };
166
- }
167
-
168
- return { value: '' };
169
- };
170
-
171
- const getInitialValueForParameter = (parameter: ParameterSpec) => {
172
- const isRequired = !!parameter.required;
173
-
174
- if (!isRequired) return '';
175
-
176
- return getValueForParameter(parameter).value;
177
- };
178
-
179
- export const initialParameterValues: (params: readonly ParameterSpec[]) => Record<string, string> = params => {
180
- const paramsByName = keyBy(params, (param: ParameterSpec) => param.name);
181
- return mapValues(paramsByName, param => getInitialValueForParameter(param));
182
- };
183
-
184
- export function mapSchemaPropertiesToParameters(
185
- properties: { [key: string]: JSONSchema7Definition },
186
- required: string[] | undefined,
187
- ) {
188
- return Object.entries(properties).map(([name, schema]) => ({
189
- name,
190
- schema: typeof schema !== 'boolean' ? schema : undefined,
191
- examples:
192
- typeof schema !== 'boolean' && Array.isArray(schema.examples) && schema.examples[0]
193
- ? [{ key: 'example', value: schema.examples[0] }]
194
- : undefined,
195
- ...(required?.includes(name) && { required: true }),
196
- }));
197
- }
198
-
199
- export function toParameterSpec(jsonTreeNode: RegularNode): ParameterSpec {
200
- const isBoolean = jsonTreeNode.primaryType === 'boolean';
201
- // TODO: Why does ParameterSpec assume JSONSchema7 and ignore 6 and 4?
202
- const schema = !isBoolean ? (jsonTreeNode.fragment as JSONSchema7) : undefined;
203
- const examples =
204
- !isBoolean && jsonTreeNode.fragment.examples && jsonTreeNode.fragment.examples[0]
205
- ? [{ key: 'example', value: jsonTreeNode.fragment.examples[0] }]
206
- : undefined;
207
-
208
- // It's possible -- but very unlikely -- that the path is empty here.
209
- const lastJsonPathSegment = last(jsonTreeNode.path) ?? '<<UNKNOWN>>';
210
-
211
- return {
212
- name: lastJsonPathSegment,
213
- schema,
214
- examples,
215
- required: isRequired(jsonTreeNode),
216
- };
217
- }
218
-
219
- /**
220
- * @returns
221
- * - `true` iff this schema/property is among the properties required by `n`'s
222
- * parent
223
- * - `false` iff this schema/property is NOT among the properties required by
224
- * `n`'s parent
225
- * - `undefined` when required-ness is intedeterminate; e.g., there's no parent,
226
- * the parent isn't a `RegularNode`, this thing lacks a key/name, `n` isn't a
227
- * `RegularNode`
228
- */
229
- export function isRequired(n: SchemaNode): boolean | undefined {
230
- if (!isRegularNode(n)) {
231
- return undefined;
232
- }
233
-
234
- const name: string | undefined = last(n.path);
235
- if (name === undefined) {
236
- return undefined;
237
- }
238
-
239
- const parent = n.parent;
240
- if (parent === null || !isRegularNode(parent)) {
241
- return undefined;
242
- }
243
-
244
- return parent.required !== null && parent.required.includes(name);
245
- }