@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,847 @@
1
+ /*
2
+ ATTENTION! This file (but not the functions within) is deprecated.
3
+
4
+ You should probably add a new file to `./helpers/` instead of adding a new
5
+ function here.
6
+
7
+ One-function-per-file is a better pattern than what we have here.
8
+
9
+ If you're refactoring something in here, feel free to break it out to a file
10
+ in `./helpers` if you have the time.
11
+ */
12
+ import Im, { fromJS, Map, Set } from "immutable"
13
+ import camelCase from "lodash/camelCase"
14
+ import upperFirst from "lodash/upperFirst"
15
+ import _memoize from "lodash/memoize"
16
+ import find from "lodash/find"
17
+ import some from "lodash/some"
18
+ import eq from "lodash/eq"
19
+ import isFunction from "lodash/isFunction"
20
+ import cssEscape from "css.escape"
21
+ import randomBytes from "randombytes"
22
+ import shaJs from "sha.js"
23
+ import win from "core/window"
24
+ import getParameterSchema from "core/utils/get-parameter-schema"
25
+
26
+
27
+ const DEFAULT_RESPONSE_KEY = "default"
28
+
29
+ export const isImmutable = (maybe) => Im.Iterable.isIterable(maybe)
30
+
31
+ export const immutableToJS = (value) => isImmutable(value) ? value.toJS() : value
32
+
33
+ export function objectify (thing) {
34
+ if(!isObject(thing))
35
+ return {}
36
+
37
+ return immutableToJS(thing)
38
+ }
39
+
40
+ export function arrayify (thing) {
41
+ if(!thing)
42
+ return []
43
+
44
+ if(thing.toArray)
45
+ return thing.toArray()
46
+
47
+ return normalizeArray(thing)
48
+ }
49
+
50
+ export function fromJSOrdered(js) {
51
+ if (isImmutable(js)) {
52
+ return js // Can't do much here
53
+ }
54
+ if (js instanceof win.File) {
55
+ return js
56
+ }
57
+ if (!isObject(js)) {
58
+ return js
59
+ }
60
+ if (Array.isArray(js)) {
61
+ return Im.Seq(js).map(fromJSOrdered).toList()
62
+ }
63
+ if (isFunction(js.entries)) {
64
+ // handle multipart/form-data
65
+ const objWithHashedKeys = createObjWithHashedKeys(js)
66
+ return Im.OrderedMap(objWithHashedKeys).map(fromJSOrdered)
67
+ }
68
+ return Im.OrderedMap(js).map(fromJSOrdered)
69
+ }
70
+
71
+ /**
72
+ * Convert a FormData object into plain object
73
+ * Append a hashIdx and counter to the key name, if multiple exists
74
+ * if single, key name = <original>
75
+ * if multiple, key name = <original><hashIdx><count>
76
+ * @example <caption>single entry for vegetable</caption>
77
+ * fdObj.entries.vegtables: "carrot"
78
+ * // returns newObj.vegetables : "carrot"
79
+ * @example <caption>multiple entries for fruits[]</caption>
80
+ * fdObj.entries.fruits[]: "apple"
81
+ * // returns newObj.fruits[]_**[]1 : "apple"
82
+ * fdObj.entries.fruits[]: "banana"
83
+ * // returns newObj.fruits[]_**[]2 : "banana"
84
+ * fdObj.entries.fruits[]: "grape"
85
+ * // returns newObj.fruits[]_**[]3 : "grape"
86
+ * @param {FormData} fdObj - a FormData object
87
+ * @return {Object} - a plain object
88
+ */
89
+ export function createObjWithHashedKeys (fdObj) {
90
+ if (!isFunction(fdObj.entries)) {
91
+ return fdObj // not a FormData object with iterable
92
+ }
93
+ const newObj = {}
94
+ const hashIdx = "_**[]" // our internal identifier
95
+ const trackKeys = {}
96
+ for (let pair of fdObj.entries()) {
97
+ if (!newObj[pair[0]] && !(trackKeys[pair[0]] && trackKeys[pair[0]].containsMultiple)) {
98
+ newObj[pair[0]] = pair[1] // first key name: no hash required
99
+ } else {
100
+ if (!trackKeys[pair[0]]) {
101
+ // initiate tracking key for multiple
102
+ trackKeys[pair[0]] = {
103
+ containsMultiple: true,
104
+ length: 1
105
+ }
106
+ // "reassign" first pair to matching hashed format for multiple
107
+ let hashedKeyFirst = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`
108
+ newObj[hashedKeyFirst] = newObj[pair[0]]
109
+ // remove non-hashed key of multiple
110
+ delete newObj[pair[0]] // first
111
+ }
112
+ trackKeys[pair[0]].length += 1
113
+ let hashedKeyCurrent = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`
114
+ newObj[hashedKeyCurrent] = pair[1]
115
+ }
116
+ }
117
+ return newObj
118
+ }
119
+
120
+ export function bindToState(obj, state) {
121
+ var newObj = {}
122
+ Object.keys(obj)
123
+ .filter(key => typeof obj[key] === "function")
124
+ .forEach(key => newObj[key] = obj[key].bind(null, state))
125
+ return newObj
126
+ }
127
+
128
+ export function normalizeArray(arr) {
129
+ if(Array.isArray(arr))
130
+ return arr
131
+ return [arr]
132
+ }
133
+
134
+ export function isFn(fn) {
135
+ return typeof fn === "function"
136
+ }
137
+
138
+ export function isObject(obj) {
139
+ return !!obj && typeof obj === "object"
140
+ }
141
+
142
+ export function isFunc(thing) {
143
+ return typeof(thing) === "function"
144
+ }
145
+
146
+ export function isArray(thing) {
147
+ return Array.isArray(thing)
148
+ }
149
+
150
+ // I've changed memoize libs more than once, so I'm using this a way to make that simpler
151
+ export const memoize = _memoize
152
+
153
+ export function objMap(obj, fn) {
154
+ return Object.keys(obj).reduce((newObj, key) => {
155
+ newObj[key] = fn(obj[key], key)
156
+ return newObj
157
+ }, {})
158
+ }
159
+
160
+ export function objReduce(obj, fn) {
161
+ return Object.keys(obj).reduce((newObj, key) => {
162
+ let res = fn(obj[key], key)
163
+ if(res && typeof res === "object")
164
+ Object.assign(newObj, res)
165
+ return newObj
166
+ }, {})
167
+ }
168
+
169
+ // Redux middleware that exposes the system to async actions (like redux-thunk, but with out system instead of (dispatch, getState)
170
+ export function systemThunkMiddleware(getSystem) {
171
+ return ({ dispatch, getState }) => { // eslint-disable-line no-unused-vars
172
+ return next => action => {
173
+ if (typeof action === "function") {
174
+ return action(getSystem())
175
+ }
176
+
177
+ return next(action)
178
+ }
179
+ }
180
+ }
181
+
182
+ export function defaultStatusCode ( responses ) {
183
+ let codes = responses.keySeq()
184
+ return codes.contains(DEFAULT_RESPONSE_KEY) ? DEFAULT_RESPONSE_KEY : codes.filter( key => (key+"")[0] === "2").sort().first()
185
+ }
186
+
187
+
188
+ /**
189
+ * Returns an Immutable List, safely
190
+ * @param {Immutable.Iterable} iterable the iterable to get the key from
191
+ * @param {String|[String]} key either an array of keys, or a single key
192
+ * @returns {Immutable.List} either iterable.get(keys) or an empty Immutable.List
193
+ */
194
+ export function getList(iterable, keys) {
195
+ if(!Im.Iterable.isIterable(iterable)) {
196
+ return Im.List()
197
+ }
198
+ let val = iterable.getIn(Array.isArray(keys) ? keys : [keys])
199
+ return Im.List.isList(val) ? val : Im.List()
200
+ }
201
+
202
+ /**
203
+ * Take an immutable map, and convert to a list.
204
+ * Where the keys are merged with the value objects
205
+ * @param {Immutable.Map} map, the map to convert
206
+ * @param {String} key the key to use, when merging the `key`
207
+ * @returns {Immutable.List}
208
+ */
209
+ export function mapToList(map, keyNames="key", collectedKeys=Im.Map()) {
210
+ if(!Im.Map.isMap(map) || !map.size) {
211
+ return Im.List()
212
+ }
213
+
214
+ if(!Array.isArray(keyNames)) {
215
+ keyNames = [ keyNames ]
216
+ }
217
+
218
+ if(keyNames.length < 1) {
219
+ return map.merge(collectedKeys)
220
+ }
221
+
222
+ // I need to avoid `flatMap` from merging in the Maps, as well as the lists
223
+ let list = Im.List()
224
+ let keyName = keyNames[0]
225
+ for(let entry of map.entries()) {
226
+ let [key, val] = entry
227
+ let nextList = mapToList(val, keyNames.slice(1), collectedKeys.set(keyName, key))
228
+ if(Im.List.isList(nextList)) {
229
+ list = list.concat(nextList)
230
+ } else {
231
+ list = list.push(nextList)
232
+ }
233
+ }
234
+
235
+ return list
236
+ }
237
+
238
+ export function extractFileNameFromContentDispositionHeader(value){
239
+ let patterns = [
240
+ /filename\*=[^']+'\w*'"([^"]+)";?/i,
241
+ /filename\*=[^']+'\w*'([^;]+);?/i,
242
+ /filename="([^;]*);?"/i,
243
+ /filename=([^;]*);?/i
244
+ ]
245
+
246
+ let responseFilename
247
+ patterns.some(regex => {
248
+ responseFilename = regex.exec(value)
249
+ return responseFilename !== null
250
+ })
251
+
252
+ if (responseFilename !== null && responseFilename.length > 1) {
253
+ try {
254
+ return decodeURIComponent(responseFilename[1])
255
+ } catch(e) {
256
+ console.error(e)
257
+ }
258
+ }
259
+
260
+ return null
261
+ }
262
+
263
+ // PascalCase, aka UpperCamelCase
264
+ export function pascalCase(str) {
265
+ return upperFirst(camelCase(str))
266
+ }
267
+
268
+ // Remove the ext of a filename, and pascalCase it
269
+ export function pascalCaseFilename(filename) {
270
+ return pascalCase(filename.replace(/\.[^./]*$/, ""))
271
+ }
272
+
273
+ // Check if ...
274
+ // - new props
275
+ // - If immutable, use .is()
276
+ // - if in explicit objectList, then compare using _.eq
277
+ // - else use ===
278
+ export const propChecker = (props, nextProps, objectList=[], ignoreList=[]) => {
279
+
280
+ if(Object.keys(props).length !== Object.keys(nextProps).length) {
281
+ return true
282
+ }
283
+
284
+ return (
285
+ some(props, (a, name) => {
286
+ if(ignoreList.includes(name)) {
287
+ return false
288
+ }
289
+ let b = nextProps[name]
290
+
291
+ if(Im.Iterable.isIterable(a)) {
292
+ return !Im.is(a,b)
293
+ }
294
+
295
+ // Not going to compare objects
296
+ if(typeof a === "object" && typeof b === "object") {
297
+ return false
298
+ }
299
+
300
+ return a !== b
301
+ })
302
+ || objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))
303
+ }
304
+
305
+ export const validateMaximum = ( val, max ) => {
306
+ if (val > max) {
307
+ return `Value must be less than or equal to ${max}`
308
+ }
309
+ }
310
+
311
+ export const validateMinimum = ( val, min ) => {
312
+ if (val < min) {
313
+ return `Value must be greater than or equal to ${min}`
314
+ }
315
+ }
316
+
317
+ export const validateNumber = ( val ) => {
318
+ if (!/^-?\d+(\.?\d+)?$/.test(val)) {
319
+ return "Value must be a number"
320
+ }
321
+ }
322
+
323
+ export const validateInteger = ( val ) => {
324
+ if (!/^-?\d+$/.test(val)) {
325
+ return "Value must be an integer"
326
+ }
327
+ }
328
+
329
+ export const validateFile = ( val ) => {
330
+ if ( val && !(val instanceof win.File) ) {
331
+ return "Value must be a file"
332
+ }
333
+ }
334
+
335
+ export const validateBoolean = ( val ) => {
336
+ if ( !(val === "true" || val === "false" || val === true || val === false) ) {
337
+ return "Value must be a boolean"
338
+ }
339
+ }
340
+
341
+ export const validateString = ( val ) => {
342
+ if ( val && typeof val !== "string" ) {
343
+ return "Value must be a string"
344
+ }
345
+ }
346
+
347
+ export const validateDateTime = (val) => {
348
+ if (isNaN(Date.parse(val))) {
349
+ return "Value must be a DateTime"
350
+ }
351
+ }
352
+
353
+ export const validateGuid = (val) => {
354
+ val = val.toString().toLowerCase()
355
+ if (!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(val)) {
356
+ return "Value must be a Guid"
357
+ }
358
+ }
359
+
360
+ export const validateMaxLength = (val, max) => {
361
+ if (val.length > max) {
362
+ return `Value must be no longer than ${max} character${max !== 1 ? "s" : ""}`
363
+ }
364
+ }
365
+
366
+ export const validateUniqueItems = (val, uniqueItems) => {
367
+ if (!val) {
368
+ return
369
+ }
370
+ if (uniqueItems === "true" || uniqueItems === true) {
371
+ const list = fromJS(val)
372
+ const set = list.toSet()
373
+ const hasDuplicates = val.length > set.size
374
+ if(hasDuplicates) {
375
+ let errorsPerIndex = Set()
376
+ list.forEach((item, i) => {
377
+ if(list.filter(v => isFunc(v.equals) ? v.equals(item) : v === item).size > 1) {
378
+ errorsPerIndex = errorsPerIndex.add(i)
379
+ }
380
+ })
381
+ if(errorsPerIndex.size !== 0) {
382
+ return errorsPerIndex.map(i => ({index: i, error: "No duplicates allowed."})).toArray()
383
+ }
384
+ }
385
+ }
386
+ }
387
+
388
+ export const validateMinItems = (val, min) => {
389
+ if (!val && min >= 1 || val && val.length < min) {
390
+ return `Array must contain at least ${min} item${min === 1 ? "" : "s"}`
391
+ }
392
+ }
393
+
394
+ export const validateMaxItems = (val, max) => {
395
+ if (val && val.length > max) {
396
+ return `Array must not contain more then ${max} item${max === 1 ? "" : "s"}`
397
+ }
398
+ }
399
+
400
+ export const validateMinLength = (val, min) => {
401
+ if (val.length < min) {
402
+ return `Value must be at least ${min} character${min !== 1 ? "s" : ""}`
403
+ }
404
+ }
405
+
406
+ export const validatePattern = (val, rxPattern) => {
407
+ var patt = new RegExp(rxPattern)
408
+ if (!patt.test(val)) {
409
+ return "Value must follow pattern " + rxPattern
410
+ }
411
+ }
412
+
413
+ function validateValueBySchema(value, schema, requiredByParam, bypassRequiredCheck, parameterContentMediaType) {
414
+ if(!schema) return []
415
+ let errors = []
416
+ let nullable = schema.get("nullable")
417
+ let requiredBySchema = schema.get("required")
418
+ let maximum = schema.get("maximum")
419
+ let minimum = schema.get("minimum")
420
+ let type = schema.get("type")
421
+ let format = schema.get("format")
422
+ let maxLength = schema.get("maxLength")
423
+ let minLength = schema.get("minLength")
424
+ let uniqueItems = schema.get("uniqueItems")
425
+ let maxItems = schema.get("maxItems")
426
+ let minItems = schema.get("minItems")
427
+ let pattern = schema.get("pattern")
428
+
429
+ const schemaRequiresValue = requiredByParam || requiredBySchema === true
430
+ const hasValue = value !== undefined && value !== null
431
+ const isValidEmpty = !schemaRequiresValue && !hasValue
432
+
433
+ const needsExplicitConstraintValidation = hasValue && type === "array"
434
+
435
+ const requiresFurtherValidation =
436
+ schemaRequiresValue
437
+ || needsExplicitConstraintValidation
438
+ || !isValidEmpty
439
+
440
+ const isValidNullable = nullable && value === null
441
+
442
+ // required value is not provided and there's no type defined in the schema
443
+ const requiredNotProvided =
444
+ schemaRequiresValue
445
+ && !hasValue
446
+ && !isValidNullable
447
+ && !bypassRequiredCheck
448
+ && !type
449
+
450
+ if (requiredNotProvided) {
451
+ errors.push("Required field is not provided")
452
+ return errors
453
+ }
454
+
455
+ // will not be included in the request or [schema / value] does not [allow / require] further analysis.
456
+ const noFurtherValidationNeeded =
457
+ isValidNullable
458
+ || !type
459
+ || !requiresFurtherValidation
460
+
461
+ if (noFurtherValidationNeeded) {
462
+ return []
463
+ }
464
+
465
+ // Further this point the parameter is considered worth to validate
466
+ let stringCheck = type === "string" && value
467
+ let arrayCheck = type === "array" && Array.isArray(value) && value.length
468
+ let arrayListCheck = type === "array" && Im.List.isList(value) && value.count()
469
+ let arrayStringCheck = type === "array" && typeof value === "string" && value
470
+ let fileCheck = type === "file" && value instanceof win.File
471
+ let booleanCheck = type === "boolean" && (value || value === false)
472
+ let numberCheck = type === "number" && (value || value === 0)
473
+ let integerCheck = type === "integer" && (value || value === 0)
474
+ let objectCheck = type === "object" && typeof value === "object" && value !== null
475
+ let objectStringCheck = type === "object" && typeof value === "string" && value
476
+
477
+ const allChecks = [
478
+ stringCheck, arrayCheck, arrayListCheck, arrayStringCheck, fileCheck,
479
+ booleanCheck, numberCheck, integerCheck, objectCheck, objectStringCheck,
480
+ ]
481
+
482
+ const passedAnyCheck = allChecks.some(v => !!v)
483
+
484
+ if (schemaRequiresValue && !passedAnyCheck && !bypassRequiredCheck) {
485
+ errors.push("Required field is not provided")
486
+ return errors
487
+ }
488
+ if (
489
+ type === "object" &&
490
+ (parameterContentMediaType === null ||
491
+ parameterContentMediaType === "application/json")
492
+ ) {
493
+ let objectVal = value
494
+ if(typeof value === "string") {
495
+ try {
496
+ objectVal = JSON.parse(value)
497
+ } catch (e) {
498
+ errors.push("Parameter string value must be valid JSON")
499
+ return errors
500
+ }
501
+ }
502
+ if(schema && schema.has("required") && isFunc(requiredBySchema.isList) && requiredBySchema.isList()) {
503
+ requiredBySchema.forEach(key => {
504
+ if(objectVal[key] === undefined) {
505
+ errors.push({ propKey: key, error: "Required property not found" })
506
+ }
507
+ })
508
+ }
509
+ if(schema && schema.has("properties")) {
510
+ schema.get("properties").forEach((val, key) => {
511
+ const errs = validateValueBySchema(objectVal[key], val, false, bypassRequiredCheck, parameterContentMediaType)
512
+ errors.push(...errs
513
+ .map((error) => ({ propKey: key, error })))
514
+ })
515
+ }
516
+ }
517
+
518
+ if (pattern) {
519
+ let err = validatePattern(value, pattern)
520
+ if (err) errors.push(err)
521
+ }
522
+
523
+ if (minItems) {
524
+ if (type === "array") {
525
+ let err = validateMinItems(value, minItems)
526
+ if (err) errors.push(err)
527
+ }
528
+ }
529
+
530
+ if (maxItems) {
531
+ if (type === "array") {
532
+ let err = validateMaxItems(value, maxItems)
533
+ if (err) errors.push({ needRemove: true, error: err })
534
+ }
535
+ }
536
+
537
+ if (uniqueItems) {
538
+ if (type === "array") {
539
+ let errorPerItem = validateUniqueItems(value, uniqueItems)
540
+ if (errorPerItem) errors.push(...errorPerItem)
541
+ }
542
+ }
543
+
544
+ if (maxLength || maxLength === 0) {
545
+ let err = validateMaxLength(value, maxLength)
546
+ if (err) errors.push(err)
547
+ }
548
+
549
+ if (minLength) {
550
+ let err = validateMinLength(value, minLength)
551
+ if (err) errors.push(err)
552
+ }
553
+
554
+ if (maximum || maximum === 0) {
555
+ let err = validateMaximum(value, maximum)
556
+ if (err) errors.push(err)
557
+ }
558
+
559
+ if (minimum || minimum === 0) {
560
+ let err = validateMinimum(value, minimum)
561
+ if (err) errors.push(err)
562
+ }
563
+
564
+ if (type === "string") {
565
+ let err
566
+ if (format === "date-time") {
567
+ err = validateDateTime(value)
568
+ } else if (format === "uuid") {
569
+ err = validateGuid(value)
570
+ } else {
571
+ err = validateString(value)
572
+ }
573
+ if (!err) return errors
574
+ errors.push(err)
575
+ } else if (type === "boolean") {
576
+ let err = validateBoolean(value)
577
+ if (!err) return errors
578
+ errors.push(err)
579
+ } else if (type === "number") {
580
+ let err = validateNumber(value)
581
+ if (!err) return errors
582
+ errors.push(err)
583
+ } else if (type === "integer") {
584
+ let err = validateInteger(value)
585
+ if (!err) return errors
586
+ errors.push(err)
587
+ } else if (type === "array") {
588
+ if (!(arrayCheck || arrayListCheck)) {
589
+ return errors
590
+ }
591
+ if(value) {
592
+ value.forEach((item, i) => {
593
+ const errs = validateValueBySchema(item, schema.get("items"), false, bypassRequiredCheck, parameterContentMediaType)
594
+ errors.push(...errs
595
+ .map((err) => ({ index: i, error: err })))
596
+ })
597
+ }
598
+ } else if (type === "file") {
599
+ let err = validateFile(value)
600
+ if (!err) return errors
601
+ errors.push(err)
602
+ }
603
+
604
+ return errors
605
+ }
606
+
607
+ // validation of parameters before execute
608
+ export const validateParam = (param, value, { isOAS3 = false, bypassRequiredCheck = false } = {}) => {
609
+
610
+ let paramRequired = param.get("required")
611
+
612
+ let {
613
+ schema: paramDetails,
614
+ parameterContentMediaType
615
+ } = getParameterSchema(param, { isOAS3 })
616
+
617
+ return validateValueBySchema(value, paramDetails, paramRequired, bypassRequiredCheck, parameterContentMediaType)
618
+ }
619
+
620
+ export const parseSearch = () => {
621
+ const searchParams = new URLSearchParams(win.location.search)
622
+ return Object.fromEntries(searchParams)
623
+ }
624
+
625
+ export const serializeSearch = (searchMap) => {
626
+ const searchParams = new URLSearchParams(Object.entries(searchMap))
627
+ return String(searchParams)
628
+ }
629
+
630
+ export const btoa = (str) => {
631
+ let buffer
632
+
633
+ if (str instanceof Buffer) {
634
+ buffer = str
635
+ } else {
636
+ buffer = Buffer.from(str.toString(), "utf-8")
637
+ }
638
+
639
+ return buffer.toString("base64")
640
+ }
641
+
642
+ export const sorters = {
643
+ operationsSorter: {
644
+ alpha: (a, b) => a.get("path").localeCompare(b.get("path")),
645
+ method: (a, b) => a.get("method").localeCompare(b.get("method"))
646
+ },
647
+ tagsSorter: {
648
+ alpha: (a, b) => a.localeCompare(b)
649
+ }
650
+ }
651
+
652
+ export const buildFormData = (data) => {
653
+ let formArr = []
654
+
655
+ for (let name in data) {
656
+ let val = data[name]
657
+ if (val !== undefined && val !== "") {
658
+ formArr.push([name, "=", encodeURIComponent(val).replace(/%20/g,"+")].join(""))
659
+ }
660
+ }
661
+ return formArr.join("&")
662
+ }
663
+
664
+ // Is this really required as a helper? Perhaps. TODO: expose the system of presets.apis in docs, so we know what is supported
665
+ export const shallowEqualKeys = (a,b, keys) => {
666
+ return !!find(keys, (key) => {
667
+ return eq(a[key], b[key])
668
+ })
669
+ }
670
+
671
+ export function requiresValidationURL(uri) {
672
+ if (!uri || uri.indexOf("localhost") >= 0 || uri.indexOf("127.0.0.1") >= 0 || uri === "none") {
673
+ return false
674
+ }
675
+ return true
676
+ }
677
+
678
+
679
+ export function getAcceptControllingResponse(responses) {
680
+ if(!Im.OrderedMap.isOrderedMap(responses)) {
681
+ // wrong type!
682
+ return null
683
+ }
684
+
685
+ if(!responses.size) {
686
+ // responses is empty
687
+ return null
688
+ }
689
+
690
+ const suitable2xxResponse = responses.find((res, k) => {
691
+ return k.startsWith("2") && Object.keys(res.get("content") || {}).length > 0
692
+ })
693
+
694
+ // try to find a suitable `default` responses
695
+ const defaultResponse = responses.get("default") || Im.OrderedMap()
696
+ const defaultResponseMediaTypes = (defaultResponse.get("content") || Im.OrderedMap()).keySeq().toJS()
697
+ const suitableDefaultResponse = defaultResponseMediaTypes.length ? defaultResponse : null
698
+
699
+ return suitable2xxResponse || suitableDefaultResponse
700
+ }
701
+
702
+ // suitable for use in URL fragments
703
+ export const createDeepLinkPath = (str) => typeof str == "string" || str instanceof String ? str.trim().replace(/\s/g, "%20") : ""
704
+ // suitable for use in CSS classes and ids
705
+ export const escapeDeepLinkPath = (str) => cssEscape( createDeepLinkPath(str).replace(/%20/g, "_") )
706
+
707
+ export const isExtension = (key) => {
708
+ const extensionRegExp = /^x-/
709
+ return extensionRegExp.test(key)
710
+ }
711
+
712
+ export const getExtensions = (defObj) => {
713
+ if(Map.isMap(defObj)) {
714
+ return defObj.filter((v, k) => isExtension(k))
715
+ }
716
+ return Object.keys(defObj).filter((key) => isExtension(key))
717
+ }
718
+ export const getCommonExtensions = (defObj) => defObj.filter((v, k) => /^pattern|maxLength|minLength|maximum|minimum/.test(k))
719
+
720
+ // Deeply strips a specific key from an object.
721
+ //
722
+ // `predicate` can be used to discriminate the stripping further,
723
+ // by preserving the key's place in the object based on its value.
724
+ export function deeplyStripKey(input, keyToStrip, predicate = () => true) {
725
+ if(typeof input !== "object" || Array.isArray(input) || input === null || !keyToStrip) {
726
+ return input
727
+ }
728
+
729
+ const obj = Object.assign({}, input)
730
+
731
+ Object.keys(obj).forEach(k => {
732
+ if(k === keyToStrip && predicate(obj[k], k)) {
733
+ delete obj[k]
734
+ return
735
+ }
736
+ obj[k] = deeplyStripKey(obj[k], keyToStrip, predicate)
737
+ })
738
+
739
+ return obj
740
+ }
741
+
742
+ export function stringify(thing) {
743
+ if (typeof thing === "string") {
744
+ return thing
745
+ }
746
+
747
+ if (thing && thing.toJS) {
748
+ thing = thing.toJS()
749
+ }
750
+
751
+ if (typeof thing === "object" && thing !== null) {
752
+ try {
753
+ return JSON.stringify(thing, null, 2)
754
+ }
755
+ catch (e) {
756
+ return String(thing)
757
+ }
758
+ }
759
+
760
+ if(thing === null || thing === undefined) {
761
+ return ""
762
+ }
763
+
764
+ return thing.toString()
765
+ }
766
+
767
+ export function numberToString(thing) {
768
+ if(typeof thing === "number") {
769
+ return thing.toString()
770
+ }
771
+
772
+ return thing
773
+ }
774
+
775
+ export function paramToIdentifier(param, { returnAll = false, allowHashes = true } = {}) {
776
+ if(!Im.Map.isMap(param)) {
777
+ throw new Error("paramToIdentifier: received a non-Im.Map parameter as input")
778
+ }
779
+ const paramName = param.get("name")
780
+ const paramIn = param.get("in")
781
+
782
+ let generatedIdentifiers = []
783
+
784
+ // Generate identifiers in order of most to least specificity
785
+
786
+ if (param && param.hashCode && paramIn && paramName && allowHashes) {
787
+ generatedIdentifiers.push(`${paramIn}.${paramName}.hash-${param.hashCode()}`)
788
+ }
789
+
790
+ if(paramIn && paramName) {
791
+ generatedIdentifiers.push(`${paramIn}.${paramName}`)
792
+ }
793
+
794
+ generatedIdentifiers.push(paramName)
795
+
796
+ // Return the most preferred identifier, or all if requested
797
+
798
+ return returnAll ? generatedIdentifiers : (generatedIdentifiers[0] || "")
799
+ }
800
+
801
+ export function paramToValue(param, paramValues) {
802
+ const allIdentifiers = paramToIdentifier(param, { returnAll: true })
803
+
804
+ // Map identifiers to values in the provided value hash, filter undefined values,
805
+ // and return the first value found
806
+ const values = allIdentifiers
807
+ .map(id => {
808
+ return paramValues[id]
809
+ })
810
+ .filter(value => value !== undefined)
811
+
812
+ return values[0]
813
+ }
814
+
815
+ // adapted from https://auth0.com/docs/flows/guides/auth-code-pkce/includes/create-code-verifier
816
+ export function generateCodeVerifier() {
817
+ return b64toB64UrlEncoded(
818
+ randomBytes(32).toString("base64")
819
+ )
820
+ }
821
+
822
+ export function createCodeChallenge(codeVerifier) {
823
+ return b64toB64UrlEncoded(
824
+ shaJs("sha256")
825
+ .update(codeVerifier)
826
+ .digest("base64")
827
+ )
828
+ }
829
+
830
+ function b64toB64UrlEncoded(str) {
831
+ return str
832
+ .replace(/\+/g, "-")
833
+ .replace(/\//g, "_")
834
+ .replace(/=/g, "")
835
+ }
836
+
837
+ export const isEmptyValue = (value) => {
838
+ if (!value) {
839
+ return true
840
+ }
841
+
842
+ if (isImmutable(value) && value.isEmpty()) {
843
+ return true
844
+ }
845
+
846
+ return false
847
+ }