@upendra19/swagger-ui-custom 1.0.0

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 (468) hide show
  1. package/.agignore +1 -0
  2. package/.browserslistrc +29 -0
  3. package/.dockerignore +8 -0
  4. package/.editorconfig +10 -0
  5. package/.eslintrc.js +78 -0
  6. package/.lintstagedrc +4 -0
  7. package/.nvmrc +1 -0
  8. package/.prettierrc.yaml +5 -0
  9. package/.releaserc +26 -0
  10. package/AUTHORIZATION_CONFIG.md +350 -0
  11. package/Dockerfile +39 -0
  12. package/LICENSE +202 -0
  13. package/NOTICE +2 -0
  14. package/README.md +117 -0
  15. package/babel.config.js +140 -0
  16. package/composer.json +40 -0
  17. package/dist/favicon-16x16.png +0 -0
  18. package/dist/favicon-32x32.png +0 -0
  19. package/dist/index.css +16 -0
  20. package/dist/index.html +19 -0
  21. package/dist/log.bundle-sizes.swagger-ui.txt +114 -0
  22. package/dist/log.es-bundle-core-sizes.swagger-ui.txt +14 -0
  23. package/dist/log.es-bundle-sizes.swagger-ui.txt +114 -0
  24. package/dist/oauth2-redirect.html +6 -0
  25. package/dist/oauth2-redirect.js +1 -0
  26. package/dist/swagger-initializer.js +20 -0
  27. package/dist/swagger-ui-bundle.js +2 -0
  28. package/dist/swagger-ui-bundle.js.LICENSE.txt +106 -0
  29. package/dist/swagger-ui-bundle.js.map +1 -0
  30. package/dist/swagger-ui-es-bundle-core.js +3 -0
  31. package/dist/swagger-ui-es-bundle-core.js.LICENSE.txt +35 -0
  32. package/dist/swagger-ui-es-bundle-core.js.map +1 -0
  33. package/dist/swagger-ui-es-bundle.js +2 -0
  34. package/dist/swagger-ui-es-bundle.js.LICENSE.txt +106 -0
  35. package/dist/swagger-ui-es-bundle.js.map +1 -0
  36. package/dist/swagger-ui-standalone-preset.js +2 -0
  37. package/dist/swagger-ui-standalone-preset.js.LICENSE.txt +22 -0
  38. package/dist/swagger-ui-standalone-preset.js.map +1 -0
  39. package/dist/swagger-ui.css +3 -0
  40. package/dist/swagger-ui.css.map +1 -0
  41. package/dist/swagger-ui.js +2 -0
  42. package/dist/swagger-ui.js.map +1 -0
  43. package/docker/configurator/helpers.js +13 -0
  44. package/docker/configurator/index.js +52 -0
  45. package/docker/configurator/oauth.js +55 -0
  46. package/docker/configurator/translator.js +111 -0
  47. package/docker/configurator/variables.js +125 -0
  48. package/docker/cors.conf +14 -0
  49. package/docker/default.conf.template +43 -0
  50. package/docker/docker-entrypoint.d/40-swagger-ui.sh +52 -0
  51. package/docker/embedding.conf +5 -0
  52. package/package.json +224 -0
  53. package/snapcraft.yaml +28 -0
  54. package/src/core/assets/rolling-load.svg +1 -0
  55. package/src/core/components/app.jsx +30 -0
  56. package/src/core/components/auth/api-key-auth.jsx +93 -0
  57. package/src/core/components/auth/auth-item.jsx +60 -0
  58. package/src/core/components/auth/authorization-popup.jsx +59 -0
  59. package/src/core/components/auth/authorize-btn.jsx +30 -0
  60. package/src/core/components/auth/authorize-operation-btn.jsx +35 -0
  61. package/src/core/components/auth/auths.jsx +124 -0
  62. package/src/core/components/auth/basic-auth.jsx +110 -0
  63. package/src/core/components/auth/error.jsx +24 -0
  64. package/src/core/components/auth/oauth2.jsx +283 -0
  65. package/src/core/components/clear.jsx +25 -0
  66. package/src/core/components/contact.jsx +44 -0
  67. package/src/core/components/content-type.jsx +64 -0
  68. package/src/core/components/copy-to-clipboard-btn.jsx +29 -0
  69. package/src/core/components/curl.jsx +38 -0
  70. package/src/core/components/debug.jsx +50 -0
  71. package/src/core/components/deep-link.jsx +20 -0
  72. package/src/core/components/errors.jsx +132 -0
  73. package/src/core/components/example.jsx +43 -0
  74. package/src/core/components/examples-select-value-retainer.jsx +254 -0
  75. package/src/core/components/examples-select.jsx +139 -0
  76. package/src/core/components/execute.jsx +103 -0
  77. package/src/core/components/footer.jsx +9 -0
  78. package/src/core/components/headers.jsx +58 -0
  79. package/src/core/components/info.jsx +169 -0
  80. package/src/core/components/initialized-input.jsx +36 -0
  81. package/src/core/components/jump-to-path.jsx +9 -0
  82. package/src/core/components/layout-utils.jsx +265 -0
  83. package/src/core/components/layouts/base.jsx +156 -0
  84. package/src/core/components/layouts/xpane.jsx +73 -0
  85. package/src/core/components/license.jsx +40 -0
  86. package/src/core/components/live-response.jsx +133 -0
  87. package/src/core/components/online-validator-badge.jsx +120 -0
  88. package/src/core/components/openapi-version.jsx +15 -0
  89. package/src/core/components/operation-extension-row.jsx +17 -0
  90. package/src/core/components/operation-extensions.jsx +35 -0
  91. package/src/core/components/operation-summary-method.jsx +25 -0
  92. package/src/core/components/operation-summary-path.jsx +54 -0
  93. package/src/core/components/operation-summary.jsx +102 -0
  94. package/src/core/components/operation-tag.jsx +121 -0
  95. package/src/core/components/operation.jsx +259 -0
  96. package/src/core/components/operations.jsx +100 -0
  97. package/src/core/components/overview.jsx +119 -0
  98. package/src/core/components/param-body.jsx +156 -0
  99. package/src/core/components/parameter-extension.jsx +12 -0
  100. package/src/core/components/parameter-include-empty.jsx +59 -0
  101. package/src/core/components/parameter-row.jsx +438 -0
  102. package/src/core/components/parameters/index.js +1 -0
  103. package/src/core/components/parameters/parameters.jsx +287 -0
  104. package/src/core/components/property.jsx +17 -0
  105. package/src/core/components/providers/README.md +6 -0
  106. package/src/core/components/providers/markdown.jsx +72 -0
  107. package/src/core/components/response-body.jsx +170 -0
  108. package/src/core/components/response-extension.jsx +12 -0
  109. package/src/core/components/response.jsx +276 -0
  110. package/src/core/components/responses.jsx +170 -0
  111. package/src/core/components/svg-assets.jsx +48 -0
  112. package/src/core/components/system-wrapper.jsx +0 -0
  113. package/src/core/components/try-it-out-button.jsx +41 -0
  114. package/src/core/components/version-pragma-filter.jsx +54 -0
  115. package/src/core/components/version-stamp.jsx +12 -0
  116. package/src/core/containers/OperationContainer.jsx +267 -0
  117. package/src/core/containers/authorize-btn.jsx +31 -0
  118. package/src/core/containers/filter.jsx +44 -0
  119. package/src/core/containers/info.jsx +35 -0
  120. package/src/core/index.js +174 -0
  121. package/src/core/oauth2-authorize.js +137 -0
  122. package/src/core/plugins/auth/actions.js +286 -0
  123. package/src/core/plugins/auth/components/lock-auth-icon.jsx +27 -0
  124. package/src/core/plugins/auth/components/unlock-auth-icon.jsx +27 -0
  125. package/src/core/plugins/auth/configs-extensions/wrap-actions.js +19 -0
  126. package/src/core/plugins/auth/index.js +94 -0
  127. package/src/core/plugins/auth/reducers.js +77 -0
  128. package/src/core/plugins/auth/selectors.js +121 -0
  129. package/src/core/plugins/auth/spec-extensions/wrap-actions.js +10 -0
  130. package/src/core/plugins/auth/wrap-actions.js +66 -0
  131. package/src/core/plugins/configs/actions.js +58 -0
  132. package/src/core/plugins/configs/fn.js +12 -0
  133. package/src/core/plugins/configs/index.js +16 -0
  134. package/src/core/plugins/configs/reducers.js +20 -0
  135. package/src/core/plugins/configs/selectors.js +4 -0
  136. package/src/core/plugins/deep-linking/README.md +1 -0
  137. package/src/core/plugins/deep-linking/helpers.js +7 -0
  138. package/src/core/plugins/deep-linking/index.js +24 -0
  139. package/src/core/plugins/deep-linking/layout.js +209 -0
  140. package/src/core/plugins/deep-linking/operation-tag-wrapper.jsx +25 -0
  141. package/src/core/plugins/deep-linking/operation-wrapper.jsx +27 -0
  142. package/src/core/plugins/download-url/index.js +126 -0
  143. package/src/core/plugins/err/actions.js +60 -0
  144. package/src/core/plugins/err/error-transformers/README.md +31 -0
  145. package/src/core/plugins/err/error-transformers/hook.js +38 -0
  146. package/src/core/plugins/err/error-transformers/transformers/not-of-type.js +29 -0
  147. package/src/core/plugins/err/error-transformers/transformers/parameter-oneof.js +59 -0
  148. package/src/core/plugins/err/index.js +15 -0
  149. package/src/core/plugins/err/reducers.js +100 -0
  150. package/src/core/plugins/err/selectors.js +15 -0
  151. package/src/core/plugins/filter/index.js +9 -0
  152. package/src/core/plugins/filter/opsFilter.js +3 -0
  153. package/src/core/plugins/icons/components/arrow-down.jsx +28 -0
  154. package/src/core/plugins/icons/components/arrow-up.jsx +28 -0
  155. package/src/core/plugins/icons/components/arrow.jsx +28 -0
  156. package/src/core/plugins/icons/components/close.jsx +28 -0
  157. package/src/core/plugins/icons/components/copy.jsx +34 -0
  158. package/src/core/plugins/icons/components/lock.jsx +28 -0
  159. package/src/core/plugins/icons/components/unlock.jsx +28 -0
  160. package/src/core/plugins/icons/index.js +24 -0
  161. package/src/core/plugins/json-schema-2020-12/components/Accordion/Accordion.jsx +45 -0
  162. package/src/core/plugins/json-schema-2020-12/components/Accordion/_accordion.scss +33 -0
  163. package/src/core/plugins/json-schema-2020-12/components/ExpandDeepButton/ExpandDeepButton.jsx +31 -0
  164. package/src/core/plugins/json-schema-2020-12/components/ExpandDeepButton/_expand-deep-button.scss +10 -0
  165. package/src/core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx +227 -0
  166. package/src/core/plugins/json-schema-2020-12/components/JSONSchema/_json-schema.scss +34 -0
  167. package/src/core/plugins/json-schema-2020-12/components/JSONViewer/JSONViewer.jsx +153 -0
  168. package/src/core/plugins/json-schema-2020-12/components/JSONViewer/_json-viewer.scss +11 -0
  169. package/src/core/plugins/json-schema-2020-12/components/_all.scss +4 -0
  170. package/src/core/plugins/json-schema-2020-12/components/_mixins.scss +82 -0
  171. package/src/core/plugins/json-schema-2020-12/components/icons/ChevronRight.jsx +17 -0
  172. package/src/core/plugins/json-schema-2020-12/components/keywords/$anchor.jsx +27 -0
  173. package/src/core/plugins/json-schema-2020-12/components/keywords/$comment.jsx +27 -0
  174. package/src/core/plugins/json-schema-2020-12/components/keywords/$defs.jsx +93 -0
  175. package/src/core/plugins/json-schema-2020-12/components/keywords/$dynamicAnchor.jsx +27 -0
  176. package/src/core/plugins/json-schema-2020-12/components/keywords/$dynamicRef.jsx +27 -0
  177. package/src/core/plugins/json-schema-2020-12/components/keywords/$id.jsx +27 -0
  178. package/src/core/plugins/json-schema-2020-12/components/keywords/$ref.jsx +27 -0
  179. package/src/core/plugins/json-schema-2020-12/components/keywords/$schema.jsx +27 -0
  180. package/src/core/plugins/json-schema-2020-12/components/keywords/$vocabulary/$vocabulary.jsx +66 -0
  181. package/src/core/plugins/json-schema-2020-12/components/keywords/$vocabulary/_$vocabulary.scss +17 -0
  182. package/src/core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx +55 -0
  183. package/src/core/plugins/json-schema-2020-12/components/keywords/AllOf.jsx +105 -0
  184. package/src/core/plugins/json-schema-2020-12/components/keywords/AnyOf.jsx +105 -0
  185. package/src/core/plugins/json-schema-2020-12/components/keywords/Const/Const.jsx +28 -0
  186. package/src/core/plugins/json-schema-2020-12/components/keywords/Const/_const.scss +11 -0
  187. package/src/core/plugins/json-schema-2020-12/components/keywords/Constraint/Constraint.jsx +38 -0
  188. package/src/core/plugins/json-schema-2020-12/components/keywords/Constraint/_constraint.scss +16 -0
  189. package/src/core/plugins/json-schema-2020-12/components/keywords/Contains.jsx +35 -0
  190. package/src/core/plugins/json-schema-2020-12/components/keywords/ContentSchema.jsx +39 -0
  191. package/src/core/plugins/json-schema-2020-12/components/keywords/Default/Default.jsx +28 -0
  192. package/src/core/plugins/json-schema-2020-12/components/keywords/Default/_default.scss +11 -0
  193. package/src/core/plugins/json-schema-2020-12/components/keywords/DependentRequired/DependentRequired.jsx +37 -0
  194. package/src/core/plugins/json-schema-2020-12/components/keywords/DependentRequired/_dependent-required.scss +12 -0
  195. package/src/core/plugins/json-schema-2020-12/components/keywords/DependentSchemas.jsx +97 -0
  196. package/src/core/plugins/json-schema-2020-12/components/keywords/Deprecated.jsx +22 -0
  197. package/src/core/plugins/json-schema-2020-12/components/keywords/Description/Description.jsx +24 -0
  198. package/src/core/plugins/json-schema-2020-12/components/keywords/Description/_description.scss +9 -0
  199. package/src/core/plugins/json-schema-2020-12/components/keywords/Else.jsx +35 -0
  200. package/src/core/plugins/json-schema-2020-12/components/keywords/Enum/Enum.jsx +27 -0
  201. package/src/core/plugins/json-schema-2020-12/components/keywords/Enum/_enum.scss +11 -0
  202. package/src/core/plugins/json-schema-2020-12/components/keywords/Examples/Examples.jsx +30 -0
  203. package/src/core/plugins/json-schema-2020-12/components/keywords/Examples/_examples.scss +11 -0
  204. package/src/core/plugins/json-schema-2020-12/components/keywords/ExtensionKeywords/ExtensionKeywords.jsx +103 -0
  205. package/src/core/plugins/json-schema-2020-12/components/keywords/ExtensionKeywords/_extension-keywords.scss +11 -0
  206. package/src/core/plugins/json-schema-2020-12/components/keywords/If.jsx +35 -0
  207. package/src/core/plugins/json-schema-2020-12/components/keywords/Items.jsx +35 -0
  208. package/src/core/plugins/json-schema-2020-12/components/keywords/Not.jsx +35 -0
  209. package/src/core/plugins/json-schema-2020-12/components/keywords/OneOf.jsx +105 -0
  210. package/src/core/plugins/json-schema-2020-12/components/keywords/PatternProperties/PatternProperties.jsx +41 -0
  211. package/src/core/plugins/json-schema-2020-12/components/keywords/PatternProperties/_pattern-properties.scss +21 -0
  212. package/src/core/plugins/json-schema-2020-12/components/keywords/PrefixItems.jsx +105 -0
  213. package/src/core/plugins/json-schema-2020-12/components/keywords/Properties/Properties.jsx +61 -0
  214. package/src/core/plugins/json-schema-2020-12/components/keywords/Properties/_properties.scss +24 -0
  215. package/src/core/plugins/json-schema-2020-12/components/keywords/PropertyNames.jsx +38 -0
  216. package/src/core/plugins/json-schema-2020-12/components/keywords/ReadOnly.jsx +22 -0
  217. package/src/core/plugins/json-schema-2020-12/components/keywords/Then.jsx +35 -0
  218. package/src/core/plugins/json-schema-2020-12/components/keywords/Title/Title.jsx +24 -0
  219. package/src/core/plugins/json-schema-2020-12/components/keywords/Title/_title.scss +26 -0
  220. package/src/core/plugins/json-schema-2020-12/components/keywords/Type.jsx +27 -0
  221. package/src/core/plugins/json-schema-2020-12/components/keywords/UnevaluatedItems.jsx +39 -0
  222. package/src/core/plugins/json-schema-2020-12/components/keywords/UnevaluatedProperties.jsx +39 -0
  223. package/src/core/plugins/json-schema-2020-12/components/keywords/WriteOnly.jsx +22 -0
  224. package/src/core/plugins/json-schema-2020-12/components/keywords/_all.scss +43 -0
  225. package/src/core/plugins/json-schema-2020-12/context.js +14 -0
  226. package/src/core/plugins/json-schema-2020-12/enum.js +10 -0
  227. package/src/core/plugins/json-schema-2020-12/fn.js +527 -0
  228. package/src/core/plugins/json-schema-2020-12/hoc.jsx +296 -0
  229. package/src/core/plugins/json-schema-2020-12/hooks.js +144 -0
  230. package/src/core/plugins/json-schema-2020-12/index.js +153 -0
  231. package/src/core/plugins/json-schema-2020-12/prop-types.js +10 -0
  232. package/src/core/plugins/json-schema-2020-12-samples/fn/api/encoderAPI.js +20 -0
  233. package/src/core/plugins/json-schema-2020-12-samples/fn/api/formatAPI.js +20 -0
  234. package/src/core/plugins/json-schema-2020-12-samples/fn/api/mediaTypeAPI.js +27 -0
  235. package/src/core/plugins/json-schema-2020-12-samples/fn/api/optionAPI.js +17 -0
  236. package/src/core/plugins/json-schema-2020-12-samples/fn/class/EncoderRegistry.js +33 -0
  237. package/src/core/plugins/json-schema-2020-12-samples/fn/class/FormatRegistry.js +65 -0
  238. package/src/core/plugins/json-schema-2020-12-samples/fn/class/MediaTypeRegistry.js +27 -0
  239. package/src/core/plugins/json-schema-2020-12-samples/fn/class/OptionRegistry.js +16 -0
  240. package/src/core/plugins/json-schema-2020-12-samples/fn/class/Registry.js +24 -0
  241. package/src/core/plugins/json-schema-2020-12-samples/fn/core/constants.js +6 -0
  242. package/src/core/plugins/json-schema-2020-12-samples/fn/core/example.js +57 -0
  243. package/src/core/plugins/json-schema-2020-12-samples/fn/core/merge.js +83 -0
  244. package/src/core/plugins/json-schema-2020-12-samples/fn/core/predicates.js +16 -0
  245. package/src/core/plugins/json-schema-2020-12-samples/fn/core/random.js +46 -0
  246. package/src/core/plugins/json-schema-2020-12-samples/fn/core/type.js +156 -0
  247. package/src/core/plugins/json-schema-2020-12-samples/fn/core/utils.js +23 -0
  248. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/7bit.js +6 -0
  249. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/8bit.js +6 -0
  250. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base16.js +6 -0
  251. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base32.js +34 -0
  252. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base64.js +6 -0
  253. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/base64url.js +6 -0
  254. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/binary.js +6 -0
  255. package/src/core/plugins/json-schema-2020-12-samples/fn/encoders/quoted-printable.js +38 -0
  256. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/date-time.js +6 -0
  257. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/date.js +6 -0
  258. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/double.js +6 -0
  259. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/duration.js +6 -0
  260. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/email.js +6 -0
  261. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/float.js +6 -0
  262. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/hostname.js +6 -0
  263. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-email.js +6 -0
  264. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-hostname.js +6 -0
  265. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/int32.js +6 -0
  266. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/int64.js +6 -0
  267. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv4.js +6 -0
  268. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv6.js +6 -0
  269. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/iri-reference.js +6 -0
  270. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/iri.js +6 -0
  271. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/json-pointer.js +6 -0
  272. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/application.js +17 -0
  273. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/audio.js +10 -0
  274. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/image.js +10 -0
  275. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/text.js +17 -0
  276. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/video.js +10 -0
  277. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/password.js +6 -0
  278. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/regex.js +6 -0
  279. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/relative-json-pointer.js +6 -0
  280. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/time.js +6 -0
  281. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-reference.js +6 -0
  282. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-template.js +7 -0
  283. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/uri.js +6 -0
  284. package/src/core/plugins/json-schema-2020-12-samples/fn/generators/uuid.js +6 -0
  285. package/src/core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema.js +36 -0
  286. package/src/core/plugins/json-schema-2020-12-samples/fn/get-sample-schema.js +39 -0
  287. package/src/core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema.js +35 -0
  288. package/src/core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema.js +34 -0
  289. package/src/core/plugins/json-schema-2020-12-samples/fn/index.js +16 -0
  290. package/src/core/plugins/json-schema-2020-12-samples/fn/main.js +562 -0
  291. package/src/core/plugins/json-schema-2020-12-samples/fn/types/array.js +52 -0
  292. package/src/core/plugins/json-schema-2020-12-samples/fn/types/boolean.js +9 -0
  293. package/src/core/plugins/json-schema-2020-12-samples/fn/types/index.js +30 -0
  294. package/src/core/plugins/json-schema-2020-12-samples/fn/types/integer.js +43 -0
  295. package/src/core/plugins/json-schema-2020-12-samples/fn/types/null.js +9 -0
  296. package/src/core/plugins/json-schema-2020-12-samples/fn/types/number.js +65 -0
  297. package/src/core/plugins/json-schema-2020-12-samples/fn/types/object.js +9 -0
  298. package/src/core/plugins/json-schema-2020-12-samples/fn/types/string.js +80 -0
  299. package/src/core/plugins/json-schema-2020-12-samples/index.js +51 -0
  300. package/src/core/plugins/json-schema-5/components/array-model.jsx +80 -0
  301. package/src/core/plugins/json-schema-5/components/enum-model.jsx +19 -0
  302. package/src/core/plugins/json-schema-5/components/json-schema-components.jsx +441 -0
  303. package/src/core/plugins/json-schema-5/components/model-collapse.jsx +99 -0
  304. package/src/core/plugins/json-schema-5/components/model-example.jsx +160 -0
  305. package/src/core/plugins/json-schema-5/components/model-extensions.jsx +28 -0
  306. package/src/core/plugins/json-schema-5/components/model-wrapper.jsx +44 -0
  307. package/src/core/plugins/json-schema-5/components/model.jsx +136 -0
  308. package/src/core/plugins/json-schema-5/components/models.jsx +139 -0
  309. package/src/core/plugins/json-schema-5/components/object-model.jsx +340 -0
  310. package/src/core/plugins/json-schema-5/components/primitive-model.jsx +137 -0
  311. package/src/core/plugins/json-schema-5/components/schemes.jsx +53 -0
  312. package/src/core/plugins/json-schema-5/containers/schemes.jsx +30 -0
  313. package/src/core/plugins/json-schema-5/fn.js +51 -0
  314. package/src/core/plugins/json-schema-5/index.js +41 -0
  315. package/src/core/plugins/json-schema-5-samples/fn/get-json-sample-schema.js +32 -0
  316. package/src/core/plugins/json-schema-5-samples/fn/get-sample-schema.js +30 -0
  317. package/src/core/plugins/json-schema-5-samples/fn/get-xml-sample-schema.js +31 -0
  318. package/src/core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema.js +34 -0
  319. package/src/core/plugins/json-schema-5-samples/fn/index.js +653 -0
  320. package/src/core/plugins/json-schema-5-samples/index.js +56 -0
  321. package/src/core/plugins/layout/actions.js +39 -0
  322. package/src/core/plugins/layout/index.js +19 -0
  323. package/src/core/plugins/layout/reducers.js +32 -0
  324. package/src/core/plugins/layout/selectors.js +24 -0
  325. package/src/core/plugins/layout/spec-extensions/wrap-selector.js +22 -0
  326. package/src/core/plugins/logs/index.js +28 -0
  327. package/src/core/plugins/oas3/actions.js +99 -0
  328. package/src/core/plugins/oas3/auth-extensions/wrap-selectors.js +92 -0
  329. package/src/core/plugins/oas3/components/auth/http-auth.jsx +157 -0
  330. package/src/core/plugins/oas3/components/callbacks.jsx +51 -0
  331. package/src/core/plugins/oas3/components/index.js +19 -0
  332. package/src/core/plugins/oas3/components/operation-link.jsx +43 -0
  333. package/src/core/plugins/oas3/components/operation-servers.jsx +102 -0
  334. package/src/core/plugins/oas3/components/request-body-editor.jsx +103 -0
  335. package/src/core/plugins/oas3/components/request-body.jsx +338 -0
  336. package/src/core/plugins/oas3/components/servers-container.jsx +33 -0
  337. package/src/core/plugins/oas3/components/servers.jsx +153 -0
  338. package/src/core/plugins/oas3/fn.js +35 -0
  339. package/src/core/plugins/oas3/helpers.jsx +48 -0
  340. package/src/core/plugins/oas3/index.js +39 -0
  341. package/src/core/plugins/oas3/reducers.js +111 -0
  342. package/src/core/plugins/oas3/selectors.js +308 -0
  343. package/src/core/plugins/oas3/spec-extensions/selectors.js +100 -0
  344. package/src/core/plugins/oas3/spec-extensions/wrap-selectors.js +71 -0
  345. package/src/core/plugins/oas3/wrap-components/auth/auth-item.jsx +25 -0
  346. package/src/core/plugins/oas3/wrap-components/index.js +15 -0
  347. package/src/core/plugins/oas3/wrap-components/json-schema-string.jsx +27 -0
  348. package/src/core/plugins/oas3/wrap-components/markdown.jsx +45 -0
  349. package/src/core/plugins/oas3/wrap-components/model.jsx +40 -0
  350. package/src/core/plugins/oas3/wrap-components/online-validator-badge.js +5 -0
  351. package/src/core/plugins/oas3/wrap-components/openapi-version.jsx +7 -0
  352. package/src/core/plugins/oas31/after-load.js +72 -0
  353. package/src/core/plugins/oas31/auth-extensions/wrap-selectors.js +28 -0
  354. package/src/core/plugins/oas31/components/_all.scss +2 -0
  355. package/src/core/plugins/oas31/components/auth/auths.jsx +186 -0
  356. package/src/core/plugins/oas31/components/auth/mutual-tls-auth.jsx +32 -0
  357. package/src/core/plugins/oas31/components/contact.jsx +43 -0
  358. package/src/core/plugins/oas31/components/info.jsx +99 -0
  359. package/src/core/plugins/oas31/components/json-schema-dialect.jsx +60 -0
  360. package/src/core/plugins/oas31/components/license.jsx +38 -0
  361. package/src/core/plugins/oas31/components/model/_model.scss +23 -0
  362. package/src/core/plugins/oas31/components/model/model.jsx +54 -0
  363. package/src/core/plugins/oas31/components/models/_models.scss +11 -0
  364. package/src/core/plugins/oas31/components/models/models.jsx +141 -0
  365. package/src/core/plugins/oas31/components/version-pragma-filter.jsx +73 -0
  366. package/src/core/plugins/oas31/components/webhooks.jsx +49 -0
  367. package/src/core/plugins/oas31/fn.js +124 -0
  368. package/src/core/plugins/oas31/index.js +166 -0
  369. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Description.jsx +27 -0
  370. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx +118 -0
  371. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/DiscriminatorMapping.jsx +32 -0
  372. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Example.jsx +28 -0
  373. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/ExternalDocs.jsx +143 -0
  374. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/OpenAPIExtensions.jsx +33 -0
  375. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Properties.jsx +60 -0
  376. package/src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Xml.jsx +162 -0
  377. package/src/core/plugins/oas31/json-schema-2020-12-extensions/fn.js +57 -0
  378. package/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Description.jsx +9 -0
  379. package/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Examples.jsx +31 -0
  380. package/src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Properties.jsx +9 -0
  381. package/src/core/plugins/oas31/oas3-extensions/fn.js +46 -0
  382. package/src/core/plugins/oas31/selectors.js +26 -0
  383. package/src/core/plugins/oas31/spec-extensions/selectors.js +198 -0
  384. package/src/core/plugins/oas31/spec-extensions/wrap-selectors.js +18 -0
  385. package/src/core/plugins/oas31/wrap-components/auth/auth-item.jsx +22 -0
  386. package/src/core/plugins/oas31/wrap-components/auths.jsx +17 -0
  387. package/src/core/plugins/oas31/wrap-components/contact.jsx +15 -0
  388. package/src/core/plugins/oas31/wrap-components/info.jsx +15 -0
  389. package/src/core/plugins/oas31/wrap-components/license.jsx +15 -0
  390. package/src/core/plugins/oas31/wrap-components/model.jsx +44 -0
  391. package/src/core/plugins/oas31/wrap-components/models.jsx +47 -0
  392. package/src/core/plugins/oas31/wrap-components/version-pragma-filter.jsx +16 -0
  393. package/src/core/plugins/on-complete/index.js +28 -0
  394. package/src/core/plugins/request-snippets/fn.js +169 -0
  395. package/src/core/plugins/request-snippets/index.js +21 -0
  396. package/src/core/plugins/request-snippets/request-snippets.jsx +163 -0
  397. package/src/core/plugins/request-snippets/selectors.js +45 -0
  398. package/src/core/plugins/safe-render/components/error-boundary.jsx +52 -0
  399. package/src/core/plugins/safe-render/components/fallback.jsx +13 -0
  400. package/src/core/plugins/safe-render/fn.jsx +32 -0
  401. package/src/core/plugins/safe-render/index.js +42 -0
  402. package/src/core/plugins/spec/actions.js +531 -0
  403. package/src/core/plugins/spec/index.js +20 -0
  404. package/src/core/plugins/spec/reducers.js +176 -0
  405. package/src/core/plugins/spec/selectors.js +575 -0
  406. package/src/core/plugins/spec/wrap-actions.js +39 -0
  407. package/src/core/plugins/swagger-client/configs-wrap-actions.js +6 -0
  408. package/src/core/plugins/swagger-client/index.js +54 -0
  409. package/src/core/plugins/syntax-highlighting/after-load.js +25 -0
  410. package/src/core/plugins/syntax-highlighting/components/HighlightCode.jsx +107 -0
  411. package/src/core/plugins/syntax-highlighting/components/PlainTextViewer.jsx +17 -0
  412. package/src/core/plugins/syntax-highlighting/components/SyntaxHighlighter.jsx +42 -0
  413. package/src/core/plugins/syntax-highlighting/index.js +34 -0
  414. package/src/core/plugins/syntax-highlighting/root-injects.js +22 -0
  415. package/src/core/plugins/syntax-highlighting/wrap-components/SyntaxHighlighter.jsx +31 -0
  416. package/src/core/plugins/util/index.js +11 -0
  417. package/src/core/plugins/versions/after-load.js +19 -0
  418. package/src/core/plugins/versions/index.js +10 -0
  419. package/src/core/plugins/view/fn.js +1 -0
  420. package/src/core/plugins/view/index.js +34 -0
  421. package/src/core/plugins/view/root-injects.jsx +118 -0
  422. package/src/core/plugins/view-legacy/index.js +25 -0
  423. package/src/core/plugins/view-legacy/root-injects.jsx +12 -0
  424. package/src/core/presets/apis/index.js +18 -0
  425. package/src/core/presets/base/index.js +55 -0
  426. package/src/core/presets/base/plugins/core-components/index.js +130 -0
  427. package/src/core/presets/base/plugins/form-components/index.js +10 -0
  428. package/src/core/system.js +511 -0
  429. package/src/core/utils/create-html-ready-id.js +10 -0
  430. package/src/core/utils/get-parameter-schema.js +94 -0
  431. package/src/core/utils/index.js +847 -0
  432. package/src/core/utils/jsonParse.js +15 -0
  433. package/src/core/utils/memoizeN.js +48 -0
  434. package/src/core/utils/url.js +79 -0
  435. package/src/core/window.js +30 -0
  436. package/src/index.js +3 -0
  437. package/src/standalone/plugins/stadalone-layout/components/StandaloneLayout.jsx +40 -0
  438. package/src/standalone/plugins/stadalone-layout/index.js +12 -0
  439. package/src/standalone/plugins/top-bar/assets/lightbulb-off.svg +1 -0
  440. package/src/standalone/plugins/top-bar/assets/lightbulb.svg +1 -0
  441. package/src/standalone/plugins/top-bar/assets/logo_small.svg +60 -0
  442. package/src/standalone/plugins/top-bar/components/DarkModeToggle.jsx +47 -0
  443. package/src/standalone/plugins/top-bar/components/Logo.jsx +9 -0
  444. package/src/standalone/plugins/top-bar/components/TopBar.jsx +183 -0
  445. package/src/standalone/plugins/top-bar/index.js +12 -0
  446. package/src/standalone/presets/standalone/index.js +19 -0
  447. package/src/style/_authorize.scss +96 -0
  448. package/src/style/_buttons.scss +199 -0
  449. package/src/style/_dark-mode.scss +664 -0
  450. package/src/style/_errors.scss +72 -0
  451. package/src/style/_form.scss +214 -0
  452. package/src/style/_information.scss +99 -0
  453. package/src/style/_layout.scss +941 -0
  454. package/src/style/_markdown.scss +34 -0
  455. package/src/style/_mixins.scss +159 -0
  456. package/src/style/_modal.scss +95 -0
  457. package/src/style/_models.scss +330 -0
  458. package/src/style/_servers.scss +66 -0
  459. package/src/style/_split-pane-mode.scss +3 -0
  460. package/src/style/_table.scss +191 -0
  461. package/src/style/_topbar.scss +126 -0
  462. package/src/style/_type.scss +21 -0
  463. package/src/style/_variables.scss +230 -0
  464. package/src/style/main.scss +28 -0
  465. package/stylelint.config.js +11 -0
  466. package/swagger-ui-dist-package/absolute-path.js +14 -0
  467. package/swagger-ui-dist-package/index.js +17 -0
  468. package/swagger-ui-dist-package/package.json +20 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { fromJS } from "immutable"
5
+
6
+ /**
7
+ * `authorize` and `logout` wrapped actions provide capacity
8
+ * to persist cookie based apiKey in document.cookie.
9
+ *
10
+ * `persistAuthorization` SwaggerUI options needs to set to `true`
11
+ * for document.cookie persistence to work.
12
+ */
13
+ export const authorize = (oriAction, system) => (payload) => {
14
+ oriAction(payload)
15
+
16
+ const configs = system.getConfigs()
17
+
18
+ if (!configs.persistAuthorization) return
19
+
20
+ // create cookie
21
+ try {
22
+ const [{ schema: payloadSchema, value }] = Object.values(payload)
23
+ const schema = fromJS(payloadSchema)
24
+ const isApiKeyAuth = schema.get("type") === "apiKey"
25
+ const isInCookie = schema.get("in") === "cookie"
26
+ const isApiKeyInCookie = isApiKeyAuth && isInCookie
27
+
28
+ if (isApiKeyInCookie) {
29
+ document.cookie = `${schema.get("name")}=${value}; SameSite=None; Secure`
30
+ }
31
+ } catch (error) {
32
+ console.error(
33
+ "Error persisting cookie based apiKey in document.cookie.",
34
+ error
35
+ )
36
+ }
37
+ }
38
+
39
+ export const logout = (oriAction, system) => (payload) => {
40
+ const configs = system.getConfigs()
41
+ const authorized = system.authSelectors.authorized()
42
+
43
+ // deleting cookie
44
+ try {
45
+ if (configs.persistAuthorization && Array.isArray(payload)) {
46
+ payload.forEach((authorizedName) => {
47
+ const auth = authorized.get(authorizedName, {})
48
+ const isApiKeyAuth = auth.getIn(["schema", "type"]) === "apiKey"
49
+ const isInCookie = auth.getIn(["schema", "in"]) === "cookie"
50
+ const isApiKeyInCookie = isApiKeyAuth && isInCookie
51
+
52
+ if (isApiKeyInCookie) {
53
+ const cookieName = auth.getIn(["schema", "name"])
54
+ document.cookie = `${cookieName}=; Max-Age=-99999999`
55
+ }
56
+ })
57
+ }
58
+ } catch (error) {
59
+ console.error(
60
+ "Error deleting cookie based apiKey from document.cookie.",
61
+ error
62
+ )
63
+ }
64
+
65
+ oriAction(payload)
66
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { parseConfig } from "./fn"
5
+
6
+ export const UPDATE_CONFIGS = "configs_update"
7
+ export const TOGGLE_CONFIGS = "configs_toggle"
8
+
9
+ // Update the configs, with a merge ( not deep )
10
+ export function update(configName, configValue) {
11
+ return {
12
+ type: UPDATE_CONFIGS,
13
+ payload: {
14
+ [configName]: configValue,
15
+ },
16
+ }
17
+ }
18
+
19
+ // Toggle's the config, by name
20
+ export function toggle(configName) {
21
+ return {
22
+ type: TOGGLE_CONFIGS,
23
+ payload: configName,
24
+ }
25
+ }
26
+
27
+ // Hook
28
+ export const loaded = () => () => {
29
+ // noop
30
+ }
31
+
32
+ export const downloadConfig = (req) => (system) => {
33
+ const {
34
+ fn: { fetch },
35
+ } = system
36
+
37
+ return fetch(req)
38
+ }
39
+
40
+ export const getConfigByUrl = (req, cb) => (system) => {
41
+ const { specActions, configsActions } = system
42
+
43
+ if (req) {
44
+ return configsActions.downloadConfig(req).then(next, next)
45
+ }
46
+
47
+ function next(res) {
48
+ if (res instanceof Error || res.status >= 400) {
49
+ specActions.updateLoadingStatus("failedConfig")
50
+ specActions.updateLoadingStatus("failedConfig")
51
+ specActions.updateUrl("")
52
+ console.error(res.statusText + " " + req.url)
53
+ cb(null)
54
+ } else {
55
+ cb(parseConfig(res.text, system))
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,12 @@
1
+ import YAML from "js-yaml"
2
+
3
+ export const parseConfig = (yaml, system) => {
4
+ try {
5
+ return YAML.load(yaml)
6
+ } catch(e) {
7
+ if (system) {
8
+ system.errActions.newThrownErr( new Error(e) )
9
+ }
10
+ return {}
11
+ }
12
+ }
@@ -0,0 +1,16 @@
1
+ import * as actions from "./actions"
2
+ import * as selectors from "./selectors"
3
+ import reducers from "./reducers"
4
+
5
+ export default function configsPlugin() {
6
+
7
+ return {
8
+ statePlugins: {
9
+ configs: {
10
+ reducers,
11
+ actions,
12
+ selectors,
13
+ }
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,20 @@
1
+ import { fromJS } from "immutable"
2
+
3
+ import {
4
+ UPDATE_CONFIGS,
5
+ TOGGLE_CONFIGS,
6
+ } from "./actions"
7
+
8
+ export default {
9
+
10
+ [UPDATE_CONFIGS]: (state, action) => {
11
+ return state.merge(fromJS(action.payload))
12
+ },
13
+
14
+ [TOGGLE_CONFIGS]: (state, action) => {
15
+ const configName = action.payload
16
+ const oriVal = state.get(configName)
17
+ return state.set(configName, !oriVal)
18
+ },
19
+
20
+ }
@@ -0,0 +1,4 @@
1
+ // Just get the config value ( it can possibly be an immutable object)
2
+ export const get = (state, path) => {
3
+ return state.getIn(Array.isArray(path) ? path : [path])
4
+ }
@@ -0,0 +1 @@
1
+ See `docs/deep-linking.md`.
@@ -0,0 +1,7 @@
1
+ export const setHash = (value) => {
2
+ if(value) {
3
+ return history.pushState(null, null, `#${value}`)
4
+ } else {
5
+ return window.location.hash = ""
6
+ }
7
+ }
@@ -0,0 +1,24 @@
1
+ import layout from "./layout"
2
+ import OperationWrapper from "./operation-wrapper"
3
+ import OperationTagWrapper from "./operation-tag-wrapper"
4
+
5
+ export default function() {
6
+ return [layout, {
7
+ statePlugins: {
8
+ configs: {
9
+ wrapActions: {
10
+ loaded: (ori, system) => (...args) => {
11
+ ori(...args)
12
+ // location.hash was an UTF-16 String, here is required UTF-8
13
+ const hash = decodeURIComponent(window.location.hash)
14
+ system.layoutActions.parseDeepLinkHash(hash)
15
+ }
16
+ }
17
+ }
18
+ },
19
+ wrapComponents: {
20
+ operation: OperationWrapper,
21
+ OperationTag: OperationTagWrapper,
22
+ },
23
+ }]
24
+ }
@@ -0,0 +1,209 @@
1
+ import { setHash } from "./helpers"
2
+ import zenscroll from "zenscroll"
3
+ import { createDeepLinkPath } from "core/utils"
4
+ import Im, { fromJS } from "immutable"
5
+
6
+ const SCROLL_TO = "layout_scroll_to"
7
+ const CLEAR_SCROLL_TO = "layout_clear_scroll"
8
+
9
+ export const show = (ori, { getConfigs, layoutSelectors }) => (...args) => {
10
+ ori(...args)
11
+
12
+ if(!getConfigs().deepLinking) {
13
+ return
14
+ }
15
+
16
+ try {
17
+ let [tokenArray, shown] = args
18
+ //Coerce in to array
19
+ tokenArray = Array.isArray(tokenArray) ? tokenArray : [tokenArray]
20
+ // Convert into something we can put in the URL hash
21
+ // Or return empty, if we cannot
22
+ const urlHashArray = layoutSelectors.urlHashArrayFromIsShownKey(tokenArray) // Will convert
23
+
24
+ // No hash friendly list?
25
+ if(!urlHashArray.length)
26
+ return
27
+
28
+ const [type, assetName] = urlHashArray
29
+
30
+ if (!shown) {
31
+ return setHash("/")
32
+ }
33
+
34
+ if (urlHashArray.length === 2) {
35
+ setHash(createDeepLinkPath(`/${encodeURIComponent(type)}/${encodeURIComponent(assetName)}`))
36
+ } else if (urlHashArray.length === 1) {
37
+ setHash(createDeepLinkPath(`/${encodeURIComponent(type)}`))
38
+ }
39
+
40
+ } catch (e) {
41
+ // This functionality is not mission critical, so if something goes wrong
42
+ // we'll just move on
43
+ console.error(e) // eslint-disable-line no-console
44
+ }
45
+ }
46
+
47
+ export const scrollTo = (path) => {
48
+ return {
49
+ type: SCROLL_TO,
50
+ payload: Array.isArray(path) ? path : [path]
51
+ }
52
+ }
53
+
54
+ export const parseDeepLinkHash = (rawHash) => ({ layoutActions, layoutSelectors, getConfigs }) => {
55
+
56
+ if(!getConfigs().deepLinking) {
57
+ return
58
+ }
59
+
60
+ if(rawHash) {
61
+ let hash = rawHash.slice(1) // # is first character
62
+
63
+
64
+ if(hash[0] === "!") {
65
+ // Parse UI 2.x shebangs
66
+ hash = hash.slice(1)
67
+ }
68
+
69
+ if(hash[0] === "/") {
70
+ // "/pet/addPet" => "pet/addPet"
71
+ // makes the split result cleaner
72
+ // also handles forgotten leading slash
73
+ hash = hash.slice(1)
74
+ }
75
+
76
+ const hashArray = hash.split("/").map(val => (val || ""))
77
+
78
+ const isShownKey = layoutSelectors.isShownKeyFromUrlHashArray(hashArray)
79
+
80
+ const [type, tagId = "", maybeOperationId = ""] = isShownKey
81
+
82
+ if(type === "operations") {
83
+ // we're going to show an operation, so we need to expand the tag as well
84
+ const tagIsShownKey = layoutSelectors.isShownKeyFromUrlHashArray([tagId])
85
+
86
+ // If an `_` is present, trigger the legacy escaping behavior to be safe
87
+ // TODO: remove this in v4.0, it is deprecated
88
+ if(tagId.indexOf("_") > -1) {
89
+ console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.")
90
+ layoutActions.show(tagIsShownKey.map(val => val.replace(/_/g, " ")), true)
91
+ }
92
+
93
+ layoutActions.show(tagIsShownKey, true)
94
+ }
95
+
96
+ // If an `_` is present, trigger the legacy escaping behavior to be safe
97
+ // TODO: remove this in v4.0, it is deprecated
98
+ if (tagId.indexOf("_") > -1 || maybeOperationId.indexOf("_") > -1) {
99
+ console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.")
100
+ layoutActions.show(isShownKey.map(val => val.replace(/_/g, " ")), true)
101
+ }
102
+
103
+ layoutActions.show(isShownKey, true)
104
+
105
+ // Scroll to the newly expanded entity
106
+ layoutActions.scrollTo(isShownKey)
107
+ }
108
+ }
109
+
110
+ export const readyToScroll = (isShownKey, ref) => (system) => {
111
+ const scrollToKey = system.layoutSelectors.getScrollToKey()
112
+
113
+ if(Im.is(scrollToKey, fromJS(isShownKey))) {
114
+ system.layoutActions.scrollToElement(ref)
115
+ system.layoutActions.clearScrollTo()
116
+ }
117
+ }
118
+
119
+ // Scroll to "ref" (dom node) with the scrollbar on "container" or the nearest parent
120
+ export const scrollToElement = (ref, container) => (system) => {
121
+ try {
122
+ container = container || system.fn.getScrollParent(ref)
123
+ let myScroller = zenscroll.createScroller(container)
124
+ myScroller.to(ref)
125
+ } catch(e) {
126
+ console.error(e) // eslint-disable-line no-console
127
+ }
128
+ }
129
+
130
+ export const clearScrollTo = () => {
131
+ return {
132
+ type: CLEAR_SCROLL_TO,
133
+ }
134
+ }
135
+
136
+ // From: https://stackoverflow.com/a/42543908/3933724
137
+ // Modified to return html instead of body element as last resort
138
+ function getScrollParent(element, includeHidden) {
139
+ const LAST_RESORT = document.documentElement
140
+ let style = getComputedStyle(element)
141
+ const excludeStaticParent = style.position === "absolute"
142
+ const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/
143
+
144
+ if (style.position === "fixed")
145
+ return LAST_RESORT
146
+ for (let parent = element; (parent = parent.parentElement);) {
147
+ style = getComputedStyle(parent)
148
+ if (excludeStaticParent && style.position === "static") {
149
+ continue
150
+ }
151
+ if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX))
152
+ return parent
153
+ }
154
+
155
+ return LAST_RESORT
156
+ }
157
+
158
+ export default {
159
+ fn: {
160
+ getScrollParent,
161
+ },
162
+ statePlugins: {
163
+ layout: {
164
+ actions: {
165
+ scrollToElement,
166
+ scrollTo,
167
+ clearScrollTo,
168
+ readyToScroll,
169
+ parseDeepLinkHash
170
+ },
171
+ selectors: {
172
+ getScrollToKey(state) {
173
+ return state.get("scrollToKey")
174
+ },
175
+ isShownKeyFromUrlHashArray(state, urlHashArray) {
176
+ const [tag, operationId] = urlHashArray
177
+ // We only put operations in the URL
178
+ if(operationId) {
179
+ return ["operations", tag, operationId]
180
+ } else if (tag) {
181
+ return ["operations-tag", tag]
182
+ }
183
+ return []
184
+ },
185
+ urlHashArrayFromIsShownKey(state, isShownKey) {
186
+ let [type, tag, operationId] = isShownKey
187
+ // We only put operations in the URL
188
+ if(type == "operations") {
189
+ return [tag, operationId]
190
+ } else if (type == "operations-tag") {
191
+ return [tag]
192
+ }
193
+ return []
194
+ },
195
+ },
196
+ reducers: {
197
+ [SCROLL_TO](state, action) {
198
+ return state.set("scrollToKey", Im.fromJS(action.payload))
199
+ },
200
+ [CLEAR_SCROLL_TO](state) {
201
+ return state.delete("scrollToKey")
202
+ }
203
+ },
204
+ wrapActions: {
205
+ show
206
+ }
207
+ }
208
+ }
209
+ }
@@ -0,0 +1,25 @@
1
+ import React from "react"
2
+ import { PropTypes } from "prop-types"
3
+
4
+ const Wrapper = (Ori, system) => class OperationTagWrapper extends React.Component {
5
+
6
+ static propTypes = {
7
+ tag: PropTypes.object.isRequired,
8
+ }
9
+
10
+ onLoad = (ref) => {
11
+ const { tag } = this.props
12
+ const isShownKey = ["operations-tag", tag]
13
+ system.layoutActions.readyToScroll(isShownKey, ref)
14
+ }
15
+
16
+ render() {
17
+ return (
18
+ <span ref={this.onLoad}>
19
+ <Ori {...this.props} />
20
+ </span>
21
+ )
22
+ }
23
+ }
24
+
25
+ export default Wrapper
@@ -0,0 +1,27 @@
1
+ import React from "react"
2
+ import ImPropTypes from "react-immutable-proptypes"
3
+
4
+ const Wrapper = (Ori, system) => class OperationWrapper extends React.Component {
5
+
6
+ static propTypes = {
7
+ operation: ImPropTypes.map.isRequired,
8
+ }
9
+
10
+ onLoad = (ref) => {
11
+ const { operation } = this.props
12
+ const { tag, operationId } = operation.toObject()
13
+ let { isShownKey } = operation.toObject()
14
+ isShownKey = isShownKey || ["operations", tag, operationId]
15
+ system.layoutActions.readyToScroll(isShownKey, ref)
16
+ }
17
+
18
+ render() {
19
+ return (
20
+ <span ref={this.onLoad}>
21
+ <Ori {...this.props} />
22
+ </span>
23
+ )
24
+ }
25
+ }
26
+
27
+ export default Wrapper
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { createSelector } from "reselect"
5
+ import { Map } from "immutable"
6
+ import win from "core/window"
7
+
8
+ export default function downloadUrlPlugin(toolbox) {
9
+ let { fn } = toolbox
10
+
11
+ const actions = {
12
+ download:
13
+ (url) =>
14
+ ({ errActions, specSelectors, specActions, getConfigs }) => {
15
+ let { fetch } = fn
16
+ const config = getConfigs()
17
+ url = url || specSelectors.url()
18
+ specActions.updateLoadingStatus("loading")
19
+ errActions.clear({ source: "fetch" })
20
+ fetch({
21
+ url,
22
+ loadSpec: true,
23
+ requestInterceptor: config.requestInterceptor || ((a) => a),
24
+ responseInterceptor: config.responseInterceptor || ((a) => a),
25
+ credentials: "same-origin",
26
+ headers: {
27
+ Accept: "application/json,*/*",
28
+ },
29
+ }).then(next, next)
30
+
31
+ function next(res) {
32
+ if (res instanceof Error || res.status >= 400) {
33
+ specActions.updateLoadingStatus("failed")
34
+ errActions.newThrownErr(
35
+ Object.assign(
36
+ new Error((res.message || res.statusText) + " " + url),
37
+ { source: "fetch" }
38
+ )
39
+ )
40
+ // Check if the failure was possibly due to CORS or mixed content
41
+ if (!res.status && res instanceof Error) checkPossibleFailReasons()
42
+ return
43
+ }
44
+ specActions.updateLoadingStatus("success")
45
+ specActions.updateSpec(res.text)
46
+ if (specSelectors.url() !== url) {
47
+ specActions.updateUrl(url)
48
+ }
49
+ }
50
+
51
+ function checkPossibleFailReasons() {
52
+ try {
53
+ let specUrl
54
+
55
+ if ("URL" in win) {
56
+ specUrl = new URL(url)
57
+ } else {
58
+ // legacy browser, use <a href> to parse the URL
59
+ specUrl = document.createElement("a")
60
+ specUrl.href = url
61
+ }
62
+
63
+ if (
64
+ specUrl.protocol !== "https:" &&
65
+ win.location.protocol === "https:"
66
+ ) {
67
+ const error = Object.assign(
68
+ new Error(
69
+ `Possible mixed-content issue? The page was loaded over https:// but a ${specUrl.protocol}// URL was specified. Check that you are not attempting to load mixed content.`
70
+ ),
71
+ { source: "fetch" }
72
+ )
73
+ errActions.newThrownErr(error)
74
+ return
75
+ }
76
+ if (specUrl.origin !== win.location.origin) {
77
+ const error = Object.assign(
78
+ new Error(
79
+ `Possible cross-origin (CORS) issue? The URL origin (${specUrl.origin}) does not match the page (${win.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`
80
+ ),
81
+ { source: "fetch" }
82
+ )
83
+ errActions.newThrownErr(error)
84
+ }
85
+ } catch (e) {
86
+ return
87
+ }
88
+ }
89
+ },
90
+
91
+ updateLoadingStatus: (status) => {
92
+ let enums = [null, "loading", "failed", "success", "failedConfig"]
93
+ if (enums.indexOf(status) === -1) {
94
+ console.error(`Error: ${status} is not one of ${JSON.stringify(enums)}`)
95
+ }
96
+
97
+ return {
98
+ type: "spec_update_loading_status",
99
+ payload: status,
100
+ }
101
+ },
102
+ }
103
+
104
+ let reducers = {
105
+ spec_update_loading_status: (state, action) => {
106
+ return typeof action.payload === "string"
107
+ ? state.set("loadingStatus", action.payload)
108
+ : state
109
+ },
110
+ }
111
+
112
+ let selectors = {
113
+ loadingStatus: createSelector(
114
+ (state) => {
115
+ return state || Map()
116
+ },
117
+ (spec) => spec.get("loadingStatus") || null
118
+ ),
119
+ }
120
+
121
+ return {
122
+ statePlugins: {
123
+ spec: { actions, reducers, selectors },
124
+ },
125
+ }
126
+ }
@@ -0,0 +1,60 @@
1
+ import { serializeError } from "serialize-error"
2
+
3
+ export const NEW_THROWN_ERR = "err_new_thrown_err"
4
+ export const NEW_THROWN_ERR_BATCH = "err_new_thrown_err_batch"
5
+ export const NEW_SPEC_ERR = "err_new_spec_err"
6
+ export const NEW_SPEC_ERR_BATCH = "err_new_spec_err_batch"
7
+ export const NEW_AUTH_ERR = "err_new_auth_err"
8
+ export const CLEAR = "err_clear"
9
+ export const CLEAR_BY = "err_clear_by"
10
+
11
+ export function newThrownErr(err) {
12
+ return {
13
+ type: NEW_THROWN_ERR,
14
+ payload: serializeError(err)
15
+ }
16
+ }
17
+
18
+ export function newThrownErrBatch(errors) {
19
+ return {
20
+ type: NEW_THROWN_ERR_BATCH,
21
+ payload: errors
22
+ }
23
+ }
24
+
25
+ export function newSpecErr(err) {
26
+ return {
27
+ type: NEW_SPEC_ERR,
28
+ payload: err
29
+ }
30
+ }
31
+
32
+ export function newSpecErrBatch(errArray) {
33
+ return {
34
+ type: NEW_SPEC_ERR_BATCH,
35
+ payload: errArray
36
+ }
37
+ }
38
+
39
+ export function newAuthErr(err) {
40
+ return {
41
+ type: NEW_AUTH_ERR,
42
+ payload: err
43
+ }
44
+ }
45
+
46
+ export function clear(filter = {}) {
47
+ // filter looks like: {type: 'spec'}, {source: 'parser'}
48
+ return {
49
+ type: CLEAR,
50
+ payload: filter
51
+ }
52
+ }
53
+
54
+ export function clearBy(filter = () => true) {
55
+ // filter is a function
56
+ return {
57
+ type: CLEAR_BY,
58
+ payload: filter
59
+ }
60
+ }
@@ -0,0 +1,31 @@
1
+ # Error transformers
2
+
3
+ Error transformers provide a standard interface for making generated error messages more useful to end users.
4
+
5
+ ### Inputs & outputs
6
+
7
+ Each transformer's `transform` function is given an Immutable List of Immutable Maps as its first argument.
8
+
9
+ It is expected that each `transform` function returns a List of similarly-formed Maps.
10
+
11
+ These errors originate from the Redux error actions that add errors to state. Errors are transformed before being passed into the reducer.
12
+
13
+ It's important that all the keys present in each error (specifically, `line`, `level`, `message`, `source`, and `type`) are present when the transformer is finished.
14
+
15
+ ##### Deleting an error
16
+
17
+ If you want to delete an error completely, you can overwrite it with `null`. The null value will be filtered out of the transformed error array before the errors are returned.
18
+ å
19
+
20
+ ### Example transformer
21
+
22
+ This transformer will increase all your line numbers by 10.
23
+
24
+ ```
25
+ export function transform(errors) {
26
+ return errors.map(err => {
27
+ err.line += 10
28
+ return err
29
+ })
30
+ }
31
+ ```