redoc 2.5.2 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"redoc.lib.js","mappings":"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","sources":["webpack://Redoc/webpack/universalModuleDefinition","webpack://Redoc/./node_modules/perfect-scrollbar/css/perfect-scrollbar.css","webpack://Redoc/./node_modules/css-loader/dist/runtime/api.js","webpack://Redoc/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://Redoc/external commonjs \"lunr\"","webpack://Redoc/./src/services/SearchWorker.worker.ts","webpack://Redoc/./node_modules/oas-kit-common/index.js","webpack://Redoc/./node_modules/oas-resolver/index.js","webpack://Redoc/./node_modules/oas-schema-walker/index.js","webpack://Redoc/./node_modules/reftools/lib/clone.js","webpack://Redoc/./node_modules/reftools/lib/dereference.js","webpack://Redoc/./node_modules/reftools/lib/isref.js","webpack://Redoc/./node_modules/reftools/lib/jptr.js","webpack://Redoc/./node_modules/reftools/lib/recurse.js","webpack://Redoc/./node_modules/perfect-scrollbar/css/perfect-scrollbar.css?aae9","webpack://Redoc/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://Redoc/./node_modules/swagger2openapi/index.js","webpack://Redoc/./node_modules/swagger2openapi/lib/statusCodes.js","webpack://Redoc/./src/services/SearchWorker.worker.ts?8aca","webpack://Redoc/./node_modules/workerize-loader/dist/rpc-wrapper.js","webpack://Redoc/external commonjs \"call-me-maybe\"","webpack://Redoc/external commonjs \"fast-safe-stringify\"","webpack://Redoc/external commonjs \"stickyfill\"","webpack://Redoc/external commonjs \"yaml\"","webpack://Redoc/external node-commonjs \"fs\"","webpack://Redoc/external node-commonjs \"http\"","webpack://Redoc/external node-commonjs \"path\"","webpack://Redoc/external var \"undefined\"","webpack://Redoc/webpack/bootstrap","webpack://Redoc/webpack/runtime/compat get default export","webpack://Redoc/webpack/runtime/define property getters","webpack://Redoc/webpack/runtime/global","webpack://Redoc/webpack/runtime/hasOwnProperty shorthand","webpack://Redoc/webpack/runtime/make namespace object","webpack://Redoc/webpack/runtime/nonce","webpack://Redoc/external commonjs \"react\"","webpack://Redoc/external commonjs \"polished\"","webpack://Redoc/./src/theme.ts","webpack://Redoc/./src/utils/dom.ts","webpack://Redoc/external commonjs \"slugify\"","webpack://Redoc/./src/utils/helpers.ts","webpack://Redoc/./src/services/Labels.ts","webpack://Redoc/./src/services/types.ts","webpack://Redoc/./src/services/RedocNormalizedOptions.ts","webpack://Redoc/external commonjs \"styled-components\"","webpack://Redoc/./src/styled-components.ts","webpack://Redoc/./src/components/ErrorBoundary.tsx","webpack://Redoc/./src/components/Loading/Spinner.svg.tsx","webpack://Redoc/./src/components/Loading/Loading.tsx","webpack://Redoc/external commonjs \"prop-types\"","webpack://Redoc/./src/components/OptionsProvider.ts","webpack://Redoc/external commonjs \"mobx\"","webpack://Redoc/external commonjs \"@redocly/openapi-core/lib/bundle\"","webpack://Redoc/external commonjs \"@redocly/openapi-core/lib/config/config\"","webpack://Redoc/./src/utils/loadAndBundleSpec.ts","webpack://Redoc/external commonjs \"decko\"","webpack://Redoc/external commonjs \"eventemitter3\"","webpack://Redoc/external commonjs \"json-pointer\"","webpack://Redoc/./src/utils/JsonPointer.ts","webpack://Redoc/external commonjs \"url-template\"","webpack://Redoc/./src/utils/openapi.ts","webpack://Redoc/external commonjs \"prismjs\"","webpack://Redoc/external commonjs \"prismjs/components/prism-bash.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-c.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-clike.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-coffeescript.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-cpp.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-csharp.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-go.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-http.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-java.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-lua.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-markup-templating.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-markup.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-objectivec.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-perl.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-php.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-python.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-q.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-ruby.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-scala.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-sql.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-swift.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-yaml.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-csv.js\"","webpack://Redoc/./src/utils/highlight.ts","webpack://Redoc/./src/utils/decorators.ts","webpack://Redoc/./src/utils/debug.ts","webpack://Redoc/./src/utils/memoize.ts","webpack://Redoc/./src/utils/sort.ts","webpack://Redoc/./src/services/HistoryService.ts","webpack://Redoc/external commonjs \"mark.js\"","webpack://Redoc/./src/services/MarkerService.ts","webpack://Redoc/./node_modules/marked/lib/marked.esm.js","webpack://Redoc/./src/services/MarkdownRenderer.ts","webpack://Redoc/./src/services/models/ApiInfo.ts","webpack://Redoc/./src/services/models/SecurityRequirement.ts","webpack://Redoc/./src/services/models/Callback.ts","webpack://Redoc/./src/services/OpenAPIParser.ts","webpack://Redoc/./src/services/models/Schema.ts","webpack://Redoc/./src/services/models/Example.ts","webpack://Redoc/./src/services/models/Field.ts","webpack://Redoc/external commonjs \"openapi-sampler\"","webpack://Redoc/./src/services/models/MediaType.ts","webpack://Redoc/./src/services/models/MediaContent.ts","webpack://Redoc/./src/services/models/RequestBody.ts","webpack://Redoc/./src/services/models/Response.ts","webpack://Redoc/./src/services/models/Operation.ts","webpack://Redoc/./src/services/models/Webhook.ts","webpack://Redoc/./src/services/models/SecuritySchemes.ts","webpack://Redoc/./src/services/SpecStore.ts","webpack://Redoc/./src/services/models/Group.model.ts","webpack://Redoc/./src/services/MenuBuilder.ts","webpack://Redoc/./src/services/MenuStore.ts","webpack://Redoc/./src/services/ScrollService.ts","webpack://Redoc/./src/services/SearchStore.ts","webpack://Redoc/./src/common-elements/panels.ts","webpack://Redoc/./src/common-elements/headers.ts","webpack://Redoc/./src/components/StoreBuilder.ts","webpack://Redoc/./src/common-elements/linkify.tsx","webpack://Redoc/./src/common-elements/shelfs.tsx","webpack://Redoc/./src/common-elements/mixins.ts","webpack://Redoc/./src/common-elements/fields-layout.ts","webpack://Redoc/./src/common-elements/schema.ts","webpack://Redoc/external commonjs \"react-tabs\"","webpack://Redoc/./src/common-elements/tabs.ts","webpack://Redoc/./src/common-elements/PrismDiv.tsx","webpack://Redoc/./src/common-elements/samples.tsx","webpack://Redoc/external commonjs \"perfect-scrollbar\"","webpack://Redoc/./src/common-elements/perfect-scrollbar.tsx","webpack://Redoc/./src/common-elements/Dropdown/Dropdown.tsx","webpack://Redoc/./src/common-elements/Dropdown/styled.ts","webpack://Redoc/./src/components/DropdownOrLabel/DropdownOrLabel.tsx","webpack://Redoc/external commonjs \"dompurify\"","webpack://Redoc/./src/components/Markdown/styled.elements.tsx","webpack://Redoc/./src/components/Markdown/SanitizedMdBlock.tsx","webpack://Redoc/./src/components/Markdown/Markdown.tsx","webpack://Redoc/./src/common-elements/Tooltip.tsx","webpack://Redoc/./src/services/ClipboardService.ts","webpack://Redoc/./src/common-elements/CopyButtonWrapper.tsx","webpack://Redoc/./src/utils/jsonToHtml.ts","webpack://Redoc/./src/components/JsonViewer/style.ts","webpack://Redoc/./src/components/JsonViewer/JsonViewer.tsx","webpack://Redoc/./src/components/SourceCode/SourceCode.tsx","webpack://Redoc/./src/components/PayloadSamples/ExampleValue.tsx","webpack://Redoc/./src/components/PayloadSamples/Example.tsx","webpack://Redoc/./src/components/PayloadSamples/exernalExampleHook.ts","webpack://Redoc/./src/components/PayloadSamples/styled.elements.ts","webpack://Redoc/./src/components/PayloadSamples/MediaTypeSamples.tsx","webpack://Redoc/external commonjs \"mobx-react\"","webpack://Redoc/./src/common-elements/fields.ts","webpack://Redoc/./src/components/ExternalDocumentation/ExternalDocumentation.tsx","webpack://Redoc/./src/components/Fields/EnumValues.tsx","webpack://Redoc/./src/components/Fields/Extensions.tsx","webpack://Redoc/./src/components/Fields/Examples.tsx","webpack://Redoc/./src/components/Fields/FieldConstraints.tsx","webpack://Redoc/./src/components/Fields/FieldDetail.tsx","webpack://Redoc/./src/components/Fields/Pattern.tsx","webpack://Redoc/./src/components/Fields/ArrayItemDetails.tsx","webpack://Redoc/./src/components/Fields/FieldDetails.tsx","webpack://Redoc/./src/components/Fields/Field.tsx","webpack://Redoc/./src/components/Schema/DiscriminatorDropdown.tsx","webpack://Redoc/./src/components/Schema/ObjectSchema.tsx","webpack://Redoc/./src/components/Schema/ArraySchema.tsx","webpack://Redoc/./src/components/Schema/OneOfSchema.tsx","webpack://Redoc/./src/components/Schema/RecursiveSchema.tsx","webpack://Redoc/./src/components/Schema/Schema.tsx","webpack://Redoc/./src/components/SchemaDefinition/SchemaDefinition.tsx","webpack://Redoc/./src/components/SecurityRequirement/styled.elements.ts","webpack://Redoc/./src/components/SeeMore/SeeMore.tsx","webpack://Redoc/./src/components/SecurityRequirement/OAuthFlow.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityDetails.tsx","webpack://Redoc/./src/components/SecuritySchemes/SecuritySchemes.tsx","webpack://Redoc/./src/services/AppStore.ts","webpack://Redoc/./src/components/ApiInfo/styled.elements.ts","webpack://Redoc/./src/components/ApiInfo/ApiInfo.tsx","webpack://Redoc/./src/components/ApiLogo/styled.elements.tsx","webpack://Redoc/./src/components/ApiLogo/ApiLogo.tsx","webpack://Redoc/./src/components/Markdown/AdvancedMarkdown.tsx","webpack://Redoc/external commonjs \"classnames\"","webpack://Redoc/./src/components/SideMenu/styled.elements.ts","webpack://Redoc/./src/components/Callbacks/CallbackTitle.tsx","webpack://Redoc/./src/components/Callbacks/styled.elements.ts","webpack://Redoc/./src/components/SelectOnClick/SelectOnClick.tsx","webpack://Redoc/./src/components/Endpoint/styled.elements.ts","webpack://Redoc/./src/components/Endpoint/Endpoint.tsx","webpack://Redoc/./src/components/Parameters/ParametersGroup.tsx","webpack://Redoc/./src/components/MediaTypeSwitch/MediaTypesSwitch.tsx","webpack://Redoc/./src/components/Parameters/Parameters.tsx","webpack://Redoc/./src/components/Responses/ResponseTitle.tsx","webpack://Redoc/./src/components/Responses/styled.elements.ts","webpack://Redoc/./src/components/Responses/ResponseHeaders.tsx","webpack://Redoc/./src/components/Responses/ResponseDetails.tsx","webpack://Redoc/./src/components/Responses/Response.tsx","webpack://Redoc/./src/components/Responses/ResponsesList.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityHeader.tsx","webpack://Redoc/./src/components/SecurityRequirement/RequiredScopesRow.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityRequirement.tsx","webpack://Redoc/./src/components/Callbacks/CallbackDetails.tsx","webpack://Redoc/./src/components/Callbacks/CallbackOperation.tsx","webpack://Redoc/./src/components/Callbacks/CallbacksList.tsx","webpack://Redoc/./src/components/GenericChildrenSwitcher/GenericChildrenSwitcher.tsx","webpack://Redoc/./src/components/PayloadSamples/PayloadSamples.tsx","webpack://Redoc/./src/components/CallbackSamples/CallbackReqSamples.tsx","webpack://Redoc/./src/components/CallbackSamples/CallbackSamples.tsx","webpack://Redoc/./src/components/RequestSamples/RequestSamples.tsx","webpack://Redoc/./src/components/ResponseSamples/ResponseSamples.tsx","webpack://Redoc/./src/components/Operation/Operation.tsx","webpack://Redoc/./src/components/ContentItems/ContentItems.tsx","webpack://Redoc/./src/components/SideMenu/MenuItem.tsx","webpack://Redoc/./src/components/SideMenu/MenuItems.tsx","webpack://Redoc/./src/components/SideMenu/Logo.tsx","webpack://Redoc/./src/components/SideMenu/SideMenu.tsx","webpack://Redoc/./src/components/StickySidebar/ChevronSvg.tsx","webpack://Redoc/./src/components/StickySidebar/StickyResponsiveSidebar.tsx","webpack://Redoc/./src/components/Redoc/styled.elements.tsx","webpack://Redoc/./src/components/SearchBox/styled.elements.tsx","webpack://Redoc/./src/components/SearchBox/SearchBox.tsx","webpack://Redoc/./src/components/Redoc/Redoc.tsx","webpack://Redoc/./src/components/RedocStandalone.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Redoc\"] = factory();\n\telse\n\t\troot[\"Redoc\"] = factory();\n})(this, function() {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y,.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y{opacity:.6}.ps .ps__rail-x:hover,.ps .ps__rail-y:hover,.ps .ps__rail-x:focus,.ps .ps__rail-y:focus,.ps .ps__rail-x.ps--clicking,.ps .ps__rail-y.ps--clicking{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x:hover>.ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x.ps--clicking .ps__thumb-x{background-color:#999;height:11px}.ps__rail-y:hover>.ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y.ps--clicking .ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ps{overflow:auto!important}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/perfect-scrollbar/css/perfect-scrollbar.css\"],\"names\":[],\"mappings\":\"AAGA,IACE,yBAAU,CACV,oBAAiB,CACjB,uBAAoB,CACpB,iBAAc,CACd,qBACF,CAKA,YACE,YAAS,CACT,SAAS,CACT,yDAAqD,CACrD,iEAA6D,CAC7D,WAAQ,CAER,QAAQ,CAER,iBACF,CAEA,YACE,YAAS,CACT,SAAS,CACT,yDAAqD,CACrD,iEAA6D,CAC7D,UAAO,CAEP,OAAO,CAEP,iBACF,CAEA,oDAEE,aAAS,CACT,4BACF,CAEA,oJAME,UACF,CAEA,kJAME,qBAAkB,CAClB,UACF,CAKA,aACE,qBAAkB,CAnEpB,iBAoEiB,CACf,6DAAoD,CACpD,qEAA4D,CAC5D,UAAQ,CAER,UAAQ,CAER,iBACF,CAEA,aACE,qBAAkB,CA/EpB,iBAgFiB,CACf,4DAAmD,CACnD,oEAA2D,CAC3D,SAAO,CAEP,SAAO,CAEP,iBACF,CAEA,oGAGE,qBAAkB,CAClB,WACF,CAEA,oGAGE,qBAAkB,CAClB,UACF,CAGA,qCACE,IACE,uBACF,CACF,CAEA,wEACE,IACE,uBACF,CACF\",\"sourcesContent\":[\"/*\\n * Container style\\n */\\n.ps {\\n overflow: hidden !important;\\n overflow-anchor: none;\\n -ms-overflow-style: none;\\n touch-action: auto;\\n -ms-touch-action: auto;\\n}\\n\\n/*\\n * Scrollbar rail styles\\n */\\n.ps__rail-x {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n height: 15px;\\n /* there must be 'bottom' or 'top' for ps__rail-x */\\n bottom: 0px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__rail-y {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n width: 15px;\\n /* there must be 'right' or 'left' for ps__rail-y */\\n right: 0;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps--active-x > .ps__rail-x,\\n.ps--active-y > .ps__rail-y {\\n display: block;\\n background-color: transparent;\\n}\\n\\n.ps:hover > .ps__rail-x,\\n.ps:hover > .ps__rail-y,\\n.ps--focus > .ps__rail-x,\\n.ps--focus > .ps__rail-y,\\n.ps--scrolling-x > .ps__rail-x,\\n.ps--scrolling-y > .ps__rail-y {\\n opacity: 0.6;\\n}\\n\\n.ps .ps__rail-x:hover,\\n.ps .ps__rail-y:hover,\\n.ps .ps__rail-x:focus,\\n.ps .ps__rail-y:focus,\\n.ps .ps__rail-x.ps--clicking,\\n.ps .ps__rail-y.ps--clicking {\\n background-color: #eee;\\n opacity: 0.9;\\n}\\n\\n/*\\n * Scrollbar thumb styles\\n */\\n.ps__thumb-x {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, height .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, height .2s ease-in-out;\\n height: 6px;\\n /* there must be 'bottom' for ps__thumb-x */\\n bottom: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__thumb-y {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, width .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, width .2s ease-in-out;\\n width: 6px;\\n /* there must be 'right' for ps__thumb-y */\\n right: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__rail-x:hover > .ps__thumb-x,\\n.ps__rail-x:focus > .ps__thumb-x,\\n.ps__rail-x.ps--clicking .ps__thumb-x {\\n background-color: #999;\\n height: 11px;\\n}\\n\\n.ps__rail-y:hover > .ps__thumb-y,\\n.ps__rail-y:focus > .ps__thumb-y,\\n.ps__rail-y.ps--clicking .ps__thumb-y {\\n background-color: #999;\\n width: 11px;\\n}\\n\\n/* MS supports */\\n@supports (-ms-overflow-style: none) {\\n .ps {\\n overflow: auto !important;\\n }\\n}\\n\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .ps {\\n overflow: auto !important;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"lunr\");","import * as lunr from 'lunr';\nimport type { SearchResult } from './types';\n\n/* just for better typings */\nexport default class Worker {\n add: typeof add = add;\n done = done;\n search: typeof search = search;\n toJS = toJS;\n load = load;\n dispose = dispose;\n fromExternalJS = fromExternalJS;\n}\n\nlet store: any[] = [];\n\nlunr.tokenizer.separator = /\\s+/;\n\nlet builder: lunr.Builder;\n\nlet resolveIndex: (v: lunr.Index) => void;\n\nlet index: Promise<lunr.Index>;\n\nfunction initEmpty() {\n builder = new lunr.Builder();\n builder.field('title');\n builder.field('description');\n builder.ref('ref');\n\n builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);\n\n index = new Promise(resolve => {\n resolveIndex = resolve;\n });\n}\n\ninitEmpty();\n\nconst expandTerm = term => {\n const token = lunr.trimmer(new lunr.Token(term, {}));\n return '*' + lunr.stemmer(token) + '*';\n};\n\nexport function add<T>(title: string, description: string, meta?: T) {\n const ref = store.push(meta) - 1;\n const item = { title: title.toLowerCase(), description: description.toLowerCase(), ref };\n builder.add(item);\n}\n\nexport async function done() {\n resolveIndex(builder.build());\n}\n\nexport async function toJS() {\n return {\n store,\n index: (await index).toJSON(),\n };\n}\n\nexport async function fromExternalJS(path: string, exportName: string) {\n try {\n importScripts(path);\n if (!self[exportName]) {\n throw new Error('Broken index file format');\n }\n\n load(self[exportName]);\n } catch (e) {\n console.error('Failed to load search index: ' + e.message);\n }\n}\n\nexport async function load(state: any) {\n store = state.store;\n resolveIndex(lunr.Index.load(state.index));\n}\n\nexport async function dispose() {\n store = [];\n initEmpty();\n}\n\nexport async function search<Meta = string>(\n q: string,\n limit = 0,\n): Promise<Array<SearchResult<Meta>>> {\n if (q.trim().length === 0) {\n return [];\n }\n\n let searchResults = (await index).query(t => {\n q.trim()\n .toLowerCase()\n .split(/\\s+/)\n .forEach(term => {\n if (term.length === 1) return;\n const exp = expandTerm(term);\n t.term(exp, {});\n });\n });\n\n if (limit > 0) {\n searchResults = searchResults.slice(0, limit);\n }\n\n return searchResults.map(res => ({ meta: store[res.ref], score: res.score }));\n}\n","'use strict';\n\nconst sjs = require('fast-safe-stringify');\n\nconst colour = process.env.NODE_DISABLE_COLORS ?\n { red: '', yellow: '', green: '', normal: '' } :\n { red: '\\x1b[31m', yellow: '\\x1b[33;1m', green: '\\x1b[32m', normal: '\\x1b[0m' };\n\nfunction uniqueOnly(value, index, self) {\n return self.indexOf(value) === index;\n}\n\nfunction hasDuplicates(array) {\n return (new Set(array)).size !== array.length;\n}\n\nfunction allSame(array) {\n return (new Set(array)).size <= 1;\n}\n\nfunction deepEquals(obj1, obj2) {\n function _equals(obj1, obj2) {\n return sjs.stringify(obj1) === sjs.stringify(Object.assign({}, obj1, obj2));\n }\n return _equals(obj1, obj2) && _equals(obj2, obj1);\n}\n\nfunction compressArray(arr) {\n let result = [];\n for (let candidate of arr) {\n let dupe = result.find(function(e,i,a){\n return deepEquals(e,candidate);\n });\n if (!dupe) result.push(candidate);\n }\n return result;\n}\n\nfunction distinctArray(arr) {\n return (arr.length === compressArray(arr).length);\n}\n\nfunction firstDupe(arr) {\n return arr.find(function(e,i,a){\n return arr.indexOf(e)<i;\n });\n}\n\n/**\n * simple hash implementation based on https://stackoverflow.com/a/7616484/1749888\n * @param {string} s - string to hash\n * @returns {number} numerical hash code\n */\nfunction hash(s) {\n let hash = 0;\n let chr;\n if (s.length === 0) return hash;\n for (let i = 0; i < s.length; i++) {\n chr = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nString.prototype.toCamelCase = function camelize() {\n return this.toLowerCase().replace(/[-_ \\/\\.](.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n}\n\nconst parameterTypeProperties = [\n 'format',\n 'minimum',\n 'maximum',\n 'exclusiveMinimum',\n 'exclusiveMaximum',\n 'minLength',\n 'maxLength',\n 'multipleOf',\n 'minItems',\n 'maxItems',\n 'uniqueItems',\n 'minProperties',\n 'maxProperties',\n 'additionalProperties',\n 'pattern',\n 'enum',\n 'default'\n];\n\nconst arrayProperties = [\n 'items',\n 'minItems',\n 'maxItems',\n 'uniqueItems'\n];\n\nconst httpMethods = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n 'trace'\n];\n\nfunction sanitise(s) {\n s = s.replace('[]','Array');\n let components = s.split('/');\n components[0] = components[0].replace(/[^A-Za-z0-9_\\-\\.]+|\\s+/gm, '_');\n return components.join('/');\n}\n\nfunction sanitiseAll(s) {\n return sanitise(s.split('/').join('_'));\n}\n\nmodule.exports = {\n\n colour: colour,\n uniqueOnly: uniqueOnly,\n hasDuplicates: hasDuplicates,\n allSame: allSame,\n distinctArray: distinctArray,\n firstDupe: firstDupe,\n hash: hash,\n parameterTypeProperties: parameterTypeProperties,\n arrayProperties: arrayProperties,\n httpMethods: httpMethods,\n sanitise: sanitise,\n sanitiseAll: sanitiseAll\n\n};\n\n","'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst url = require('url');\n\nconst fetch = require('node-fetch-h2');\nconst yaml = require('yaml');\n\nconst jptr = require('reftools/lib/jptr.js').jptr;\nconst recurse = require('reftools/lib/recurse.js').recurse;\nconst clone = require('reftools/lib/clone.js').clone;\nconst deRef = require('reftools/lib/dereference.js').dereference;\nconst isRef = require('reftools/lib/isref.js').isRef;\nconst common = require('oas-kit-common');\n\nfunction unique(arr) {\n return [... new Set(arr)];\n}\n\nfunction readFileAsync(filename, encoding, options, pointer, def) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filename, encoding, function (err, data) {\n if (err) {\n if (options.ignoreIOErrors && def) {\n if (options.verbose) console.warn('FAILED',pointer);\n options.externalRefs[pointer].failed = true;\n resolve(def);\n }\n else {\n reject(err);\n }\n }\n else {\n resolve(data);\n }\n });\n });\n}\n\nfunction resolveAllFragment(obj, context, src, parentPath, base, options) {\n\n let attachPoint = options.externalRefs[src+parentPath].paths[0];\n\n let baseUrl = url.parse(base);\n let seen = {}; // seen is indexed by the $ref value and contains path replacements\n let changes = 1;\n while (changes) {\n changes = 0;\n recurse(obj, {identityDetection:true}, function (obj, key, state) {\n if (isRef(obj, key)) {\n if (obj[key].startsWith('#')) {\n if (!seen[obj[key]] && !obj.$fixed) {\n let target = clone(jptr(context, obj[key]));\n if (options.verbose>1) console.warn((target === false ? common.colour.red : common.colour.green)+'Fragment resolution', obj[key], common.colour.normal);\n /*\n ResolutionCase:A is where there is a local reference in an externally\n referenced document, and we have not seen it before. The reference\n is replaced by a copy of the data pointed to, which may be outside this fragment\n but within the context of the external document\n */\n if (target === false) {\n state.parent[state.pkey] = {}; /* case:A(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('Fragment $ref resolution failed '+obj[key]);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n else {\n changes++;\n state.parent[state.pkey] = target;\n seen[obj[key]] = state.path.replace('/%24ref','');\n }\n }\n else {\n if (!obj.$fixed) {\n let newRef = (attachPoint+'/'+seen[obj[key]]).split('/#/').join('/');\n state.parent[state.pkey] = { $ref: newRef, 'x-miro': obj[key], $fixed: true };\n if (options.verbose>1) console.warn('Replacing with',newRef);\n changes++;\n }\n /*\n ResolutionCase:B is where there is a local reference in an externally\n referenced document, and we have seen this reference before and resolved it.\n We create a new object containing the (immutable) $ref string\n */\n }\n }\n else if (baseUrl.protocol) {\n let newRef = url.resolve(base,obj[key]).toString();\n if (options.verbose>1) console.warn(common.colour.yellow+'Rewriting external url ref',obj[key],'as',newRef,common.colour.normal);\n obj['x-miro'] = obj[key];\n if (options.externalRefs[obj[key]]) {\n if (!options.externalRefs[newRef]) {\n options.externalRefs[newRef] = options.externalRefs[obj[key]];\n }\n options.externalRefs[newRef].failed = options.externalRefs[obj[key]].failed;\n }\n obj[key] = newRef;\n }\n else if (!obj['x-miro']) {\n let newRef = url.resolve(base,obj[key]).toString();\n let failed = false;\n if (options.externalRefs[obj[key]]) {\n failed = options.externalRefs[obj[key]].failed;\n }\n if (!failed) {\n if (options.verbose>1) console.warn(common.colour.yellow+'Rewriting external ref',obj[key],'as',newRef,common.colour.normal);\n obj['x-miro'] = obj[key]; // we use x-miro as a flag so we don't do this > once\n obj[key] = newRef;\n }\n }\n }\n });\n }\n\n recurse(obj,{},function(obj,key,state){\n if (isRef(obj, key)) {\n if (typeof obj.$fixed !== 'undefined') delete obj.$fixed;\n }\n });\n\n if (options.verbose>1) console.warn('Finished fragment resolution');\n return obj;\n}\n\nfunction filterData(data, options) {\n if (!options.filters || !options.filters.length) return data;\n for (let filter of options.filters) {\n data = filter(data, options);\n }\n return data;\n}\n\nfunction testProtocol(input, backup) {\n if (input && input.length > 2) return input;\n if (backup && backup.length > 2) return backup;\n return 'file:';\n}\n\nfunction resolveExternal(root, pointer, options, callback) {\n var u = url.parse(options.source);\n var base = options.source.split('\\\\').join('/').split('/');\n let doc = base.pop(); // drop the actual filename\n if (!doc) base.pop(); // in case it ended with a /\n let fragment = '';\n let fnComponents = pointer.split('#');\n if (fnComponents.length > 1) {\n fragment = '#' + fnComponents[1];\n pointer = fnComponents[0];\n }\n base = base.join('/');\n\n let u2 = url.parse(pointer);\n let effectiveProtocol = testProtocol(u2.protocol, u.protocol);\n\n let target;\n if (effectiveProtocol === 'file:') {\n target = path.resolve(base ? base + '/' : '', pointer);\n }\n else {\n target = url.resolve(base ? base + '/' : '', pointer);\n }\n\n if (options.cache[target]) {\n if (options.verbose) console.warn('CACHED', target, fragment);\n /*\n resolutionSource:A this is where we have cached the externally-referenced document from a\n file, http or custom handler\n */\n let context = clone(options.cache[target]);\n let data = options.externalRef = context;\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; // case:A(2) where the resolution fails\n if (options.fatal) {\n let ex = new Error('Cached $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n callback(clone(data), target, options);\n return Promise.resolve(data);\n }\n\n if (options.verbose) console.warn('GET', target, fragment);\n\n if (options.handlers && options.handlers[effectiveProtocol]) {\n return options.handlers[effectiveProtocol](base, pointer, fragment, options)\n .then(function (data) {\n options.externalRef = data;\n data = filterData(data, options);\n options.cache[target] = data;\n callback(data, target, options);\n return data;\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n throw ex;\n });\n }\n else if (effectiveProtocol && effectiveProtocol.startsWith('http')) {\n const fetchOptions = Object.assign({}, options.fetchOptions, { agent: options.agent });\n return options.fetch(target, fetchOptions)\n .then(function (res) {\n if (res.status !== 200) {\n if (options.ignoreIOErrors) {\n if (options.verbose) console.warn('FAILED',pointer);\n options.externalRefs[pointer].failed = true;\n return '{\"$ref\":\"'+pointer+'\"}';\n }\n else {\n throw new Error(`Received status code ${res.status}: ${target}`);\n }\n }\n return res.text();\n })\n .then(function (data) {\n try {\n let context = yaml.parse(data, { schema:'core', prettyErrors: true });\n data = options.externalRef = context;\n options.cache[target] = clone(data);\n /* resolutionSource:B, from the network, data is fresh, but we clone it into the cache */\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; /* case:B(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('Remote $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n }\n catch (ex) {\n if (options.verbose) console.warn(ex);\n if (options.promise && options.fatal) options.promise.reject(ex)\n else throw ex;\n }\n callback(data, target, options);\n return data;\n })\n .catch(function (err) {\n if (options.verbose) console.warn(err);\n options.cache[target] = {};\n if (options.promise && options.fatal) options.promise.reject(err)\n else throw err;\n });\n }\n else {\n const def = '{\"$ref\":\"'+pointer+'\"}';\n return readFileAsync(target, options.encoding || 'utf8', options, pointer, def)\n .then(function (data) {\n try {\n let context = yaml.parse(data, { schema:'core', prettyErrors: true });\n data = options.externalRef = context;\n /*\n resolutionSource:C from a file, data is fresh but we clone it into the cache\n */\n options.cache[target] = clone(data);\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; /* case:C(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('File $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n }\n catch (ex) {\n if (options.verbose) console.warn(ex);\n if (options.promise && options.fatal) options.promise.reject(ex)\n else throw ex;\n }\n callback(data, target, options);\n return data;\n })\n .catch(function(err){\n if (options.verbose) console.warn(err);\n if (options.promise && options.fatal) options.promise.reject(err)\n else throw err;\n });\n }\n}\n\nfunction scanExternalRefs(options) {\n return new Promise(function (res, rej) {\n\n function inner(obj,key,state){\n if (obj[key] && isRef(obj[key],'$ref')) {\n let $ref = obj[key].$ref;\n if (!$ref.startsWith('#')) { // is external\n\n let $extra = '';\n\n if (!refs[$ref]) {\n let potential = Object.keys(refs).find(function(e,i,a){\n return $ref.startsWith(e+'/');\n });\n if (potential) {\n if (options.verbose) console.warn('Found potential subschema at',potential);\n $extra = '/'+($ref.split('#')[1]||'').replace(potential.split('#')[1]||'');\n $extra = $extra.split('/undefined').join(''); // FIXME\n $ref = potential;\n }\n }\n\n if (!refs[$ref]) {\n refs[$ref] = { resolved: false, paths: [], extras:{}, description: obj[key].description };\n }\n if (refs[$ref].resolved) {\n // we've already seen it\n if (refs[$ref].failed) {\n // do none\n }\n else if (options.rewriteRefs) {\n let newRef = refs[$ref].resolvedAt;\n if (options.verbose>1) console.warn('Rewriting ref', $ref, newRef);\n obj[key]['x-miro'] = $ref;\n obj[key].$ref = newRef+$extra; // resolutionCase:C (new string)\n }\n else {\n obj[key] = clone(refs[$ref].data); // resolutionCase:D (cloned:yes)\n }\n }\n else {\n refs[$ref].paths.push(state.path);\n refs[$ref].extras[state.path] = $extra;\n }\n }\n }\n }\n\n let refs = options.externalRefs;\n\n if ((options.resolver.depth>0) && (options.source === options.resolver.base)) {\n // we only need to do any of this when called directly on pass #1\n return res(refs);\n }\n\n recurse(options.openapi.definitions, {identityDetection: true, path: '#/definitions'}, inner);\n recurse(options.openapi.components, {identityDetection: true, path: '#/components'}, inner);\n recurse(options.openapi, {identityDetection: true}, inner);\n\n res(refs);\n });\n}\n\nfunction findExternalRefs(options) {\n return new Promise(function (res, rej) {\n\n scanExternalRefs(options)\n .then(function (refs) {\n for (let ref in refs) {\n\n if (!refs[ref].resolved) {\n let depth = options.resolver.depth;\n if (depth>0) depth++;\n options.resolver.actions[depth].push(function () {\n return resolveExternal(options.openapi, ref, options, function (data, source, options) {\n if (!refs[ref].resolved) {\n let external = {};\n external.context = refs[ref];\n external.$ref = ref;\n external.original = clone(data);\n external.updated = data;\n external.source = source;\n options.externals.push(external);\n refs[ref].resolved = true;\n }\n\n let localOptions = Object.assign({}, options, { source: '',\n resolver: {actions: options.resolver.actions,\n depth: options.resolver.actions.length-1, base: options.resolver.base } });\n if (options.patch && refs[ref].description && !data.description &&\n (typeof data === 'object')) {\n data.description = refs[ref].description;\n }\n refs[ref].data = data;\n\n // sorting $refs by length causes bugs (due to overlapping regions?)\n let pointers = unique(refs[ref].paths);\n pointers = pointers.sort(function(a,b){\n const aComp = (a.startsWith('#/components/') || a.startsWith('#/definitions/'));\n const bComp = (b.startsWith('#/components/') || b.startsWith('#/definitions/'));\n if (aComp && !bComp) return -1;\n if (bComp && !aComp) return +1;\n return 0;\n });\n\n for (let ptr of pointers) {\n // shared x-ms-examples $refs confuse the fixupRefs heuristic in index.js\n if (refs[ref].resolvedAt && (ptr !== refs[ref].resolvedAt) && (ptr.indexOf('x-ms-examples/')<0)) {\n if (options.verbose>1) console.warn('Creating pointer to data at', ptr);\n jptr(options.openapi, ptr, { $ref: refs[ref].resolvedAt+refs[ref].extras[ptr], 'x-miro': ref+refs[ref].extras[ptr] }); // resolutionCase:E (new object)\n }\n else {\n if (refs[ref].resolvedAt) {\n if (options.verbose>1) console.warn('Avoiding circular reference');\n }\n else {\n refs[ref].resolvedAt = ptr;\n if (options.verbose>1) console.warn('Creating initial clone of data at', ptr);\n }\n let cdata = clone(data);\n jptr(options.openapi, ptr, cdata); // resolutionCase:F (cloned:yes)\n }\n }\n if (options.resolver.actions[localOptions.resolver.depth].length === 0) {\n //options.resolver.actions[localOptions.resolver.depth].push(function () { return scanExternalRefs(localOptions) });\n options.resolver.actions[localOptions.resolver.depth].push(function () { return findExternalRefs(localOptions) }); // findExternalRefs calls scanExternalRefs\n }\n });\n });\n }\n }\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n\n let result = {options:options};\n result.actions = options.resolver.actions[options.resolver.depth];\n res(result);\n });\n}\n\nconst serial = funcs =>\n funcs.reduce((promise, func) =>\n promise.then(result => func().then(Array.prototype.concat.bind(result))), Promise.resolve([]));\n\nfunction loopReferences(options, res, rej) {\n options.resolver.actions.push([]);\n findExternalRefs(options)\n .then(function (data) {\n serial(data.actions)\n .then(function () {\n if (options.resolver.depth>=options.resolver.actions.length) {\n console.warn('Ran off the end of resolver actions');\n return res(true);\n } else {\n options.resolver.depth++;\n if (options.resolver.actions[options.resolver.depth].length) {\n setTimeout(function () {\n loopReferences(data.options, res, rej);\n }, 0);\n }\n else {\n if (options.verbose>1) console.warn(common.colour.yellow+'Finished external resolution!',common.colour.normal);\n if (options.resolveInternal) {\n if (options.verbose>1) console.warn(common.colour.yellow+'Starting internal resolution!',common.colour.normal);\n options.openapi = deRef(options.openapi,options.original,{verbose:options.verbose-1});\n if (options.verbose>1) console.warn(common.colour.yellow+'Finished internal resolution!',common.colour.normal);\n }\n recurse(options.openapi,{},function(obj,key,state){\n if (isRef(obj, key)) {\n if (!options.preserveMiro) delete obj['x-miro'];\n }\n });\n res(options);\n }\n }\n })\n .catch(function (ex) {\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n}\n\nfunction setupOptions(options) {\n if (!options.cache) options.cache = {};\n if (!options.fetch) options.fetch = fetch;\n\n if (options.source) {\n let srcUrl = url.parse(options.source);\n if (!srcUrl.protocol || srcUrl.protocol.length <= 2) { // windows drive-letters\n options.source = path.resolve(options.source);\n }\n }\n\n options.externals = [];\n options.externalRefs = {};\n options.rewriteRefs = true;\n options.resolver = {};\n options.resolver.depth = 0;\n options.resolver.base = options.source;\n options.resolver.actions = [[]];\n}\n\n/** compatibility function for swagger2openapi */\nfunction optionalResolve(options) {\n setupOptions(options);\n return new Promise(function (res, rej) {\n if (options.resolve)\n loopReferences(options, res, rej)\n else\n res(options);\n });\n}\n\nfunction resolve(openapi,source,options) {\n if (!options) options = {};\n options.openapi = openapi;\n options.source = source;\n options.resolve = true;\n setupOptions(options);\n return new Promise(function (res, rej) {\n loopReferences(options, res, rej)\n });\n}\n\nmodule.exports = {\n optionalResolve: optionalResolve,\n resolve: resolve\n};\n\n","'use strict';\n\n/**\n* functions to walk an OpenAPI schema object and traverse all subschemas\n* calling a callback function on each one\n*/\n\n/**\n* obtains the default starting state for the `state` object used\n* by walkSchema\n* @return the state object suitable for use in walkSchema\n*/\nfunction getDefaultState() {\n return { depth: 0, seen: new WeakMap(), top: true, combine: false, allowRefSiblings: false };\n}\n\n/**\n* begins the walk of a schema object\n* @param schema the schema object to walk\n* @param parent the parent schema, if any. Use empty object if none\n* @param state the initial starting state of the walker, usually obtained from `getDefaultState`. Use empty object to auto-initialise\n* @param callback a function taking a schema, parent and state to be called on this and all subschemas\n* @return the schema object\n*/\nfunction walkSchema(schema, parent, state, callback) {\n\n if (typeof state.depth === 'undefined') state = getDefaultState();\n if ((schema === null) || (typeof schema === 'undefined')) return schema;\n if (typeof schema.$ref !== 'undefined') {\n let temp = {$ref:schema.$ref};\n if (state.allowRefSiblings && schema.description) {\n temp.description = schema.description;\n }\n callback(temp,parent,state);\n return temp; // all other properties SHALL be ignored\n }\n\n if (state.combine) {\n if (schema.allOf && Array.isArray(schema.allOf) && schema.allOf.length === 1) {\n schema = Object.assign({},schema.allOf[0],schema);\n delete schema.allOf;\n }\n if (schema.anyOf && Array.isArray(schema.anyOf) && schema.anyOf.length === 1) {\n schema = Object.assign({},schema.anyOf[0],schema);\n delete schema.anyOf;\n }\n if (schema.oneOf && Array.isArray(schema.oneOf) && schema.oneOf.length === 1) {\n schema = Object.assign({},schema.oneOf[0],schema);\n delete schema.oneOf;\n }\n }\n\n callback(schema,parent,state);\n if (state.seen.has(schema)) {\n return schema;\n }\n //else\n if ((typeof schema === 'object') && (schema !== null)) state.seen.set(schema,true);\n state.top = false;\n state.depth++;\n\n if (typeof schema.items !== 'undefined') {\n state.property = 'items';\n walkSchema(schema.items,schema,state,callback);\n }\n if (schema.additionalItems) {\n if (typeof schema.additionalItems === 'object') {\n state.property = 'additionalItems';\n walkSchema(schema.additionalItems,schema,state,callback);\n }\n }\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n state.property = 'additionalProperties';\n walkSchema(schema.additionalProperties,schema,state,callback);\n }\n }\n if (schema.properties) {\n for (let prop in schema.properties) {\n let subSchema = schema.properties[prop];\n state.property = 'properties/'+prop;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.patternProperties) {\n for (let prop in schema.patternProperties) {\n let subSchema = schema.patternProperties[prop];\n state.property = 'patternProperties/'+prop;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.allOf) {\n for (let index in schema.allOf) {\n let subSchema = schema.allOf[index];\n state.property = 'allOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.anyOf) {\n for (let index in schema.anyOf) {\n let subSchema = schema.anyOf[index];\n state.property = 'anyOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.oneOf) {\n for (let index in schema.oneOf) {\n let subSchema = schema.oneOf[index];\n state.property = 'oneOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.not) {\n state.property = 'not';\n walkSchema(schema.not,schema,state,callback);\n }\n state.depth--;\n return schema;\n}\n\nmodule.exports = {\n getDefaultState: getDefaultState,\n walkSchema: walkSchema\n};\n\n","'use strict';\n\n/**\n* a collection of cloning functions\n*/\n\n/**\n* a no-op placeholder which returns the given object unchanged\n* useful for when a clone function needs to be passed but cloning is not\n* required\n* @param obj the input object\n* @return the input object, unchanged\n*/\nfunction nop(obj) {\n return obj;\n}\n\n/**\n* clones the given object using JSON.parse and JSON.stringify\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n* clones the given object's properties shallowly, ignores properties from prototype\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction shallowClone(obj) {\n let result = {};\n for (let p in obj) {\n if (obj.hasOwnProperty(p)) {\n result[p] = obj[p];\n }\n }\n return result;\n}\n\n/**\n* clones the given object's properties deeply, ignores properties from prototype\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction deepClone(obj) {\n let result = Array.isArray(obj) ? [] : {};\n for (let p in obj) {\n if (obj.hasOwnProperty(p) || Array.isArray(obj)) {\n result[p] = (typeof obj[p] === 'object') ? deepClone(obj[p]) : obj[p];\n }\n }\n return result;\n}\n\n/**\n* clones the given object's properties shallowly, using Object.assign\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction fastClone(obj) {\n return Object.assign({},obj);\n}\n\n/**\n* Source: stackoverflow http://bit.ly/2A1Kha6\n*/\n\nfunction circularClone(obj, hash) {\n if (!hash) hash = new WeakMap();\n // Do not try to clone primitives or functions\n if (Object(obj) !== obj || obj instanceof Function) return obj;\n if (hash.has(obj)) return hash.get(obj); // Cyclic reference\n try { // Try to run constructor (without arguments, as we don't know them)\n var result = new obj.constructor();\n } catch(e) { // Constructor failed, create object without running the constructor\n result = Object.create(Object.getPrototypeOf(obj));\n }\n // Optional: support for some standard constructors (extend as desired)\n /*if (obj instanceof Map)\n Array.from(obj, ([key, val]) => result.set(circularClone(key, hash),\n circularClone(val, hash)) );\n else if (obj instanceof Set)\n Array.from(obj, (key) => result.add(circularClone(key, hash)) );\n */\n // Register in hash\n hash.set(obj, result);\n // Clone and assign enumerable own properties recursively\n return Object.assign(result, ...Object.keys(obj).map (\n key => ({ [key]: circularClone(obj[key], hash) }) ));\n}\n\nmodule.exports = {\n nop : nop,\n clone : clone,\n shallowClone : shallowClone,\n deepClone : deepClone,\n fastClone : fastClone,\n circularClone : circularClone\n};\n\n","'use strict';\n\nconst recurse = require('./recurse.js').recurse;\nconst clone = require('./clone.js').shallowClone;\nconst jptr = require('./jptr.js').jptr;\nconst isRef = require('./isref.js').isRef;\n\nvar getLogger = function (options) {\n if (options && options.verbose) {\n return {\n warn: function() {\n var args = Array.prototype.slice.call(arguments);\n console.warn.apply(console, args);\n }\n }\n }\n else {\n return {\n warn: function() {\n //nop\n }\n }\n }\n}\n\n/**\n* dereferences the given object\n* @param o the object to dereference\n* @definitions a source of definitions to reference\n* @options optional settings (used recursively)\n* @return the dereferenced object\n*/\nfunction dereference(o,definitions,options) {\n if (!options) options = {};\n if (!options.cache) options.cache = {};\n if (!options.state) options.state = {};\n options.state.identityDetection = true;\n // options.depth allows us to limit cloning to the first invocation\n options.depth = (options.depth ? options.depth+1 : 1);\n let obj = (options.depth > 1 ? o : clone(o));\n let container = { data: obj };\n let defs = (options.depth > 1 ? definitions : clone(definitions));\n // options.master is the top level object, regardless of depth\n if (!options.master) options.master = obj;\n\n let logger = getLogger(options);\n\n let changes = 1;\n while (changes > 0) {\n changes = 0;\n recurse(container,options.state,function(obj,key,state){\n if (isRef(obj,key)) {\n let $ref = obj[key]; // immutable\n changes++;\n if (!options.cache[$ref]) {\n let entry = {};\n entry.path = state.path.split('/$ref')[0];\n entry.key = $ref;\n logger.warn('Dereffing %s at %s',$ref,entry.path);\n entry.source = defs;\n entry.data = jptr(entry.source,entry.key);\n if (entry.data === false) {\n entry.data = jptr(options.master,entry.key);\n entry.source = options.master;\n }\n if (entry.data === false) {\n logger.warn('Missing $ref target',entry.key);\n }\n options.cache[$ref] = entry;\n entry.data = state.parent[state.pkey] = dereference(jptr(entry.source,entry.key),entry.source,options);\n if (options.$ref && (typeof state.parent[state.pkey] === 'object') && (state.parent[state.pkey] !== null)) state.parent[state.pkey][options.$ref] = $ref;\n entry.resolved = true;\n }\n else {\n let entry = options.cache[$ref];\n if (entry.resolved) {\n // we have already seen and resolved this reference\n logger.warn('Patching %s for %s',$ref,entry.path);\n state.parent[state.pkey] = entry.data;\n if (options.$ref && (typeof state.parent[state.pkey] === 'object') && (state.parent[state.pkey] !== null)) state.parent[state.pkey][options.$ref] = $ref;\n }\n else if ($ref === entry.path) {\n // reference to itself, throw\n throw new Error(`Tight circle at ${entry.path}`);\n }\n else {\n // we're dealing with a circular reference here\n logger.warn('Unresolved ref');\n state.parent[state.pkey] = jptr(entry.source,entry.path);\n if (state.parent[state.pkey] === false) {\n state.parent[state.pkey] = jptr(entry.source,entry.key);\n }\n if (options.$ref && (typeof state.parent[state.pkey] === 'object') && (state.parent[state.pkey] !== null)) state.parent[options.$ref] = $ref;\n }\n }\n }\n });\n }\n return container.data;\n}\n\nmodule.exports = {\n dereference : dereference\n};\n\n","'use strict';\n\nfunction isRef(obj,key) {\n return ((key === '$ref') && (!!obj && typeof obj[key] === 'string'));\n}\n\nmodule.exports = {\n isRef: isRef\n};\n\n","'use strict';\n\n/**\n* escapes JSON Pointer using ~0 for ~ and ~1 for /\n* @param s the string to escape\n* @return the escaped string\n*/\nfunction jpescape(s) {\n return s.replace(/\\~/g, '~0').replace(/\\//g, '~1');\n}\n\n/**\n* unescapes JSON Pointer using ~0 for ~ and ~1 for /\n* @param s the string to unescape\n* @return the unescaped string\n*/\nfunction jpunescape(s) {\n return s.replace(/\\~1/g, '/').replace(/~0/g, '~');\n}\n\n// JSON Pointer specification: http://tools.ietf.org/html/rfc6901\n\n/**\n* from obj, return the property with a JSON Pointer prop, optionally setting it\n* to newValue\n* @param obj the object to point into\n* @param prop the JSON Pointer or JSON Reference\n* @param newValue optional value to set the property to\n* @return the found property, or false\n*/\nfunction jptr(obj, prop, newValue) {\n if (typeof obj === 'undefined') return false;\n if (!prop || typeof prop !== 'string' || (prop === '#')) return (typeof newValue !== 'undefined' ? newValue : obj);\n\n if (prop.indexOf('#')>=0) {\n let parts = prop.split('#');\n let uri = parts[0];\n if (uri) return false; // we do internal resolution only\n prop = parts[1];\n prop = decodeURIComponent(prop.slice(1).split('+').join(' '));\n }\n if (prop.startsWith('/')) prop = prop.slice(1);\n\n let components = prop.split('/');\n for (let i=0;i<components.length;i++) {\n components[i] = jpunescape(components[i]);\n\n let setAndLast = (typeof newValue !== 'undefined') && (i == components.length-1);\n\n let index = parseInt(components[i],10);\n if (!Array.isArray(obj) || isNaN(index) || (index.toString() !== components[i])) {\n index = (Array.isArray(obj) && components[i] === '-') ? -2 : -1;\n }\n else {\n components[i] = (i > 0) ? components[i-1] : ''; // backtrack to indexed property name\n }\n\n if ((index != -1) || (obj && obj.hasOwnProperty(components[i]))) {\n if (index >= 0) {\n if (setAndLast) {\n obj[index] = newValue;\n }\n obj = obj[index];\n }\n else if (index === -2) {\n if (setAndLast) {\n if (Array.isArray(obj)) {\n obj.push(newValue);\n }\n return newValue;\n }\n else return undefined;\n }\n else {\n if (setAndLast) {\n obj[components[i]] = newValue;\n }\n obj = obj[components[i]];\n }\n }\n else {\n if ((typeof newValue !== 'undefined') && (typeof obj === 'object') &&\n (!Array.isArray(obj))) {\n obj[components[i]] = (setAndLast ? newValue : ((components[i+1] === '0' || components[i+1] === '-') ? [] : {}));\n obj = obj[components[i]];\n }\n else return false;\n }\n }\n return obj;\n}\n\nmodule.exports = {\n jptr : jptr,\n jpescape : jpescape,\n jpunescape : jpunescape\n};\n","'use strict';\n\nconst jpescape = require('./jptr.js').jpescape;\n\nfunction defaultState() {\n return {\n path: '#',\n depth: 0,\n pkey: '',\n parent: {},\n payload: {},\n seen: new WeakMap(),\n identity: false,\n identityDetection: false\n };\n}\n\n/**\n* recurses through the properties of an object, given an optional starting state\n* anything you pass in state.payload is passed to the callback each time\n* @param object the object to recurse through\n* @param state optional starting state, can be set to null or {}\n* @param callback the function which receives object,key,state on each property\n*/\nfunction recurse(object, state, callback) {\n if (!state) state = {depth:0};\n if (!state.depth) {\n state = Object.assign({},defaultState(),state);\n }\n if (typeof object !== 'object') return;\n let oPath = state.path;\n for (let key in object) {\n state.key = key;\n state.path = state.path + '/' + encodeURIComponent(jpescape(key));\n state.identityPath = state.seen.get(object[key]);\n state.identity = (typeof state.identityPath !== 'undefined');\n if (object.hasOwnProperty(key)) {\n callback(object, key, state);\n }\n if ((typeof object[key] === 'object') && (!state.identity)) {\n if (state.identityDetection && !Array.isArray(object[key]) && object[key] !== null) {\n state.seen.set(object[key],state.path);\n }\n let newState = {};\n newState.parent = object;\n newState.path = state.path;\n newState.depth = state.depth ? state.depth+1 : 1;\n newState.pkey = key;\n newState.payload = state.payload;\n newState.seen = state.seen;\n newState.identity = false;\n newState.identityDetection = state.identityDetection;\n recurse(object[key], newState, callback);\n }\n state.path = oPath;\n }\n}\n\nmodule.exports = {\n recurse : recurse\n};\n\n","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!../../esbuild-loader/dist/index.cjs??ruleSet[1].rules[1].use[2]!./perfect-scrollbar.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!../../esbuild-loader/dist/index.cjs??ruleSet[1].rules[1].use[2]!./perfect-scrollbar.css\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","// @ts-check\n'use strict';\n\nconst fs = require('fs');\nconst url = require('url');\nconst pathlib = require('path');\n\nconst maybe = require('call-me-maybe');\nconst fetch = require('node-fetch-h2');\nconst yaml = require('yaml');\n\nconst jptr = require('reftools/lib/jptr.js');\nconst resolveInternal = jptr.jptr;\nconst isRef = require('reftools/lib/isref.js').isRef;\nconst clone = require('reftools/lib/clone.js').clone;\nconst cclone = require('reftools/lib/clone.js').circularClone;\nconst recurse = require('reftools/lib/recurse.js').recurse;\nconst resolver = require('oas-resolver');\nconst sw = require('oas-schema-walker');\nconst common = require('oas-kit-common');\n\nconst statusCodes = require('./lib/statusCodes.js').statusCodes;\n\nconst ourVersion = require('./package.json').version;\n\n// TODO handle specification-extensions with plugins?\n\nconst targetVersion = '3.0.0';\nlet componentNames; // initialised in main\n\nclass S2OError extends Error {\n constructor(message) {\n super(message);\n this.name = 'S2OError';\n }\n}\n\nfunction throwError(message, options) {\n let err = new S2OError(message);\n err.options = options;\n if (options.promise) {\n options.promise.reject(err);\n }\n else {\n throw err;\n }\n}\n\nfunction throwOrWarn(message, container, options) {\n if (options.warnOnly) {\n container[options.warnProperty||'x-s2o-warning'] = message;\n }\n else {\n throwError(message, options);\n }\n}\n\nfunction fixUpSubSchema(schema,parent,options) {\n if (schema.nullable) options.patches++;\n if (schema.discriminator && typeof schema.discriminator === 'string') {\n schema.discriminator = { propertyName: schema.discriminator };\n }\n if (schema.items && Array.isArray(schema.items)) {\n if (schema.items.length === 0) {\n schema.items = {};\n }\n else if (schema.items.length === 1) {\n schema.items = schema.items[0];\n }\n else schema.items = { anyOf: schema.items };\n }\n\n if (schema.type && Array.isArray(schema.type)) {\n if (options.patch) {\n options.patches++;\n if (schema.type.length === 0) {\n delete schema.type;\n }\n else {\n if (!schema.oneOf) schema.oneOf = [];\n for (let type of schema.type) {\n let newSchema = {};\n if (type === 'null') {\n schema.nullable = true;\n }\n else {\n newSchema.type = type;\n for (let prop of common.arrayProperties) {\n if (typeof schema.prop !== 'undefined') {\n newSchema[prop] = schema[prop];\n delete schema[prop];\n }\n }\n }\n if (newSchema.type) {\n schema.oneOf.push(newSchema);\n }\n }\n delete schema.type;\n if (schema.oneOf.length === 0) {\n delete schema.oneOf; // means was just null => nullable\n }\n else if (schema.oneOf.length < 2) {\n schema.type = schema.oneOf[0].type;\n if (Object.keys(schema.oneOf[0]).length > 1) {\n throwOrWarn('Lost properties from oneOf',schema,options);\n }\n delete schema.oneOf;\n }\n }\n // do not else this\n if (schema.type && Array.isArray(schema.type) && schema.type.length === 1) {\n schema.type = schema.type[0];\n }\n }\n else {\n throwError('(Patchable) schema type must not be an array', options);\n }\n }\n\n if (schema.type && schema.type === 'null') {\n delete schema.type;\n schema.nullable = true;\n }\n if ((schema.type === 'array') && (!schema.items)) {\n schema.items = {};\n }\n if (schema.type === 'file') {\n schema.type = 'string';\n schema.format = 'binary';\n }\n if (typeof schema.required === 'boolean') {\n if (schema.required && schema.name) {\n if (typeof parent.required === 'undefined') {\n parent.required = [];\n }\n if (Array.isArray(parent.required)) parent.required.push(schema.name);\n }\n delete schema.required;\n }\n\n // TODO if we have a nested properties (object inside an object) and the\n // *parent* type is not set, force it to object\n // TODO if default is set but type is not set, force type to typeof default\n\n if (schema.xml && typeof schema.xml.namespace === 'string') {\n if (!schema.xml.namespace) delete schema.xml.namespace;\n }\n if (typeof schema.allowEmptyValue !== 'undefined') {\n options.patches++;\n delete schema.allowEmptyValue;\n }\n}\n\nfunction fixUpSubSchemaExtensions(schema,parent) {\n if (schema[\"x-required\"] && Array.isArray(schema[\"x-required\"])) {\n if (!schema.required) schema.required = [];\n schema.required = schema.required.concat(schema[\"x-required\"]);\n delete schema[\"x-required\"];\n }\n if (schema[\"x-anyOf\"]) {\n schema.anyOf = schema[\"x-anyOf\"];\n delete schema[\"x-anyOf\"];\n }\n if (schema[\"x-oneOf\"]) {\n schema.oneOf = schema[\"x-oneOf\"];\n delete schema[\"x-oneOf\"];\n }\n if (schema[\"x-not\"]) {\n schema.not = schema[\"x-not\"];\n delete schema[\"x-not\"];\n }\n if (typeof schema[\"x-nullable\"] === 'boolean') {\n schema.nullable = schema[\"x-nullable\"];\n delete schema[\"x-nullable\"];\n }\n if ((typeof schema[\"x-discriminator\"] === 'object') && (typeof schema[\"x-discriminator\"].propertyName === 'string')) {\n schema.discriminator = schema[\"x-discriminator\"];\n delete schema[\"x-discriminator\"];\n for (let entry in schema.discriminator.mapping) {\n let schemaOrRef = schema.discriminator.mapping[entry];\n if (schemaOrRef.startsWith('#/definitions/')) {\n schema.discriminator.mapping[entry] = schemaOrRef.replace('#/definitions/','#/components/schemas/');\n }\n }\n }\n}\n\nfunction fixUpSchema(schema,options) {\n sw.walkSchema(schema,{},{},function(schema,parent,state){\n fixUpSubSchemaExtensions(schema,parent);\n fixUpSubSchema(schema,parent,options);\n });\n}\n\nfunction getMiroComponentName(ref) {\n if (ref.indexOf('#')>=0) {\n ref = ref.split('#')[1].split('/').pop();\n }\n else {\n ref = ref.split('/').pop().split('.')[0];\n }\n return encodeURIComponent(common.sanitise(ref));\n}\n\nfunction fixupRefs(obj, key, state) {\n let options = state.payload.options;\n if (isRef(obj,key)) {\n if (obj[key].startsWith('#/components/')) {\n // no-op\n }\n else if (obj[key] === '#/consumes') {\n // people are *so* creative\n delete obj[key];\n state.parent[state.pkey] = clone(options.openapi.consumes);\n }\n else if (obj[key] === '#/produces') {\n // and by creative, I mean devious\n delete obj[key];\n state.parent[state.pkey] = clone(options.openapi.produces);\n }\n else if (obj[key].startsWith('#/definitions/')) {\n //only the first part of a schema component name must be sanitised\n let keys = obj[key].replace('#/definitions/', '').split('/');\n const ref = jptr.jpunescape(keys[0]);\n\n let newKey = componentNames.schemas[decodeURIComponent(ref)]; // lookup, resolves a $ref\n if (newKey) {\n keys[0] = newKey;\n }\n else {\n throwOrWarn('Could not resolve reference '+obj[key],obj,options);\n }\n obj[key] = '#/components/schemas/' + keys.join('/');\n }\n else if (obj[key].startsWith('#/parameters/')) {\n // for extensions like Apigee's x-templates\n obj[key] = '#/components/parameters/' + common.sanitise(obj[key].replace('#/parameters/', ''));\n }\n else if (obj[key].startsWith('#/responses/')) {\n // for extensions like Apigee's x-templates\n obj[key] = '#/components/responses/' + common.sanitise(obj[key].replace('#/responses/', ''));\n }\n else if (obj[key].startsWith('#')) {\n // fixes up direct $refs or those created by resolvers\n let target = clone(jptr.jptr(options.openapi,obj[key]));\n if (target === false) throwOrWarn('direct $ref not found '+obj[key],obj,options)\n else if (options.refmap[obj[key]]) {\n obj[key] = options.refmap[obj[key]];\n }\n else {\n // we use a heuristic to determine what kind of thing is being referenced\n let oldRef = obj[key];\n oldRef = oldRef.replace('/properties/headers/','');\n oldRef = oldRef.replace('/properties/responses/','');\n oldRef = oldRef.replace('/properties/parameters/','');\n oldRef = oldRef.replace('/properties/schemas/','');\n let type = 'schemas';\n let schemaIndex = oldRef.lastIndexOf('/schema');\n type = (oldRef.indexOf('/headers/')>schemaIndex) ? 'headers' :\n ((oldRef.indexOf('/responses/')>schemaIndex) ? 'responses' :\n ((oldRef.indexOf('/example')>schemaIndex) ? 'examples' :\n ((oldRef.indexOf('/x-')>schemaIndex) ? 'extensions' :\n ((oldRef.indexOf('/parameters/')>schemaIndex) ? 'parameters' : 'schemas'))));\n\n // non-body/form parameters have not moved in the overall structure (like responses)\n // but extracting the requestBodies can cause the *number* of parameters to change\n\n if (type === 'schemas') {\n fixUpSchema(target,options);\n }\n\n if ((type !== 'responses') && (type !== 'extensions')) {\n let prefix = type.substr(0,type.length-1);\n if ((prefix === 'parameter') && target.name && (target.name === common.sanitise(target.name))) {\n prefix = encodeURIComponent(target.name);\n }\n\n let suffix = 1;\n if (obj['x-miro']) {\n prefix = getMiroComponentName(obj['x-miro']);\n suffix = '';\n }\n\n while (jptr.jptr(options.openapi,'#/components/'+type+'/'+prefix+suffix)) {\n suffix = (suffix === '' ? 2 : ++suffix);\n }\n\n let newRef = '#/components/'+type+'/'+prefix+suffix;\n let refSuffix = '';\n\n if (type === 'examples') {\n target = { value: target };\n refSuffix = '/value';\n }\n\n jptr.jptr(options.openapi,newRef,target);\n options.refmap[obj[key]] = newRef+refSuffix;\n obj[key] = newRef+refSuffix;\n }\n }\n }\n\n delete obj['x-miro'];\n // do this last - rework cases where $ref object has sibling properties\n if (Object.keys(obj).length > 1) {\n const tmpRef = obj[key];\n const inSchema = state.path.indexOf('/schema') >= 0; // not perfect, but in the absence of a reasonably-sized and complete OAS 2.0 parser...\n if (options.refSiblings === 'preserve') {\n // no-op\n }\n else if (inSchema && (options.refSiblings === 'allOf')) {\n delete obj.$ref;\n state.parent[state.pkey] = { allOf: [ { $ref: tmpRef }, obj ]};\n }\n else { // remove, or not 'preserve' and not in a schema\n state.parent[state.pkey] = { $ref: tmpRef };\n }\n }\n\n }\n if ((key === 'x-ms-odata') && (typeof obj[key] === 'string') && (obj[key].startsWith('#/'))) {\n let keys = obj[key].replace('#/definitions/', '').replace('#/components/schemas/','').split('/');\n let newKey = componentNames.schemas[decodeURIComponent(keys[0])]; // lookup, resolves a $ref\n if (newKey) {\n keys[0] = newKey;\n }\n else {\n throwOrWarn('Could not resolve reference '+obj[key],obj,options);\n }\n obj[key] = '#/components/schemas/' + keys.join('/');\n }\n}\n\n/*\n* This has to happen as a separate pass because multiple $refs may point\n* through elements of the same path\n*/\nfunction dedupeRefs(openapi, options) {\n for (let ref in options.refmap) {\n jptr.jptr(openapi,ref,{ $ref: options.refmap[ref] });\n }\n}\n\nfunction processSecurity(securityObject) {\n for (let s in securityObject) {\n for (let k in securityObject[s]) {\n let sname = common.sanitise(k);\n if (k !== sname) {\n securityObject[s][sname] = securityObject[s][k];\n delete securityObject[s][k];\n }\n }\n }\n}\n\nfunction processSecurityScheme(scheme, options) {\n if (scheme.type === 'basic') {\n scheme.type = 'http';\n scheme.scheme = 'basic';\n }\n if (scheme.type === 'oauth2') {\n let flow = {};\n let flowName = scheme.flow;\n if (scheme.flow === 'application') flowName = 'clientCredentials';\n if (scheme.flow === 'accessCode') flowName = 'authorizationCode';\n if (typeof scheme.authorizationUrl !== 'undefined') flow.authorizationUrl = scheme.authorizationUrl.split('?')[0].trim() || '/';\n if (typeof scheme.tokenUrl === 'string') flow.tokenUrl = scheme.tokenUrl.split('?')[0].trim() || '/';\n flow.scopes = scheme.scopes || {};\n scheme.flows = {};\n scheme.flows[flowName] = flow;\n delete scheme.flow;\n delete scheme.authorizationUrl;\n delete scheme.tokenUrl;\n delete scheme.scopes;\n if (typeof scheme.name !== 'undefined') {\n if (options.patch) {\n options.patches++;\n delete scheme.name;\n }\n else {\n throwError('(Patchable) oauth2 securitySchemes should not have name property', options);\n }\n }\n }\n}\n\nfunction keepParameters(value) {\n return (value && !value[\"x-s2o-delete\"]);\n}\n\nfunction processHeader(header, options) {\n if (header.$ref) {\n header.$ref = header.$ref.replace('#/responses/', '#/components/responses/');\n }\n else {\n if (header.type && !header.schema) {\n header.schema = {};\n }\n if (header.type) header.schema.type = header.type;\n if (header.items && header.items.type !== 'array') {\n if (header.items.collectionFormat !== header.collectionFormat) {\n throwOrWarn('Nested collectionFormats are not supported', header, options);\n }\n delete header.items.collectionFormat;\n }\n if (header.type === 'array') {\n if (header.collectionFormat === 'ssv') {\n throwOrWarn('collectionFormat:ssv is no longer supported for headers', header, options); // not lossless\n }\n else if (header.collectionFormat === 'pipes') {\n throwOrWarn('collectionFormat:pipes is no longer supported for headers', header, options); // not lossless\n }\n else if (header.collectionFormat === 'multi') {\n header.explode = true;\n }\n else if (header.collectionFormat === 'tsv') {\n throwOrWarn('collectionFormat:tsv is no longer supported', header, options); // not lossless\n header[\"x-collectionFormat\"] = 'tsv';\n }\n else { // 'csv'\n header.style = 'simple';\n }\n delete header.collectionFormat;\n }\n else if (header.collectionFormat) {\n if (options.patch) {\n options.patches++;\n delete header.collectionFormat;\n }\n else {\n throwError('(Patchable) collectionFormat is only applicable to header.type array', options);\n }\n }\n delete header.type;\n for (let prop of common.parameterTypeProperties) {\n if (typeof header[prop] !== 'undefined') {\n header.schema[prop] = header[prop];\n delete header[prop];\n }\n }\n for (let prop of common.arrayProperties) {\n if (typeof header[prop] !== 'undefined') {\n header.schema[prop] = header[prop];\n delete header[prop];\n }\n }\n }\n}\n\nfunction fixParamRef(param, options) {\n if (param.$ref.indexOf('#/parameters/') >= 0) {\n let refComponents = param.$ref.split('#/parameters/');\n param.$ref = refComponents[0] + '#/components/parameters/' + common.sanitise(refComponents[1]);\n }\n if (param.$ref.indexOf('#/definitions/') >= 0) {\n throwOrWarn('Definition used as parameter', param, options);\n }\n}\n\nfunction attachRequestBody(op,options) {\n let newOp = {};\n for (let key of Object.keys(op)) {\n newOp[key] = op[key];\n if (key === 'parameters') {\n newOp.requestBody = {};\n if (options.rbname) newOp[options.rbname] = '';\n }\n }\n newOp.requestBody = {}; // just in case there are no parameters\n return newOp;\n}\n\n/**\n * @returns op, as it may have changed\n */\nfunction processParameter(param, op, path, method, index, openapi, options) {\n let result = {};\n let singularRequestBody = true;\n let originalType;\n\n if (op && op.consumes && (typeof op.consumes === 'string')) {\n if (options.patch) {\n options.patches++;\n op.consumes = [op.consumes];\n }\n else {\n return throwError('(Patchable) operation.consumes must be an array', options);\n }\n }\n if (!Array.isArray(openapi.consumes)) delete openapi.consumes;\n let consumes = ((op ? op.consumes : null) || (openapi.consumes || [])).filter(common.uniqueOnly);\n\n if (param && param.$ref && (typeof param.$ref === 'string')) {\n // if we still have a ref here, it must be an internal one\n fixParamRef(param, options);\n let ptr = decodeURIComponent(param.$ref.replace('#/components/parameters/', ''));\n let rbody = false;\n let target = openapi.components.parameters[ptr]; // resolves a $ref, must have been sanitised already\n\n if (((!target) || (target[\"x-s2o-delete\"])) && param.$ref.startsWith('#/')) {\n // if it's gone, chances are it's a requestBody component now unless spec was broken\n param[\"x-s2o-delete\"] = true;\n rbody = true;\n }\n\n // shared formData parameters from swagger or path level could be used in any combination.\n // we dereference all op.requestBody's then hash them and pull out common ones later\n\n if (rbody) {\n let ref = param.$ref;\n let newParam = resolveInternal(openapi, param.$ref);\n if (!newParam && ref.startsWith('#/')) {\n throwOrWarn('Could not resolve reference ' + ref, param, options);\n }\n else {\n if (newParam) param = newParam; // preserve reference\n }\n }\n }\n\n if (param && (param.name || param.in)) { // if it's a real parameter OR we've dereferenced it\n\n if (typeof param['x-deprecated'] === 'boolean') {\n param.deprecated = param['x-deprecated'];\n delete param['x-deprecated'];\n }\n\n if (typeof param['x-example'] !== 'undefined') {\n param.example = param['x-example'];\n delete param['x-example'];\n }\n\n if ((param.in !== 'body') && (!param.type)) {\n if (options.patch) {\n options.patches++;\n param.type = 'string';\n }\n else {\n throwError('(Patchable) parameter.type is mandatory for non-body parameters', options);\n }\n }\n if (param.type && typeof param.type === 'object' && param.type.$ref) {\n // $ref anywhere sensibility\n param.type = resolveInternal(openapi, param.type.$ref);\n }\n if (param.type === 'file') {\n param['x-s2o-originalType'] = param.type;\n originalType = param.type;\n }\n if (param.description && typeof param.description === 'object' && param.description.$ref) {\n // $ref anywhere sensibility\n param.description = resolveInternal(openapi, param.description.$ref);\n }\n if (param.description === null) delete param.description;\n\n let oldCollectionFormat = param.collectionFormat;\n if ((param.type === 'array') && !oldCollectionFormat) {\n oldCollectionFormat = 'csv';\n }\n if (oldCollectionFormat) {\n if (param.type !== 'array') {\n if (options.patch) {\n options.patches++;\n delete param.collectionFormat;\n }\n else {\n throwError('(Patchable) collectionFormat is only applicable to param.type array', options);\n }\n }\n if ((oldCollectionFormat === 'csv') && ((param.in === 'query') || (param.in === 'cookie'))) {\n param.style = 'form';\n param.explode = false;\n }\n if ((oldCollectionFormat === 'csv') && ((param.in === 'path') || (param.in === 'header'))) {\n param.style = 'simple';\n }\n if (oldCollectionFormat === 'ssv') {\n if (param.in === 'query') {\n param.style = 'spaceDelimited';\n }\n else {\n throwOrWarn('collectionFormat:ssv is no longer supported except for in:query parameters', param, options); // not lossless\n }\n }\n if (oldCollectionFormat === 'pipes') {\n if (param.in === 'query') {\n param.style = 'pipeDelimited';\n }\n else {\n throwOrWarn('collectionFormat:pipes is no longer supported except for in:query parameters', param, options); // not lossless\n }\n }\n if (oldCollectionFormat === 'multi') {\n param.explode = true;\n }\n if (oldCollectionFormat === 'tsv') {\n throwOrWarn('collectionFormat:tsv is no longer supported', param, options); // not lossless\n param[\"x-collectionFormat\"] = 'tsv';\n }\n delete param.collectionFormat;\n }\n\n if (param.type && (param.type !== 'body') && (param.in !== 'formData')) {\n if (param.items && param.schema) {\n throwOrWarn('parameter has array,items and schema', param, options);\n }\n else {\n if (param.schema) options.patches++; // already present\n if ((!param.schema) || (typeof param.schema !== 'object')) param.schema = {};\n param.schema.type = param.type;\n if (param.items) {\n param.schema.items = param.items;\n delete param.items;\n recurse(param.schema.items, null, function (obj, key, state) {\n if ((key === 'collectionFormat') && (typeof obj[key] === 'string')) {\n if (oldCollectionFormat && obj[key] !== oldCollectionFormat) {\n throwOrWarn('Nested collectionFormats are not supported', param, options);\n }\n delete obj[key]; // not lossless\n }\n // items in 2.0 was a subset of the JSON-Schema items\n // object, it gets fixed up below\n });\n }\n for (let prop of common.parameterTypeProperties) {\n if (typeof param[prop] !== 'undefined') param.schema[prop] = param[prop];\n delete param[prop];\n }\n }\n }\n\n if (param.schema) {\n fixUpSchema(param.schema,options);\n }\n\n if (param[\"x-ms-skip-url-encoding\"]) {\n if (param.in === 'query') { // might be in:path, not allowed in OAS3\n param.allowReserved = true;\n delete param[\"x-ms-skip-url-encoding\"];\n }\n }\n }\n\n if (param && param.in === 'formData') {\n // convert to requestBody component\n singularRequestBody = false;\n result.content = {};\n let contentType = 'application/x-www-form-urlencoded';\n if ((consumes.length) && (consumes.indexOf('multipart/form-data') >= 0)) {\n contentType = 'multipart/form-data';\n }\n\n result.content[contentType] = {};\n if (param.schema) {\n result.content[contentType].schema = param.schema;\n if (param.schema.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));\n }\n }\n else {\n result.content[contentType].schema = {};\n result.content[contentType].schema.type = 'object';\n result.content[contentType].schema.properties = {};\n result.content[contentType].schema.properties[param.name] = {};\n let schema = result.content[contentType].schema;\n let target = result.content[contentType].schema.properties[param.name];\n if (param.description) target.description = param.description;\n if (param.example) target.example = param.example;\n if (param.type) target.type = param.type;\n\n for (let prop of common.parameterTypeProperties) {\n if (typeof param[prop] !== 'undefined') target[prop] = param[prop];\n }\n if (param.required === true) {\n if (!schema.required) schema.required = [];\n schema.required.push(param.name);\n result.required = true;\n }\n if (typeof param.default !== 'undefined') target.default = param.default;\n if (target.properties) target.properties = param.properties;\n if (param.allOf) target.allOf = param.allOf; // new are anyOf, oneOf, not\n if ((param.type === 'array') && (param.items)) {\n target.items = param.items;\n if (target.items.collectionFormat) delete target.items.collectionFormat;\n }\n if ((originalType === 'file') || (param['x-s2o-originalType'] === 'file')) {\n target.type = 'string';\n target.format = 'binary';\n }\n\n // Copy any extensions on the form param to the target schema property.\n copyExtensions(param, target);\n }\n }\n else if (param && (param.type === 'file')) {\n // convert to requestBody\n if (param.required) result.required = param.required;\n result.content = {};\n result.content[\"application/octet-stream\"] = {};\n result.content[\"application/octet-stream\"].schema = {};\n result.content[\"application/octet-stream\"].schema.type = 'string';\n result.content[\"application/octet-stream\"].schema.format = 'binary';\n copyExtensions(param, result);\n }\n if (param && param.in === 'body') {\n result.content = {};\n if (param.name) result['x-s2o-name'] = (op && op.operationId ? common.sanitiseAll(op.operationId) : '') + ('_' + param.name).toCamelCase();\n if (param.description) result.description = param.description;\n if (param.required) result.required = param.required;\n\n // Set the \"request body name\" extension on the operation if requested.\n if (op && options.rbname && param.name) {\n op[options.rbname] = param.name;\n }\n if (param.schema && param.schema.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));\n }\n else if (param.schema && (param.schema.type === 'array') && param.schema.items && param.schema.items.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.items.$ref.replace('#/components/schemas/', '')) + 'Array';\n }\n\n if (!consumes.length) {\n consumes.push('application/json'); // TODO verify default\n }\n\n for (let mimetype of consumes) {\n result.content[mimetype] = {};\n result.content[mimetype].schema = clone(param.schema || {});\n fixUpSchema(result.content[mimetype].schema,options);\n }\n\n // Copy any extensions from the original parameter to the new requestBody\n copyExtensions(param, result);\n }\n\n if (Object.keys(result).length > 0) {\n param[\"x-s2o-delete\"] = true;\n // work out where to attach the requestBody\n if (op) {\n if (op.requestBody && singularRequestBody) {\n op.requestBody[\"x-s2o-overloaded\"] = true;\n let opId = op.operationId || index;\n\n throwOrWarn('Operation ' + opId + ' has multiple requestBodies', op, options);\n }\n else {\n if (!op.requestBody) {\n op = path[method] = attachRequestBody(op,options); // make sure we have one\n }\n if ((op.requestBody.content && op.requestBody.content[\"multipart/form-data\"])\n && (op.requestBody.content[\"multipart/form-data\"].schema) && (op.requestBody.content[\"multipart/form-data\"].schema.properties) && (result.content[\"multipart/form-data\"]) && (result.content[\"multipart/form-data\"].schema) && (result.content[\"multipart/form-data\"].schema.properties)) {\n op.requestBody.content[\"multipart/form-data\"].schema.properties =\n Object.assign(op.requestBody.content[\"multipart/form-data\"].schema.properties, result.content[\"multipart/form-data\"].schema.properties);\n op.requestBody.content[\"multipart/form-data\"].schema.required = (op.requestBody.content[\"multipart/form-data\"].schema.required || []).concat(result.content[\"multipart/form-data\"].schema.required||[]);\n if (!op.requestBody.content[\"multipart/form-data\"].schema.required.length) {\n delete op.requestBody.content[\"multipart/form-data\"].schema.required;\n }\n }\n else if ((op.requestBody.content && op.requestBody.content[\"application/x-www-form-urlencoded\"] && op.requestBody.content[\"application/x-www-form-urlencoded\"].schema && op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties)\n && result.content[\"application/x-www-form-urlencoded\"] && result.content[\"application/x-www-form-urlencoded\"].schema && result.content[\"application/x-www-form-urlencoded\"].schema.properties) {\n op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties =\n Object.assign(op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties, result.content[\"application/x-www-form-urlencoded\"].schema.properties);\n op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required = (op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required || []).concat(result.content[\"application/x-www-form-urlencoded\"].schema.required||[]);\n if (!op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required.length) {\n delete op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required;\n }\n }\n else {\n op.requestBody = Object.assign(op.requestBody, result);\n if (!op.requestBody['x-s2o-name']) {\n if (op.requestBody.schema && op.requestBody.schema.$ref) {\n op.requestBody['x-s2o-name'] = decodeURIComponent(op.requestBody.schema.$ref.replace('#/components/schemas/', '')).split('/').join('');\n }\n else if (op.operationId) {\n op.requestBody['x-s2o-name'] = common.sanitiseAll(op.operationId);\n }\n }\n }\n }\n }\n }\n\n // tidy up\n if (param && !param['x-s2o-delete']) {\n delete param.type;\n for (let prop of common.parameterTypeProperties) {\n delete param[prop];\n }\n\n if ((param.in === 'path') && ((typeof param.required === 'undefined') || (param.required !== true))) {\n if (options.patch) {\n options.patches++;\n param.required = true;\n }\n else {\n throwError('(Patchable) path parameters must be required:true ['+param.name+' in '+index+']', options);\n }\n }\n }\n\n return op;\n}\n\nfunction copyExtensions(src, tgt) {\n for (let prop in src) {\n if (prop.startsWith('x-') && !prop.startsWith('x-s2o')) {\n tgt[prop] = src[prop];\n }\n }\n}\n\nfunction processResponse(response, name, op, openapi, options) {\n if (!response) return false;\n if (response.$ref && (typeof response.$ref === 'string')) {\n if (response.$ref.indexOf('#/definitions/') >= 0) {\n //response.$ref = '#/components/schemas/'+common.sanitise(response.$ref.replace('#/definitions/',''));\n throwOrWarn('definition used as response: ' + response.$ref, response, options);\n }\n else {\n if (response.$ref.startsWith('#/responses/')) {\n response.$ref = '#/components/responses/' + common.sanitise(decodeURIComponent(response.$ref.replace('#/responses/', '')));\n }\n }\n }\n else {\n if ((typeof response.description === 'undefined') || (response.description === null)\n || ((response.description === '') && options.patch)) {\n if (options.patch) {\n if ((typeof response === 'object') && (!Array.isArray(response))) {\n options.patches++;\n response.description = (statusCodes[response] || '');\n }\n }\n else {\n throwError('(Patchable) response.description is mandatory', options);\n }\n }\n if (typeof response.schema !== 'undefined') {\n\n fixUpSchema(response.schema,options);\n\n if (response.schema.$ref && (typeof response.schema.$ref === 'string') && response.schema.$ref.startsWith('#/responses/')) {\n response.schema.$ref = '#/components/responses/' + common.sanitise(decodeURIComponent(response.schema.$ref.replace('#/responses/', '')));\n }\n\n if (op && op.produces && (typeof op.produces === 'string')) {\n if (options.patch) {\n options.patches++;\n op.produces = [op.produces];\n }\n else {\n return throwError('(Patchable) operation.produces must be an array', options);\n }\n }\n if (openapi.produces && !Array.isArray(openapi.produces)) delete openapi.produces;\n\n let produces = ((op ? op.produces : null) || (openapi.produces || [])).filter(common.uniqueOnly);\n if (!produces.length) produces.push('*/*'); // TODO verify default\n\n response.content = {};\n for (let mimetype of produces) {\n response.content[mimetype] = {};\n response.content[mimetype].schema = clone(response.schema);\n if (response.examples && response.examples[mimetype]) {\n let example = {};\n example.value = response.examples[mimetype];\n response.content[mimetype].examples = {};\n response.content[mimetype].examples.response = example;\n delete response.examples[mimetype];\n }\n if (response.content[mimetype].schema.type === 'file') {\n response.content[mimetype].schema = { type: 'string', format: 'binary' };\n }\n }\n delete response.schema;\n }\n // examples for content-types not listed in produces\n for (let mimetype in response.examples) {\n if (!response.content) response.content = {};\n if (!response.content[mimetype]) response.content[mimetype] = {};\n response.content[mimetype].examples = {};\n response.content[mimetype].examples.response = {};\n response.content[mimetype].examples.response.value = response.examples[mimetype];\n }\n delete response.examples;\n\n if (response.headers) {\n for (let h in response.headers) {\n if (h.toLowerCase() === 'status code') {\n if (options.patch) {\n options.patches++;\n delete response.headers[h];\n }\n else {\n throwError('(Patchable) \"Status Code\" is not a valid header', options);\n }\n }\n else {\n processHeader(response.headers[h], options);\n }\n }\n }\n }\n}\n\nfunction processPaths(container, containerName, options, requestBodyCache, openapi) {\n for (let p in container) {\n let path = container[p];\n // path.$ref is external only\n if (path && (path['x-trace']) && (typeof path['x-trace'] === 'object')) {\n path.trace = path['x-trace'];\n delete path['x-trace'];\n }\n if (path && (path['x-summary']) && (typeof path['x-summary'] === 'string')) {\n path.summary = path['x-summary'];\n delete path['x-summary'];\n }\n if (path && (path['x-description']) && (typeof path['x-description'] === 'string')) {\n path.description = path['x-description'];\n delete path['x-description'];\n }\n if (path && (path['x-servers']) && (Array.isArray(path['x-servers']))) {\n path.servers = path['x-servers'];\n delete path['x-servers'];\n }\n for (let method in path) {\n if ((common.httpMethods.indexOf(method) >= 0) || (method === 'x-amazon-apigateway-any-method')) {\n let op = path[method];\n\n if (op && op.parameters && Array.isArray(op.parameters)) {\n if (path.parameters) {\n for (let param of path.parameters) {\n if (typeof param.$ref === 'string') {\n fixParamRef(param, options);\n param = resolveInternal(openapi, param.$ref);\n }\n let match = op.parameters.find(function (e, i, a) {\n return ((e.name === param.name) && (e.in === param.in));\n });\n\n if (!match && ((param.in === 'formData') || (param.in === 'body') || (param.type === 'file'))) {\n op = processParameter(param, op, path, method, p, openapi, options);\n if (options.rbname && op[options.rbname] === '') {\n delete op[options.rbname];\n }\n }\n }\n }\n for (let param of op.parameters) {\n op = processParameter(param, op, path, method, method + ':' + p, openapi, options);\n }\n if (options.rbname && op[options.rbname] === '') {\n delete op[options.rbname];\n }\n if (!options.debug) {\n if (op.parameters) op.parameters = op.parameters.filter(keepParameters);\n }\n }\n\n if (op && op.security) processSecurity(op.security);\n\n //don't need to remove requestBody for non-supported ops as they \"SHALL be ignored\"\n\n // responses\n if (typeof op === 'object') {\n if (!op.responses) {\n let defaultResp = {};\n defaultResp.description = 'Default response';\n op.responses = { default: defaultResp };\n }\n for (let r in op.responses) {\n let response = op.responses[r];\n processResponse(response, r, op, openapi, options);\n }\n }\n\n if (op && (op['x-servers']) && (Array.isArray(op['x-servers']))) {\n op.servers = op['x-servers'];\n delete op['x-servers'];\n } else if (op && op.schemes && op.schemes.length) {\n for (let scheme of op.schemes) {\n if ((!openapi.schemes) || (openapi.schemes.indexOf(scheme) < 0)) {\n if (!op.servers) {\n op.servers = [];\n }\n if (Array.isArray(openapi.servers)) {\n for (let server of openapi.servers) {\n let newServer = clone(server);\n let serverUrl = url.parse(newServer.url);\n serverUrl.protocol = scheme;\n newServer.url = serverUrl.format();\n op.servers.push(newServer);\n }\n }\n }\n }\n }\n\n if (options.debug) {\n op[\"x-s2o-consumes\"] = op.consumes || [];\n op[\"x-s2o-produces\"] = op.produces || [];\n }\n if (op) {\n delete op.consumes;\n delete op.produces;\n delete op.schemes;\n\n if (op[\"x-ms-examples\"]) {\n for (let e in op[\"x-ms-examples\"]) {\n let example = op[\"x-ms-examples\"][e];\n let se = common.sanitiseAll(e);\n if (example.parameters) {\n for (let p in example.parameters) {\n let value = example.parameters[p];\n for (let param of (op.parameters||[]).concat(path.parameters||[])) {\n if (param.$ref) {\n param = jptr.jptr(openapi,param.$ref);\n }\n if ((param.name === p) && (!param.example)) {\n if (!param.examples) {\n param.examples = {};\n }\n param.examples[e] = {value: value};\n }\n }\n }\n }\n if (example.responses) {\n for (let r in example.responses) {\n if (example.responses[r].headers) {\n for (let h in example.responses[r].headers) {\n let value = example.responses[r].headers[h];\n for (let rh in op.responses[r].headers) {\n if (rh === h) {\n let header = op.responses[r].headers[rh];\n header.example = value;\n }\n }\n }\n }\n if (example.responses[r].body) {\n openapi.components.examples[se] = { value: clone(example.responses[r].body) };\n if (op.responses[r] && op.responses[r].content) {\n for (let ct in op.responses[r].content) {\n let contentType = op.responses[r].content[ct];\n if (!contentType.examples) {\n contentType.examples = {};\n }\n contentType.examples[e] = { $ref: '#/components/examples/'+se };\n }\n }\n }\n\n }\n }\n }\n delete op[\"x-ms-examples\"];\n }\n\n if (op.parameters && op.parameters.length === 0) delete op.parameters;\n if (op.requestBody) {\n let effectiveOperationId = op.operationId ? common.sanitiseAll(op.operationId) : common.sanitiseAll(method + p).toCamelCase();\n let rbName = common.sanitise(op.requestBody['x-s2o-name'] || effectiveOperationId || '');\n delete op.requestBody['x-s2o-name'];\n let rbStr = JSON.stringify(op.requestBody);\n let rbHash = common.hash(rbStr);\n if (!requestBodyCache[rbHash]) {\n let entry = {};\n entry.name = rbName;\n entry.body = op.requestBody;\n entry.refs = [];\n requestBodyCache[rbHash] = entry;\n }\n let ptr = '#/'+containerName+'/'+encodeURIComponent(jptr.jpescape(p))+'/'+method+'/requestBody';\n requestBodyCache[rbHash].refs.push(ptr);\n }\n }\n\n }\n }\n if (path && path.parameters) {\n for (let p2 in path.parameters) {\n let param = path.parameters[p2];\n processParameter(param, null, path, null, p, openapi, options); // index here is the path string\n }\n if (!options.debug && Array.isArray(path.parameters)) {\n path.parameters = path.parameters.filter(keepParameters);\n }\n }\n }\n}\n\nfunction main(openapi, options) {\n\n let requestBodyCache = {};\n componentNames = { schemas: {} };\n\n if (openapi.security) processSecurity(openapi.security);\n\n for (let s in openapi.components.securitySchemes) {\n let sname = common.sanitise(s);\n if (s !== sname) {\n if (openapi.components.securitySchemes[sname]) {\n throwError('Duplicate sanitised securityScheme name ' + sname, options);\n }\n openapi.components.securitySchemes[sname] = openapi.components.securitySchemes[s];\n delete openapi.components.securitySchemes[s];\n }\n processSecurityScheme(openapi.components.securitySchemes[sname], options);\n }\n\n for (let s in openapi.components.schemas) {\n let sname = common.sanitiseAll(s);\n let suffix = '';\n if (s !== sname) {\n while (openapi.components.schemas[sname + suffix]) {\n // @ts-ignore\n suffix = (suffix ? ++suffix : 2);\n }\n openapi.components.schemas[sname + suffix] = openapi.components.schemas[s];\n delete openapi.components.schemas[s];\n }\n componentNames.schemas[s] = sname + suffix;\n fixUpSchema(openapi.components.schemas[sname+suffix],options)\n }\n\n // fix all $refs to their new locations (and potentially new names)\n options.refmap = {};\n recurse(openapi, { payload: { options: options } }, fixupRefs);\n dedupeRefs(openapi,options);\n\n for (let p in openapi.components.parameters) {\n let sname = common.sanitise(p);\n if (p !== sname) {\n if (openapi.components.parameters[sname]) {\n throwError('Duplicate sanitised parameter name ' + sname, options);\n }\n openapi.components.parameters[sname] = openapi.components.parameters[p];\n delete openapi.components.parameters[p];\n }\n let param = openapi.components.parameters[sname];\n processParameter(param, null, null, null, sname, openapi, options);\n }\n\n for (let r in openapi.components.responses) {\n let sname = common.sanitise(r);\n if (r !== sname) {\n if (openapi.components.responses[sname]) {\n throwError('Duplicate sanitised response name ' + sname, options);\n }\n openapi.components.responses[sname] = openapi.components.responses[r];\n delete openapi.components.responses[r];\n }\n let response = openapi.components.responses[sname];\n processResponse(response, sname, null, openapi, options);\n if (response.headers) {\n for (let h in response.headers) {\n if (h.toLowerCase() === 'status code') {\n if (options.patch) {\n options.patches++;\n delete response.headers[h];\n }\n else {\n throwError('(Patchable) \"Status Code\" is not a valid header', options);\n }\n }\n else {\n processHeader(response.headers[h], options);\n }\n }\n }\n }\n\n for (let r in openapi.components.requestBodies) { // converted ones\n let rb = openapi.components.requestBodies[r];\n let rbStr = JSON.stringify(rb);\n let rbHash = common.hash(rbStr);\n let entry = {};\n entry.name = r;\n entry.body = rb;\n entry.refs = [];\n requestBodyCache[rbHash] = entry;\n }\n\n processPaths(openapi.paths, 'paths', options, requestBodyCache, openapi);\n if (openapi[\"x-ms-paths\"]) {\n processPaths(openapi[\"x-ms-paths\"], 'x-ms-paths', options, requestBodyCache, openapi);\n }\n\n if (!options.debug) {\n for (let p in openapi.components.parameters) {\n let param = openapi.components.parameters[p];\n if (param[\"x-s2o-delete\"]) {\n delete openapi.components.parameters[p];\n }\n }\n }\n\n if (options.debug) {\n openapi[\"x-s2o-consumes\"] = openapi.consumes || [];\n openapi[\"x-s2o-produces\"] = openapi.produces || [];\n }\n delete openapi.consumes;\n delete openapi.produces;\n delete openapi.schemes;\n\n let rbNamesGenerated = [];\n\n openapi.components.requestBodies = {}; // for now as we've dereffed them\n\n if (!options.resolveInternal) {\n let counter = 1;\n for (let e in requestBodyCache) {\n let entry = requestBodyCache[e];\n if (entry.refs.length > 1) {\n // create a shared requestBody\n let suffix = '';\n if (!entry.name) {\n entry.name = 'requestBody';\n // @ts-ignore\n suffix = counter++;\n }\n while (rbNamesGenerated.indexOf(entry.name + suffix) >= 0) {\n // @ts-ignore - this can happen if descriptions are not exactly the same (e.g. bitbucket)\n suffix = (suffix ? ++suffix : 2);\n }\n entry.name = entry.name + suffix;\n rbNamesGenerated.push(entry.name);\n openapi.components.requestBodies[entry.name] = clone(entry.body);\n for (let r in entry.refs) {\n let ref = {};\n ref.$ref = '#/components/requestBodies/' + entry.name;\n jptr.jptr(openapi,entry.refs[r],ref);\n }\n }\n }\n }\n\n if (openapi.components.responses && Object.keys(openapi.components.responses).length === 0) {\n delete openapi.components.responses;\n }\n if (openapi.components.parameters && Object.keys(openapi.components.parameters).length === 0) {\n delete openapi.components.parameters;\n }\n if (openapi.components.examples && Object.keys(openapi.components.examples).length === 0) {\n delete openapi.components.examples;\n }\n if (openapi.components.requestBodies && Object.keys(openapi.components.requestBodies).length === 0) {\n delete openapi.components.requestBodies;\n }\n if (openapi.components.securitySchemes && Object.keys(openapi.components.securitySchemes).length === 0) {\n delete openapi.components.securitySchemes;\n }\n if (openapi.components.headers && Object.keys(openapi.components.headers).length === 0) {\n delete openapi.components.headers;\n }\n if (openapi.components.schemas && Object.keys(openapi.components.schemas).length === 0) {\n delete openapi.components.schemas;\n }\n if (openapi.components && Object.keys(openapi.components).length === 0) {\n delete openapi.components;\n }\n\n return openapi;\n}\n\nfunction extractServerParameters(server) {\n if (!server || !server.url || (typeof server.url !== 'string')) return server;\n server.url = server.url.split('{{').join('{');\n server.url = server.url.split('}}').join('}');\n server.url.replace(/\\{(.+?)\\}/g, function (match, group1) { // TODO extend to :parameters (not port)?\n if (!server.variables) {\n server.variables = {};\n }\n server.variables[group1] = { default: 'unknown' };\n });\n return server;\n}\n\nfunction fixInfo(openapi, options, reject) {\n if ((typeof openapi.info === 'undefined') || (openapi.info === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info = { version: '', title: '' };\n }\n else {\n return reject(new S2OError('(Patchable) info object is mandatory'));\n }\n }\n if ((typeof openapi.info !== 'object') || (Array.isArray(openapi.info))) {\n return reject(new S2OError('info must be an object'));\n }\n if ((typeof openapi.info.title === 'undefined') || (openapi.info.title === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info.title = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.title cannot be null'));\n }\n }\n if ((typeof openapi.info.version === 'undefined') || (openapi.info.version === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info.version = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.version cannot be null'));\n }\n }\n if (typeof openapi.info.version !== 'string') {\n if (options.patch) {\n options.patches++;\n openapi.info.version = openapi.info.version.toString();\n }\n else {\n return reject(new S2OError('(Patchable) info.version must be a string'));\n }\n }\n if (typeof openapi.info.logo !== 'undefined') {\n if (options.patch) {\n options.patches++;\n openapi.info['x-logo'] = openapi.info.logo;\n delete openapi.info.logo;\n }\n else return reject(new S2OError('(Patchable) info should not have logo property'));\n }\n if (typeof openapi.info.termsOfService !== 'undefined') {\n if (openapi.info.termsOfService === null) {\n if (options.patch) {\n options.patches++;\n openapi.info.termsOfService = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.termsOfService cannot be null'));\n }\n }\n try {\n let u = new URL(openapi.info.termsOfService);\n }\n catch (ex) {\n if (options.patch) {\n options.patches++;\n delete openapi.info.termsOfService;\n }\n else return reject(new S2OError('(Patchable) info.termsOfService must be a URL'));\n }\n }\n}\n\nfunction fixPaths(openapi, options, reject) {\n if (typeof openapi.paths === 'undefined') {\n if (options.patch) {\n options.patches++;\n openapi.paths = {};\n }\n else {\n return reject(new S2OError('(Patchable) paths object is mandatory'));\n }\n }\n}\n\nfunction detectObjectReferences(obj, options) {\n const seen = new WeakSet();\n recurse(obj, {identityDetection:true}, function (obj, key, state) {\n if ((typeof obj[key] === 'object') && (obj[key] !== null)) {\n if (seen.has(obj[key])) {\n if (options.anchors) {\n obj[key] = clone(obj[key]);\n }\n else {\n throwError('YAML anchor or merge key at '+state.path, options);\n }\n }\n else {\n seen.add(obj[key]);\n }\n }\n });\n}\n\nfunction convertObj(swagger, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n if (!swagger) swagger = {};\n options.original = swagger;\n if (!options.text) options.text = yaml.stringify(swagger);\n options.externals = [];\n options.externalRefs = {};\n options.rewriteRefs = true; // avoids stack explosions\n options.preserveMiro = true;\n options.promise = {};\n options.promise.resolve = resolve;\n options.promise.reject = reject;\n options.patches = 0;\n if (!options.cache) options.cache = {};\n if (options.source) options.cache[options.source] = options.original;\n\n detectObjectReferences(swagger, options);\n\n if (swagger.openapi && (typeof swagger.openapi === 'string') && swagger.openapi.startsWith('3.')) {\n options.openapi = cclone(swagger);\n fixInfo(options.openapi, options, reject);\n fixPaths(options.openapi, options, reject);\n\n resolver.optionalResolve(options) // is a no-op if options.resolve is not set\n .then(function(){\n if (options.direct) {\n return resolve(options.openapi);\n }\n else {\n return resolve(options);\n }\n })\n .catch(function(ex){\n console.warn(ex);\n reject(ex);\n });\n return; // we should have resolved or rejected by now\n }\n\n if ((!swagger.swagger) || (swagger.swagger != \"2.0\")) {\n return reject(new S2OError('Unsupported swagger/OpenAPI version: ' + (swagger.openapi ? swagger.openapi : swagger.swagger)));\n }\n\n let openapi = options.openapi = {};\n openapi.openapi = (typeof options.targetVersion === 'string' && options.targetVersion.startsWith('3.')) ? options.targetVersion : targetVersion; // semver\n\n if (options.origin) {\n if (!openapi[\"x-origin\"]) {\n openapi[\"x-origin\"] = [];\n }\n let origin = {};\n origin.url = options.source||options.origin;\n origin.format = 'swagger';\n origin.version = swagger.swagger;\n origin.converter = {};\n origin.converter.url = 'https://github.com/mermade/oas-kit';\n origin.converter.version = ourVersion;\n openapi[\"x-origin\"].push(origin);\n }\n\n // we want the new and existing properties to appear in a sensible order. Not guaranteed\n openapi = Object.assign(openapi, cclone(swagger));\n delete openapi.swagger;\n recurse(openapi, {}, function(obj, key, state){\n if ((obj[key] === null) && (!key.startsWith('x-')) && key !== 'default' && (state.path.indexOf('/example') < 0)) delete obj[key]; // this saves *so* much grief later\n });\n\n if (swagger.host) {\n for (let s of (Array.isArray(swagger.schemes) ? swagger.schemes : [''])) {\n let server = {};\n let basePath = (swagger.basePath || '').replace(/\\/$/, '') // Trailing slashes generally shouldn't be included\n server.url = (s ? s+':' : '') + '//' + swagger.host + basePath;\n extractServerParameters(server);\n if (!openapi.servers) openapi.servers = [];\n openapi.servers.push(server);\n }\n }\n else if (swagger.basePath) {\n let server = {};\n server.url = swagger.basePath;\n extractServerParameters(server);\n if (!openapi.servers) openapi.servers = [];\n openapi.servers.push(server);\n }\n delete openapi.host;\n delete openapi.basePath;\n\n if (openapi['x-servers'] && Array.isArray(openapi['x-servers'])) {\n openapi.servers = openapi['x-servers'];\n delete openapi['x-servers'];\n }\n\n // TODO APIMatic extensions (x-server-configuration) ?\n\n if (swagger['x-ms-parameterized-host']) {\n let xMsPHost = swagger['x-ms-parameterized-host'];\n let server = {};\n server.url = xMsPHost.hostTemplate + (swagger.basePath ? swagger.basePath : '');\n server.variables = {};\n const paramNames = server.url.match(/\\{\\w+\\}/g);\n for (let msp in xMsPHost.parameters) {\n let param = xMsPHost.parameters[msp];\n if (param.$ref) {\n param = clone(resolveInternal(openapi, param.$ref));\n }\n if (!msp.startsWith('x-')) {\n delete param.required; // all true\n delete param.type; // all strings\n delete param.in; // all 'host'\n if (typeof param.default === 'undefined') {\n if (param.enum) {\n param.default = param.enum[0];\n }\n else {\n param.default = 'none';\n }\n }\n if (!param.name) {\n param.name = paramNames[msp].replace('{','').replace('}','');\n }\n server.variables[param.name] = param;\n delete param.name;\n }\n }\n if (!openapi.servers) openapi.servers = [];\n if (xMsPHost.useSchemePrefix === false) {\n // The server URL already includes a protocol scheme\n openapi.servers.push(server);\n } else {\n // Define this server once for each given protocol scheme\n swagger.schemes.forEach((scheme) => {\n openapi.servers.push(\n Object.assign({}, server, { url: scheme + '://' + server.url })\n )\n });\n }\n delete openapi['x-ms-parameterized-host'];\n }\n\n fixInfo(openapi, options, reject);\n fixPaths(openapi, options, reject);\n\n if (typeof openapi.consumes === 'string') {\n openapi.consumes = [openapi.consumes];\n }\n if (typeof openapi.produces === 'string') {\n openapi.produces = [openapi.produces];\n }\n\n openapi.components = {};\n if (openapi['x-callbacks']) {\n openapi.components.callbacks = openapi['x-callbacks'];\n delete openapi['x-callbacks'];\n }\n openapi.components.examples = {};\n openapi.components.headers = {};\n if (openapi['x-links']) {\n openapi.components.links = openapi['x-links'];\n delete openapi['x-links'];\n }\n openapi.components.parameters = openapi.parameters || {};\n openapi.components.responses = openapi.responses || {};\n openapi.components.requestBodies = {};\n openapi.components.securitySchemes = openapi.securityDefinitions || {};\n openapi.components.schemas = openapi.definitions || {};\n delete openapi.definitions;\n delete openapi.responses;\n delete openapi.parameters;\n delete openapi.securityDefinitions;\n\n resolver.optionalResolve(options) // is a no-op if options.resolve is not set\n .then(function(){\n main(options.openapi, options);\n if (options.direct) {\n resolve(options.openapi);\n }\n else {\n resolve(options);\n }\n })\n .catch(function(ex){\n console.warn(ex);\n reject(ex);\n });\n\n }));\n}\n\nfunction convertStr(str, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n let obj = null;\n let error = null;\n try {\n obj = JSON.parse(str);\n options.text = JSON.stringify(obj,null,2);\n }\n catch (ex) {\n error = ex;\n try {\n obj = yaml.parse(str, { schema: 'core', prettyErrors: true });\n options.sourceYaml = true;\n options.text = str;\n }\n catch (ex) {\n error = ex;\n }\n }\n if (obj) {\n convertObj(obj, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }\n else {\n reject(new S2OError(error ? error.message : 'Could not parse string'));\n }\n }));\n}\n\nfunction convertUrl(url, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n options.origin = true;\n if (!options.source) {\n options.source = url;\n }\n if (options.verbose) {\n console.warn('GET ' + url);\n }\n if (!options.fetch) {\n options.fetch = fetch;\n }\n const fetchOptions = Object.assign({}, options.fetchOptions, {agent:options.agent});\n options.fetch(url, fetchOptions).then(function (res) {\n if (res.status !== 200) throw new S2OError(`Received status code ${res.status}: ${url}`);\n return res.text();\n }).then(function (body) {\n convertStr(body, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }).catch(function (err) {\n reject(err);\n });\n }));\n}\n\nfunction convertFile(filename, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n fs.readFile(filename, options.encoding || 'utf8', function (err, s) {\n if (err) {\n reject(err);\n }\n else {\n options.sourceFile = filename;\n convertStr(s, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }\n });\n }));\n}\n\nfunction convertStream(readable, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n let data = '';\n readable.on('data', function (chunk) {\n data += chunk;\n })\n .on('end', function () {\n convertStr(data, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n });\n }));\n}\n\nmodule.exports = {\n S2OError: S2OError,\n targetVersion: targetVersion,\n convert: convertObj,\n convertObj: convertObj,\n convertUrl: convertUrl,\n convertStr: convertStr,\n convertFile: convertFile,\n convertStream: convertStream\n};\n","'use strict';\n\nconst http = require('http');\n\nconst ours = {\n \"default\": \"Default response\",\n \"1XX\": \"Informational\",\n \"103\": \"Early hints\", // not in Node < 10\n \"2XX\": \"Successful\",\n \"3XX\": \"Redirection\",\n \"4XX\": \"Client Error\",\n \"5XX\": \"Server Error\",\n \"7XX\": \"Developer Error\" // April fools RFC\n};\n\nmodule.exports = {\n statusCodes: Object.assign({},ours,http.STATUS_CODES)\n};\n\n","\n\t\t\t\tvar addMethods = require(\"../../node_modules/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"add\",\"done\",\"toJS\",\"fromExternalJS\",\"load\",\"dispose\",\"search\",\"Worker\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(URL.createObjectURL(new Blob([\"/*! For license information please see cfb294d7f6536ffa8d42.worker.js.LICENSE.txt */\\n!function(){var e={291:function(e,t,r){var n,i;!function(){var s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,P,b,T,O,I,R,F,C,N,j=function(e){var t=new j.Builder;return t.pipeline.add(j.trimmer,j.stopWordFilter,j.stemmer),t.searchPipeline.add(j.stemmer),e.call(t,t),t.build()};j.version=\\\"2.3.9\\\",j.utils={},j.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),j.utils.asString=function(e){return null==e?\\\"\\\":e.toString()},j.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),n=0;n<r.length;n++){var i=r[n],s=e[i];if(Array.isArray(s))t[i]=s.slice();else{if(\\\"string\\\"!=typeof s&&\\\"number\\\"!=typeof s&&\\\"boolean\\\"!=typeof s)throw new TypeError(\\\"clone is not deep and does not support nested objects\\\");t[i]=s}}return t},j.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},j.FieldRef.joiner=\\\"/\\\",j.FieldRef.fromString=function(e){var t=e.indexOf(j.FieldRef.joiner);if(-1===t)throw\\\"malformed field ref string\\\";var r=e.slice(0,t),n=e.slice(t+1);return new j.FieldRef(n,r,e)},j.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+j.FieldRef.joiner+this.docRef),this._stringValue},j.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},j.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},j.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},j.Set.prototype.contains=function(e){return!!this.elements[e]},j.Set.prototype.intersect=function(e){var t,r,n,i=[];if(e===j.Set.complete)return this;if(e===j.Set.empty)return e;this.length<e.length?(t=this,r=e):(t=e,r=this),n=Object.keys(t.elements);for(var s=0;s<n.length;s++){var o=n[s];o in r.elements&&i.push(o)}return new j.Set(i)},j.Set.prototype.union=function(e){return e===j.Set.complete?j.Set.complete:e===j.Set.empty?this:new j.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},j.idf=function(e,t){var r=0;for(var n in e)\\\"_index\\\"!=n&&(r+=Object.keys(e[n]).length);var i=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(i))},j.Token=function(e,t){this.str=e||\\\"\\\",this.metadata=t||{}},j.Token.prototype.toString=function(){return this.str},j.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},j.Token.prototype.clone=function(e){return e=e||function(e){return e},new j.Token(e(this.str,this.metadata),this.metadata)},j.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new j.Token(j.utils.asString(e).toLowerCase(),j.utils.clone(t))}));for(var r=e.toString().toLowerCase(),n=r.length,i=[],s=0,o=0;s<=n;s++){var a=s-o;if(r.charAt(s).match(j.tokenizer.separator)||s==n){if(a>0){var u=j.utils.clone(t)||{};u.position=[o,a],u.index=i.length,i.push(new j.Token(r.slice(o,s),u))}o=s+1}}return i},j.tokenizer.separator=/[\\\\s\\\\-]+/,j.Pipeline=function(){this._stack=[]},j.Pipeline.registeredFunctions=Object.create(null),j.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&j.utils.warn(\\\"Overwriting existing registered function: \\\"+t),e.label=t,j.Pipeline.registeredFunctions[e.label]=e},j.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||j.utils.warn(\\\"Function is not registered with pipeline. This may cause problems when serialising the index.\\\\n\\\",e)},j.Pipeline.load=function(e){var t=new j.Pipeline;return e.forEach((function(e){var r=j.Pipeline.registeredFunctions[e];if(!r)throw new Error(\\\"Cannot load unregistered function: \\\"+e);t.add(r)})),t},j.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){j.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},j.Pipeline.prototype.after=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");r+=1,this._stack.splice(r,0,t)},j.Pipeline.prototype.before=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");this._stack.splice(r,0,t)},j.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},j.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var n=this._stack[r],i=[],s=0;s<e.length;s++){var o=n(e[s],s,e);if(null!=o&&\\\"\\\"!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)i.push(o[a]);else i.push(o)}e=i}return e},j.Pipeline.prototype.runString=function(e,t){var r=new j.Token(e,t);return this.run([r]).map((function(e){return e.toString()}))},j.Pipeline.prototype.reset=function(){this._stack=[]},j.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return j.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},j.Vector=function(e){this._magnitude=0,this.elements=e||[]},j.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,n=r-t,i=Math.floor(n/2),s=this.elements[2*i];n>1&&(s<e&&(t=i),s>e&&(r=i),s!=e);)n=r-t,i=t+Math.floor(n/2),s=this.elements[2*i];return s==e||s>e?2*i:s<e?2*(i+1):void 0},j.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw\\\"duplicate index\\\"}))},j.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var n=this.positionForIndex(e);this.elements[n]==e?this.elements[n+1]=r(this.elements[n+1],t):this.elements.splice(n,0,e,t)},j.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var n=this.elements[r];e+=n*n}return this._magnitude=Math.sqrt(e)},j.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,n=e.elements,i=r.length,s=n.length,o=0,a=0,u=0,l=0;u<i&&l<s;)(o=r[u])<(a=n[l])?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*n[l+1],u+=2,l+=2);return t},j.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},j.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},j.Vector.prototype.toJSON=function(){return this.elements},j.stemmer=(o={ational:\\\"ate\\\",tional:\\\"tion\\\",enci:\\\"ence\\\",anci:\\\"ance\\\",izer:\\\"ize\\\",bli:\\\"ble\\\",alli:\\\"al\\\",entli:\\\"ent\\\",eli:\\\"e\\\",ousli:\\\"ous\\\",ization:\\\"ize\\\",ation:\\\"ate\\\",ator:\\\"ate\\\",alism:\\\"al\\\",iveness:\\\"ive\\\",fulness:\\\"ful\\\",ousness:\\\"ous\\\",aliti:\\\"al\\\",iviti:\\\"ive\\\",biliti:\\\"ble\\\",logi:\\\"log\\\"},a={icate:\\\"ic\\\",ative:\\\"\\\",alize:\\\"al\\\",iciti:\\\"ic\\\",ical:\\\"ic\\\",ful:\\\"\\\",ness:\\\"\\\"},h=\\\"^(\\\"+(l=\\\"[^aeiou][^aeiouy]*\\\")+\\\")?\\\"+(c=(u=\\\"[aeiouy]\\\")+\\\"[aeiou]*\\\")+l+\\\"(\\\"+c+\\\")?$\\\",d=\\\"^(\\\"+l+\\\")?\\\"+c+l+c+l,f=\\\"^(\\\"+l+\\\")?\\\"+u,p=new RegExp(\\\"^(\\\"+l+\\\")?\\\"+c+l),y=new RegExp(d),m=new RegExp(h),g=new RegExp(f),x=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,Q=/^(.+?)(ed|ing)$/,k=/.$/,S=/(at|bl|iz)$/,E=new RegExp(\\\"([^aeiouylsz])\\\\\\\\1$\\\"),L=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),P=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,T=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,O=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,I=/^(.+?)(s|t)(ion)$/,R=/^(.+?)e$/,F=/ll$/,C=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),N=function(e){var t,r,n,i,s,u,l;if(e.length<3)return e;if(\\\"y\\\"==(n=e.substr(0,1))&&(e=n.toUpperCase()+e.substr(1)),s=v,(i=x).test(e)?e=e.replace(i,\\\"$1$2\\\"):s.test(e)&&(e=e.replace(s,\\\"$1$2\\\")),s=Q,(i=w).test(e)){var c=i.exec(e);(i=p).test(c[1])&&(i=k,e=e.replace(i,\\\"\\\"))}else s.test(e)&&(t=(c=s.exec(e))[1],(s=g).test(t)&&(u=E,l=L,(s=S).test(e=t)?e+=\\\"e\\\":u.test(e)?(i=k,e=e.replace(i,\\\"\\\")):l.test(e)&&(e+=\\\"e\\\")));return(i=P).test(e)&&(e=(t=(c=i.exec(e))[1])+\\\"i\\\"),(i=b).test(e)&&(t=(c=i.exec(e))[1],r=c[2],(i=p).test(t)&&(e=t+o[r])),(i=T).test(e)&&(t=(c=i.exec(e))[1],r=c[2],(i=p).test(t)&&(e=t+a[r])),s=I,(i=O).test(e)?(t=(c=i.exec(e))[1],(i=y).test(t)&&(e=t)):s.test(e)&&(t=(c=s.exec(e))[1]+c[2],(s=y).test(t)&&(e=t)),(i=R).test(e)&&(t=(c=i.exec(e))[1],s=m,u=C,((i=y).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=y,(i=F).test(e)&&s.test(e)&&(i=k,e=e.replace(i,\\\"\\\")),\\\"y\\\"==n&&(e=n.toLowerCase()+e.substr(1)),e},function(e){return e.update(N)}),j.Pipeline.registerFunction(j.stemmer,\\\"stemmer\\\"),j.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},j.stopWordFilter=j.generateStopWordFilter([\\\"a\\\",\\\"able\\\",\\\"about\\\",\\\"across\\\",\\\"after\\\",\\\"all\\\",\\\"almost\\\",\\\"also\\\",\\\"am\\\",\\\"among\\\",\\\"an\\\",\\\"and\\\",\\\"any\\\",\\\"are\\\",\\\"as\\\",\\\"at\\\",\\\"be\\\",\\\"because\\\",\\\"been\\\",\\\"but\\\",\\\"by\\\",\\\"can\\\",\\\"cannot\\\",\\\"could\\\",\\\"dear\\\",\\\"did\\\",\\\"do\\\",\\\"does\\\",\\\"either\\\",\\\"else\\\",\\\"ever\\\",\\\"every\\\",\\\"for\\\",\\\"from\\\",\\\"get\\\",\\\"got\\\",\\\"had\\\",\\\"has\\\",\\\"have\\\",\\\"he\\\",\\\"her\\\",\\\"hers\\\",\\\"him\\\",\\\"his\\\",\\\"how\\\",\\\"however\\\",\\\"i\\\",\\\"if\\\",\\\"in\\\",\\\"into\\\",\\\"is\\\",\\\"it\\\",\\\"its\\\",\\\"just\\\",\\\"least\\\",\\\"let\\\",\\\"like\\\",\\\"likely\\\",\\\"may\\\",\\\"me\\\",\\\"might\\\",\\\"most\\\",\\\"must\\\",\\\"my\\\",\\\"neither\\\",\\\"no\\\",\\\"nor\\\",\\\"not\\\",\\\"of\\\",\\\"off\\\",\\\"often\\\",\\\"on\\\",\\\"only\\\",\\\"or\\\",\\\"other\\\",\\\"our\\\",\\\"own\\\",\\\"rather\\\",\\\"said\\\",\\\"say\\\",\\\"says\\\",\\\"she\\\",\\\"should\\\",\\\"since\\\",\\\"so\\\",\\\"some\\\",\\\"than\\\",\\\"that\\\",\\\"the\\\",\\\"their\\\",\\\"them\\\",\\\"then\\\",\\\"there\\\",\\\"these\\\",\\\"they\\\",\\\"this\\\",\\\"tis\\\",\\\"to\\\",\\\"too\\\",\\\"twas\\\",\\\"us\\\",\\\"wants\\\",\\\"was\\\",\\\"we\\\",\\\"were\\\",\\\"what\\\",\\\"when\\\",\\\"where\\\",\\\"which\\\",\\\"while\\\",\\\"who\\\",\\\"whom\\\",\\\"why\\\",\\\"will\\\",\\\"with\\\",\\\"would\\\",\\\"yet\\\",\\\"you\\\",\\\"your\\\"]),j.Pipeline.registerFunction(j.stopWordFilter,\\\"stopWordFilter\\\"),j.trimmer=function(e){return e.update((function(e){return e.replace(/^\\\\W+/,\\\"\\\").replace(/\\\\W+$/,\\\"\\\")}))},j.Pipeline.registerFunction(j.trimmer,\\\"trimmer\\\"),j.TokenSet=function(){this.final=!1,this.edges={},this.id=j.TokenSet._nextId,j.TokenSet._nextId+=1},j.TokenSet._nextId=1,j.TokenSet.fromArray=function(e){for(var t=new j.TokenSet.Builder,r=0,n=e.length;r<n;r++)t.insert(e[r]);return t.finish(),t.root},j.TokenSet.fromClause=function(e){return\\\"editDistance\\\"in e?j.TokenSet.fromFuzzyString(e.term,e.editDistance):j.TokenSet.fromString(e.term)},j.TokenSet.fromFuzzyString=function(e,t){for(var r=new j.TokenSet,n=[{node:r,editsRemaining:t,str:e}];n.length;){var i=n.pop();if(i.str.length>0){var s,o=i.str.charAt(0);o in i.node.edges?s=i.node.edges[o]:(s=new j.TokenSet,i.node.edges[o]=s),1==i.str.length&&(s.final=!0),n.push({node:s,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if(\\\"*\\\"in i.node.edges)var a=i.node.edges[\\\"*\\\"];else a=new j.TokenSet,i.node.edges[\\\"*\\\"]=a;if(0==i.str.length&&(a.final=!0),n.push({node:a,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&n.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if(\\\"*\\\"in i.node.edges)var u=i.node.edges[\\\"*\\\"];else u=new j.TokenSet,i.node.edges[\\\"*\\\"]=u;1==i.str.length&&(u.final=!0),n.push({node:u,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var l,c=i.str.charAt(0),h=i.str.charAt(1);h in i.node.edges?l=i.node.edges[h]:(l=new j.TokenSet,i.node.edges[h]=l),1==i.str.length&&(l.final=!0),n.push({node:l,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return r},j.TokenSet.fromString=function(e){for(var t=new j.TokenSet,r=t,n=0,i=e.length;n<i;n++){var s=e[n],o=n==i-1;if(\\\"*\\\"==s)t.edges[s]=t,t.final=o;else{var a=new j.TokenSet;a.final=o,t.edges[s]=a,t=a}}return r},j.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:\\\"\\\",node:this}];t.length;){var r=t.pop(),n=Object.keys(r.node.edges),i=n.length;r.node.final&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<i;s++){var o=n[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},j.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?\\\"1\\\":\\\"0\\\",t=Object.keys(this.edges).sort(),r=t.length,n=0;n<r;n++){var i=t[n];e=e+i+this.edges[i].id}return e},j.TokenSet.prototype.intersect=function(e){for(var t=new j.TokenSet,r=void 0,n=[{qNode:e,output:t,node:this}];n.length;){r=n.pop();for(var i=Object.keys(r.qNode.edges),s=i.length,o=Object.keys(r.node.edges),a=o.length,u=0;u<s;u++)for(var l=i[u],c=0;c<a;c++){var h=o[c];if(h==l||\\\"*\\\"==l){var d=r.node.edges[h],f=r.qNode.edges[l],p=d.final&&f.final,y=void 0;h in r.output.edges?(y=r.output.edges[h]).final=y.final||p:((y=new j.TokenSet).final=p,r.output.edges[h]=y),n.push({qNode:f,output:y,node:d})}}}return t},j.TokenSet.Builder=function(){this.previousWord=\\\"\\\",this.root=new j.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},j.TokenSet.Builder.prototype.insert=function(e){var t,r=0;if(e<this.previousWord)throw new Error(\\\"Out of order word insertion\\\");for(var n=0;n<e.length&&n<this.previousWord.length&&e[n]==this.previousWord[n];n++)r++;for(this.minimize(r),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child,n=r;n<e.length;n++){var i=new j.TokenSet,s=e[n];t.edges[s]=i,this.uncheckedNodes.push({parent:t,char:s,child:i}),t=i}t.final=!0,this.previousWord=e},j.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},j.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],n=r.child.toString();n in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[n]:(r.child._str=n,this.minimizedNodes[n]=r.child),this.uncheckedNodes.pop()}},j.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},j.Index.prototype.search=function(e){return this.query((function(t){new j.QueryParser(e,t).parse()}))},j.Index.prototype.query=function(e){for(var t=new j.Query(this.fields),r=Object.create(null),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)n[this.fields[a]]=new j.Vector;for(e.call(t,t),a=0;a<t.clauses.length;a++){var u,l=t.clauses[a],c=j.Set.empty;u=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var h=0;h<u.length;h++){var d=u[h];l.term=d;var f=j.TokenSet.fromClause(l),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&l.presence===j.Query.presence.REQUIRED){for(var y=0;y<l.fields.length;y++)s[R=l.fields[y]]=j.Set.empty;break}for(var m=0;m<p.length;m++){var g=p[m],x=this.invertedIndex[g],v=x._index;for(y=0;y<l.fields.length;y++){var w=x[R=l.fields[y]],Q=Object.keys(w),k=g+\\\"/\\\"+R,S=new j.Set(Q);if(l.presence==j.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[R]&&(s[R]=j.Set.complete)),l.presence!=j.Query.presence.PROHIBITED){if(n[R].upsert(v,l.boost,(function(e,t){return e+t})),!i[k]){for(var E=0;E<Q.length;E++){var L,P=Q[E],b=new j.FieldRef(P,R),T=w[P];void 0===(L=r[b])?r[b]=new j.MatchData(g,R,T):L.add(g,R,T)}i[k]=!0}}else void 0===o[R]&&(o[R]=j.Set.empty),o[R]=o[R].union(S)}}}if(l.presence===j.Query.presence.REQUIRED)for(y=0;y<l.fields.length;y++)s[R=l.fields[y]]=s[R].intersect(c)}var O=j.Set.complete,I=j.Set.empty;for(a=0;a<this.fields.length;a++){var R;s[R=this.fields[a]]&&(O=O.intersect(s[R])),o[R]&&(I=I.union(o[R]))}var F=Object.keys(r),C=[],N=Object.create(null);if(t.isNegated())for(F=Object.keys(this.fieldVectors),a=0;a<F.length;a++){b=F[a];var _=j.FieldRef.fromString(b);r[b]=new j.MatchData}for(a=0;a<F.length;a++){var D=(_=j.FieldRef.fromString(F[a])).docRef;if(O.contains(D)&&!I.contains(D)){var A,B=this.fieldVectors[_],z=n[_.fieldName].similarity(B);if(void 0!==(A=N[D]))A.score+=z,A.matchData.combine(r[_]);else{var V={ref:D,score:z,matchData:r[_]};N[D]=V,C.push(V)}}}return C.sort((function(e,t){return t.score-e.score}))},j.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:j.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},j.Index.load=function(e){var t={},r={},n=e.fieldVectors,i=Object.create(null),s=e.invertedIndex,o=new j.TokenSet.Builder,a=j.Pipeline.load(e.pipeline);e.version!=j.version&&j.utils.warn(\\\"Version mismatch when loading serialised index. Current version of lunr '\\\"+j.version+\\\"' does not match serialized index '\\\"+e.version+\\\"'\\\");for(var u=0;u<n.length;u++){var l=(h=n[u])[0],c=h[1];r[l]=new j.Vector(c)}for(u=0;u<s.length;u++){var h,d=(h=s[u])[0],f=h[1];o.insert(d),i[d]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=i,t.tokenSet=o.root,t.pipeline=a,new j.Index(t)},j.Builder=function(){this._ref=\\\"id\\\",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=j.tokenizer,this.pipeline=new j.Pipeline,this.searchPipeline=new j.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},j.Builder.prototype.ref=function(e){this._ref=e},j.Builder.prototype.field=function(e,t){if(/\\\\//.test(e))throw new RangeError(\\\"Field '\\\"+e+\\\"' contains illegal character '/'\\\");this._fields[e]=t||{}},j.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},j.Builder.prototype.k1=function(e){this._k1=e},j.Builder.prototype.add=function(e,t){var r=e[this._ref],n=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var i=0;i<n.length;i++){var s=n[i],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new j.FieldRef(r,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var d=0;d<l.length;d++){var f=l[d];if(null==h[f]&&(h[f]=0),h[f]+=1,null==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<n.length;y++)p[n[y]]=Object.create(null);this.invertedIndex[f]=p}null==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],x=f.metadata[g];null==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(x)}}}},j.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},n={},i=0;i<t;i++){var s=j.FieldRef.fromString(e[i]),o=s.fieldName;n[o]||(n[o]=0),n[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(i=0;i<a.length;i++){var u=a[i];r[u]=r[u]/n[u]}this.averageFieldLength=r},j.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,n=Object.create(null),i=0;i<r;i++){for(var s=j.FieldRef.fromString(t[i]),o=s.fieldName,a=this.fieldLengths[s],u=new j.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,d=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<h;p++){var y,m,g,x=c[p],v=l[x],w=this.invertedIndex[x]._index;void 0===n[x]?(y=j.idf(this.invertedIndex[x],this.documentCount),n[x]=y):y=n[x],m=y*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+v),m*=d,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},j.Builder.prototype.createTokenSet=function(){this.tokenSet=j.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},j.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new j.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},j.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},j.MatchData=function(e,t,r){for(var n=Object.create(null),i=Object.keys(r||{}),s=0;s<i.length;s++){var o=i[s];n[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=n)},j.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var n=t[r],i=Object.keys(e.metadata[n]);null==this.metadata[n]&&(this.metadata[n]=Object.create(null));for(var s=0;s<i.length;s++){var o=i[s],a=Object.keys(e.metadata[n][o]);null==this.metadata[n][o]&&(this.metadata[n][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[n][o][l]?this.metadata[n][o][l]=e.metadata[n][o][l]:this.metadata[n][o][l]=this.metadata[n][o][l].concat(e.metadata[n][o][l])}}}},j.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var n=Object.keys(r),i=0;i<n.length;i++){var s=n[i];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},j.Query=function(e){this.clauses=[],this.allFields=e},j.Query.wildcard=new String(\\\"*\\\"),j.Query.wildcard.NONE=0,j.Query.wildcard.LEADING=1,j.Query.wildcard.TRAILING=2,j.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},j.Query.prototype.clause=function(e){return\\\"fields\\\"in e||(e.fields=this.allFields),\\\"boost\\\"in e||(e.boost=1),\\\"usePipeline\\\"in e||(e.usePipeline=!0),\\\"wildcard\\\"in e||(e.wildcard=j.Query.wildcard.NONE),e.wildcard&j.Query.wildcard.LEADING&&e.term.charAt(0)!=j.Query.wildcard&&(e.term=\\\"*\\\"+e.term),e.wildcard&j.Query.wildcard.TRAILING&&e.term.slice(-1)!=j.Query.wildcard&&(e.term=e.term+\\\"*\\\"),\\\"presence\\\"in e||(e.presence=j.Query.presence.OPTIONAL),this.clauses.push(e),this},j.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=j.Query.presence.PROHIBITED)return!1;return!0},j.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,j.utils.clone(t))}),this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},j.QueryParseError=function(e,t,r){this.name=\\\"QueryParseError\\\",this.message=e,this.start=t,this.end=r},j.QueryParseError.prototype=new Error,j.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},j.QueryLexer.prototype.run=function(){for(var e=j.QueryLexer.lexText;e;)e=e(this)},j.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,n=0;n<this.escapeCharPositions.length;n++)r=this.escapeCharPositions[n],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join(\\\"\\\")},j.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},j.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},j.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return j.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},j.QueryLexer.prototype.width=function(){return this.pos-this.start},j.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},j.QueryLexer.prototype.backup=function(){this.pos-=1},j.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=j.QueryLexer.EOS&&this.backup()},j.QueryLexer.prototype.more=function(){return this.pos<this.length},j.QueryLexer.EOS=\\\"EOS\\\",j.QueryLexer.FIELD=\\\"FIELD\\\",j.QueryLexer.TERM=\\\"TERM\\\",j.QueryLexer.EDIT_DISTANCE=\\\"EDIT_DISTANCE\\\",j.QueryLexer.BOOST=\\\"BOOST\\\",j.QueryLexer.PRESENCE=\\\"PRESENCE\\\",j.QueryLexer.lexField=function(e){return e.backup(),e.emit(j.QueryLexer.FIELD),e.ignore(),j.QueryLexer.lexText},j.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(j.QueryLexer.TERM)),e.ignore(),e.more())return j.QueryLexer.lexText},j.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.EDIT_DISTANCE),j.QueryLexer.lexText},j.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.BOOST),j.QueryLexer.lexText},j.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(j.QueryLexer.TERM)},j.QueryLexer.termSeparator=j.tokenizer.separator,j.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==j.QueryLexer.EOS)return j.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(\\\":\\\"==t)return j.QueryLexer.lexField;if(\\\"~\\\"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexEditDistance;if(\\\"^\\\"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexBoost;if(\\\"+\\\"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(\\\"-\\\"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(t.match(j.QueryLexer.termSeparator))return j.QueryLexer.lexTerm}else e.escapeCharacter()}},j.QueryParser=function(e,t){this.lexer=new j.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},j.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=j.QueryParser.parseClause;e;)e=e(this);return this.query},j.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},j.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},j.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},j.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case j.QueryLexer.PRESENCE:return j.QueryParser.parsePresence;case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:var r=\\\"expected either a field or a term, found \\\"+t.type;throw t.str.length>=1&&(r+=\\\" with value '\\\"+t.str+\\\"'\\\"),new j.QueryParseError(r,t.start,t.end)}},j.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case\\\"-\\\":e.currentClause.presence=j.Query.presence.PROHIBITED;break;case\\\"+\\\":e.currentClause.presence=j.Query.presence.REQUIRED;break;default:var r=\\\"unrecognised presence operator'\\\"+t.str+\\\"'\\\";throw new j.QueryParseError(r,t.start,t.end)}var n=e.peekLexeme();if(null==n)throw r=\\\"expecting term or field, found nothing\\\",new j.QueryParseError(r,t.start,t.end);switch(n.type){case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:throw r=\\\"expecting term or field, found '\\\"+n.type+\\\"'\\\",new j.QueryParseError(r,n.start,n.end)}}},j.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return\\\"'\\\"+e+\\\"'\\\"})).join(\\\", \\\"),n=\\\"unrecognised field '\\\"+t.str+\\\"', possible fields: \\\"+r;throw new j.QueryParseError(n,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i)throw n=\\\"expecting term, found nothing\\\",new j.QueryParseError(n,t.start,t.end);if(i.type===j.QueryLexer.TERM)return j.QueryParser.parseTerm;throw n=\\\"expecting term, found '\\\"+i.type+\\\"'\\\",new j.QueryParseError(n,i.start,i.end)}},j.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf(\\\"*\\\")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:var n=\\\"Unexpected lexeme type '\\\"+r.type+\\\"'\\\";throw new j.QueryParseError(n,r.start,r.end)}else e.nextClause()}},j.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n=\\\"edit distance must be numeric\\\";throw new j.QueryParseError(n,t.start,t.end)}e.currentClause.editDistance=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new j.QueryParseError(n,i.start,i.end)}else e.nextClause()}},j.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n=\\\"boost must be numeric\\\";throw new j.QueryParseError(n,t.start,t.end)}e.currentClause.boost=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new j.QueryParseError(n,i.start,i.end)}else e.nextClause()}},void 0===(i=\\\"function\\\"==typeof(n=function(){return j})?n.call(t,r,t,e):n)||(e.exports=i)}()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var n={};!function(){\\\"use strict\\\";r.d(n,{add:function(){return c},dispose:function(){return y},done:function(){return h},fromExternalJS:function(){return f},load:function(){return p},search:function(){return m},toJS:function(){return d}});var e=r(291),t=(e,t,r)=>new Promise(((n,i)=>{var s=e=>{try{a(r.next(e))}catch(e){i(e)}},o=e=>{try{a(r.throw(e))}catch(e){i(e)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(s,o);a((r=r.apply(e,t)).next())}));let i,s,o,a=[];function u(){i=new e.Builder,i.field(\\\"title\\\"),i.field(\\\"description\\\"),i.ref(\\\"ref\\\"),i.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),o=new Promise((e=>{s=e}))}e.tokenizer.separator=/\\\\s+/,u();const l=t=>{const r=e.trimmer(new e.Token(t,{}));return\\\"*\\\"+e.stemmer(r)+\\\"*\\\"};function c(e,t,r){const n=a.push(r)-1,s={title:e.toLowerCase(),description:t.toLowerCase(),ref:n};i.add(s)}function h(){return t(this,null,(function*(){s(i.build())}))}function d(){return t(this,null,(function*(){return{store:a,index:(yield o).toJSON()}}))}function f(e,r){return t(this,null,(function*(){try{if(importScripts(e),!self[r])throw new Error(\\\"Broken index file format\\\");p(self[r])}catch(e){console.error(\\\"Failed to load search index: \\\"+e.message)}}))}function p(r){return t(this,null,(function*(){a=r.store,s(e.Index.load(r.index))}))}function y(){return t(this,null,(function*(){a=[],u()}))}function m(e,r=0){return t(this,null,(function*(){if(0===e.trim().length)return[];let t=(yield o).query((t=>{e.trim().toLowerCase().split(/\\\\s+/).forEach((e=>{if(1===e.length)return;const r=l(e);t.term(r,{})}))}));return r>0&&(t=t.slice(0,r)),t.map((e=>({meta:a[e.ref],score:e.score})))}))}addEventListener(\\\"message\\\",(function(e){var t,r=e.data,i=r.type,s=r.method,o=r.id,a=r.params;\\\"RPC\\\"===i&&s&&((t=n[s])?Promise.resolve().then((function(){return t.apply(n,a)})):Promise.reject(\\\"No such method\\\")).then((function(e){postMessage({type:\\\"RPC\\\",id:o,result:e})})).catch((function(e){var t={message:e};e.stack&&(t.message=e.message,t.stack=e.stack,t.name=e.name),postMessage({type:\\\"RPC\\\",id:o,error:t})}))})),postMessage({type:\\\"RPC\\\",method:\\\"ready\\\"})}()}();\\n//# sourceMappingURL=cfb294d7f6536ffa8d42.worker.js.map\"])), { name: \"[fullhash].worker.js\" })\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t","function addMethods(worker, methods) {\n var c = 0;\n var callbacks = {};\n worker.addEventListener('message', function (e) {\n var d = e.data;\n if (d.type !== 'RPC') return;\n\n if (d.id) {\n var f = callbacks[d.id];\n\n if (f) {\n delete callbacks[d.id];\n\n if (d.error) {\n f[1](Object.assign(Error(d.error.message), d.error));\n } else {\n f[0](d.result);\n }\n }\n } else {\n var evt = document.createEvent('Event');\n evt.initEvent(d.method, false, false);\n evt.data = d.params;\n worker.dispatchEvent(evt);\n }\n });\n methods.forEach(function (method) {\n worker[method] = function () {\n var _arguments = arguments;\n return new Promise(function (a, b) {\n var id = ++c;\n callbacks[id] = [a, b];\n worker.postMessage({\n type: 'RPC',\n id: id,\n method: method,\n params: [].slice.call(_arguments)\n });\n });\n };\n });\n}\n\nmodule.exports = addMethods;\n//# sourceMappingURL=rpc-wrapper.js.map\n","module.exports = require(\"call-me-maybe\");","module.exports = require(\"fast-safe-stringify\");","module.exports = require(\"stickyfill\");","module.exports = require(\"yaml\");","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"path\");","module.exports = undefined;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"polished\");","import { darken, desaturate, lighten, readableColor, transparentize } from 'polished';\n\nconst defaultTheme: ThemeInterface = {\n spacing: {\n unit: 5,\n sectionHorizontal: ({ spacing }) => spacing.unit * 8,\n sectionVertical: ({ spacing }) => spacing.unit * 8,\n },\n breakpoints: {\n small: '50rem',\n medium: '75rem',\n large: '105rem',\n },\n colors: {\n tonalOffset: 0.2,\n primary: {\n main: '#32329f',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.primary.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.primary.main),\n contrastText: ({ colors }) => readableColor(colors.primary.main),\n },\n success: {\n main: '#1d8127',\n light: ({ colors }) => lighten(colors.tonalOffset * 2, colors.success.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.success.main),\n contrastText: ({ colors }) => readableColor(colors.success.main),\n },\n warning: {\n main: '#ffa500',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.warning.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.warning.main),\n contrastText: '#ffffff',\n },\n error: {\n main: '#d41f1c',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.error.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.error.main),\n contrastText: ({ colors }) => readableColor(colors.error.main),\n },\n gray: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n },\n text: {\n primary: '#333333',\n secondary: ({ colors }) => lighten(colors.tonalOffset, colors.text.primary),\n },\n border: {\n dark: 'rgba(0,0,0, 0.1)',\n light: '#ffffff',\n },\n responses: {\n success: {\n color: ({ colors }) => colors.success.main,\n backgroundColor: ({ colors }) => transparentize(0.93, colors.success.main),\n tabTextColor: ({ colors }) => colors.responses.success.color,\n },\n error: {\n color: ({ colors }) => colors.error.main,\n backgroundColor: ({ colors }) => transparentize(0.93, colors.error.main),\n tabTextColor: ({ colors }) => colors.responses.error.color,\n },\n redirect: {\n color: ({ colors }) => colors.warning.main,\n backgroundColor: ({ colors }) => transparentize(0.9, colors.responses.redirect.color),\n tabTextColor: ({ colors }) => colors.responses.redirect.color,\n },\n info: {\n color: '#87ceeb',\n backgroundColor: ({ colors }) => transparentize(0.9, colors.responses.info.color),\n tabTextColor: ({ colors }) => colors.responses.info.color,\n },\n },\n http: {\n get: '#2F8132',\n post: '#186FAF',\n put: '#95507c',\n options: '#947014',\n patch: '#bf581d',\n delete: '#cc3333',\n basic: '#707070',\n link: '#07818F',\n head: '#A23DAD',\n },\n },\n schema: {\n linesColor: theme =>\n lighten(\n theme.colors.tonalOffset,\n desaturate(theme.colors.tonalOffset, theme.colors.primary.main),\n ),\n defaultDetailsWidth: '75%',\n typeNameColor: theme => theme.colors.text.secondary,\n typeTitleColor: theme => theme.schema.typeNameColor,\n requireLabelColor: theme => theme.colors.error.main,\n labelsTextSize: '0.9em',\n nestingSpacing: '1em',\n nestedBackground: '#fafafa',\n arrow: {\n size: '1.1em',\n color: theme => theme.colors.text.secondary,\n },\n },\n typography: {\n fontSize: '14px',\n lineHeight: '1.5em',\n fontWeightRegular: '400',\n fontWeightBold: '600',\n fontWeightLight: '300',\n fontFamily: 'Roboto, sans-serif',\n smoothing: 'antialiased',\n optimizeSpeed: true,\n headings: {\n fontFamily: 'Montserrat, sans-serif',\n fontWeight: '400',\n lineHeight: '1.6em',\n },\n code: {\n fontSize: '13px',\n fontFamily: 'Courier, monospace',\n lineHeight: ({ typography }) => typography.lineHeight,\n fontWeight: ({ typography }) => typography.fontWeightRegular,\n color: '#e53935',\n backgroundColor: 'rgba(38, 50, 56, 0.05)',\n wrap: false,\n },\n links: {\n color: ({ colors }) => colors.primary.main,\n visited: ({ typography }) => typography.links.color,\n hover: ({ typography }) => lighten(0.2, typography.links.color),\n textDecoration: 'auto',\n hoverTextDecoration: 'auto',\n },\n },\n sidebar: {\n width: '260px',\n backgroundColor: '#fafafa',\n textColor: '#333333',\n activeTextColor: theme =>\n theme.sidebar.textColor !== defaultTheme.sidebar!.textColor\n ? theme.sidebar.textColor\n : theme.colors.primary.main,\n groupItems: {\n activeBackgroundColor: theme => darken(0.1, theme.sidebar.backgroundColor),\n activeTextColor: theme => theme.sidebar.activeTextColor,\n textTransform: 'uppercase',\n },\n level1Items: {\n activeBackgroundColor: theme => darken(0.05, theme.sidebar.backgroundColor),\n activeTextColor: theme => theme.sidebar.activeTextColor,\n textTransform: 'none',\n },\n arrow: {\n size: '1.5em',\n color: theme => theme.sidebar.textColor,\n },\n },\n logo: {\n maxHeight: ({ sidebar }) => sidebar.width,\n maxWidth: ({ sidebar }) => sidebar.width,\n gutter: '2px',\n },\n rightPanel: {\n backgroundColor: '#263238',\n width: '40%',\n textColor: '#ffffff',\n servers: {\n overlay: {\n backgroundColor: '#fafafa',\n textColor: '#263238',\n },\n url: {\n backgroundColor: '#fff',\n },\n },\n },\n codeBlock: {\n backgroundColor: ({ rightPanel }) => darken(0.1, rightPanel.backgroundColor),\n },\n fab: {\n backgroundColor: '#f2f2f2',\n color: '#0065FB',\n },\n};\n\nexport default defaultTheme;\n\nexport function resolveTheme(theme: ThemeInterface): ResolvedThemeInterface {\n const resolvedValues = {};\n let counter = 0;\n const setProxy = (obj, path: string) => {\n Object.keys(obj).forEach(k => {\n const currentPath = (path ? path + '.' : '') + k;\n const val = obj[k];\n if (typeof val === 'function') {\n Object.defineProperty(obj, k, {\n get() {\n if (!resolvedValues[currentPath]) {\n counter++;\n if (counter > 1000) {\n throw new Error(\n `Theme probably contains circular dependency at ${currentPath}: ${val.toString()}`,\n );\n }\n\n resolvedValues[currentPath] = val(theme);\n }\n return resolvedValues[currentPath];\n },\n enumerable: true,\n });\n } else if (typeof val === 'object') {\n setProxy(val, currentPath);\n }\n });\n };\n\n setProxy(theme, '');\n return JSON.parse(JSON.stringify(theme));\n}\n\nexport interface ColorSetting {\n main: string;\n light: string;\n dark: string;\n contrastText: string;\n}\n\nexport interface HTTPResponseColos {\n color: string;\n backgroundColor: string;\n tabTextColor: string;\n}\n\nexport interface FontSettings {\n fontSize: string;\n fontWeight: string;\n fontFamily: string;\n lineHeight: string;\n color: string;\n}\n\nexport interface Servers {\n overlay: {\n backgroundColor: string;\n textColor: string;\n };\n url: {\n backgroundColor: string;\n };\n}\n\nexport interface ResolvedThemeInterface {\n spacing: {\n unit: number;\n sectionHorizontal: number;\n sectionVertical: number;\n };\n breakpoints: {\n small: string;\n medium: string;\n large: string;\n };\n colors: {\n tonalOffset: number;\n primary: ColorSetting;\n success: ColorSetting;\n warning: ColorSetting;\n error: ColorSetting;\n gray: {\n 50: string;\n 100: string;\n };\n border: {\n light: string;\n dark: string;\n };\n text: {\n primary: string;\n secondary: string;\n };\n responses: {\n success: HTTPResponseColos;\n error: HTTPResponseColos;\n redirect: HTTPResponseColos;\n info: HTTPResponseColos;\n };\n http: {\n get: string;\n post: string;\n put: string;\n options: string;\n patch: string;\n delete: string;\n basic: string;\n link: string;\n head: string;\n };\n };\n schema: {\n linesColor: string;\n defaultDetailsWidth: string;\n typeNameColor: string;\n typeTitleColor: string;\n requireLabelColor: string;\n labelsTextSize: string;\n nestingSpacing: string;\n nestedBackground: string;\n arrow: {\n size: string;\n color: string;\n };\n };\n typography: {\n fontSize: string;\n lineHeight: string;\n fontWeightLight: string;\n fontWeightRegular: string;\n fontWeightBold: string;\n fontFamily: string;\n\n smoothing: string;\n optimizeSpeed: boolean;\n\n code: FontSettings & {\n backgroundColor: string;\n wrap: boolean;\n };\n headings: {\n fontFamily: string;\n fontWeight: string;\n lineHeight: string;\n };\n\n links: {\n color: string;\n visited: string;\n hover: string;\n textDecoration: string;\n hoverTextDecoration: string;\n };\n };\n sidebar: {\n width: string;\n backgroundColor: string;\n textColor: string;\n activeTextColor: string;\n groupItems: {\n activeBackgroundColor: string;\n activeTextColor: string;\n textTransform: string;\n };\n level1Items: {\n activeBackgroundColor: string;\n activeTextColor: string;\n textTransform: string;\n };\n arrow: {\n size: string;\n color: string;\n };\n };\n logo: {\n maxHeight: string;\n maxWidth: string;\n gutter: string;\n };\n rightPanel: {\n backgroundColor: string;\n textColor: string;\n width: string;\n servers: Servers;\n };\n codeBlock: {\n backgroundColor: string;\n };\n fab: {\n backgroundColor: string;\n color: string;\n };\n\n extensionsHook?: (name: string, props: any) => string;\n}\n\nexport type primitive = string | number | boolean | undefined | null;\nexport type AdvancedThemeDeep<T> = T extends primitive\n ? T | ((theme: ResolvedThemeInterface) => T)\n : AdvancedThemeObject<T>;\nexport type AdvancedThemeObject<T> = { [P in keyof T]?: AdvancedThemeDeep<T[P]> };\nexport type ThemeInterface = AdvancedThemeObject<ResolvedThemeInterface>;\n","export const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport function querySelector(selector: string): Element | null {\n if (typeof document !== 'undefined') {\n return document.querySelector(selector);\n }\n return null;\n}\n\n/**\n * Drop everything inside <...> (i.e., tags/elements), and keep the text.\n * Unlike browser innerText, this removes newlines; it also doesn't handle\n * un-encoded `<` or `>` characters very well, so don't feed it malformed HTML\n */\nexport function html2Str(html: string): string {\n return html\n .split(/<[^>]+>/)\n .map(chunk => {\n return chunk.trim();\n })\n .filter(trimmedChunk => {\n return trimmedChunk.length > 0;\n })\n .join(' ');\n}\n\n// Alternate scrollIntoViewIfNeeded implementation.\n// Used in all cases, since it seems Chrome's implementation is buggy\n// when \"Experimental Web Platform Features\" is enabled (at least of version 96).\n// See #1714, #1742\n\nexport function scrollIntoViewIfNeeded(el: HTMLElement, centerIfNeeded = true) {\n const parent = el.parentNode as HTMLElement | null;\n if (!parent) {\n return;\n }\n const parentComputedStyle = window.getComputedStyle(parent, undefined);\n const parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width'),\n 10,\n );\n const parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width'),\n 10,\n );\n const overTop = el.offsetTop - parent.offsetTop < parent.scrollTop;\n const overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight;\n const overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft;\n const overRight =\n el.offsetLeft - parent.offsetLeft + el.clientWidth - parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth;\n const alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"slugify\");","import slugify from 'slugify';\n\n/**\n * Maps over array passing `isLast` bool to iterator as the second argument\n */\nexport function mapWithLast<T, P>(array: T[], iteratee: (item: T, isLast: boolean) => P) {\n const res: P[] = [];\n for (let i = 0; i < array.length - 1; i++) {\n res.push(iteratee(array[i], false));\n }\n if (array.length !== 0) {\n res.push(iteratee(array[array.length - 1], true));\n }\n return res;\n}\n\n/**\n * Creates an object with the same keys as object and values generated by running each\n * own enumerable string keyed property of object thru iteratee.\n * The iteratee is invoked with three arguments: (value, key, object).\n *\n * @param object the object to iterate over\n * @param iteratee the function invoked per iteration.\n */\nexport function mapValues<T, P>(\n object: Record<string, T>,\n iteratee: (val: T, key: string, obj: Record<string, T>) => P,\n): Record<string, P> {\n const res: { [key: string]: P } = {};\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n res[key] = iteratee(object[key], key, object);\n }\n }\n return res;\n}\n\n/**\n * flattens collection using `prop` field as a children\n * @param collectionItems collection items\n * @param prop item property with child elements\n */\nexport function flattenByProp<T extends object, P extends keyof T>(\n collectionItems: T[],\n prop: P,\n): T[] {\n const res: T[] = [];\n const iterate = (items: T[]) => {\n for (const item of items) {\n res.push(item);\n if (item[prop]) {\n iterate(item[prop] as any as T[]);\n }\n }\n };\n iterate(collectionItems);\n return res;\n}\n\nexport function stripTrailingSlash(path: string): string {\n if (path.endsWith('/')) {\n return path.substring(0, path.length - 1);\n }\n return path;\n}\n\nexport function isNumeric(n: any): n is number {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nexport function appendToMdHeading(md: string, heading: string, content: string) {\n // if heading is already in md and append to the end of it\n const testRegex = new RegExp(`(^|\\\\n)#\\\\s?${heading}\\\\s*\\\\n`, 'i');\n const replaceRegex = new RegExp(`((\\\\n|^)#\\\\s*${heading}\\\\s*(\\\\n|$)(?:.|\\\\n)*?)(\\\\n#|$)`, 'i');\n if (testRegex.test(md)) {\n return md.replace(replaceRegex, `$1\\n\\n${content}\\n$4`);\n } else {\n // else append heading itself\n const br = md === '' || md.endsWith('\\n\\n') ? '' : md.endsWith('\\n') ? '\\n' : '\\n\\n';\n return `${md}${br}# ${heading}\\n\\n${content}`;\n }\n}\n\nexport const mergeObjects = (target: any, ...sources: any[]): any => {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (source === undefined) {\n return target;\n }\n\n if (isMergebleObject(target) && isMergebleObject(source)) {\n Object.keys(source).forEach((key: string) => {\n if (Object.prototype.hasOwnProperty.call(source, key) && key !== '__proto__') {\n if (isMergebleObject(source[key])) {\n if (!target[key]) {\n target[key] = {};\n }\n mergeObjects(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n });\n }\n\n return mergeObjects(target, ...sources);\n};\n\nexport const isObject = (item: unknown): item is Record<string, unknown> => {\n return item !== null && typeof item === 'object';\n};\n\nconst isMergebleObject = (item): boolean => {\n return isObject(item) && !isArray(item);\n};\n\n/**\n * slugify() returns empty string when failed to slugify.\n * so try to return minimum slugified-string with failed one which keeps original value\n * the regex codes are referenced with https://gist.github.com/mathewbyrne/1280286\n */\nexport function safeSlugify(value: string): string {\n return (\n slugify(value) ||\n value\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/&/g, '-and-') // Replace & with 'and'\n .replace(/\\--+/g, '-') // Replace multiple - with single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, '')\n ); // Trim - from end of text\n}\n\nexport function isAbsoluteUrl(url: string) {\n return /(?:^[a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url);\n}\n\n/**\n * simple resolve URL which doesn't break on strings with url fragments\n * e.g. resolveUrl('http://test.com:{port}', 'path') results in http://test.com:{port}/path\n */\nexport function resolveUrl(url: string, to: string) {\n let res;\n if (to.startsWith('//')) {\n try {\n res = `${new URL(url).protocol || 'https:'}${to}`;\n } catch {\n res = `https:${to}`;\n }\n } else if (isAbsoluteUrl(to)) {\n res = to;\n } else if (!to.startsWith('/')) {\n res = stripTrailingSlash(url) + '/' + to;\n } else {\n try {\n const urlObj = new URL(url);\n urlObj.pathname = to;\n res = urlObj.href;\n } catch {\n res = to;\n }\n }\n return stripTrailingSlash(res);\n}\n\nexport function getBasePath(serverUrl: string): string {\n try {\n return parseURL(serverUrl).pathname;\n } catch (e) {\n // when using with redoc-cli serverUrl can be empty resulting in crash\n return serverUrl;\n }\n}\n\nexport function titleize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function removeQueryStringAndHash(serverUrl: string): string {\n try {\n const url = parseURL(serverUrl);\n url.search = '';\n url.hash = '';\n return url.toString();\n } catch (e) {\n // when using with redoc-cli serverUrl can be empty resulting in crash\n return serverUrl;\n }\n}\n\nfunction parseURL(url: string) {\n if (typeof URL === 'undefined') {\n // node\n return new (require('url').URL)(url);\n } else {\n return new URL(url);\n }\n}\n\nexport function escapeHTMLAttrChars(str: string): string {\n return str.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\nexport function unescapeHTMLChars(str: string): string {\n return str\n .replace(/&#(\\d+);/g, (_m, code) => String.fromCharCode(parseInt(code, 10)))\n .replace(/&amp;/g, '&')\n .replace(/&quot;/g, '\"');\n}\n\nexport function isArray(value: unknown): value is any[] {\n return Array.isArray(value);\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n","import type { LabelsConfig, LabelsConfigRaw } from './types';\n\nconst labels: LabelsConfig = {\n enum: 'Enum',\n enumSingleValue: 'Value',\n enumArray: 'Items',\n default: 'Default',\n deprecated: 'Deprecated',\n example: 'Example',\n examples: 'Examples',\n recursive: 'Recursive',\n arrayOf: 'Array of ',\n webhook: 'Event',\n const: 'Value',\n noResultsFound: 'No results found',\n download: 'Download',\n downloadSpecification: 'Download OpenAPI specification',\n responses: 'Responses',\n callbackResponses: 'Callback responses',\n requestSamples: 'Request samples',\n responseSamples: 'Response samples',\n};\n\nexport function setRedocLabels(_labels?: LabelsConfigRaw) {\n Object.assign(labels, _labels);\n}\n\nexport function l(key: keyof LabelsConfig, idx?: number): string {\n const label = labels[key];\n if (idx !== undefined) {\n return label[idx];\n }\n return label;\n}\n","import {\n OpenAPIOperation,\n OpenAPIParameter,\n OpenAPISchema,\n OpenAPIServer,\n OpenAPITag,\n Referenced,\n} from '../types';\nimport { AppStore } from './AppStore';\nimport { GroupModel } from './models';\nimport { OperationModel } from './models/Operation';\nimport { RedocRawOptions } from './RedocNormalizedOptions';\n\nexport interface StoreState {\n menu: {\n activeItemIdx: number;\n };\n spec: {\n url?: string;\n data: any;\n };\n searchIndex: any;\n options: RedocRawOptions;\n}\n\nexport interface LabelsConfig {\n enum: string;\n enumSingleValue: string;\n enumArray: string;\n default: string;\n deprecated: string;\n example: string;\n examples: string;\n recursive: string;\n arrayOf: string;\n webhook: string;\n const: string;\n noResultsFound: string;\n download: string;\n downloadSpecification: string;\n responses: string;\n callbackResponses: string;\n requestSamples: string;\n responseSamples: string;\n}\n\nexport type LabelsConfigRaw = Partial<LabelsConfig>;\n\nexport interface MDXComponentMeta {\n component: React.ComponentType;\n propsSelector: (store?: AppStore) => any;\n props?: object;\n}\n\nexport interface MarkdownHeading {\n id: string;\n name: string;\n level: number;\n items?: MarkdownHeading[];\n description?: string;\n}\n\nexport type ContentItemModel = GroupModel | OperationModel;\n\nexport type TagInfo = OpenAPITag & {\n operations: ExtendedOpenAPIOperation[];\n used?: boolean;\n};\n\nexport type ExtendedOpenAPIOperation = {\n pointer: string;\n pathName: string;\n httpVerb: string;\n pathParameters: Array<Referenced<OpenAPIParameter>>;\n pathServers: Array<OpenAPIServer> | undefined;\n isWebhook: boolean;\n} & OpenAPIOperation;\n\nexport type TagsInfoMap = Record<string, TagInfo>;\n\nexport interface TagGroup {\n name: string;\n tags: string[];\n}\n\nexport type MenuItemGroupType = 'group' | 'tag' | 'section' | 'schema';\nexport type MenuItemType = MenuItemGroupType | 'operation';\n\nexport interface IMenuItem {\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n depth: number;\n active: boolean;\n expanded: boolean;\n items: IMenuItem[];\n parent?: IMenuItem;\n deprecated?: boolean;\n type: MenuItemType;\n\n deactivate(): void;\n activate(): void;\n\n collapse(): void;\n expand(): void;\n}\n\nexport interface SearchDocument {\n title: string;\n description: string;\n id: string;\n}\n\nexport interface SearchResult<T = string> {\n meta: T;\n score: number;\n}\n\nexport enum SideNavStyleEnum {\n SummaryOnly = 'summary-only',\n PathOnly = 'path-only',\n IdOnly = 'id-only',\n}\n\nexport type MergedOpenAPISchema = OpenAPISchema & {\n 'x-refsStack'?: string[];\n 'x-parentRefs'?: string[];\n 'x-circular-ref'?: boolean;\n};\n","import defaultTheme, { ResolvedThemeInterface, resolveTheme, ThemeInterface } from '../theme';\nimport { querySelector } from '../utils/dom';\nimport { isArray, isNumeric, mergeObjects } from '../utils/helpers';\n\nimport { setRedocLabels } from './Labels';\nimport { SideNavStyleEnum } from './types';\nimport type { LabelsConfigRaw, MDXComponentMeta } from './types';\n\nexport type DownloadUrlsConfig = {\n title?: string;\n url: string;\n}[];\n\nexport interface RedocRawOptions {\n theme?: ThemeInterface;\n scrollYOffset?: number | string | (() => number);\n hideHostname?: boolean | string;\n expandResponses?: string | 'all';\n requiredPropsFirst?: boolean | string; // remove in next major release\n sortRequiredPropsFirst?: boolean | string;\n sortPropsAlphabetically?: boolean | string;\n sortEnumValuesAlphabetically?: boolean | string;\n sortOperationsAlphabetically?: boolean | string;\n sortTagsAlphabetically?: boolean | string;\n nativeScrollbars?: boolean | string;\n pathInMiddlePanel?: boolean | string;\n untrustedSpec?: boolean | string; // remove in next major release\n sanitize?: boolean | string;\n hideLoading?: boolean | string;\n hideDownloadButton?: boolean | string; // remove in next major release\n hideDownloadButtons?: boolean | string;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n downloadUrls?: DownloadUrlsConfig;\n disableSearch?: boolean | string;\n onlyRequiredInSamples?: boolean | string;\n showExtensions?: boolean | string | string[];\n sideNavStyle?: SideNavStyleEnum;\n hideSingleRequestSampleTab?: boolean | string;\n hideRequestPayloadSample?: boolean;\n menuToggle?: boolean | string;\n jsonSampleExpandLevel?: number | string | 'all'; // remove in next major release\n jsonSamplesExpandLevel?: number | string | 'all';\n hideSchemaTitles?: boolean | string;\n simpleOneOfTypeLabel?: boolean | string;\n payloadSampleIdx?: number;\n expandSingleSchemaField?: boolean | string;\n schemaExpansionLevel?: number | string | 'all'; // remove in next major release\n schemasExpansionLevel?: number | string | 'all';\n schemaDefinitionsTagName?: string;\n showObjectSchemaExamples?: boolean | string;\n showSecuritySchemeType?: boolean;\n hideSecuritySection?: boolean;\n\n unstable_ignoreMimeParameters?: boolean;\n\n allowedMdComponents?: Record<string, MDXComponentMeta>;\n\n labels?: LabelsConfigRaw;\n\n enumSkipQuotes?: boolean | string;\n\n expandDefaultServerVariables?: boolean;\n maxDisplayedEnumValues?: number;\n ignoreNamedSchemas?: string[] | string;\n hideSchemaPattern?: boolean;\n generatedPayloadSamplesMaxDepth?: number; // remove in next major release\n generatedSamplesMaxDepth?: number;\n nonce?: string;\n hideFab?: boolean;\n minCharacterLengthToInitSearch?: number;\n showWebhookVerb?: boolean;\n hidePropertiesPrefix?: boolean;\n}\n\nexport function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean {\n if (val === undefined) {\n return defaultValue || false;\n }\n if (typeof val === 'string') {\n return val !== 'false';\n }\n return val;\n}\n\nfunction argValueToNumber(value: number | string | undefined): number | undefined {\n if (typeof value === 'string') {\n return parseInt(value, 10);\n }\n\n if (typeof value === 'number') {\n return value;\n }\n}\n\nfunction argValueToExpandLevel(value?: number | string | undefined, defaultValue = 0): number {\n if (value === 'all') return Infinity;\n\n return argValueToNumber(value) || defaultValue;\n}\n\nexport class RedocNormalizedOptions {\n static normalizeExpandResponses(value: RedocRawOptions['expandResponses']) {\n if (value === 'all') {\n return 'all';\n }\n if (typeof value === 'string') {\n const res = {};\n value.split(',').forEach(code => {\n res[code.trim()] = true;\n });\n return res;\n } else if (value !== undefined) {\n console.warn(\n `expandResponses must be a string but received value \"${value}\" of type ${typeof value}`,\n );\n }\n return {};\n }\n\n static normalizeHideHostname(value: RedocRawOptions['hideHostname']): boolean {\n return !!value;\n }\n\n static normalizeScrollYOffset(value: RedocRawOptions['scrollYOffset']): () => number {\n // just number is not valid selector and leads to crash so checking if isNumeric here\n if (typeof value === 'string' && !isNumeric(value)) {\n const el = querySelector(value);\n if (!el) {\n console.warn(\n 'scrollYOffset value is a selector to non-existing element. Using offset 0 by default',\n );\n }\n const bottom = (el && el.getBoundingClientRect().bottom) || 0;\n return () => bottom;\n } else if (typeof value === 'number' || isNumeric(value)) {\n return () => (typeof value === 'number' ? value : parseFloat(value));\n } else if (typeof value === 'function') {\n return () => {\n const res = value();\n if (typeof res !== 'number') {\n console.warn(\n `scrollYOffset should return number but returned value \"${res}\" of type ${typeof res}`,\n );\n }\n return res;\n };\n } else if (value !== undefined) {\n console.warn(\n 'Wrong value for scrollYOffset ReDoc option: should be string, number or function',\n );\n }\n\n return () => 0;\n }\n\n static normalizeShowExtensions(value: RedocRawOptions['showExtensions']): string[] | boolean {\n if (typeof value === 'undefined') {\n return false;\n }\n if (value === '') {\n return true;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n switch (value) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return value.split(',').map(ext => ext.trim());\n }\n }\n\n static normalizeSideNavStyle(value: RedocRawOptions['sideNavStyle']): SideNavStyleEnum {\n const defaultValue = SideNavStyleEnum.SummaryOnly;\n if (typeof value !== 'string') {\n return defaultValue;\n }\n\n switch (value) {\n case defaultValue:\n return value;\n case SideNavStyleEnum.PathOnly:\n return SideNavStyleEnum.PathOnly;\n case SideNavStyleEnum.IdOnly:\n return SideNavStyleEnum.IdOnly;\n default:\n return defaultValue;\n }\n }\n\n static normalizePayloadSampleIdx(value: RedocRawOptions['payloadSampleIdx']): number {\n if (typeof value === 'number') {\n return Math.max(0, value); // always greater or equal than 0\n }\n\n if (typeof value === 'string') {\n return isFinite(value) ? parseInt(value, 10) : 0;\n }\n\n return 0;\n }\n\n private static normalizeJsonSampleExpandLevel(level?: number | string | 'all'): number {\n if (level === 'all') {\n return +Infinity;\n }\n if (!isNaN(Number(level))) {\n return Math.ceil(Number(level));\n }\n return 2;\n }\n\n private static normalizeGeneratedPayloadSamplesMaxDepth(\n value?: number | string | undefined,\n ): number {\n if (!isNaN(Number(value))) {\n return Math.max(0, Number(value));\n }\n\n return 10;\n }\n\n theme: ResolvedThemeInterface;\n scrollYOffset: () => number;\n hideHostname: boolean;\n expandResponses: { [code: string]: boolean } | 'all';\n sortRequiredPropsFirst: boolean;\n sortPropsAlphabetically: boolean;\n sortEnumValuesAlphabetically: boolean;\n sortOperationsAlphabetically: boolean;\n sortTagsAlphabetically: boolean;\n nativeScrollbars: boolean;\n pathInMiddlePanel: boolean;\n sanitize: boolean;\n hideDownloadButtons: boolean;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n downloadUrls?: DownloadUrlsConfig;\n disableSearch: boolean;\n onlyRequiredInSamples: boolean;\n showExtensions: boolean | string[];\n sideNavStyle: SideNavStyleEnum;\n hideSingleRequestSampleTab: boolean;\n hideRequestPayloadSample: boolean;\n menuToggle: boolean;\n jsonSamplesExpandLevel: number;\n enumSkipQuotes: boolean;\n hideSchemaTitles: boolean;\n simpleOneOfTypeLabel: boolean;\n payloadSampleIdx: number;\n expandSingleSchemaField: boolean;\n schemasExpansionLevel: number;\n schemaDefinitionsTagName?: string;\n showObjectSchemaExamples: boolean;\n showSecuritySchemeType?: boolean;\n hideSecuritySection?: boolean;\n\n /* tslint:disable-next-line */\n unstable_ignoreMimeParameters: boolean;\n allowedMdComponents: Record<string, MDXComponentMeta>;\n\n expandDefaultServerVariables: boolean;\n maxDisplayedEnumValues?: number;\n\n ignoreNamedSchemas: Set<string>;\n hideSchemaPattern: boolean;\n generatedSamplesMaxDepth: number;\n hideFab: boolean;\n minCharacterLengthToInitSearch: number;\n showWebhookVerb: boolean;\n hidePropertiesPrefix?: boolean;\n\n nonce?: string;\n\n constructor(raw: RedocRawOptions, defaults: RedocRawOptions = {}) {\n raw = { ...defaults, ...raw };\n const hook = raw.theme && raw.theme.extensionsHook;\n\n // migrate from old theme\n if ((raw.theme as any)?.menu && !raw.theme?.sidebar) {\n console.warn('Theme setting \"menu\" is deprecated. Rename to \"sidebar\"');\n raw.theme!.sidebar = (raw.theme as any).menu;\n }\n\n if ((raw.theme as any)?.codeSample && !raw.theme?.codeBlock) {\n console.warn('Theme setting \"codeSample\" is deprecated. Rename to \"codeBlock\"');\n raw.theme!.codeBlock = (raw.theme as any).codeSample;\n }\n\n this.theme = resolveTheme(\n mergeObjects({} as any, defaultTheme, { ...raw.theme, extensionsHook: undefined }),\n );\n\n this.theme.extensionsHook = hook as any;\n\n // do not support dynamic labels changes. Labels should be configured before\n setRedocLabels(raw.labels);\n\n this.scrollYOffset = RedocNormalizedOptions.normalizeScrollYOffset(raw.scrollYOffset);\n this.hideHostname = RedocNormalizedOptions.normalizeHideHostname(raw.hideHostname);\n this.expandResponses = RedocNormalizedOptions.normalizeExpandResponses(raw.expandResponses);\n this.sortRequiredPropsFirst = argValueToBoolean(\n raw.sortRequiredPropsFirst || raw.requiredPropsFirst,\n );\n this.sortPropsAlphabetically = argValueToBoolean(raw.sortPropsAlphabetically);\n this.sortEnumValuesAlphabetically = argValueToBoolean(raw.sortEnumValuesAlphabetically);\n this.sortOperationsAlphabetically = argValueToBoolean(raw.sortOperationsAlphabetically);\n this.sortTagsAlphabetically = argValueToBoolean(raw.sortTagsAlphabetically);\n this.nativeScrollbars = argValueToBoolean(raw.nativeScrollbars);\n this.pathInMiddlePanel = argValueToBoolean(raw.pathInMiddlePanel);\n this.sanitize = argValueToBoolean(raw.sanitize || raw.untrustedSpec);\n this.hideDownloadButtons = argValueToBoolean(raw.hideDownloadButtons || raw.hideDownloadButton);\n this.downloadFileName = raw.downloadFileName;\n this.downloadDefinitionUrl = raw.downloadDefinitionUrl;\n this.downloadUrls = raw.downloadUrls;\n this.disableSearch = argValueToBoolean(raw.disableSearch);\n this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples);\n this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions);\n this.sideNavStyle = RedocNormalizedOptions.normalizeSideNavStyle(raw.sideNavStyle);\n this.hideSingleRequestSampleTab = argValueToBoolean(raw.hideSingleRequestSampleTab);\n this.hideRequestPayloadSample = argValueToBoolean(raw.hideRequestPayloadSample);\n this.menuToggle = argValueToBoolean(raw.menuToggle, true);\n this.jsonSamplesExpandLevel = RedocNormalizedOptions.normalizeJsonSampleExpandLevel(\n raw.jsonSamplesExpandLevel || raw.jsonSampleExpandLevel,\n );\n this.enumSkipQuotes = argValueToBoolean(raw.enumSkipQuotes);\n this.hideSchemaTitles = argValueToBoolean(raw.hideSchemaTitles);\n this.simpleOneOfTypeLabel = argValueToBoolean(raw.simpleOneOfTypeLabel);\n this.payloadSampleIdx = RedocNormalizedOptions.normalizePayloadSampleIdx(raw.payloadSampleIdx);\n this.expandSingleSchemaField = argValueToBoolean(raw.expandSingleSchemaField);\n this.schemasExpansionLevel = argValueToExpandLevel(\n raw.schemasExpansionLevel || raw.schemaExpansionLevel,\n );\n this.schemaDefinitionsTagName = raw.schemaDefinitionsTagName;\n this.showObjectSchemaExamples = argValueToBoolean(raw.showObjectSchemaExamples);\n this.showSecuritySchemeType = argValueToBoolean(raw.showSecuritySchemeType);\n this.hideSecuritySection = argValueToBoolean(raw.hideSecuritySection);\n\n this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters);\n\n this.allowedMdComponents = raw.allowedMdComponents || {};\n\n this.expandDefaultServerVariables = argValueToBoolean(raw.expandDefaultServerVariables);\n this.maxDisplayedEnumValues = argValueToNumber(raw.maxDisplayedEnumValues);\n const ignoreNamedSchemas = isArray(raw.ignoreNamedSchemas)\n ? raw.ignoreNamedSchemas\n : raw.ignoreNamedSchemas?.split(',').map(s => s.trim());\n this.ignoreNamedSchemas = new Set(ignoreNamedSchemas);\n this.hideSchemaPattern = argValueToBoolean(raw.hideSchemaPattern);\n this.generatedSamplesMaxDepth = RedocNormalizedOptions.normalizeGeneratedPayloadSamplesMaxDepth(\n raw.generatedSamplesMaxDepth || raw.generatedPayloadSamplesMaxDepth,\n );\n this.nonce = raw.nonce;\n this.hideFab = argValueToBoolean(raw.hideFab);\n this.minCharacterLengthToInitSearch = argValueToNumber(raw.minCharacterLengthToInitSearch) || 3;\n this.showWebhookVerb = argValueToBoolean(raw.showWebhookVerb);\n this.hidePropertiesPrefix = argValueToBoolean(raw.hidePropertiesPrefix, true);\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"styled-components\");","import * as styledComponents from 'styled-components';\n\nimport type { ResolvedThemeInterface } from './theme';\n\nexport type { ResolvedThemeInterface };\n\nconst {\n default: styled,\n css,\n createGlobalStyle,\n keyframes,\n ThemeProvider,\n} = styledComponents as unknown as styledComponents.ThemedStyledComponentsModule<ResolvedThemeInterface>;\n\nexport const media = {\n lessThan(breakpoint, print?: boolean, extra?: string) {\n return (...args) => css`\n @media ${print ? 'print, ' : ''} screen and (max-width: ${props =>\n props.theme.breakpoints[breakpoint]}) ${extra || ''} {\n ${(css as any)(...args)};\n }\n `;\n },\n\n greaterThan(breakpoint) {\n return (...args) => css`\n @media (min-width: ${props => props.theme.breakpoints[breakpoint]}) {\n ${(css as any)(...args)};\n }\n `;\n },\n\n between(firstBreakpoint, secondBreakpoint) {\n return (...args) => css`\n @media (min-width: ${props =>\n props.theme.breakpoints[firstBreakpoint]}) and (max-width: ${props =>\n props.theme.breakpoints[secondBreakpoint]}) {\n ${(css as any)(...args)};\n }\n `;\n },\n};\n\nexport { css, createGlobalStyle, keyframes, ThemeProvider };\nexport default styled;\n\nexport function extensionsHook(styledName: string) {\n return props => {\n if (!props.theme.extensionsHook) {\n return;\n }\n return props.theme.extensionsHook(styledName, props);\n };\n}\n","import * as React from 'react';\nimport styled from '../styled-components';\n\nconst ErrorWrapper = styled.div`\n padding: 20px;\n color: red;\n`;\n\nexport class ErrorBoundary extends React.Component<\n React.PropsWithChildren<unknown>,\n { error?: Error }\n> {\n constructor(props) {\n super(props);\n this.state = { error: undefined };\n }\n\n componentDidCatch(error) {\n this.setState({ error });\n return false;\n }\n\n render() {\n if (this.state.error) {\n return (\n <ErrorWrapper>\n <h1>Something went wrong...</h1>\n <small> {this.state.error.message} </small>\n <p>\n <details>\n <summary>Stack trace</summary>\n <pre>{this.state.error.stack}</pre>\n </details>\n </p>\n <small> ReDoc Version: {__REDOC_VERSION__}</small> <br />\n <small> Commit: {__REDOC_REVISION__}</small>\n </ErrorWrapper>\n );\n }\n return <React.Fragment>{React.Children.only(this.props.children)}</React.Fragment>;\n }\n}\n","import * as React from 'react';\nimport styled, { keyframes } from '../../styled-components';\n\nconst _Spinner = (props: { className?: string; color: string }) => (\n <svg className={props.className} version=\"1.1\" width=\"512\" height=\"512\" viewBox=\"0 0 512 512\">\n <path d=\"M275.682 147.999c0 10.864-8.837 19.661-19.682 19.661v0c-10.875 0-19.681-8.796-19.681-19.661v-96.635c0-10.885 8.806-19.661 19.681-19.661v0c10.844 0 19.682 8.776 19.682 19.661v96.635z\" />\n <path d=\"M275.682 460.615c0 10.865-8.837 19.682-19.682 19.682v0c-10.875 0-19.681-8.817-19.681-19.682v-96.604c0-10.885 8.806-19.681 19.681-19.681v0c10.844 0 19.682 8.796 19.682 19.682v96.604z\" />\n <path d=\"M147.978 236.339c10.885 0 19.681 8.755 19.681 19.641v0c0 10.885-8.796 19.702-19.681 19.702h-96.624c-10.864 0-19.661-8.817-19.661-19.702v0c0-10.885 8.796-19.641 19.661-19.641h96.624z\" />\n <path d=\"M460.615 236.339c10.865 0 19.682 8.755 19.682 19.641v0c0 10.885-8.817 19.702-19.682 19.702h-96.584c-10.885 0-19.722-8.817-19.722-19.702v0c0-10.885 8.837-19.641 19.722-19.641h96.584z\" />\n <path d=\"M193.546 165.703c7.69 7.66 7.68 20.142 0 27.822v0c-7.701 7.701-20.162 7.701-27.853 0.020l-68.311-68.322c-7.68-7.701-7.68-20.142 0-27.863v0c7.68-7.68 20.121-7.68 27.822 0l68.342 68.342z\" />\n <path d=\"M414.597 386.775c7.7 7.68 7.7 20.163 0.021 27.863v0c-7.7 7.659-20.142 7.659-27.843-0.062l-68.311-68.26c-7.68-7.7-7.68-20.204 0-27.863v0c7.68-7.7 20.163-7.7 27.842 0l68.291 68.322z\" />\n <path d=\"M165.694 318.464c7.69-7.7 20.153-7.7 27.853 0v0c7.68 7.659 7.69 20.163 0 27.863l-68.342 68.322c-7.67 7.659-20.142 7.659-27.822-0.062v0c-7.68-7.68-7.68-20.122 0-27.801l68.311-68.322z\" />\n <path d=\"M386.775 97.362c7.7-7.68 20.142-7.68 27.822 0v0c7.7 7.68 7.7 20.183 0.021 27.863l-68.322 68.311c-7.68 7.68-20.163 7.68-27.843-0.020v0c-7.68-7.68-7.68-20.162 0-27.822l68.322-68.332z\" />\n </svg>\n);\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0deg); }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const Spinner = styled(_Spinner)`\n animation: 2s ${rotate} linear infinite;\n width: 50px;\n height: 50px;\n content: '';\n display: inline-block;\n margin-left: -25px;\n\n path {\n fill: ${props => props.color};\n }\n`;\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { Spinner } from './Spinner.svg';\n\nconst LoadingMessage = styled.div<{ color: string }>`\n font-family: helvetica, sans;\n width: 100%;\n text-align: center;\n font-size: 25px;\n margin: 30px 0 20px 0;\n color: ${props => props.color};\n`;\n\nexport interface LoadingProps {\n color: string;\n}\n\nexport class Loading extends React.PureComponent<LoadingProps> {\n render() {\n return (\n <div style={{ textAlign: 'center' }}>\n <LoadingMessage color={this.props.color}>Loading ...</LoadingMessage>\n <Spinner color={this.props.color} />\n </div>\n );\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import * as React from 'react';\n\nimport { RedocNormalizedOptions } from '../services/RedocNormalizedOptions';\n\nexport const OptionsContext = React.createContext(new RedocNormalizedOptions({}));\nexport const OptionsProvider = OptionsContext.Provider;\nexport const OptionsConsumer = OptionsContext.Consumer;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@redocly/openapi-core/lib/bundle\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@redocly/openapi-core/lib/config/config\");","import type { Source, Document } from '@redocly/openapi-core';\n// eslint-disable-next-line import/no-internal-modules\nimport type { ResolvedConfig } from '@redocly/openapi-core/lib/config';\n\n// eslint-disable-next-line import/no-internal-modules\nimport { bundle } from '@redocly/openapi-core/lib/bundle';\n// eslint-disable-next-line import/no-internal-modules\nimport { Config } from '@redocly/openapi-core/lib/config/config';\n\n/* tslint:disable-next-line:no-implicit-dependencies */\nimport { convertObj } from 'swagger2openapi';\nimport { OpenAPISpec } from '../types';\nimport { IS_BROWSER } from './dom';\n\nexport async function loadAndBundleSpec(specUrlOrObject: object | string): Promise<OpenAPISpec> {\n const config = new Config({} as ResolvedConfig);\n const bundleOpts = {\n config,\n base: IS_BROWSER ? window.location.href : process.cwd(),\n };\n\n if (IS_BROWSER) {\n config.resolve.http.customFetch = global.fetch;\n }\n\n if (typeof specUrlOrObject === 'object' && specUrlOrObject !== null) {\n bundleOpts['doc'] = {\n source: { absoluteRef: '' } as Source,\n parsed: specUrlOrObject,\n } as Document;\n } else {\n bundleOpts['ref'] = specUrlOrObject;\n }\n\n const {\n bundle: { parsed },\n } = await bundle(bundleOpts);\n return parsed.swagger !== undefined ? convertSwagger2OpenAPI(parsed) : parsed;\n}\n\nexport function convertSwagger2OpenAPI(spec: any): Promise<OpenAPISpec> {\n console.warn('[ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0');\n return new Promise<OpenAPISpec>((resolve, reject) =>\n convertObj(spec, { patch: true, warnOnly: true, text: '{}', anchors: true }, (err, res) => {\n // TODO: log any warnings\n if (err) {\n return reject(err);\n }\n resolve(res && (res.openapi as any));\n }),\n );\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"decko\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"eventemitter3\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"json-pointer\");","'use strict';\nimport * as JsonPointerLib from 'json-pointer';\n\nconst origParse = JsonPointerLib.parse;\n/**\n * Wrapper for JsonPointer. Provides common operations\n */\n\nexport class JsonPointer {\n /**\n * returns last JsonPointer token\n * if level > 1 returns levels last (second last/third last)\n * @example\n * // returns subpath\n * JsonPointerHelper.baseName('/path/0/subpath')\n * // returns foo\n * JsonPointerHelper.baseName('/path/foo/subpath', 2)\n */\n static baseName(pointer, level = 1) {\n const tokens = JsonPointer.parse(pointer);\n return tokens[tokens.length - level];\n }\n\n /**\n * returns dirname of pointer\n * if level > 1 returns corresponding dirname in the hierarchy\n * @example\n * // returns /path/0\n * JsonPointerHelper.dirName('/path/0/subpath')\n * // returns /path\n * JsonPointerHelper.dirName('/path/foo/subpath', 2)\n */\n static dirName(pointer, level = 1) {\n const tokens = JsonPointer.parse(pointer);\n return JsonPointerLib.compile(tokens.slice(0, tokens.length - level));\n }\n\n /**\n * returns relative path tokens\n * @example\n * // returns ['subpath']\n * JsonPointerHelper.relative('/path/0', '/path/0/subpath')\n * // returns ['foo', 'subpath']\n * JsonPointerHelper.relative('/path', '/path/foo/subpath')\n */\n static relative(from, to): string[] {\n const fromTokens = JsonPointer.parse(from);\n const toTokens = JsonPointer.parse(to);\n return toTokens.slice(fromTokens.length);\n }\n\n /**\n * overridden JsonPointer original parse to take care of prefixing '#' symbol\n * that is not valid JsonPointer\n */\n static parse(pointer) {\n let ptr = pointer;\n if (ptr.charAt(0) === '#') {\n ptr = ptr.substring(1);\n }\n return origParse(ptr);\n }\n\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param {string} base - The base path\n * @param {string|string[]} tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns {string}\n */\n static join(base, tokens) {\n // TODO: optimize\n const baseTokens = JsonPointer.parse(base);\n const resTokens = baseTokens.concat(tokens);\n return JsonPointerLib.compile(resTokens);\n }\n\n static get(object: object, pointer: string) {\n return JsonPointerLib.get(object, pointer);\n }\n\n static compile(tokens: string[]) {\n return JsonPointerLib.compile(tokens);\n }\n\n static escape(pointer: string) {\n return JsonPointerLib.escape(pointer);\n }\n}\n(JsonPointerLib as any).parse = JsonPointer.parse;\nObject.assign(JsonPointer, JsonPointerLib);\nexport default JsonPointer;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"url-template\");","import { dirname } from 'path';\nimport * as URLtemplate from 'url-template';\n\nimport { ExtendedOpenAPIOperation } from '../services';\nimport { FieldModel } from '../services/models';\nimport { OpenAPIParser } from '../services/OpenAPIParser';\nimport {\n OpenAPIEncoding,\n OpenAPIMediaType,\n OpenAPIParameter,\n OpenAPIParameterStyle,\n OpenAPIRequestBody,\n OpenAPIResponse,\n OpenAPISchema,\n OpenAPIServer,\n Referenced,\n} from '../types';\nimport { IS_BROWSER } from './dom';\nimport { isNumeric, removeQueryStringAndHash, resolveUrl, isArray, isBoolean } from './helpers';\n\nfunction isWildcardStatusCode(statusCode: string | number): statusCode is string {\n return typeof statusCode === 'string' && /\\dxx/i.test(statusCode);\n}\n\nexport function isStatusCode(statusCode: string) {\n return statusCode === 'default' || isNumeric(statusCode) || isWildcardStatusCode(statusCode);\n}\n\nexport function getStatusCodeType(statusCode: string | number, defaultAsError = false): string {\n if (statusCode === 'default') {\n return defaultAsError ? 'error' : 'success';\n }\n\n let code = typeof statusCode === 'string' ? parseInt(statusCode, 10) : statusCode;\n if (isWildcardStatusCode(statusCode)) {\n code *= 100; // parseInt('2xx') parses to 2\n }\n\n if (code < 100 || code > 599) {\n throw new Error('invalid HTTP code');\n }\n let res = 'success';\n if (code >= 300 && code < 400) {\n res = 'redirect';\n } else if (code >= 400) {\n res = 'error';\n } else if (code < 200) {\n res = 'info';\n }\n return res;\n}\n\nconst operationNames = {\n get: true,\n post: true,\n put: true,\n head: true,\n patch: true,\n delete: true,\n options: true,\n $ref: true,\n};\n\nexport function isOperationName(key: string): boolean {\n return key in operationNames;\n}\n\nexport function getOperationSummary(operation: ExtendedOpenAPIOperation): string {\n return (\n operation.summary ||\n operation.operationId ||\n (operation.description && operation.description.substring(0, 50)) ||\n operation.pathName ||\n '<no summary>'\n );\n}\n\nconst schemaKeywordTypes = {\n multipleOf: 'number',\n maximum: 'number',\n exclusiveMaximum: 'number',\n minimum: 'number',\n exclusiveMinimum: 'number',\n\n maxLength: 'string',\n minLength: 'string',\n pattern: 'string',\n contentEncoding: 'string',\n contentMediaType: 'string',\n\n items: 'array',\n maxItems: 'array',\n minItems: 'array',\n uniqueItems: 'array',\n\n maxProperties: 'object',\n minProperties: 'object',\n required: 'object',\n additionalProperties: 'object',\n unevaluatedProperties: 'object',\n properties: 'object',\n patternProperties: 'object',\n};\n\nexport function detectType(schema: OpenAPISchema): string {\n if (schema.type !== undefined && !isArray(schema.type)) {\n return schema.type;\n }\n const keywords = Object.keys(schemaKeywordTypes);\n for (const keyword of keywords) {\n const type = schemaKeywordTypes[keyword];\n if (schema[keyword] !== undefined) {\n return type;\n }\n }\n\n return 'any';\n}\n\nexport function isPrimitiveType(\n schema: OpenAPISchema,\n type: string | string[] | undefined = schema.type,\n) {\n if (schema['x-circular-ref']) {\n return true;\n }\n\n if (schema.oneOf !== undefined || schema.anyOf !== undefined) {\n return false;\n }\n\n if ((schema.if && schema.then) || (schema.if && schema.else)) {\n return false;\n }\n\n let isPrimitive = true;\n const isArrayType = isArray(type);\n\n if (type === 'object' || (isArrayType && type?.includes('object'))) {\n isPrimitive =\n schema.properties !== undefined\n ? Object.keys(schema.properties).length === 0\n : schema.additionalProperties === undefined &&\n schema.unevaluatedProperties === undefined &&\n schema.patternProperties === undefined;\n }\n\n if (isArray(schema.items) || isArray(schema.prefixItems)) {\n return false;\n }\n\n if (\n schema.items !== undefined &&\n !isBoolean(schema.items) &&\n (type === 'array' || (isArrayType && type?.includes('array')))\n ) {\n isPrimitive = isPrimitiveType(schema.items, schema.items.type);\n }\n\n return isPrimitive;\n}\n\nexport function isJsonLike(contentType: string): boolean {\n return contentType.search(/json/i) !== -1;\n}\n\nexport function isFormUrlEncoded(contentType: string): boolean {\n return contentType === 'application/x-www-form-urlencoded';\n}\n\nfunction delimitedEncodeField(fieldVal: any, fieldName: string, delimiter: string): string {\n if (isArray(fieldVal)) {\n return fieldVal.map(v => v.toString()).join(delimiter);\n } else if (typeof fieldVal === 'object') {\n return Object.keys(fieldVal)\n .map(k => `${k}${delimiter}${fieldVal[k]}`)\n .join(delimiter);\n } else {\n return fieldName + '=' + fieldVal.toString();\n }\n}\n\nfunction deepObjectEncodeField(fieldVal: any, fieldName: string): string {\n if (isArray(fieldVal)) {\n console.warn('deepObject style cannot be used with array value:' + fieldVal.toString());\n return '';\n } else if (typeof fieldVal === 'object') {\n return Object.keys(fieldVal)\n .map(k => `${fieldName}[${k}]=${fieldVal[k]}`)\n .join('&');\n } else {\n console.warn('deepObject style cannot be used with non-object value:' + fieldVal.toString());\n return '';\n }\n}\n\nfunction serializeFormValue(name: string, explode: boolean, value: any) {\n // Use RFC6570 safe name ([a-zA-Z0-9_]) and replace with our name later\n // e.g. URI.template doesn't parse names with hyphen (-) which are valid query param names\n const safeName = '__redoc_param_name__';\n const suffix = explode ? '*' : '';\n const template = URLtemplate.parse(`{?${safeName}${suffix}}`);\n return template\n .expand({ [safeName]: value })\n .substring(1)\n .replace(/__redoc_param_name__/g, name);\n}\n\n/*\n * Should be used only for url-form-encoded body payloads\n * To be used for parameters should be extended with other style values\n */\nexport function urlFormEncodePayload(\n payload: object,\n encoding: { [field: string]: OpenAPIEncoding } = {},\n) {\n if (isArray(payload)) {\n throw new Error('Payload must have fields: ' + payload.toString());\n } else {\n return Object.keys(payload)\n .map(fieldName => {\n const fieldVal = payload[fieldName];\n const { style = 'form', explode = true } = encoding[fieldName] || {};\n switch (style) {\n case 'form':\n return serializeFormValue(fieldName, explode, fieldVal);\n case 'spaceDelimited':\n return delimitedEncodeField(fieldVal, fieldName, '%20');\n case 'pipeDelimited':\n return delimitedEncodeField(fieldVal, fieldName, '|');\n case 'deepObject':\n return deepObjectEncodeField(fieldVal, fieldName);\n default:\n // TODO implement rest of styles for path parameters\n console.warn('Incorrect or unsupported encoding style: ' + style);\n return '';\n }\n })\n .join('&');\n }\n}\n\nfunction serializePathParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n const suffix = explode ? '*' : '';\n let prefix = '';\n\n if (style === 'label') {\n prefix = '.';\n } else if (style === 'matrix') {\n prefix = ';';\n }\n\n // Use RFC6570 safe name ([a-zA-Z0-9_]) and replace with our name later\n // e.g. URI.template doesn't parse names with hyphen (-) which are valid query param names\n const safeName = '__redoc_param_name__';\n const template = URLtemplate.parse(`{${prefix}${safeName}${suffix}}`);\n\n return template.expand({ [safeName]: value }).replace(/__redoc_param_name__/g, name);\n}\n\nfunction serializeQueryParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'form':\n return serializeFormValue(name, explode, value);\n case 'spaceDelimited':\n if (!isArray(value)) {\n console.warn('The style spaceDelimited is only applicable to arrays');\n return '';\n }\n if (explode) {\n return serializeFormValue(name, explode, value);\n }\n\n return `${name}=${value.join('%20')}`;\n case 'pipeDelimited':\n if (!isArray(value)) {\n console.warn('The style pipeDelimited is only applicable to arrays');\n return '';\n }\n if (explode) {\n return serializeFormValue(name, explode, value);\n }\n\n return `${name}=${value.join('|')}`;\n case 'deepObject':\n if (!explode || isArray(value) || typeof value !== 'object') {\n console.warn('The style deepObject is only applicable for objects with explode=true');\n return '';\n }\n\n return deepObjectEncodeField(value, name);\n default:\n console.warn('Unexpected style for query: ' + style);\n return '';\n }\n}\n\nfunction serializeHeaderParameter(\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'simple':\n const suffix = explode ? '*' : '';\n\n // name is not important here, so use RFC6570 safe name ([a-zA-Z0-9_])\n const name = '__redoc_param_name__';\n const template = URLtemplate.parse(`{${name}${suffix}}`);\n return decodeURIComponent(template.expand({ [name]: value }));\n default:\n console.warn('Unexpected style for header: ' + style);\n return '';\n }\n}\n\nfunction serializeCookieParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'form':\n return serializeFormValue(name, explode, value);\n default:\n console.warn('Unexpected style for cookie: ' + style);\n return '';\n }\n}\n\nexport function serializeParameterValueWithMime(value: any, mime: string): string {\n if (isJsonLike(mime)) {\n return JSON.stringify(value);\n } else {\n console.warn(`Parameter serialization as ${mime} is not supported`);\n return '';\n }\n}\n\nexport function serializeParameterValue(\n parameter: (OpenAPIParameter & { serializationMime?: string }) | FieldModel,\n value: any,\n): string {\n const { name, style, explode = false, serializationMime } = parameter;\n\n if (serializationMime) {\n switch (parameter.in) {\n case 'path':\n case 'header':\n return serializeParameterValueWithMime(value, serializationMime);\n case 'cookie':\n case 'query':\n return `${name}=${serializeParameterValueWithMime(value, serializationMime)}`;\n default:\n console.warn('Unexpected parameter location: ' + parameter.in);\n return '';\n }\n }\n\n if (!style) {\n console.warn(`Missing style attribute or content for parameter ${name}`);\n return '';\n }\n\n switch (parameter.in) {\n case 'path':\n return serializePathParameter(name, style, explode, value);\n case 'query':\n return serializeQueryParameter(name, style, explode, value);\n case 'header':\n return serializeHeaderParameter(style, explode, value);\n case 'cookie':\n return serializeCookieParameter(name, style, explode, value);\n default:\n console.warn('Unexpected parameter location: ' + parameter.in);\n return '';\n }\n}\n\nexport function getSerializedValue(field: FieldModel, example: any) {\n if (field.in) {\n // decode for better readability in examples: see https://github.com/Redocly/redoc/issues/1138\n return decodeURIComponent(serializeParameterValue(field, example));\n } else {\n return typeof example === 'object' ? example : String(example);\n }\n}\n\nexport function langFromMime(contentType: string): string {\n if (contentType.search(/xml/i) !== -1) {\n return 'xml';\n }\n\n if (contentType.search(/csv/i) !== -1) {\n return 'csv';\n }\n\n if (contentType.search(/plain/i) !== -1) {\n return 'tex';\n }\n\n return 'clike';\n}\n\nconst DEFINITION_NAME_REGEX = /^#\\/components\\/(schemas|pathItems)\\/([^/]+)$/;\n\nexport function isNamedDefinition(pointer?: string): boolean {\n return DEFINITION_NAME_REGEX.test(pointer || '');\n}\n\nexport function getDefinitionName(pointer?: string): string | undefined {\n const [name] = pointer?.match(DEFINITION_NAME_REGEX)?.reverse() || [];\n return name;\n}\n\nfunction humanizeMultipleOfConstraint(multipleOf: number | undefined): string | undefined {\n if (multipleOf === undefined) {\n return;\n }\n const strigifiedMultipleOf = multipleOf.toString(10);\n if (!/^0\\.0*1$/.test(strigifiedMultipleOf)) {\n return `multiple of ${strigifiedMultipleOf}`;\n }\n return `decimal places <= ${strigifiedMultipleOf.split('.')[1].length}`;\n}\n\nfunction humanizeRangeConstraint(\n description: string,\n min: number | undefined,\n max: number | undefined,\n): string | undefined {\n let stringRange;\n if (min !== undefined && max !== undefined) {\n if (min === max) {\n stringRange = `= ${min} ${description}`;\n } else {\n stringRange = `[ ${min} .. ${max} ] ${description}`;\n }\n } else if (max !== undefined) {\n stringRange = `<= ${max} ${description}`;\n } else if (min !== undefined) {\n if (min === 1) {\n stringRange = 'non-empty';\n } else {\n stringRange = `>= ${min} ${description}`;\n }\n }\n\n return stringRange;\n}\n\nexport function humanizeNumberRange(schema: OpenAPISchema): string | undefined {\n const minimum =\n typeof schema.exclusiveMinimum === 'number'\n ? Math.min(schema.exclusiveMinimum, schema.minimum ?? Infinity)\n : schema.minimum;\n const maximum =\n typeof schema.exclusiveMaximum === 'number'\n ? Math.max(schema.exclusiveMaximum, schema.maximum ?? -Infinity)\n : schema.maximum;\n const exclusiveMinimum = typeof schema.exclusiveMinimum === 'number' || schema.exclusiveMinimum;\n const exclusiveMaximum = typeof schema.exclusiveMaximum === 'number' || schema.exclusiveMaximum;\n\n if (minimum !== undefined && maximum !== undefined) {\n return `${exclusiveMinimum ? '( ' : '[ '}${minimum} .. ${maximum}${\n exclusiveMaximum ? ' )' : ' ]'\n }`;\n } else if (maximum !== undefined) {\n return `${exclusiveMaximum ? '< ' : '<= '}${maximum}`;\n } else if (minimum !== undefined) {\n return `${exclusiveMinimum ? '> ' : '>= '}${minimum}`;\n }\n}\n\nexport function humanizeConstraints(schema: OpenAPISchema): string[] {\n const res: string[] = [];\n\n const stringRange = humanizeRangeConstraint('characters', schema.minLength, schema.maxLength);\n if (stringRange !== undefined) {\n res.push(stringRange);\n }\n\n const arrayRange = humanizeRangeConstraint('items', schema.minItems, schema.maxItems);\n if (arrayRange !== undefined) {\n res.push(arrayRange);\n }\n\n const propertiesRange = humanizeRangeConstraint(\n 'properties',\n schema.minProperties,\n schema.maxProperties,\n );\n if (propertiesRange !== undefined) {\n res.push(propertiesRange);\n }\n\n const multipleOfConstraint = humanizeMultipleOfConstraint(schema.multipleOf);\n if (multipleOfConstraint !== undefined) {\n res.push(multipleOfConstraint);\n }\n\n const numberRange = humanizeNumberRange(schema);\n if (numberRange !== undefined) {\n res.push(numberRange);\n }\n\n if (schema.uniqueItems) {\n res.push('unique');\n }\n\n return res;\n}\n\nexport function sortByRequired(fields: FieldModel[], order: string[] = []) {\n const unrequiredFields: FieldModel[] = [];\n const orderedFields: FieldModel[] = [];\n const unorderedFields: FieldModel[] = [];\n\n fields.forEach(field => {\n if (field.required) {\n order.includes(field.name) ? orderedFields.push(field) : unorderedFields.push(field);\n } else {\n unrequiredFields.push(field);\n }\n });\n\n orderedFields.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));\n\n return [...orderedFields, ...unorderedFields, ...unrequiredFields];\n}\n\nexport function sortByField(\n fields: FieldModel[],\n param: keyof Pick<FieldModel, 'name' | 'description' | 'kind'>,\n) {\n return [...fields].sort((a, b) => {\n return a[param].localeCompare(b[param]);\n });\n}\n\nexport function mergeParams(\n parser: OpenAPIParser,\n pathParams: Array<Referenced<OpenAPIParameter>> = [],\n operationParams: Array<Referenced<OpenAPIParameter>> = [],\n): Array<Referenced<OpenAPIParameter>> {\n const operationParamNames = {};\n operationParams.forEach(param => {\n ({ resolved: param } = parser.deref(param));\n operationParamNames[param.name + '_' + param.in] = true;\n });\n\n // filter out path params overridden by operation ones with the same name\n pathParams = pathParams.filter(param => {\n ({ resolved: param } = parser.deref(param));\n return !operationParamNames[param.name + '_' + param.in];\n });\n\n return pathParams.concat(operationParams);\n}\n\nexport function mergeSimilarMediaTypes(\n types: Record<string, OpenAPIMediaType>,\n): Record<string, OpenAPIMediaType> {\n const mergedTypes = {};\n Object.keys(types).forEach(name => {\n const mime = types[name];\n // ignore content type parameters (e.g. charset) and merge\n const normalizedMimeName = name.split(';')[0].trim();\n if (!mergedTypes[normalizedMimeName]) {\n mergedTypes[normalizedMimeName] = mime;\n return;\n }\n mergedTypes[normalizedMimeName] = { ...mergedTypes[normalizedMimeName], ...mime };\n });\n\n return mergedTypes;\n}\n\nexport function expandDefaultServerVariables(url: string, variables: object = {}) {\n return url.replace(\n /(?:{)([\\w-.]+)(?:})/g,\n (match, name) => (variables[name] && variables[name].default) || match,\n );\n}\n\nexport function normalizeServers(\n specUrl: string | undefined,\n servers: OpenAPIServer[],\n): OpenAPIServer[] {\n const getHref = () => {\n if (!IS_BROWSER) {\n return '';\n }\n const href = window.location.href;\n return href.endsWith('.html') ? dirname(href) : href;\n };\n\n const baseUrl = specUrl === undefined ? removeQueryStringAndHash(getHref()) : dirname(specUrl);\n\n if (servers.length === 0) {\n // Behaviour defined in OpenAPI spec: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object\n servers = [\n {\n url: '/',\n },\n ];\n }\n\n function normalizeUrl(url: string): string {\n return resolveUrl(baseUrl, url);\n }\n\n return servers.map(server => {\n return {\n ...server,\n url: normalizeUrl(server.url),\n description: server.description || '',\n };\n });\n}\n\nexport const SECURITY_DEFINITIONS_JSX_NAME = 'SecurityDefinitions';\nexport const OLD_SECURITY_DEFINITIONS_JSX_NAME = 'security-definitions';\nexport const SCHEMA_DEFINITION_JSX_NAME = 'SchemaDefinition';\n\nexport let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/';\nexport function setSecuritySchemePrefix(prefix: string) {\n SECURITY_SCHEMES_SECTION_PREFIX = prefix;\n}\n\nexport const shortenHTTPVerb = verb =>\n ({\n delete: 'del',\n options: 'opts',\n }[verb] || verb);\n\nexport function isRedocExtension(key: string): boolean {\n const redocExtensions = {\n 'x-circular-ref': true,\n 'x-parentRefs': true,\n 'x-refsStack': true,\n 'x-code-samples': true, // deprecated\n 'x-codeSamples': true,\n 'x-displayName': true,\n 'x-examples': true,\n 'x-enumDescriptions': true,\n 'x-logo': true,\n 'x-nullable': true,\n 'x-servers': true,\n 'x-tagGroups': true,\n 'x-traitTag': true,\n 'x-badges': true,\n 'x-additionalPropertiesName': true,\n 'x-explicitMappingOnly': true,\n };\n\n return key in redocExtensions;\n}\n\nexport function extractExtensions(\n obj: object,\n showExtensions: string[] | true,\n): Record<string, any> {\n return Object.keys(obj)\n .filter(key => {\n if (showExtensions === true) {\n return key.startsWith('x-') && !isRedocExtension(key);\n }\n return key.startsWith('x-') && showExtensions.indexOf(key) > -1;\n })\n .reduce((acc, key) => {\n acc[key] = obj[key];\n return acc;\n }, {});\n}\n\nexport function pluralizeType(displayType: string): string {\n return displayType\n .split(' or ')\n .map(type => type.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/, '$1s$2'))\n .join(' or ');\n}\n\nexport function getContentWithLegacyExamples(\n info: OpenAPIRequestBody | OpenAPIResponse,\n): { [mime: string]: OpenAPIMediaType } | undefined {\n let mediaContent = info.content;\n const xExamples = info['x-examples']; // converted from OAS2 body param\n const xExample = info['x-example']; // converted from OAS2 body param\n\n if (xExamples) {\n mediaContent = { ...mediaContent };\n for (const mime of Object.keys(xExamples)) {\n const examples = xExamples[mime];\n mediaContent[mime] = {\n ...mediaContent[mime],\n examples,\n };\n }\n } else if (xExample) {\n mediaContent = { ...mediaContent };\n for (const mime of Object.keys(xExample)) {\n const example = xExample[mime];\n mediaContent[mime] = {\n ...mediaContent[mime],\n example,\n };\n }\n }\n\n return mediaContent;\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-bash.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-c.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-clike.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-coffeescript.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-cpp.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-csharp.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-go.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-http.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-java.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-lua.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-markup-templating.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-markup.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-objectivec.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-perl.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-php.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-python.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-q.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-ruby.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-scala.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-sql.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-swift.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-yaml.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-csv.js\");","import * as Prism from 'prismjs';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-c.js';\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-coffeescript.js';\nimport 'prismjs/components/prism-cpp.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-go.js';\nimport 'prismjs/components/prism-http.js';\nimport 'prismjs/components/prism-java.js';\nimport 'prismjs/components/prism-lua.js';\nimport 'prismjs/components/prism-markup-templating.js'; // dep of php\nimport 'prismjs/components/prism-markup.js'; // xml\nimport 'prismjs/components/prism-objectivec.js';\nimport 'prismjs/components/prism-perl.js';\nimport 'prismjs/components/prism-php.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-q.js';\nimport 'prismjs/components/prism-ruby.js';\nimport 'prismjs/components/prism-scala.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-yaml.js';\nimport 'prismjs/components/prism-csv.js';\n\nconst DEFAULT_LANG = 'clike';\n\nPrism.languages.insertBefore(\n 'javascript',\n 'string',\n {\n 'property string': {\n pattern: /([{,]\\s*)\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/i,\n lookbehind: true,\n },\n } as any,\n undefined as any,\n);\n\nPrism.languages.insertBefore(\n 'javascript',\n 'punctuation',\n {\n property: {\n pattern: /([{,]\\s*)[a-z]\\w*(?=\\s*:)/i,\n lookbehind: true,\n },\n },\n undefined as any,\n);\n\n/**\n * map language names to Prism.js names\n */\nexport function mapLang(lang: string): string {\n return (\n {\n json: 'js',\n 'c++': 'cpp',\n 'c#': 'csharp',\n 'objective-c': 'objectivec',\n shell: 'bash',\n viml: 'vim',\n }[lang] || DEFAULT_LANG\n );\n}\n\n/**\n * Highlight source code string using Prism.js\n * @param source source code to highlight\n * @param lang highlight language\n * @return highlighted source code as **html string**\n */\nexport function highlight(source: string | number | boolean, lang: string = DEFAULT_LANG): string {\n lang = lang.toLowerCase();\n let grammar = Prism.languages[lang];\n if (!grammar) {\n grammar = Prism.languages[mapLang(lang)];\n }\n return Prism.highlight(source.toString(), grammar, lang);\n}\n","function throttle(func, wait) {\n let context;\n let args;\n let result;\n let timeout: any = null;\n let previous = 0;\n const later = () => {\n previous = new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n return function () {\n const now = new Date().getTime();\n const remaining = wait - (now - previous);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nexport function Throttle(delay: number) {\n return (_, _2, desc: PropertyDescriptor) => {\n desc.value = throttle(desc.value, delay);\n };\n}\n","export function debugTime(label: string) {\n if (process.env.NODE_ENV !== 'production') {\n console.time(label);\n }\n}\n\nexport function debugTimeEnd(label: string) {\n if (process.env.NODE_ENV !== 'production') {\n console.timeEnd(label);\n }\n}\n","// source: https://github.com/andreypopp/memoize-decorator\nconst SENTINEL = {};\n\nexport function memoize<T>(target: any, name: string, descriptor: TypedPropertyDescriptor<T>) {\n if (typeof descriptor.value === 'function') {\n return _memoizeMethod(target, name, descriptor) as any as TypedPropertyDescriptor<T>;\n } else if (typeof descriptor.get === 'function') {\n return _memoizeGetter(target, name, descriptor) as TypedPropertyDescriptor<T>;\n } else {\n throw new Error(\n '@memoize decorator can be applied to methods or getters, got ' +\n String(descriptor.value) +\n ' instead',\n );\n }\n}\n\nfunction _memoizeGetter(target: any, name: string, descriptor: PropertyDescriptor) {\n const memoizedName = `_memoized_${name}`;\n const get = descriptor.get!;\n target[memoizedName] = SENTINEL;\n return {\n ...descriptor,\n get() {\n if (this[memoizedName] === SENTINEL) {\n this[memoizedName] = get.call(this);\n }\n return this[memoizedName];\n },\n };\n}\n\nfunction _memoizeMethod<T>(target: any, name: string, descriptor: TypedPropertyDescriptor<T>) {\n if (!descriptor.value || (descriptor.value as any).length > 0) {\n throw new Error('@memoize decorator can only be applied to methods of zero arguments');\n }\n const memoizedName = `_memoized_${name}`;\n const value = descriptor.value;\n target[memoizedName] = SENTINEL;\n return {\n ...descriptor,\n value() {\n if (this[memoizedName] === SENTINEL) {\n this[memoizedName] = (value as any).call(this);\n }\n return this[memoizedName] as any;\n },\n };\n}\n","/**\n * Function that returns a comparator for sorting objects by some specific key alphabetically.\n *\n * @param {String} property key of the object to sort, if starts from `-` - reverse\n */\nexport function alphabeticallyByProp<T>(property: string): (a: T, b: T) => number {\n let sortOrder = 1;\n\n if (property[0] === '-') {\n sortOrder = -1;\n property = property.substr(1);\n }\n\n return (a: T, b: T) => {\n if (sortOrder == -1) {\n return b[property].localeCompare(a[property]);\n } else {\n return a[property].localeCompare(b[property]);\n }\n };\n}\n","import { bind, debounce } from 'decko';\nimport { EventEmitter } from 'eventemitter3';\nimport { IS_BROWSER } from '../utils/';\n\nconst EVENT = 'hashchange';\n\nexport class HistoryService {\n private _emiter;\n\n constructor() {\n this._emiter = new EventEmitter();\n this.bind();\n }\n\n get currentId(): string {\n return IS_BROWSER ? decodeURIComponent(window.location.hash.substring(1)) : '';\n }\n\n linkForId(id: string) {\n if (!id) {\n return '';\n }\n return '#' + id;\n }\n\n subscribe(cb): () => void {\n const emmiter = this._emiter.addListener(EVENT, cb);\n return () => emmiter.removeListener(EVENT, cb);\n }\n\n emit = () => {\n this._emiter.emit(EVENT, this.currentId);\n };\n\n bind() {\n if (IS_BROWSER) {\n window.addEventListener('hashchange', this.emit, false);\n }\n }\n\n dispose() {\n if (IS_BROWSER) {\n window.removeEventListener('hashchange', this.emit);\n }\n }\n\n @bind\n @debounce\n replace(id: string | null, rewriteHistory: boolean = false) {\n if (!IS_BROWSER) {\n return;\n }\n\n if (id == null || id === this.currentId) {\n return;\n }\n if (rewriteHistory) {\n window.history.replaceState(\n null,\n '',\n window.location.href.split('#')[0] + this.linkForId(id),\n );\n\n return;\n }\n window.history.pushState(null, '', window.location.href.split('#')[0] + this.linkForId(id));\n this.emit();\n }\n}\n\nexport const history = new HistoryService();\n\nif (module.hot) {\n module.hot.dispose(() => {\n history.dispose();\n });\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mark.js\");","import * as Mark from 'mark.js';\n\nexport class MarkerService {\n map: Map<Element, Mark> = new Map();\n\n private prevTerm: string = '';\n\n add(el: HTMLElement) {\n this.map.set(el, new Mark(el));\n }\n\n delete(el: Element) {\n this.map.delete(el);\n }\n\n addOnly(elements: Element[]) {\n this.map.forEach((inst, elem) => {\n if (elements.indexOf(elem) === -1) {\n inst.unmark();\n this.map.delete(elem);\n }\n });\n\n for (const el of elements) {\n if (!this.map.has(el)) {\n this.map.set(el, new Mark(el as HTMLElement));\n }\n }\n }\n\n clearAll() {\n this.unmark();\n this.map.clear();\n }\n\n mark(term?: string) {\n if (!term && !this.prevTerm) {\n return;\n }\n this.map.forEach(val => {\n val.unmark();\n val.mark(term || this.prevTerm);\n });\n this.prevTerm = term || this.prevTerm;\n }\n\n unmark() {\n this.map.forEach(val => val.unmark());\n this.prevTerm = '';\n }\n}\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n * @param {string} text\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n * @param {string} text\n */\nfunction mangle(text) {\n let out = '',\n i,\n ch;\n\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n /**\n * @param {string} quote\n */\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n\n html(html) {\n return html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n\n /**\n * @param {string} text\n */\n listitem(text) {\n return `<li>${text}</li>\\n`;\n }\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n\n /**\n * @param {string} text\n */\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */\n table(header, body) {\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n\n /**\n * @param {string} content\n */\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n\n /**\n * span level renderer\n * @param {string} text\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n\n /**\n * @param {string} text\n */\n em(text) {\n return `<em>${text}</em>`;\n }\n\n /**\n * @param {string} text\n */\n codespan(text) {\n return `<code>${text}</code>`;\n }\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n\n /**\n * @param {string} text\n */\n del(text) {\n return `<del>${text}</del>`;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass Hooks {\n constructor(options) {\n this.options = options || defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nfunction onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n}\n\nfunction parseMarkdown(lexer, parser) {\n return (src, opt, callback) => {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n const origOpt = { ...opt };\n opt = { ...marked.defaults, ...origOpt };\n const throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkSanitizeDeprecation(opt);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n marked.defaults = { ...marked.defaults, ...opt };\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = marked.defaults.hooks || new Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = (arg) => {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import { marked } from 'marked';\n\nimport { highlight, safeSlugify, unescapeHTMLChars } from '../utils';\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { MarkdownHeading, MDXComponentMeta } from './types';\n\nconst renderer = new marked.Renderer();\n\nmarked.setOptions({\n renderer,\n highlight: (str, lang) => {\n return highlight(str, lang);\n },\n});\n\nexport const LEGACY_REGEXP = '^ {0,3}<!-- ReDoc-Inject:\\\\s+?<({component}).*?/?>\\\\s+?-->\\\\s*$';\n\n// prettier-ignore\nexport const MDX_COMPONENT_REGEXP = '(?:^ {0,3}<({component})([\\\\s\\\\S]*?)>([\\\\s\\\\S]*?)</\\\\2>' // with children\n + '|^ {0,3}<({component})([\\\\s\\\\S]*?)(?:/>|\\\\n{2,}))'; // self-closing\n\nexport const COMPONENT_REGEXP = '(?:' + LEGACY_REGEXP + '|' + MDX_COMPONENT_REGEXP + ')';\n\nexport function buildComponentComment(name: string) {\n return `<!-- ReDoc-Inject: <${name}> -->`;\n}\n\nexport class MarkdownRenderer {\n static containsComponent(rawText: string, componentName: string) {\n const compRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, componentName), 'gmi');\n return compRegexp.test(rawText);\n }\n\n static getTextBeforeHading(md: string, heading: string): string {\n const headingLinePos = md.search(new RegExp(`^##?\\\\s+${heading}`, 'm'));\n if (headingLinePos > -1) {\n return md.substring(0, headingLinePos);\n }\n return md;\n }\n\n headings: MarkdownHeading[] = [];\n currentTopHeading: MarkdownHeading;\n\n public parser: marked.Parser; // required initialization, `parser` is used by `marked.Renderer` instance under the hood\n private headingEnhanceRenderer: marked.Renderer;\n private originalHeadingRule: typeof marked.Renderer.prototype.heading;\n\n constructor(public options?: RedocNormalizedOptions, public parentId?: string) {\n this.parentId = parentId;\n this.parser = new marked.Parser();\n this.headingEnhanceRenderer = new marked.Renderer();\n this.originalHeadingRule = this.headingEnhanceRenderer.heading.bind(\n this.headingEnhanceRenderer,\n );\n this.headingEnhanceRenderer.heading = this.headingRule;\n }\n\n saveHeading(\n name: string,\n level: number,\n container: MarkdownHeading[] = this.headings,\n parentId?: string,\n ): MarkdownHeading {\n name = unescapeHTMLChars(name);\n const item: MarkdownHeading = {\n id: parentId\n ? `${parentId}/${safeSlugify(name)}`\n : `${this.parentId || 'section'}/${safeSlugify(name)}`,\n name,\n level,\n items: [],\n };\n container.push(item);\n return item;\n }\n\n flattenHeadings(container?: MarkdownHeading[]): MarkdownHeading[] {\n if (container === undefined) {\n return [];\n }\n const res: MarkdownHeading[] = [];\n for (const heading of container) {\n res.push(heading);\n res.push(...this.flattenHeadings(heading.items));\n }\n return res;\n }\n\n attachHeadingsDescriptions(rawText: string) {\n const buildRegexp = (heading: MarkdownHeading) => {\n return new RegExp(\n `##?\\\\s+${heading.name.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}\\s*(\\n|\\r\\n|$|\\s*)`,\n );\n };\n\n const flatHeadings = this.flattenHeadings(this.headings);\n if (flatHeadings.length < 1) {\n return;\n }\n let prevHeading = flatHeadings[0];\n let prevRegexp = buildRegexp(prevHeading);\n let prevPos = rawText.search(prevRegexp);\n for (let i = 1; i < flatHeadings.length; i++) {\n const heading = flatHeadings[i];\n const regexp = buildRegexp(heading);\n const currentPos = rawText.substr(prevPos + 1).search(regexp) + prevPos + 1;\n prevHeading.description = rawText\n .substring(prevPos, currentPos)\n .replace(prevRegexp, '')\n .trim();\n\n prevHeading = heading;\n prevRegexp = regexp;\n prevPos = currentPos;\n }\n prevHeading.description = rawText.substring(prevPos).replace(prevRegexp, '').trim();\n }\n\n headingRule = (\n text: string,\n level: 1 | 2 | 3 | 4 | 5 | 6,\n raw: string,\n slugger: marked.Slugger,\n ): string => {\n if (level === 1) {\n this.currentTopHeading = this.saveHeading(text, level);\n } else if (level === 2) {\n this.saveHeading(\n text,\n level,\n this.currentTopHeading && this.currentTopHeading.items,\n this.currentTopHeading && this.currentTopHeading.id,\n );\n }\n return this.originalHeadingRule(text, level, raw, slugger);\n };\n\n renderMd(rawText: string, extractHeadings: boolean = false): string {\n const opts = extractHeadings ? { renderer: this.headingEnhanceRenderer } : undefined;\n\n const res = marked(rawText.toString(), opts);\n\n return res;\n }\n\n extractHeadings(rawText: string): MarkdownHeading[] {\n this.renderMd(rawText, true);\n this.attachHeadingsDescriptions(rawText);\n const res = this.headings;\n this.headings = [];\n return res;\n }\n\n // regexp-based 👎: remark is slow and too big so for now using marked + regexps soup\n renderMdWithComponents(rawText: string): Array<string | MDXComponentMeta> {\n const components = this.options && this.options.allowedMdComponents;\n if (!components || Object.keys(components).length === 0) {\n return [this.renderMd(rawText)];\n }\n\n const names = Object.keys(components).join('|');\n const componentsRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, names), 'mig');\n\n const htmlParts: string[] = [];\n const componentDefs: MDXComponentMeta[] = [];\n\n let match = componentsRegexp.exec(rawText);\n let lasxtIdx = 0;\n while (match) {\n htmlParts.push(rawText.substring(lasxtIdx, match.index));\n lasxtIdx = componentsRegexp.lastIndex;\n const compName = match[1] || match[2] || match[5];\n const componentMeta = components[compName];\n\n const props = match[3] || match[6];\n const children = match[4];\n\n if (componentMeta) {\n componentDefs.push({\n component: componentMeta.component,\n propsSelector: componentMeta.propsSelector,\n props: { ...parseProps(props), ...componentMeta.props, children },\n });\n }\n match = componentsRegexp.exec(rawText);\n }\n htmlParts.push(rawText.substring(lasxtIdx));\n\n const res: any[] = [];\n for (let i = 0; i < htmlParts.length; i++) {\n const htmlPart = htmlParts[i];\n if (htmlPart) {\n res.push(this.renderMd(htmlPart));\n }\n if (componentDefs[i]) {\n res.push(componentDefs[i]);\n }\n }\n return res;\n }\n}\n\nfunction parseProps(props: string): object {\n if (!props) {\n return {};\n }\n\n const regex = /([\\w-]+)\\s*=\\s*(?:{([^}]+?)}|\"([^\"]+?)\")/gim;\n const parsed = {};\n let match;\n // tslint:disable-next-line\n while ((match = regex.exec(props)) !== null) {\n if (match[3]) {\n // string prop match (in double quotes)\n parsed[match[1]] = match[3];\n } else if (match[2]) {\n // jsx prop match (in curly braces)\n let val;\n try {\n val = JSON.parse(match[2]);\n } catch (e) {\n /* noop */\n }\n parsed[match[1]] = val;\n }\n }\n\n return parsed;\n}\n","import type { OpenAPIContact, OpenAPIInfo, OpenAPILicense } from '../../types';\nimport { IS_BROWSER } from '../../utils/';\nimport { l } from '../Labels';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nexport class ApiInfoModel implements OpenAPIInfo {\n title: string;\n version: string;\n\n description: string;\n summary: string;\n termsOfService?: string;\n contact?: OpenAPIContact;\n license?: OpenAPILicense;\n\n downloadUrls: {\n title?: string;\n url?: string;\n }[];\n downloadFileName?: string;\n\n constructor(\n private parser: OpenAPIParser,\n private options: RedocNormalizedOptions = new RedocNormalizedOptions({}),\n ) {\n Object.assign(this, parser.spec.info);\n this.description = parser.spec.info.description || '';\n this.summary = parser.spec.info.summary || '';\n\n const firstHeadingLinePos = this.description.search(/^\\s*##?\\s+/m);\n if (firstHeadingLinePos > -1) {\n this.description = this.description.substring(0, firstHeadingLinePos);\n }\n\n this.downloadUrls = this.getDownloadUrls();\n this.downloadFileName = this.getDownloadFileName();\n }\n private getDownloadUrls() {\n return (\n !this.options.downloadUrls\n ? [\n {\n title: l('download'),\n url: this.getDownloadLink(this.options.downloadDefinitionUrl),\n },\n ]\n : this.options.downloadUrls.map(({ title, url }) => ({\n title: title || l('download'),\n url: this.getDownloadLink(url),\n }))\n ).filter(({ title, url }) => title && url);\n }\n\n private getDownloadLink(url?: string): string | undefined {\n if (url) {\n return url;\n }\n\n if (this.parser.specUrl) {\n return this.parser.specUrl;\n }\n\n if (IS_BROWSER && window.Blob && window.URL && window.URL.createObjectURL) {\n const blob = new Blob([JSON.stringify(this.parser.spec, null, 2)], {\n type: 'application/json',\n });\n return window.URL.createObjectURL(blob);\n }\n }\n\n private getDownloadFileName(): string | undefined {\n if (!this.parser.specUrl && !this.options.downloadDefinitionUrl) {\n return this.options.downloadFileName || 'openapi.json';\n }\n return this.options.downloadFileName;\n }\n}\n","import type { OpenAPISecurityRequirement, OpenAPISecurityScheme } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nexport interface SecurityScheme extends OpenAPISecurityScheme {\n id: string;\n sectionId: string;\n displayName: string;\n scopes: string[];\n}\n\nexport class SecurityRequirementModel {\n schemes: SecurityScheme[];\n\n constructor(requirement: OpenAPISecurityRequirement, parser: OpenAPIParser) {\n const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};\n\n this.schemes = Object.keys(requirement || {})\n .map(id => {\n const { resolved: scheme } = parser.deref(schemes[id]);\n const scopes = requirement[id] || [];\n\n if (!scheme) {\n console.warn(`Non existing security scheme referenced: ${id}. Skipping`);\n return undefined;\n }\n const displayName = scheme['x-displayName'] || id;\n\n return {\n ...scheme,\n id,\n sectionId: id,\n displayName,\n scopes,\n };\n })\n .filter(scheme => scheme !== undefined) as SecurityScheme[];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport { isOperationName, JsonPointer } from '../../utils';\nimport { OperationModel } from './Operation';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { OpenAPICallback, Referenced } from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nexport class CallbackModel {\n @observable\n expanded: boolean = false;\n\n name: string;\n operations: OperationModel[] = [];\n\n constructor(\n parser: OpenAPIParser,\n name: string,\n infoOrRef: Referenced<OpenAPICallback>,\n pointer: string,\n options: RedocNormalizedOptions,\n ) {\n makeObservable(this);\n\n this.name = name;\n const { resolved: paths } = parser.deref<OpenAPICallback>(infoOrRef);\n\n for (const pathName of Object.keys(paths)) {\n const path = paths[pathName];\n const operations = Object.keys(path).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = path[operationName];\n\n const operation = new OperationModel(\n parser,\n {\n ...operationInfo,\n pathName,\n pointer: JsonPointer.compile([pointer, name, pathName, operationName]),\n httpVerb: operationName,\n pathParameters: path.parameters || [],\n pathServers: path.servers,\n },\n undefined,\n options,\n true,\n );\n\n this.operations.push(operation);\n }\n }\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n}\n","import type { OpenAPIRef, OpenAPISchema, OpenAPISpec } from '../types';\nimport { IS_BROWSER, getDefinitionName } from '../utils/';\nimport { JsonPointer } from '../utils/JsonPointer';\n\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { MergedOpenAPISchema } from './types';\n\nconst MAX_DEREF_DEPTH = 999; // prevent circular detection crashes by adding hard limit on deref depth\n\n/**\n * Loads and keeps spec. Provides raw spec operations\n */\n\nexport function pushRef(stack: string[], ref?: string): string[] {\n return ref && stack[stack.length - 1] !== ref ? [...stack, ref] : stack;\n}\n\nexport function concatRefStacks(base: string[], stack?: string[]): string[] {\n return stack ? base.concat(stack) : base;\n}\n\nexport class OpenAPIParser {\n specUrl?: string;\n spec: OpenAPISpec;\n\n private readonly allowMergeRefs: boolean = false;\n\n constructor(\n spec: OpenAPISpec,\n specUrl?: string,\n private options: RedocNormalizedOptions = new RedocNormalizedOptions({}),\n ) {\n this.validate(spec);\n\n this.spec = spec;\n this.allowMergeRefs = spec.openapi.startsWith('3.1');\n\n const href = IS_BROWSER ? window.location.href : '';\n if (typeof specUrl === 'string') {\n this.specUrl = href ? new URL(specUrl, href).href : specUrl;\n }\n }\n\n validate(spec: Record<string, any>): void {\n if (spec.openapi === undefined) {\n throw new Error('Document must be valid OpenAPI 3.0.0 definition');\n }\n }\n\n /**\n * get spec part by JsonPointer ($ref)\n */\n byRef = <T = any>(ref: string): T | undefined => {\n let res;\n if (!this.spec) {\n return;\n }\n if (ref.charAt(0) !== '#') {\n ref = '#' + ref;\n }\n ref = decodeURIComponent(ref);\n try {\n res = JsonPointer.get(this.spec, ref);\n } catch (e) {\n // do nothing\n }\n return res || {};\n };\n\n /**\n * checks if the object is OpenAPI reference (contains $ref property)\n */\n isRef<T>(obj: OpenAPIRef | T): obj is OpenAPIRef {\n if (!obj) {\n return false;\n }\n obj = <OpenAPIRef>obj;\n return obj.$ref !== undefined && obj.$ref !== null;\n }\n\n /**\n * Resolve given reference object or return as is if it is not a reference\n * @param obj object to dereference\n * @param forceCircular whether to dereference even if it is circular ref\n * @param mergeAsAllOf\n */\n deref<T>(\n obj: OpenAPIRef | T,\n baseRefsStack: string[] = [],\n mergeAsAllOf = false,\n ): { resolved: T; refsStack: string[] } {\n // this can be set by all of when it mergers props from different sources\n const objRefsStack = obj?.['x-refsStack'];\n baseRefsStack = concatRefStacks(baseRefsStack, objRefsStack);\n\n if (this.isRef(obj)) {\n const schemaName = getDefinitionName(obj.$ref);\n if (schemaName && this.options.ignoreNamedSchemas.has(schemaName)) {\n return { resolved: { type: 'object', title: schemaName } as T, refsStack: baseRefsStack };\n }\n\n let resolved = this.byRef<T>(obj.$ref);\n if (!resolved) {\n throw new Error(`Failed to resolve $ref \"${obj.$ref}\"`);\n }\n\n let refsStack = baseRefsStack;\n if (baseRefsStack.includes(obj.$ref) || baseRefsStack.length > MAX_DEREF_DEPTH) {\n resolved = Object.assign({}, resolved, { 'x-circular-ref': true });\n } else if (this.isRef(resolved)) {\n const res = this.deref(resolved, baseRefsStack, mergeAsAllOf);\n refsStack = res.refsStack;\n resolved = res.resolved;\n }\n\n refsStack = pushRef(baseRefsStack, obj.$ref);\n resolved = this.allowMergeRefs ? this.mergeRefs(obj, resolved, mergeAsAllOf) : resolved;\n\n return { resolved, refsStack };\n }\n return {\n resolved: obj,\n refsStack: concatRefStacks(baseRefsStack, objRefsStack),\n };\n }\n\n mergeRefs<T>(ref: OpenAPIRef, resolved: T, mergeAsAllOf: boolean): T {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { $ref, ...rest } = ref;\n const keys = Object.keys(rest);\n if (keys.length === 0) {\n return resolved;\n }\n if (\n mergeAsAllOf &&\n keys.some(\n k =>\n ![\n 'description',\n 'title',\n 'externalDocs',\n 'x-refsStack',\n 'x-parentRefs',\n 'readOnly',\n 'writeOnly',\n ].includes(k),\n )\n ) {\n const { description, title, readOnly, writeOnly, ...restSchema } = rest as OpenAPISchema;\n return {\n allOf: [{ description, title, readOnly, writeOnly }, resolved, restSchema],\n } as T;\n } else {\n // small optimization\n return {\n ...(resolved as object),\n ...rest,\n } as T;\n }\n }\n\n /**\n * Merge allOf constraints.\n * @param schema schema with allOF\n * @param $ref pointer of the schema\n * @param forceCircular whether to dereference children even if it is a circular ref\n * @param used$Refs\n */\n mergeAllOf(\n schema: MergedOpenAPISchema,\n $ref: string | undefined,\n refsStack: string[],\n ): MergedOpenAPISchema {\n if (schema['x-circular-ref']) {\n return schema;\n }\n\n schema = this.hoistOneOfs(schema, refsStack);\n\n if (schema.allOf === undefined) {\n return schema;\n }\n\n let receiver: MergedOpenAPISchema = {\n ...schema,\n 'x-parentRefs': [],\n allOf: undefined,\n title: schema.title || getDefinitionName($ref),\n };\n\n // avoid mutating inner objects\n if (receiver.properties !== undefined && typeof receiver.properties === 'object') {\n receiver.properties = { ...receiver.properties };\n }\n if (receiver.items !== undefined && typeof receiver.items === 'object') {\n receiver.items = { ...receiver.items };\n }\n\n const allOfSchemas = uniqByPropIncludeMissing(\n schema.allOf\n .map((subSchema: OpenAPISchema) => {\n const { resolved, refsStack: subRefsStack } = this.deref(subSchema, refsStack, true);\n\n const subRef = subSchema.$ref || undefined;\n const subMerged = this.mergeAllOf(resolved, subRef, subRefsStack);\n if (subMerged['x-circular-ref'] && subMerged.allOf) {\n // if mergeAllOf is circular and still contains allOf, we should ignore it\n return undefined;\n }\n if (subRef) {\n // collect information for implicit descriminator lookup\n receiver['x-parentRefs']?.push(...(subMerged['x-parentRefs'] || []), subRef);\n }\n return {\n $ref: subRef,\n refsStack: pushRef(subRefsStack, subRef),\n schema: subMerged,\n };\n })\n .filter(child => child !== undefined) as Array<{\n schema: MergedOpenAPISchema;\n refsStack: string[];\n $ref?: string;\n }>,\n '$ref',\n );\n\n for (const { schema: subSchema, refsStack: subRefsStack } of allOfSchemas) {\n const {\n type,\n enum: enumProperty,\n properties,\n items,\n required,\n title,\n description,\n readOnly,\n writeOnly,\n oneOf,\n anyOf,\n 'x-circular-ref': isCircular,\n ...otherConstraints\n } = subSchema;\n\n if (receiver.type !== type && receiver.type !== undefined && type !== undefined) {\n console.warn(`Incompatible types in allOf at \"${$ref}\": \"${receiver.type}\" and \"${type}\"`);\n }\n\n if (type !== undefined) {\n if (Array.isArray(type) && Array.isArray(receiver.type)) {\n receiver.type = [...type, ...receiver.type];\n } else {\n receiver.type = type;\n }\n }\n\n if (enumProperty !== undefined) {\n if (Array.isArray(enumProperty) && Array.isArray(receiver.enum)) {\n receiver.enum = Array.from(new Set([...enumProperty, ...receiver.enum]));\n } else {\n receiver.enum = enumProperty;\n }\n }\n\n if (properties !== undefined && typeof properties === 'object') {\n receiver.properties = receiver.properties || {};\n for (const prop in properties) {\n const propRefsStack = concatRefStacks(subRefsStack, properties[prop]?.['x-refsStack']);\n if (!receiver.properties[prop]) {\n receiver.properties[prop] = {\n ...properties[prop],\n 'x-refsStack': propRefsStack,\n } as MergedOpenAPISchema;\n } else if (!isCircular) {\n // merge inner properties\n const mergedProp = this.mergeAllOf(\n {\n allOf: [\n receiver.properties[prop],\n { ...properties[prop], 'x-refsStack': propRefsStack } as any,\n ],\n 'x-refsStack': propRefsStack,\n },\n $ref + '/properties/' + prop,\n propRefsStack,\n );\n receiver.properties[prop] = mergedProp;\n }\n }\n }\n\n if (items !== undefined && !isCircular) {\n const receiverItems =\n typeof receiver.items === 'boolean'\n ? {}\n : (Object.assign({}, receiver.items) as OpenAPISchema);\n const subSchemaItems =\n typeof subSchema.items === 'boolean'\n ? {}\n : (Object.assign({}, subSchema.items) as OpenAPISchema);\n // merge inner properties\n receiver.items = this.mergeAllOf(\n {\n allOf: [receiverItems, subSchemaItems],\n },\n $ref + '/items',\n subRefsStack,\n );\n }\n if (oneOf !== undefined) {\n receiver.oneOf = oneOf;\n }\n\n if (anyOf !== undefined) {\n receiver.anyOf = anyOf;\n }\n\n if (required !== undefined) {\n receiver.required = [...(receiver.required || []), ...required];\n }\n\n // merge rest of constraints\n // TODO: do more intelligent merge\n receiver = {\n ...receiver,\n title: receiver.title || title,\n description: receiver.description || description,\n readOnly: receiver.readOnly !== undefined ? receiver.readOnly : readOnly,\n writeOnly: receiver.writeOnly !== undefined ? receiver.writeOnly : writeOnly,\n 'x-circular-ref': receiver['x-circular-ref'] || isCircular,\n ...otherConstraints,\n };\n }\n\n return receiver;\n }\n\n /**\n * Find all derived definitions among #/components/schemas from any of $refs\n * returns map of definition pointer to definition name\n * @param $refs array of references to find derived from\n */\n findDerived($refs: string[]): Record<string, string[] | string> {\n const res: Record<string, string[]> = {};\n const schemas = (this.spec.components && this.spec.components.schemas) || {};\n for (const defName in schemas) {\n const { resolved: def } = this.deref(schemas[defName]);\n if (\n def.allOf !== undefined &&\n def.allOf.find(\n (obj: OpenAPISchema) => obj.$ref !== undefined && $refs.indexOf(obj.$ref) > -1,\n )\n ) {\n res['#/components/schemas/' + defName] = [def['x-discriminator-value'] || defName];\n }\n }\n return res;\n }\n\n private hoistOneOfs(schema: OpenAPISchema, refsStack: string[]) {\n if (schema.allOf === undefined) {\n return schema;\n }\n\n const allOf = schema.allOf;\n for (let i = 0; i < allOf.length; i++) {\n const { oneOf, ...sub } = allOf[i];\n if (!oneOf) {\n continue;\n }\n if (Array.isArray(oneOf)) {\n const beforeAllOf = allOf.slice(0, i);\n const afterAllOf = allOf.slice(i + 1);\n const siblingValues = Object.keys(sub).length > 0 ? [sub] : [];\n return {\n oneOf: oneOf.map((part: OpenAPISchema) => {\n return {\n allOf: [...beforeAllOf, ...siblingValues, part, ...afterAllOf],\n 'x-refsStack': refsStack,\n };\n }),\n };\n }\n }\n\n return schema;\n }\n}\n\n/**\n * Unique array by property, missing properties are included\n */\nfunction uniqByPropIncludeMissing<T extends object>(arr: T[], prop: keyof T): T[] {\n const seen = new Set();\n return arr.filter(item => {\n const k = item[prop];\n if (!k) return true;\n return k && !seen.has(k) && seen.add(k);\n });\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIExternalDocumentation, OpenAPISchema, Referenced } from '../../types';\n\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { pushRef } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { FieldModel } from './Field';\n\nimport { MergedOpenAPISchema } from '../types';\nimport {\n detectType,\n extractExtensions,\n humanizeConstraints,\n isArray,\n isBoolean,\n isNamedDefinition,\n isObject,\n isPrimitiveType,\n JsonPointer,\n pluralizeType,\n sortByField,\n sortByRequired,\n} from '../../utils/';\n\nimport { l } from '../Labels';\n\n// TODO: refactor this model, maybe use getters instead of copying all the values\nexport class SchemaModel {\n pointer: string;\n\n type: string | string[];\n displayType: string;\n typePrefix: string = '';\n title: string;\n description: string;\n externalDocs?: OpenAPIExternalDocumentation;\n\n isPrimitive: boolean;\n isCircular: boolean = false;\n\n format?: string;\n displayFormat?: string;\n nullable: boolean;\n deprecated: boolean;\n pattern?: string;\n example?: any;\n examples?: any[];\n enum: any[];\n default?: any;\n readOnly: boolean;\n writeOnly: boolean;\n\n constraints: string[];\n\n fields?: FieldModel[];\n items?: SchemaModel;\n\n oneOf?: SchemaModel[];\n oneOfType: string;\n discriminatorProp: string;\n @observable\n activeOneOf: number = 0;\n\n rawSchema: OpenAPISchema;\n schema: MergedOpenAPISchema;\n extensions?: Record<string, any>;\n 'x-enumDescriptions': { [name: string]: string };\n const: any;\n contentEncoding?: string;\n contentMediaType?: string;\n minItems?: number;\n maxItems?: number;\n\n /**\n * @param isChild if schema discriminator Child\n * When true forces dereferencing in allOfs even if circular\n */\n constructor(\n parser: OpenAPIParser,\n schemaOrRef: Referenced<OpenAPISchema>,\n pointer: string,\n private options: RedocNormalizedOptions,\n isChild: boolean = false,\n private refsStack: string[] = [],\n ) {\n makeObservable(this);\n\n this.pointer = schemaOrRef.$ref || pointer || '';\n\n const { resolved, refsStack: newRefsStack } = parser.deref(schemaOrRef, refsStack, true);\n this.refsStack = pushRef(newRefsStack, this.pointer);\n this.rawSchema = resolved;\n\n this.schema = parser.mergeAllOf(this.rawSchema, this.pointer, this.refsStack);\n this.init(parser, isChild);\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(this.schema, options.showExtensions);\n }\n }\n\n /**\n * Set specified alternative schema as active\n * @param idx oneOf index\n */\n @action\n activateOneOf(idx: number) {\n this.activeOneOf = idx;\n }\n\n hasType(type: string) {\n return this.type === type || (isArray(this.type) && this.type.includes(type));\n }\n\n init(parser: OpenAPIParser, isChild: boolean) {\n const schema = this.schema;\n this.isCircular = !!schema['x-circular-ref'];\n\n this.title =\n schema.title || (isNamedDefinition(this.pointer) && JsonPointer.baseName(this.pointer)) || '';\n this.description = schema.description || '';\n this.type = schema.type || detectType(schema);\n this.format = schema.format;\n this.enum = schema.enum || [];\n this['x-enumDescriptions'] = schema['x-enumDescriptions'];\n this.example = schema.example;\n this.examples = schema.examples;\n this.deprecated = !!schema.deprecated;\n this.pattern = schema.pattern;\n this.externalDocs = schema.externalDocs;\n\n this.constraints = humanizeConstraints(schema);\n this.displayFormat = this.format;\n this.isPrimitive = isPrimitiveType(schema, this.type);\n this.default = schema.default;\n this.readOnly = !!schema.readOnly;\n this.writeOnly = !!schema.writeOnly;\n this.const = schema.const || '';\n this.contentEncoding = schema.contentEncoding;\n this.contentMediaType = schema.contentMediaType;\n this.minItems = schema.minItems;\n this.maxItems = schema.maxItems;\n\n if (!!schema.nullable || schema['x-nullable']) {\n if (isArray(this.type) && !this.type.some(value => value === null || value === 'null')) {\n this.type = [...this.type, 'null'];\n } else if (!isArray(this.type) && (this.type !== null || this.type !== 'null')) {\n this.type = [this.type, 'null'];\n }\n }\n\n this.displayType = isArray(this.type)\n ? this.type.map(item => (item === null ? 'null' : item)).join(' or ')\n : this.type;\n\n if (this.isCircular) {\n return;\n }\n\n if ((schema.if && schema.then) || (schema.if && schema.else)) {\n this.initConditionalOperators(schema, parser);\n return;\n }\n\n if (!isChild && getDiscriminator(schema) !== undefined) {\n this.initDiscriminator(schema, parser);\n return;\n } else if (\n isChild &&\n isArray(schema.oneOf) &&\n schema.oneOf.find(s => s.$ref === this.pointer)\n ) {\n // we hit allOf of the schema with the parent discriminator\n delete schema.oneOf;\n }\n\n if (schema.oneOf !== undefined) {\n this.initOneOf(schema.oneOf, parser);\n this.oneOfType = 'One of';\n if (schema.anyOf !== undefined) {\n console.warn(\n `oneOf and anyOf are not supported on the same level. Skipping anyOf at ${this.pointer}`,\n );\n }\n return;\n }\n\n if (schema.anyOf !== undefined) {\n this.initOneOf(schema.anyOf, parser);\n this.oneOfType = 'Any of';\n return;\n }\n\n if (this.hasType('object')) {\n this.fields = buildFields(parser, schema, this.pointer, this.options, this.refsStack);\n } else if (this.hasType('array')) {\n if (isArray(schema.items) || isArray(schema.prefixItems)) {\n this.fields = buildFields(parser, schema, this.pointer, this.options, this.refsStack);\n } else if (schema.items) {\n this.items = new SchemaModel(\n parser,\n schema.items as OpenAPISchema,\n this.pointer + '/items',\n this.options,\n false,\n this.refsStack,\n );\n }\n\n this.displayType =\n schema.prefixItems || isArray(schema.items)\n ? 'items'\n : pluralizeType(this.items?.displayType || this.displayType);\n this.displayFormat = this.items?.format || '';\n this.typePrefix = this.items?.typePrefix || '' + l('arrayOf');\n this.title = this.title || this.items?.title || '';\n this.isPrimitive =\n this.items?.isPrimitive !== undefined ? this.items?.isPrimitive : this.isPrimitive;\n\n if (this.example === undefined && this.items?.example !== undefined) {\n this.example = [this.items.example];\n }\n if (this.items?.isPrimitive) {\n this.enum = this.items.enum;\n this['x-enumDescriptions'] = this.items['x-enumDescriptions'];\n }\n if (isArray(this.type)) {\n const filteredType = this.type.filter(item => item !== 'array');\n if (filteredType.length) this.displayType += ` or ${filteredType.join(' or ')}`;\n }\n }\n\n if (this.enum.length && this.options.sortEnumValuesAlphabetically) {\n this.enum.sort();\n }\n }\n\n private initOneOf(oneOf: OpenAPISchema[], parser: OpenAPIParser) {\n this.oneOf = oneOf!.map((variant, idx) => {\n const { resolved: derefVariant, refsStack } = parser.deref(variant, this.refsStack, true);\n\n const merged = parser.mergeAllOf(derefVariant, this.pointer + '/oneOf/' + idx, refsStack);\n\n // try to infer title\n const title =\n isNamedDefinition(variant.$ref) && !merged.title\n ? JsonPointer.baseName(variant.$ref)\n : `${merged.title || ''}${\n (typeof merged.const !== 'undefined' && JSON.stringify(merged.const)) || ''\n }`;\n const schema = new SchemaModel(\n parser,\n // merge base schema into each of oneOf's subschemas\n {\n // variant may already have allOf so merge it to not get overwritten\n ...merged,\n title,\n allOf: [{ ...this.schema, oneOf: undefined, anyOf: undefined }],\n // if specific child schemas are listed in oneOf/anyOf, they are not supposed to be discriminated\n discriminator: derefVariant.allOf ? undefined : merged.discriminator,\n } as OpenAPISchema,\n variant.$ref || this.pointer + '/oneOf/' + idx,\n this.options,\n false,\n refsStack,\n );\n\n return schema;\n });\n\n if (this.options.simpleOneOfTypeLabel) {\n const types = collectUniqueOneOfTypesDeep(this);\n this.displayType = types.join(' or ');\n } else {\n this.displayType = this.oneOf\n .map(schema => {\n let name =\n schema.typePrefix +\n (schema.title ? `${schema.title} (${schema.displayType})` : schema.displayType);\n if (name.indexOf(' or ') > -1) {\n name = `(${name})`;\n }\n return name;\n })\n .join(' or ');\n }\n }\n\n private initDiscriminator(schema: OpenAPISchema, parser: OpenAPIParser) {\n const discriminator = getDiscriminator(schema)!;\n this.discriminatorProp = discriminator.propertyName;\n const implicitInversedMapping = parser.findDerived([\n ...(this.schema['x-parentRefs'] || []),\n this.pointer,\n ]);\n\n if (schema.oneOf) {\n for (const variant of schema.oneOf) {\n if (variant.$ref === undefined) {\n continue;\n }\n const name = JsonPointer.baseName(variant.$ref);\n implicitInversedMapping[variant.$ref] = name;\n }\n }\n\n const mapping = discriminator.mapping || {};\n\n // Defines if the mapping is exhaustive. This avoids having references\n // that overlap with the mapping entries\n let isLimitedToMapping = discriminator['x-explicitMappingOnly'] || false;\n // if there are no mappings, assume non-exhaustive\n if (Object.keys(mapping).length === 0) {\n isLimitedToMapping = false;\n }\n\n const explicitInversedMapping = {};\n for (const name in mapping) {\n const $ref = mapping[name];\n\n if (isArray(explicitInversedMapping[$ref])) {\n explicitInversedMapping[$ref].push(name);\n } else {\n // overrides implicit mapping here\n explicitInversedMapping[$ref] = [name];\n }\n }\n\n const inversedMapping = isLimitedToMapping\n ? { ...explicitInversedMapping }\n : { ...implicitInversedMapping, ...explicitInversedMapping };\n\n let refs: Array<{ $ref; name }> = [];\n\n for (const $ref of Object.keys(inversedMapping)) {\n const names = inversedMapping[$ref];\n if (isArray(names)) {\n for (const name of names) {\n refs.push({ $ref, name });\n }\n } else {\n refs.push({ $ref, name: names });\n }\n }\n\n // Make the listing respects the mapping\n // in case a mapping is defined, the user usually wants to have the order shown\n // as it was defined in the yaml. This will sort the names given the provided\n // mapping (if provided).\n // The logic is:\n // - If a name is among the mapping, promote it to first\n // - Names among the mapping are sorted by their order in the mapping\n // - Names outside the mapping are sorted alphabetically\n const names = Object.keys(mapping);\n if (names.length !== 0) {\n refs = refs.sort((left, right) => {\n const indexLeft = names.indexOf(left.name);\n const indexRight = names.indexOf(right.name);\n\n if (indexLeft < 0 && indexRight < 0) {\n // out of mapping, order by name\n return left.name.localeCompare(right.name);\n } else if (indexLeft < 0) {\n // the right is found, so mapping wins\n return 1;\n } else if (indexRight < 0) {\n // left wins as it's in mapping\n return -1;\n } else {\n return indexLeft - indexRight;\n }\n });\n }\n\n this.oneOf = refs.map(({ $ref, name }) => {\n const innerSchema = new SchemaModel(\n parser,\n { $ref },\n $ref,\n this.options,\n true,\n this.refsStack.slice(0, -1),\n );\n innerSchema.title = name;\n return innerSchema;\n });\n }\n\n private initConditionalOperators(schema: OpenAPISchema, parser: OpenAPIParser) {\n const {\n if: ifOperator,\n else: elseOperator = {},\n then: thenOperator = {},\n ...restSchema\n } = schema;\n const groupedOperators = [\n {\n allOf: [restSchema, thenOperator, ifOperator],\n title: (ifOperator && ifOperator['x-displayName']) || ifOperator?.title || 'case 1',\n },\n {\n allOf: [restSchema, elseOperator],\n title: (elseOperator && elseOperator['x-displayName']) || elseOperator?.title || 'case 2',\n },\n ];\n\n this.oneOf = groupedOperators.map(\n (variant, idx) =>\n new SchemaModel(\n parser,\n {\n ...variant,\n } as OpenAPISchema,\n this.pointer + '/oneOf/' + idx,\n this.options,\n false,\n this.refsStack,\n ),\n );\n this.oneOfType = 'One of';\n }\n}\n\nfunction buildFields(\n parser: OpenAPIParser,\n schema: OpenAPISchema,\n $ref: string,\n options: RedocNormalizedOptions,\n refsStack: string[],\n): FieldModel[] {\n const props = schema.properties || schema.prefixItems || schema.items || {};\n const patternProps = schema.patternProperties || {};\n const additionalProps = schema.additionalProperties || schema.unevaluatedProperties;\n const itemsProps = schema.prefixItems ? schema.items : schema.additionalItems;\n const defaults = schema.default;\n let fields = Object.keys(props || []).map(fieldName => {\n let field = props[fieldName];\n\n if (!field) {\n console.warn(\n `Field \"${fieldName}\" is invalid, skipping.\\n Field must be an object but got ${typeof field} at \"${$ref}\"`,\n );\n field = {};\n }\n\n const required =\n schema.required === undefined ? false : schema.required.indexOf(fieldName) > -1;\n\n return new FieldModel(\n parser,\n {\n name: schema.properties ? fieldName : `[${fieldName}]`,\n required,\n schema: {\n ...field,\n default: field.default === undefined && defaults ? defaults[fieldName] : field.default,\n },\n },\n $ref + '/properties/' + fieldName,\n options,\n refsStack,\n );\n });\n\n if (options.sortPropsAlphabetically) {\n fields = sortByField(fields, 'name');\n }\n if (options.sortRequiredPropsFirst) {\n // if not sort alphabetically sort in the order from required keyword\n fields = sortByRequired(fields, !options.sortPropsAlphabetically ? schema.required : undefined);\n }\n\n fields.push(\n ...Object.keys(patternProps).map(fieldName => {\n let field = patternProps[fieldName];\n\n if (!field) {\n console.warn(\n `Field \"${fieldName}\" is invalid, skipping.\\n Field must be an object but got ${typeof field} at \"${$ref}\"`,\n );\n field = {};\n }\n\n return new FieldModel(\n parser,\n {\n name: fieldName,\n required: false,\n schema: field,\n kind: 'patternProperties',\n },\n `${$ref}/patternProperties/${fieldName}`,\n options,\n refsStack,\n );\n }),\n );\n\n if (typeof additionalProps === 'object' || additionalProps === true) {\n fields.push(\n new FieldModel(\n parser,\n {\n name: (typeof additionalProps === 'object'\n ? additionalProps['x-additionalPropertiesName'] || 'property name'\n : 'property name'\n ).concat('*'),\n required: false,\n schema: additionalProps === true ? {} : additionalProps,\n kind: 'additionalProperties',\n },\n $ref + '/additionalProperties',\n options,\n refsStack,\n ),\n );\n }\n\n fields.push(\n ...buildAdditionalItems({\n parser,\n schema: itemsProps,\n fieldsCount: fields.length,\n $ref,\n options,\n refsStack,\n }),\n );\n\n return fields;\n}\n\nfunction buildAdditionalItems({\n parser,\n schema = false,\n fieldsCount,\n $ref,\n options,\n refsStack,\n}: {\n parser: OpenAPIParser;\n schema?: OpenAPISchema | OpenAPISchema[] | boolean;\n fieldsCount: number;\n $ref: string;\n options: RedocNormalizedOptions;\n refsStack: string[];\n}) {\n if (isBoolean(schema)) {\n return schema\n ? [\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount}...]`,\n schema: {},\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ]\n : [];\n }\n\n if (isArray(schema)) {\n return [\n ...schema.map(\n (field, idx) =>\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount + idx}]`,\n schema: field,\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ),\n ];\n }\n\n if (isObject(schema)) {\n return [\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount}...]`,\n schema: schema,\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ];\n }\n\n return [];\n}\n\nfunction getDiscriminator(schema: OpenAPISchema): OpenAPISchema['discriminator'] {\n return schema.discriminator || schema['x-discriminator'];\n}\n\nfunction collectUniqueOneOfTypesDeep(schema: SchemaModel) {\n const uniqueTypes = new Set();\n\n function crawl(schema: SchemaModel) {\n for (const oneOfType of schema.oneOf || []) {\n if (oneOfType.oneOf) {\n crawl(oneOfType);\n continue;\n }\n\n if (oneOfType.type) {\n uniqueTypes.add(oneOfType.type);\n }\n }\n }\n\n crawl(schema);\n return Array.from(uniqueTypes.values());\n}\n","import type { OpenAPIEncoding, OpenAPIExample, Referenced } from '../../types';\nimport { isFormUrlEncoded, isJsonLike, urlFormEncodePayload } from '../../utils/openapi';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nconst externalExamplesCache: { [url: string]: Promise<any> } = {};\n\nexport class ExampleModel {\n value: any;\n summary?: string;\n description?: string;\n externalValueUrl?: string;\n\n constructor(\n parser: OpenAPIParser,\n infoOrRef: Referenced<OpenAPIExample>,\n public mime: string,\n encoding?: { [field: string]: OpenAPIEncoding },\n ) {\n const { resolved: example } = parser.deref(infoOrRef);\n this.value = example.value;\n this.summary = example.summary;\n this.description = example.description;\n if (example.externalValue) {\n this.externalValueUrl = new URL(example.externalValue, parser.specUrl).href;\n }\n\n if (isFormUrlEncoded(mime) && this.value && typeof this.value === 'object') {\n this.value = urlFormEncodePayload(this.value, encoding);\n }\n }\n\n getExternalValue(mimeType: string): Promise<any> {\n if (!this.externalValueUrl) {\n return Promise.resolve(undefined);\n }\n\n if (this.externalValueUrl in externalExamplesCache) {\n return externalExamplesCache[this.externalValueUrl];\n }\n\n externalExamplesCache[this.externalValueUrl] = fetch(this.externalValueUrl).then(res => {\n return res.text().then(txt => {\n if (!res.ok) {\n return Promise.reject(new Error(txt));\n }\n\n if (isJsonLike(mimeType)) {\n try {\n return JSON.parse(txt);\n } catch (e) {\n return txt;\n }\n } else {\n return txt;\n }\n });\n });\n\n return externalExamplesCache[this.externalValueUrl];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type {\n OpenAPIParameter,\n OpenAPIParameterLocation,\n OpenAPIParameterStyle,\n Referenced,\n} from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nimport { extractExtensions } from '../../utils/openapi';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { SchemaModel } from './Schema';\nimport { ExampleModel } from './Example';\nimport { isArray, mapValues } from '../../utils/helpers';\n\nconst DEFAULT_SERIALIZATION: Record<\n OpenAPIParameterLocation,\n { explode: boolean; style: OpenAPIParameterStyle }\n> = {\n path: {\n style: 'simple',\n explode: false,\n },\n query: {\n style: 'form',\n explode: true,\n },\n header: {\n style: 'simple',\n explode: false,\n },\n cookie: {\n style: 'form',\n explode: true,\n },\n};\n\n/**\n * Field or Parameter model ready to be used by components\n */\nexport class FieldModel {\n @observable\n expanded: boolean | undefined = undefined;\n\n schema: SchemaModel;\n name: string;\n required: boolean;\n description: string;\n example?: string;\n examples?: Record<string, ExampleModel> | any[];\n deprecated: boolean;\n in?: OpenAPIParameterLocation;\n kind: string;\n extensions?: Record<string, any>;\n explode: boolean;\n style?: OpenAPIParameterStyle;\n const?: any;\n\n serializationMime?: string;\n\n constructor(\n parser: OpenAPIParser,\n infoOrRef: Referenced<OpenAPIParameter> & { name?: string; kind?: string },\n pointer: string,\n options: RedocNormalizedOptions,\n refsStack?: string[],\n ) {\n makeObservable(this);\n\n const { resolved: info } = parser.deref<OpenAPIParameter>(infoOrRef);\n this.kind = infoOrRef.kind || 'field';\n this.name = infoOrRef.name || info.name;\n this.in = info.in;\n this.required = !!info.required;\n\n let fieldSchema = info.schema;\n let serializationMime = '';\n if (!fieldSchema && info.in && info.content) {\n serializationMime = Object.keys(info.content)[0];\n fieldSchema = info.content[serializationMime] && info.content[serializationMime].schema;\n }\n\n this.schema = new SchemaModel(parser, fieldSchema || {}, pointer, options, false, refsStack);\n this.description =\n info.description === undefined ? this.schema.description || '' : info.description;\n this.example = info.example || this.schema.example;\n\n if (info.examples !== undefined || this.schema.examples !== undefined) {\n const exampleValue = info.examples || this.schema.examples;\n this.examples = isArray(exampleValue)\n ? exampleValue\n : mapValues(\n exampleValue!,\n (example, name) => new ExampleModel(parser, example, name, info.encoding),\n );\n }\n\n if (serializationMime) {\n this.serializationMime = serializationMime;\n } else if (info.style) {\n this.style = info.style;\n } else if (this.in) {\n this.style = DEFAULT_SERIALIZATION[this.in]?.style ?? 'form'; // fallback to from in case \"in\" is invalid\n }\n\n if (info.explode === undefined && this.in) {\n this.explode = DEFAULT_SERIALIZATION[this.in]?.explode ?? true;\n } else {\n this.explode = !!info.explode;\n }\n\n this.deprecated = info.deprecated === undefined ? !!this.schema.deprecated : info.deprecated;\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(info, options.showExtensions);\n }\n\n this.const = this.schema?.const || info?.const || '';\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n\n @action\n collapse(): void {\n this.expanded = false;\n }\n\n @action\n expand(): void {\n this.expanded = true;\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"openapi-sampler\");","import * as Sampler from 'openapi-sampler';\n\nimport type { OpenAPIMediaType } from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { SchemaModel } from './Schema';\n\nimport { isJsonLike, mapValues } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { ExampleModel } from './Example';\n\nexport class MediaTypeModel {\n examples?: { [name: string]: ExampleModel };\n schema?: SchemaModel;\n name: string;\n isRequestType: boolean;\n onlyRequiredInSamples: boolean;\n generatedSamplesMaxDepth: number;\n\n /**\n * @param isRequestType needed to know if skipe RO/RW fields in objects\n */\n constructor(\n parser: OpenAPIParser,\n name: string,\n isRequestType: boolean,\n info: OpenAPIMediaType,\n options: RedocNormalizedOptions,\n ) {\n this.name = name;\n this.isRequestType = isRequestType;\n this.schema = info.schema && new SchemaModel(parser, info.schema, '', options);\n this.onlyRequiredInSamples = options.onlyRequiredInSamples;\n this.generatedSamplesMaxDepth = options.generatedSamplesMaxDepth;\n if (info.examples !== undefined) {\n this.examples = mapValues(\n info.examples,\n example => new ExampleModel(parser, example, name, info.encoding),\n );\n } else if (info.example !== undefined) {\n this.examples = {\n default: new ExampleModel(\n parser,\n { value: parser.deref(info.example).resolved },\n name,\n info.encoding,\n ),\n };\n } else if (isJsonLike(name)) {\n this.generateExample(parser, info);\n }\n }\n\n generateExample(parser: OpenAPIParser, info: OpenAPIMediaType) {\n const samplerOptions = {\n skipReadOnly: this.isRequestType,\n skipWriteOnly: !this.isRequestType,\n skipNonRequired: this.isRequestType && this.onlyRequiredInSamples,\n maxSampleDepth: this.generatedSamplesMaxDepth,\n };\n if (this.schema && this.schema.oneOf) {\n this.examples = {};\n for (const subSchema of this.schema.oneOf) {\n const sample = Sampler.sample(subSchema.rawSchema as any, samplerOptions, parser.spec);\n\n if (this.schema.discriminatorProp && typeof sample === 'object' && sample) {\n sample[this.schema.discriminatorProp] = subSchema.title;\n }\n\n this.examples[subSchema.title] = new ExampleModel(\n parser,\n {\n value: sample,\n },\n this.name,\n info.encoding,\n );\n }\n } else if (this.schema) {\n this.examples = {\n default: new ExampleModel(\n parser,\n {\n value: Sampler.sample(info.schema as any, samplerOptions, parser.spec),\n },\n this.name,\n info.encoding,\n ),\n };\n }\n }\n}\n","import { action, computed, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIMediaType } from '../../types';\nimport { MediaTypeModel } from './MediaType';\n\nimport { mergeSimilarMediaTypes } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\n/**\n * MediaContent model ready to be sued by React components\n * Contains multiple MediaTypes and keeps track of the currently active one\n */\nexport class MediaContentModel {\n mediaTypes: MediaTypeModel[];\n\n @observable\n activeMimeIdx = 0;\n\n /**\n * @param isRequestType needed to know if skipe RO/RW fields in objects\n */\n constructor(\n parser: OpenAPIParser,\n info: Record<string, OpenAPIMediaType>,\n public isRequestType: boolean,\n options: RedocNormalizedOptions,\n ) {\n makeObservable(this);\n\n if (options.unstable_ignoreMimeParameters) {\n info = mergeSimilarMediaTypes(info);\n }\n this.mediaTypes = Object.keys(info).map(name => {\n const mime = info[name];\n // reset deref cache just in case something is left there\n return new MediaTypeModel(parser, name, isRequestType, mime, options);\n });\n }\n\n /**\n * Set active media type by index\n * @param idx media type index\n */\n @action\n activate(idx: number) {\n this.activeMimeIdx = idx;\n }\n\n @computed\n get active() {\n return this.mediaTypes[this.activeMimeIdx];\n }\n\n get hasSample(): boolean {\n return this.mediaTypes.filter(mime => !!mime.examples).length > 0;\n }\n}\n","import type { OpenAPIRequestBody, Referenced } from '../../types';\n\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { MediaContentModel } from './MediaContent';\nimport { getContentWithLegacyExamples } from '../../utils';\n\ntype RequestBodyProps = {\n parser: OpenAPIParser;\n infoOrRef: Referenced<OpenAPIRequestBody>;\n options: RedocNormalizedOptions;\n isEvent: boolean;\n};\n\nexport class RequestBodyModel {\n description: string;\n required?: boolean;\n content?: MediaContentModel;\n\n constructor({ parser, infoOrRef, options, isEvent }: RequestBodyProps) {\n const isRequest = !isEvent;\n const { resolved: info } = parser.deref(infoOrRef);\n this.description = info.description || '';\n this.required = info.required;\n\n const mediaContent = getContentWithLegacyExamples(info);\n if (mediaContent !== undefined) {\n this.content = new MediaContentModel(parser, mediaContent, isRequest, options);\n }\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIResponse, Referenced } from '../../types';\n\nimport { getStatusCodeType, extractExtensions } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { FieldModel } from './Field';\nimport { MediaContentModel } from './MediaContent';\n\ntype ResponseProps = {\n parser: OpenAPIParser;\n code: string;\n defaultAsError: boolean;\n infoOrRef: Referenced<OpenAPIResponse>;\n options: RedocNormalizedOptions;\n isEvent: boolean;\n};\n\nexport class ResponseModel {\n @observable\n expanded: boolean = false;\n\n content?: MediaContentModel;\n code: string;\n summary: string;\n description: string;\n type: string;\n headers: FieldModel[] = [];\n extensions: Record<string, any>;\n\n constructor({\n parser,\n code,\n defaultAsError,\n infoOrRef,\n options,\n isEvent: isRequest,\n }: ResponseProps) {\n makeObservable(this);\n\n this.expanded = options.expandResponses === 'all' || options.expandResponses[code];\n\n const { resolved: info } = parser.deref(infoOrRef);\n this.code = code;\n if (info.content !== undefined) {\n this.content = new MediaContentModel(parser, info.content, isRequest, options);\n }\n\n if (info['x-summary'] !== undefined) {\n this.summary = info['x-summary'];\n this.description = info.description || '';\n } else {\n this.summary = info.description || '';\n this.description = '';\n }\n\n this.type = getStatusCodeType(code, defaultAsError);\n\n const headers = info.headers;\n if (headers !== undefined) {\n this.headers = Object.keys(headers).map(name => {\n const header = headers[name];\n return new FieldModel(parser, { ...header, name }, '', options);\n });\n }\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(info, options.showExtensions);\n }\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport {\n extractExtensions,\n getOperationSummary,\n getStatusCodeType,\n isStatusCode,\n memoize,\n mergeParams,\n normalizeServers,\n sortByField,\n sortByRequired,\n} from '../../utils';\n\nimport { GroupModel } from './Group.model';\nimport { SecurityRequirementModel } from './SecurityRequirement';\nimport { CallbackModel } from './Callback';\nimport { FieldModel } from './Field';\nimport { RequestBodyModel } from './RequestBody';\nimport { ResponseModel } from './Response';\nimport { SideNavStyleEnum } from '../types';\n\nimport type {\n OpenAPIExternalDocumentation,\n OpenAPIServer,\n OpenAPIXBadges,\n OpenAPIXCodeSample,\n} from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport type { MediaContentModel } from './MediaContent';\nimport type { ContentItemModel, ExtendedOpenAPIOperation, IMenuItem } from '../types';\n\nexport interface XPayloadSample {\n lang: 'payload';\n label: string;\n requestBodyContent: MediaContentModel;\n source: string;\n}\n\nexport function isPayloadSample(\n sample: XPayloadSample | OpenAPIXCodeSample,\n): sample is XPayloadSample {\n return sample.lang === 'payload' && (sample as any).requestBodyContent;\n}\n\nlet isCodeSamplesWarningPrinted = false;\n\n/**\n * Operation model ready to be used by components\n */\nexport class OperationModel implements IMenuItem {\n //#region IMenuItem fields\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n type = 'operation' as const;\n\n parent?: GroupModel;\n externalDocs?: OpenAPIExternalDocumentation;\n items: ContentItemModel[] = [];\n\n depth: number;\n\n @observable\n ready?: boolean = true;\n @observable\n active: boolean = false;\n @observable\n expanded: boolean = false;\n //#endregion\n\n pointer: string;\n operationId?: string;\n operationHash?: string;\n httpVerb: string;\n badges: OpenAPIXBadges[];\n deprecated: boolean;\n path: string;\n servers: OpenAPIServer[];\n security: SecurityRequirementModel[];\n extensions: Record<string, any>;\n isCallback: boolean;\n isWebhook: boolean;\n isEvent: boolean;\n\n constructor(\n private parser: OpenAPIParser,\n private operationSpec: ExtendedOpenAPIOperation,\n parent: GroupModel | undefined,\n private options: RedocNormalizedOptions,\n isCallback: boolean = false,\n ) {\n makeObservable(this);\n\n this.pointer = operationSpec.pointer;\n\n this.description = operationSpec.description;\n this.parent = parent;\n this.externalDocs = operationSpec.externalDocs;\n\n this.deprecated = !!operationSpec.deprecated;\n this.httpVerb = operationSpec.httpVerb;\n this.deprecated = !!operationSpec.deprecated;\n this.operationId = operationSpec.operationId;\n this.path = operationSpec.pathName;\n this.isCallback = isCallback;\n this.isWebhook = operationSpec.isWebhook;\n this.isEvent = this.isCallback || this.isWebhook;\n\n this.name = getOperationSummary(operationSpec);\n\n this.sidebarLabel =\n options.sideNavStyle === SideNavStyleEnum.IdOnly\n ? this.operationId || this.path\n : options.sideNavStyle === SideNavStyleEnum.PathOnly\n ? this.path\n : this.name;\n this.badges =\n operationSpec['x-badges']?.map(({ name, color, position }) => ({\n name,\n color: color,\n position: position || 'after',\n })) || [];\n\n if (this.isCallback) {\n // NOTE: Callbacks by default should not inherit the specification's global `security` definition.\n // Can be defined individually per-callback in the specification. Defaults to none.\n this.security = (operationSpec.security || []).map(\n security => new SecurityRequirementModel(security, parser),\n );\n\n // TODO: update getting pathInfo for overriding servers on path level\n this.servers = normalizeServers('', operationSpec.servers || operationSpec.pathServers || []);\n } else {\n this.operationHash = operationSpec.operationId && 'operation/' + operationSpec.operationId;\n this.id =\n operationSpec.operationId !== undefined\n ? (parent ? parent.id + '/' : '') + this.operationHash\n : parent !== undefined\n ? parent.id + this.pointer\n : this.pointer;\n\n this.security = (operationSpec.security || parser.spec.security || []).map(\n security => new SecurityRequirementModel(security, parser),\n );\n\n this.servers = normalizeServers(\n parser.specUrl,\n operationSpec.servers || operationSpec.pathServers || parser.spec.servers || [],\n );\n }\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(operationSpec, options.showExtensions);\n }\n }\n\n /**\n * set operation as active (used by side menu)\n */\n @action\n activate() {\n this.active = true;\n }\n\n /**\n * set operation as inactive (used by side menu)\n */\n @action\n deactivate() {\n this.active = false;\n }\n\n /**\n * Toggle expansion in middle panel (for callbacks, which are operations)\n */\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n\n expand() {\n if (this.parent) {\n this.parent.expand();\n }\n }\n\n collapse() {\n /* do nothing */\n }\n\n @memoize\n get requestBody() {\n return (\n this.operationSpec.requestBody &&\n new RequestBodyModel({\n parser: this.parser,\n infoOrRef: this.operationSpec.requestBody,\n options: this.options,\n isEvent: this.isEvent,\n })\n );\n }\n\n @memoize\n get codeSamples() {\n const { payloadSampleIdx, hideRequestPayloadSample } = this.options;\n let samples: Array<OpenAPIXCodeSample | XPayloadSample> =\n this.operationSpec['x-codeSamples'] || this.operationSpec['x-code-samples'] || [];\n\n if (this.operationSpec['x-code-samples'] && !isCodeSamplesWarningPrinted) {\n isCodeSamplesWarningPrinted = true;\n console.warn('\"x-code-samples\" is deprecated. Use \"x-codeSamples\" instead');\n }\n\n const requestBodyContent = this.requestBody && this.requestBody.content;\n if (requestBodyContent && requestBodyContent.hasSample && !hideRequestPayloadSample) {\n const insertInx = Math.min(samples.length, payloadSampleIdx);\n\n samples = [\n ...samples.slice(0, insertInx),\n {\n lang: 'payload',\n label: 'Payload',\n source: '',\n requestBodyContent,\n },\n ...samples.slice(insertInx),\n ];\n }\n\n return samples;\n }\n\n @memoize\n get parameters() {\n const _parameters = mergeParams(\n this.parser,\n this.operationSpec.pathParameters,\n this.operationSpec.parameters,\n // TODO: fix pointer\n ).map(paramOrRef => new FieldModel(this.parser, paramOrRef, this.pointer, this.options));\n\n if (this.options.sortPropsAlphabetically) {\n return sortByField(_parameters, 'name');\n }\n if (this.options.sortRequiredPropsFirst) {\n return sortByRequired(_parameters);\n }\n\n return _parameters;\n }\n\n @memoize\n get responses() {\n let hasSuccessResponses = false;\n return Object.keys(this.operationSpec.responses || [])\n .filter(code => {\n if (code === 'default') {\n return true;\n }\n\n if (getStatusCodeType(code) === 'success') {\n hasSuccessResponses = true;\n }\n\n return isStatusCode(code);\n }) // filter out other props (e.g. x-props)\n .map(code => {\n return new ResponseModel({\n parser: this.parser,\n code,\n defaultAsError: hasSuccessResponses,\n infoOrRef: this.operationSpec.responses[code],\n options: this.options,\n isEvent: this.isEvent,\n });\n });\n }\n\n @memoize\n get callbacks() {\n return Object.keys(this.operationSpec.callbacks || []).map(callbackEventName => {\n return new CallbackModel(\n this.parser,\n callbackEventName,\n this.operationSpec.callbacks![callbackEventName],\n this.pointer,\n this.options,\n );\n });\n }\n}\n","import type { OpenAPIPath, Referenced } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { OperationModel } from './Operation';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { isOperationName } from '../..';\n\nexport class WebhookModel {\n operations: OperationModel[] = [];\n\n constructor(\n parser: OpenAPIParser,\n options: RedocNormalizedOptions,\n infoOrRef?: Referenced<OpenAPIPath>,\n ) {\n const { resolved: webhooks } = parser.deref<OpenAPIPath>(infoOrRef || {});\n this.initWebhooks(parser, webhooks, options);\n }\n\n initWebhooks(parser: OpenAPIParser, webhooks: OpenAPIPath, options: RedocNormalizedOptions) {\n for (const webhookName of Object.keys(webhooks)) {\n const webhook = webhooks[webhookName];\n const operations = Object.keys(webhook).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = webhook[operationName];\n if (webhook.$ref) {\n const resolvedWebhook = parser.deref<OpenAPIPath>(webhook || {});\n this.initWebhooks(parser, { [operationName]: resolvedWebhook }, options);\n }\n\n if (!operationInfo) continue;\n const operation = new OperationModel(\n parser,\n {\n ...operationInfo,\n httpVerb: operationName,\n },\n undefined,\n options,\n false,\n );\n\n this.operations.push(operation);\n }\n }\n }\n}\n","import type { OpenAPISecurityScheme, Referenced } from '../../types';\nimport { SECURITY_SCHEMES_SECTION_PREFIX } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nexport class SecuritySchemeModel {\n id: string;\n sectionId: string;\n type: OpenAPISecurityScheme['type'];\n description: string;\n displayName: string;\n apiKey?: {\n name: string;\n in: OpenAPISecurityScheme['in'];\n };\n\n http?: {\n scheme: string;\n bearerFormat?: string;\n };\n\n flows: OpenAPISecurityScheme['flows'];\n openId?: {\n connectUrl: string;\n };\n\n constructor(parser: OpenAPIParser, id: string, scheme: Referenced<OpenAPISecurityScheme>) {\n const { resolved: info } = parser.deref(scheme);\n this.id = id;\n this.sectionId = SECURITY_SCHEMES_SECTION_PREFIX + id;\n this.type = info.type;\n this.displayName = info['x-displayName'] || id;\n this.description = info.description || '';\n if (info.type === 'apiKey') {\n this.apiKey = {\n name: info.name!,\n in: info.in,\n };\n }\n\n if (info.type === 'http') {\n this.http = {\n scheme: info.scheme!,\n bearerFormat: info.bearerFormat,\n };\n }\n\n if (info.type === 'openIdConnect') {\n this.openId = {\n connectUrl: info.openIdConnectUrl!,\n };\n }\n\n if (info.type === 'oauth2' && info.flows) {\n this.flows = info.flows;\n }\n }\n}\n\nexport class SecuritySchemesModel {\n schemes: SecuritySchemeModel[];\n\n constructor(parser: OpenAPIParser) {\n const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};\n this.schemes = Object.keys(schemes).map(\n name => new SecuritySchemeModel(parser, name, schemes[name]),\n );\n }\n}\n","import type { OpenAPIExternalDocumentation, OpenAPIPath, OpenAPISpec, Referenced } from '../types';\n\nimport { MenuBuilder } from './MenuBuilder';\nimport { ApiInfoModel } from './models/ApiInfo';\nimport { WebhookModel } from './models/Webhook';\nimport { SecuritySchemesModel } from './models/SecuritySchemes';\nimport { OpenAPIParser } from './OpenAPIParser';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { ContentItemModel } from './types';\n/**\n * Store that contains all the specification related information in the form of tree\n */\nexport class SpecStore {\n parser: OpenAPIParser;\n\n info: ApiInfoModel;\n externalDocs?: OpenAPIExternalDocumentation;\n contentItems: ContentItemModel[];\n securitySchemes: SecuritySchemesModel;\n webhooks?: WebhookModel;\n\n constructor(\n spec: OpenAPISpec,\n specUrl: string | undefined,\n private options: RedocNormalizedOptions,\n ) {\n this.parser = new OpenAPIParser(spec, specUrl, options);\n this.info = new ApiInfoModel(this.parser, this.options);\n this.externalDocs = this.parser.spec.externalDocs;\n this.contentItems = MenuBuilder.buildStructure(this.parser, this.options);\n this.securitySchemes = new SecuritySchemesModel(this.parser);\n const webhookPath: Referenced<OpenAPIPath> = {\n ...this.parser?.spec?.['x-webhooks'],\n ...this.parser?.spec.webhooks,\n };\n this.webhooks = new WebhookModel(this.parser, options, webhookPath);\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIExternalDocumentation, OpenAPITag } from '../../types';\nimport { safeSlugify } from '../../utils';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport type { ContentItemModel, IMenuItem, MarkdownHeading, MenuItemGroupType } from '../types';\n\n/**\n * Operations Group model ready to be used by components\n */\nexport class GroupModel implements IMenuItem {\n //#region IMenuItem fields\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n type: MenuItemGroupType;\n\n items: ContentItemModel[] = [];\n parent?: GroupModel;\n externalDocs?: OpenAPIExternalDocumentation;\n\n @observable\n active: boolean = false;\n @observable\n expanded: boolean = false;\n\n depth: number;\n level: number;\n //#endregion\n\n constructor(\n type: MenuItemGroupType,\n tagOrGroup: OpenAPITag | MarkdownHeading,\n parent?: GroupModel,\n ) {\n makeObservable(this);\n\n // markdown headings already have ids calculated as they are needed for heading anchors\n this.id = (tagOrGroup as MarkdownHeading).id || type + '/' + safeSlugify(tagOrGroup.name);\n this.type = type;\n this.name = tagOrGroup['x-displayName'] || tagOrGroup.name;\n this.level = (tagOrGroup as MarkdownHeading).level || 1;\n\n this.sidebarLabel = this.name;\n\n // remove sections from markdown, same as in ApiInfo\n this.description = tagOrGroup.description || '';\n\n const items = (tagOrGroup as MarkdownHeading).items;\n if (items && items.length) {\n this.description = MarkdownRenderer.getTextBeforeHading(this.description, items[0].name);\n }\n\n this.parent = parent;\n this.externalDocs = (tagOrGroup as OpenAPITag).externalDocs;\n\n // groups are active (expanded) by default\n if (this.type === 'group') {\n this.expanded = true;\n }\n }\n\n @action\n activate() {\n this.active = true;\n }\n\n @action\n expand() {\n if (this.parent) {\n this.parent.expand();\n }\n this.expanded = true;\n }\n\n @action\n collapse() {\n // disallow collapsing groups\n if (this.type === 'group') {\n return;\n }\n this.expanded = false;\n }\n\n @action\n deactivate() {\n this.active = false;\n }\n}\n","import type { OpenAPIPaths, OpenAPITag, OpenAPISchema } from '../types';\nimport { isOperationName, JsonPointer, alphabeticallyByProp } from '../utils';\nimport { MarkdownRenderer } from './MarkdownRenderer';\nimport { GroupModel, OperationModel } from './models';\nimport type { OpenAPIParser } from './OpenAPIParser';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { ContentItemModel, TagGroup, TagInfo, TagsInfoMap } from './types';\n\nexport const GROUP_DEPTH = 0;\n\nexport class MenuBuilder {\n /**\n * Builds page content structure based on tags\n */\n static buildStructure(\n parser: OpenAPIParser,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n const spec = parser.spec;\n const { schemaDefinitionsTagName } = options;\n\n const items: ContentItemModel[] = [];\n const tags = [...(spec.tags || [])];\n const hasAutogenerated = tags.find(\n tag => tag?.name === schemaDefinitionsTagName,\n );\n\n if (!hasAutogenerated && schemaDefinitionsTagName) {\n tags.push({ name: schemaDefinitionsTagName });\n }\n const tagsMap = MenuBuilder.getTagsWithOperations(parser, tags);\n\n items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', undefined, 1, options));\n if (spec['x-tagGroups'] && spec['x-tagGroups'].length > 0) {\n items.push(\n ...MenuBuilder.getTagGroupsItems(parser, undefined, spec['x-tagGroups'], tagsMap, options),\n );\n } else {\n items.push(...MenuBuilder.getTagsItems(parser, tagsMap, undefined, undefined, options));\n }\n\n return items;\n }\n\n /**\n * extracts items from markdown description\n * @param description - markdown source\n */\n static addMarkdownItems(\n description: string,\n parent: GroupModel | undefined,\n initialDepth: number,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n const renderer = new MarkdownRenderer(options, parent?.id);\n const headings = renderer.extractHeadings(description || '');\n\n if (headings.length && parent && parent.description) {\n parent.description = MarkdownRenderer.getTextBeforeHading(\n parent.description,\n headings[0].name,\n );\n }\n\n const mapHeadingsDeep = (_parent, items, depth = 1) =>\n items.map(heading => {\n const group = new GroupModel('section', heading, _parent);\n group.depth = depth;\n if (heading.items) {\n group.items = mapHeadingsDeep(group, heading.items, depth + 1);\n }\n\n return group;\n });\n\n return mapHeadingsDeep(parent, headings, initialDepth);\n }\n\n /**\n * Returns array of OperationsGroup items for the tag groups (x-tagGroups vendor extension)\n * @param tags value of `x-tagGroups` vendor extension\n */\n static getTagGroupsItems(\n parser: OpenAPIParser,\n parent: GroupModel | undefined,\n groups: TagGroup[],\n tags: TagsInfoMap,\n options: RedocNormalizedOptions,\n ): GroupModel[] {\n const res: GroupModel[] = [];\n for (const group of groups) {\n const item = new GroupModel('group', group, parent);\n item.depth = GROUP_DEPTH;\n item.items = MenuBuilder.getTagsItems(parser, tags, item, group, options);\n res.push(item);\n }\n // TODO checkAllTagsUsedInGroups\n return res;\n }\n\n /**\n * Returns array of OperationsGroup items for the tags of the group or for all tags\n * @param parser\n * @param tagsMap tags info returned from `getTagsWithOperations`\n * @param parent parent item\n * @param group group which this tag belongs to. if not provided gets all tags\n * @param options normalized options\n */\n static getTagsItems(\n parser: OpenAPIParser,\n tagsMap: TagsInfoMap,\n parent: GroupModel | undefined,\n group: TagGroup | undefined,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n let tagNames;\n\n if (group === undefined) {\n tagNames = Object.keys(tagsMap); // all tags\n } else {\n tagNames = group.tags;\n }\n\n const tags = tagNames.map(tagName => {\n if (!tagsMap[tagName]) {\n console.warn(`Non-existing tag \"${tagName}\" is added to the group \"${group!.name}\"`);\n return null;\n }\n tagsMap[tagName].used = true;\n return tagsMap[tagName];\n });\n\n const res: Array<GroupModel | OperationModel> = [];\n for (const tag of tags) {\n if (!tag) {\n continue;\n }\n const item = new GroupModel('tag', tag, parent);\n item.depth = GROUP_DEPTH + 1;\n\n // don't put empty tag into content, instead put its operations\n if (tag.name === '') {\n const items = [\n ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options),\n ...this.getOperationsItems(parser, undefined, tag, item.depth + 1, options),\n ];\n res.push(...items);\n continue;\n }\n\n const relatedSchemas = this.getTagRelatedSchema({\n parser,\n tag,\n parent: item,\n schemaDefinitionsTagName: options.schemaDefinitionsTagName,\n });\n\n item.items = [\n ...relatedSchemas,\n ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options),\n ...this.getOperationsItems(parser, item, tag, item.depth + 1, options),\n ];\n\n res.push(item);\n }\n\n if (options.sortTagsAlphabetically) {\n res.sort(alphabeticallyByProp<GroupModel | OperationModel>('name'));\n }\n\n return res;\n }\n\n /**\n * Returns array of Operation items for the tag\n * @param parser\n * @param parent parent OperationsGroup\n * @param tag tag info returned from `getTagsWithOperations`\n * @param depth items depth\n * @param options - normalized options\n */\n static getOperationsItems(\n parser: OpenAPIParser,\n parent: GroupModel | undefined,\n tag: TagInfo,\n depth: number,\n options: RedocNormalizedOptions,\n ): OperationModel[] {\n if (tag.operations.length === 0) {\n return [];\n }\n\n const res: OperationModel[] = [];\n for (const operationInfo of tag.operations) {\n const operation = new OperationModel(parser, operationInfo, parent, options);\n operation.depth = depth;\n res.push(operation);\n }\n\n if (options.sortOperationsAlphabetically) {\n res.sort(alphabeticallyByProp<OperationModel>('name'));\n }\n\n return res;\n }\n\n /**\n * collects tags and maps each tag to list of operations belonging to this tag\n */\n static getTagsWithOperations(parser: OpenAPIParser, explicitTags: OpenAPITag[]): TagsInfoMap {\n const { spec } = parser;\n const tags: TagsInfoMap = {};\n const webhooks = spec['x-webhooks'] || spec.webhooks;\n for (const tag of explicitTags || []) {\n tags[tag.name] = { ...tag, operations: [] };\n }\n\n if (webhooks) {\n getTags(parser, webhooks, true);\n }\n\n if (spec.paths) {\n getTags(parser, spec.paths);\n }\n\n function getTags(parser: OpenAPIParser, paths: OpenAPIPaths, isWebhook?: boolean) {\n for (const pathName of Object.keys(paths)) {\n const path = paths[pathName];\n const operations = Object.keys(path).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = path[operationName];\n if (path.$ref) {\n const { resolved: resolvedPaths } = parser.deref<OpenAPIPaths>(path as OpenAPIPaths);\n getTags(parser, { [pathName]: resolvedPaths }, isWebhook);\n continue;\n }\n let operationTags = operationInfo?.tags;\n\n if (!operationTags || !operationTags.length) {\n // empty tag\n operationTags = [''];\n }\n\n for (const tagName of operationTags) {\n let tag = tags[tagName];\n if (tag === undefined) {\n tag = {\n name: tagName,\n operations: [],\n };\n tags[tagName] = tag;\n }\n if (tag['x-traitTag']) {\n continue;\n }\n tag.operations.push({\n ...operationInfo,\n pathName,\n pointer: JsonPointer.compile(['paths', pathName, operationName]),\n httpVerb: operationName,\n pathParameters: path.parameters || [],\n pathServers: path.servers,\n isWebhook: !!isWebhook,\n });\n }\n }\n }\n }\n return tags;\n }\n\n static getTagRelatedSchema({\n parser,\n tag,\n parent,\n schemaDefinitionsTagName,\n }: {\n parser: OpenAPIParser;\n tag: TagInfo;\n parent: GroupModel;\n schemaDefinitionsTagName?: string;\n }): GroupModel[] {\n const defaultTags = schemaDefinitionsTagName ? [schemaDefinitionsTagName] : [];\n\n return Object.entries(parser.spec.components?.schemas || {})\n .map(([schemaName, schema]) => {\n const schemaTags = schema['x-tags'] || defaultTags;\n if (!schemaTags?.includes(tag.name)) return null;\n\n const item = new GroupModel(\n 'schema',\n {\n name: schemaName,\n 'x-displayName': `${(schema as OpenAPISchema).title || schemaName}`,\n description: `<SchemaDefinition showWriteOnly={true} schemaRef=\"#/components/schemas/${schemaName}\" />`,\n } as OpenAPITag,\n parent,\n );\n item.depth = parent.depth + 1;\n return item;\n })\n .filter(Boolean) as GroupModel[];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\nimport { querySelector } from '../utils/dom';\nimport { escapeHTMLAttrChars, flattenByProp, SECURITY_SCHEMES_SECTION_PREFIX } from '../utils';\n\nimport { history as historyInst, HistoryService } from './HistoryService';\nimport { GROUP_DEPTH } from './MenuBuilder';\n\nimport type { SpecStore } from './models';\nimport type { ScrollService } from './ScrollService';\nimport type { IMenuItem } from './types';\n\n/** Generic interface for MenuItems */\n\nexport const SECTION_ATTR = 'data-section-id';\n\n/**\n * Stores all side-menu related information\n */\nexport class MenuStore {\n /**\n * Statically try update scroll position\n * Used before hydrating from server-side rendered html to scroll page faster\n */\n static updateOnHistory(id: string = historyInst.currentId, scroll: ScrollService) {\n if (!id) {\n return;\n }\n scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(id)}\"]`);\n }\n\n /**\n * active item absolute index (when flattened). -1 means nothing is selected\n */\n @observable\n activeItemIdx: number = -1;\n\n /**\n * whether sidebar with menu is opened or not\n */\n @observable\n sideBarOpened: boolean = false;\n\n items: IMenuItem[];\n flatItems: IMenuItem[];\n\n /**\n * cached flattened menu items to support absolute indexing\n */\n private _unsubscribe: () => void;\n private _hashUnsubscribe: () => void;\n\n /**\n *\n * @param spec [SpecStore](#SpecStore) which contains page content structure\n * @param scroll scroll service instance used by this menu\n */\n constructor(spec: SpecStore, public scroll: ScrollService, public history: HistoryService) {\n makeObservable(this);\n\n this.items = spec.contentItems;\n\n this.flatItems = flattenByProp(this.items || [], 'items');\n this.flatItems.forEach((item, idx) => (item.absoluteIdx = idx));\n\n this.subscribe();\n }\n\n subscribe() {\n this._unsubscribe = this.scroll.subscribe(this.updateOnScroll);\n this._hashUnsubscribe = this.history.subscribe(this.updateOnHistory);\n }\n\n @action\n toggleSidebar() {\n this.sideBarOpened = this.sideBarOpened ? false : true;\n }\n\n @action\n closeSidebar() {\n this.sideBarOpened = false;\n }\n\n /**\n * update active items on scroll\n * @param isScrolledDown whether last scroll was downside\n */\n updateOnScroll = (isScrolledDown: boolean): void => {\n const step = isScrolledDown ? 1 : -1;\n let itemIdx = this.activeItemIdx;\n while (true) {\n if (itemIdx === -1 && !isScrolledDown) {\n break;\n }\n\n if (itemIdx >= this.flatItems.length - 1 && isScrolledDown) {\n break;\n }\n\n if (isScrolledDown) {\n const el = this.getElementAtOrFirstChild(itemIdx + 1);\n if (this.scroll.isElementBellow(el)) {\n break;\n }\n } else {\n const el = this.getElementAt(itemIdx);\n if (this.scroll.isElementAbove(el)) {\n break;\n }\n }\n itemIdx += step;\n }\n\n this.activate(this.flatItems[itemIdx], true, true);\n };\n\n /**\n * update active items on hash change\n * @param id current hash\n */\n updateOnHistory = (id: string = this.history.currentId) => {\n if (!id) {\n return;\n }\n let item: IMenuItem | undefined;\n\n item = this.flatItems.find(i => i.id === id);\n\n if (item) {\n this.activateAndScroll(item, false);\n } else {\n if (id.startsWith(SECURITY_SCHEMES_SECTION_PREFIX)) {\n item = this.flatItems.find(i => SECURITY_SCHEMES_SECTION_PREFIX.startsWith(i.id));\n this.activateAndScroll(item, false);\n }\n this.scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(id)}\"]`);\n }\n };\n\n /**\n * get section/operation DOM Node related to the item or null if it doesn't exist\n * @param idx item absolute index\n */\n getElementAt(idx: number): Element | null {\n const item = this.flatItems[idx];\n return (item && querySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(item.id)}\"]`)) || null;\n }\n\n /**\n * get section/operation DOM Node related to the item or if it is group item, returns first item of the group\n * @param idx item absolute index\n */\n getElementAtOrFirstChild(idx: number): Element | null {\n let item = this.flatItems[idx];\n if (item && item.type === 'group') {\n item = item.items[0];\n }\n return (item && querySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(item.id)}\"]`)) || null;\n }\n\n /**\n * current active item\n */\n get activeItem(): IMenuItem {\n return this.flatItems[this.activeItemIdx] || undefined;\n }\n\n getItemById = (id: string) => {\n return this.flatItems.find(item => item.id === id);\n };\n\n /**\n * activate menu item\n * @param item item to activate\n * @param updateLocation [true] whether to update location\n * @param rewriteHistory [false] whether to rewrite browser history (do not create new entry)\n */\n @action\n activate(\n item: IMenuItem | undefined,\n updateLocation: boolean = true,\n rewriteHistory: boolean = false,\n ) {\n if ((this.activeItem && this.activeItem.id) === (item && item.id)) {\n return;\n }\n\n if (item && item.type === 'group') {\n return;\n }\n\n this.deactivate(this.activeItem);\n if (!item) {\n this.activeItemIdx = -1;\n this.history.replace('', rewriteHistory);\n return;\n }\n\n // do not allow activating group items\n // TODO: control over options\n if (item.depth <= GROUP_DEPTH) {\n return;\n }\n\n this.activeItemIdx = item.absoluteIdx!;\n if (updateLocation) {\n this.history.replace(encodeURI(item.id), rewriteHistory);\n }\n\n item.activate();\n item.expand();\n }\n\n /**\n * makes item and all the parents not active\n * @param item item to deactivate\n */\n deactivate(item: IMenuItem | undefined) {\n if (item === undefined) {\n return;\n }\n item.deactivate();\n while (item !== undefined) {\n item.collapse();\n item = item.parent;\n }\n }\n\n /**\n * activate menu item and scroll to it\n * @see MenuStore.activate\n */\n @action.bound\n activateAndScroll(\n item: IMenuItem | undefined,\n updateLocation?: boolean,\n rewriteHistory?: boolean,\n ) {\n // item here can be a copy from search results so find corresponding item from menu\n const menuItem = (item && this.getItemById(item.id)) || item;\n this.activate(menuItem, updateLocation, rewriteHistory);\n this.scrollToActive();\n if (!menuItem || !menuItem.items.length) {\n this.closeSidebar();\n }\n }\n\n /**\n * scrolls to active section\n */\n scrollToActive(): void {\n this.scroll.scrollIntoView(this.getElementAt(this.activeItemIdx));\n }\n\n dispose() {\n this._unsubscribe();\n this._hashUnsubscribe();\n }\n}\n","import { bind } from 'decko';\nimport { EventEmitter } from 'eventemitter3';\n\nimport { IS_BROWSER, querySelector, Throttle } from '../utils';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\n\nconst EVENT = 'scroll';\n\nexport class ScrollService {\n private _scrollParent: Window | HTMLElement | undefined;\n private _emiter: EventEmitter;\n private _prevOffsetY = 0;\n constructor(private options: RedocNormalizedOptions) {\n this._scrollParent = IS_BROWSER ? window : undefined;\n this._emiter = new EventEmitter();\n this.bind();\n }\n\n bind() {\n this._prevOffsetY = this.scrollY();\n if (this._scrollParent) {\n this._scrollParent.addEventListener('scroll', this.handleScroll);\n }\n }\n\n dispose() {\n if (this._scrollParent) {\n this._scrollParent.removeEventListener('scroll', this.handleScroll);\n }\n this._emiter.removeAllListeners(EVENT);\n }\n\n scrollY(): number {\n if (typeof HTMLElement !== 'undefined' && this._scrollParent instanceof HTMLElement) {\n return this._scrollParent.scrollTop;\n } else if (this._scrollParent !== undefined) {\n return (this._scrollParent as Window).pageYOffset;\n } else {\n return 0;\n }\n }\n\n isElementBellow(el: Element | null) {\n if (el === null) {\n return;\n }\n return el.getBoundingClientRect().top > this.options.scrollYOffset();\n }\n\n isElementAbove(el: Element | null) {\n if (el === null) {\n return;\n }\n const top = el.getBoundingClientRect().top;\n return (top > 0 ? Math.floor(top) : Math.ceil(top)) <= this.options.scrollYOffset();\n }\n\n subscribe(cb): () => void {\n const emmiter = this._emiter.addListener(EVENT, cb);\n return () => emmiter.removeListener(EVENT, cb);\n }\n\n scrollIntoView(element: Element | null) {\n if (element === null) {\n return;\n }\n element.scrollIntoView();\n if (this._scrollParent && this._scrollParent.scrollBy) {\n // adding 1 account rounding errors in case scrollYOffset is float-number\n (this._scrollParent.scrollBy as any)(0, -this.options.scrollYOffset() + 1);\n }\n }\n\n scrollIntoViewBySelector(selector: string) {\n const element = querySelector(selector);\n this.scrollIntoView(element);\n }\n\n @bind\n @Throttle(100)\n handleScroll() {\n const scrollY = this.scrollY();\n const isScrolledDown = scrollY - this._prevOffsetY > 0;\n this._prevOffsetY = this.scrollY();\n this._emiter.emit(EVENT, isScrolledDown);\n }\n}\n","import { IS_BROWSER } from '../utils/';\nimport type { IMenuItem } from './types';\nimport type { OperationModel } from './models';\n\nimport Worker from './SearchWorker.worker';\n\nfunction getWorker() {\n let worker: new () => Worker;\n if (IS_BROWSER) {\n try {\n // tslint:disable-next-line\n worker = require('workerize-loader?inline&fallback=false!./SearchWorker.worker');\n } catch (e) {\n worker = require('./SearchWorker.worker').default;\n }\n } else {\n worker = require('./SearchWorker.worker').default;\n }\n return new worker();\n}\n\nexport class SearchStore<T> {\n searchWorker = getWorker();\n\n indexItems(groups: Array<IMenuItem | OperationModel>) {\n const recurse = items => {\n items.forEach(group => {\n if (group.type !== 'group') {\n this.add(group.name, (group.description || '').concat(' ', group.path || ''), group.id);\n }\n recurse(group.items);\n });\n };\n\n recurse(groups);\n this.searchWorker.done();\n }\n\n add(title: string, body: string, meta?: T) {\n this.searchWorker.add(title, body, meta);\n }\n\n dispose() {\n (this.searchWorker as any).terminate();\n (this.searchWorker as any).dispose();\n }\n\n search(q: string) {\n return this.searchWorker.search<T>(q);\n }\n\n async toJS() {\n return this.searchWorker.toJS();\n }\n\n load(state: any) {\n this.searchWorker.load(state);\n }\n\n fromExternalJS(path?: string, exportName?: string) {\n if (path && exportName) {\n this.searchWorker.fromExternalJS(path, exportName);\n }\n }\n}\n","import { SECTION_ATTR } from '../services/MenuStore';\nimport styled, { media } from '../styled-components';\n\nexport const MiddlePanel = styled.div<{ $compact?: boolean }>`\n width: calc(100% - ${props => props.theme.rightPanel.width});\n padding: 0 ${props => props.theme.spacing.sectionHorizontal}px;\n\n ${({ $compact, theme }) =>\n media.lessThan('medium', true)`\n width: 100%;\n padding: ${`${$compact ? 0 : theme.spacing.sectionVertical}px ${\n theme.spacing.sectionHorizontal\n }px`};\n `};\n`;\n\nexport const Section = styled.div.attrs(props => ({\n [SECTION_ATTR]: props.id,\n}))<{ $underlined?: boolean }>`\n padding: ${props => props.theme.spacing.sectionVertical}px 0;\n\n &:last-child {\n min-height: calc(100vh + 1px);\n }\n\n & > &:last-child {\n min-height: initial;\n }\n\n ${media.lessThan('medium', true)`\n padding: 0;\n `}\n ${({ $underlined }) =>\n ($underlined &&\n `\n position: relative;\n\n &:not(:last-of-type):after {\n position: absolute;\n bottom: 0;\n width: 100%;\n display: block;\n content: '';\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n }\n `) ||\n ''}\n`;\n\nexport const RightPanel = styled.div`\n width: ${props => props.theme.rightPanel.width};\n color: ${({ theme }) => theme.rightPanel.textColor};\n background-color: ${props => props.theme.rightPanel.backgroundColor};\n padding: 0 ${props => props.theme.spacing.sectionHorizontal}px;\n\n ${media.lessThan('medium', true)`\n width: 100%;\n padding: ${props =>\n `${props.theme.spacing.sectionVertical}px ${props.theme.spacing.sectionHorizontal}px`};\n `};\n`;\n\nexport const DarkRightPanel = styled(RightPanel)`\n background-color: ${props => props.theme.rightPanel.backgroundColor};\n`;\n\nexport const Row = styled.div`\n display: flex;\n width: 100%;\n padding: 0;\n\n ${media.lessThan('medium', true)`\n flex-direction: column;\n `};\n`;\n","import styled, { css, extensionsHook } from '../styled-components';\n\nconst headerFontSize = {\n 1: '1.85714em',\n 2: '1.57143em',\n 3: '1.27em',\n};\n\nexport const headerCommonMixin = level => css`\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-weight: ${({ theme }) => theme.typography.headings.fontWeight};\n font-size: ${headerFontSize[level]};\n line-height: ${({ theme }) => theme.typography.headings.lineHeight};\n`;\n\nexport const H1 = styled.h1`\n ${headerCommonMixin(1)};\n color: ${({ theme }) => theme.colors.text.primary};\n\n ${extensionsHook('H1')};\n`;\n\nexport const H2 = styled.h2`\n ${headerCommonMixin(2)};\n color: ${({ theme }) => theme.colors.text.primary};\n margin: 0 0 20px;\n\n ${extensionsHook('H2')};\n`;\n\nexport const H3 = styled.h2`\n ${headerCommonMixin(3)};\n color: ${({ theme }) => theme.colors.text.primary};\n\n ${extensionsHook('H3')};\n`;\n\nexport const RightPanelHeader = styled.h3`\n color: ${({ theme }) => theme.rightPanel.textColor};\n\n ${extensionsHook('RightPanelHeader')};\n`;\n\nexport const UnderlinedHeader = styled.h5`\n border-bottom: 1px solid rgba(38, 50, 56, 0.3);\n margin: 1em 0 1em 0;\n color: rgba(38, 50, 56, 0.5);\n font-weight: normal;\n text-transform: uppercase;\n font-size: 0.929em;\n line-height: 20px;\n\n ${extensionsHook('UnderlinedHeader')};\n`;\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\nimport { AppStore } from '../services/';\nimport { RedocRawOptions } from '../services/RedocNormalizedOptions';\nimport { loadAndBundleSpec } from '../utils';\n\nexport interface StoreBuilderProps {\n specUrl?: string;\n spec?: object;\n store?: AppStore;\n\n options?: RedocRawOptions;\n\n onLoaded?: (e?: Error) => void;\n\n children: (props: { loading: boolean; store: AppStore | null }) => any;\n}\n\nexport interface StoreBuilderState {\n error?: Error;\n loading: boolean;\n resolvedSpec?: any;\n prevSpec?: any;\n prevSpecUrl?: string;\n}\n\nconst StoreContext = createContext<AppStore | undefined>(undefined);\nconst { Provider, Consumer } = StoreContext;\nexport { Provider as StoreProvider, Consumer as StoreConsumer, StoreContext };\n\nexport function StoreBuilder(props: StoreBuilderProps) {\n const { spec, specUrl, options, onLoaded, children } = props;\n\n const [resolvedSpec, setResolvedSpec] = React.useState<any>(null);\n const [error, setError] = React.useState<Error | null>(null);\n if (error) {\n throw error;\n }\n\n React.useEffect(() => {\n async function load() {\n if (!spec && !specUrl) {\n return undefined;\n }\n setResolvedSpec(null);\n try {\n const resolved = await loadAndBundleSpec(spec || specUrl!);\n setResolvedSpec(resolved);\n } catch (e) {\n if (onLoaded) {\n onLoaded(e);\n }\n setError(e);\n throw e;\n }\n }\n load();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [spec, specUrl]);\n\n const store = React.useMemo(() => {\n if (!resolvedSpec) return null;\n try {\n return new AppStore(resolvedSpec, specUrl, options);\n } catch (e) {\n if (onLoaded) {\n onLoaded(e);\n }\n throw e;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolvedSpec, specUrl, options]);\n\n React.useEffect(() => {\n if (store && onLoaded) {\n onLoaded();\n }\n }, [store, onLoaded]);\n\n return children({\n loading: !store,\n store,\n });\n}\n\nexport function useStore(): AppStore | undefined {\n return useContext(StoreContext);\n}\n","import * as React from 'react';\n\nimport { StoreContext } from '../components/StoreBuilder';\nimport styled, { css } from '../styled-components';\n\nimport { HistoryService } from '../services';\n\n// tslint:disable-next-line\nexport const linkifyMixin = className => css`\n ${className} {\n cursor: pointer;\n margin-left: -20px;\n padding: 0;\n line-height: 1;\n width: 20px;\n display: inline-block;\n outline: 0;\n }\n ${className}:before {\n content: '';\n width: 15px;\n height: 15px;\n background-size: contain;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==');\n opacity: 0.5;\n visibility: hidden;\n display: inline-block;\n vertical-align: middle;\n }\n\n h1:hover > ${className}::before, h2:hover > ${className}::before, ${className}:hover::before {\n visibility: visible;\n }\n`;\n\nconst isModifiedEvent = event =>\n !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n\nexport function Link(props: { to: string; className?: string; children?: any }) {\n const store = React.useContext(StoreContext);\n const clickHandler = React.useCallback(\n (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (!store) return;\n navigate(store.menu.history, event, props.to);\n },\n [store, props.to],\n );\n\n if (!store) return null;\n\n return (\n <a\n className={props.className}\n href={store!.menu.history.linkForId(props.to)}\n onClick={clickHandler}\n aria-label={props.to}\n >\n {props.children}\n </a>\n );\n}\n\nfunction navigate(history: HistoryService, event: React.MouseEvent<HTMLAnchorElement>, to: string) {\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n history.replace(encodeURI(to));\n }\n}\n\nconst StyledShareLink = styled(Link)`\n ${linkifyMixin('&')};\n`;\n\nexport function ShareLink(props: { to: string }) {\n return <StyledShareLink to={props.to} />;\n}\n","import * as React from 'react';\nimport styled from '../styled-components';\n\nconst directionMap = {\n left: '90deg',\n right: '-90deg',\n up: '-180deg',\n down: '0',\n};\n\nconst IntShelfIcon = (props: {\n className?: string;\n float?: 'left' | 'right';\n size?: string;\n color?: string;\n direction: 'left' | 'right' | 'up' | 'down';\n style?: React.CSSProperties;\n}): JSX.Element => {\n return (\n <svg\n className={props.className}\n style={props.style}\n version=\"1.1\"\n viewBox=\"0 0 24 24\"\n x=\"0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0\"\n aria-hidden=\"true\"\n >\n <polygon points=\"17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 \" />\n </svg>\n );\n};\n\nexport const ShelfIcon = styled(IntShelfIcon)`\n height: ${props => props.size || '18px'};\n width: ${props => props.size || '18px'};\n min-width: ${props => props.size || '18px'};\n vertical-align: middle;\n float: ${props => props.float || ''};\n transition: transform 0.2s ease-out;\n transform: rotateZ(${props => directionMap[props.direction || 'down']});\n\n polygon {\n fill: ${({ color, theme }) =>\n (color && theme.colors.responses[color] && theme.colors.responses[color].color) || color};\n }\n`;\n\nexport const Badge = styled.span<{ type: string; color?: string }>`\n display: inline-block;\n padding: 2px 8px;\n margin: 0;\n background-color: ${props => props.color || props.theme.colors[props.type].main};\n color: ${props => props.theme.colors[props.type].contrastText};\n font-size: ${props => props.theme.typography.code.fontSize};\n vertical-align: middle;\n line-height: 1.6;\n border-radius: 4px;\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n font-size: 12px;\n + span[type] {\n margin-left: 4px;\n }\n`;\n","import { css } from '../styled-components';\n\nexport const deprecatedCss = css`\n text-decoration: line-through;\n color: #707070;\n`;\n","import styled, { extensionsHook, media, css } from '../styled-components';\nimport { deprecatedCss } from './mixins';\n\nexport const PropertiesTableCaption = styled.caption`\n text-align: right;\n font-size: 0.9em;\n font-weight: normal;\n color: ${props => props.theme.colors.text.secondary};\n`;\n\nexport const PropertyCell = styled.td<{ kind?: string }>`\n border-left: 1px solid ${props => props.theme.schema.linesColor};\n box-sizing: border-box;\n position: relative;\n padding: 10px 10px 10px 0;\n\n ${media.lessThan('small')`\n display: block;\n overflow: hidden;\n `}\n\n tr:first-of-type > &,\n tr.last > & {\n border-left-width: 0;\n background-position: top left;\n background-repeat: no-repeat;\n background-size: 1px 100%;\n }\n\n tr:first-of-type > & {\n background-image: linear-gradient(\n to bottom,\n transparent 0%,\n transparent 22px,\n ${props => props.theme.schema.linesColor} 22px,\n ${props => props.theme.schema.linesColor} 100%\n );\n }\n\n tr.last > & {\n background-image: linear-gradient(\n to bottom,\n ${props => props.theme.schema.linesColor} 0%,\n ${props => props.theme.schema.linesColor} 22px,\n transparent 22px,\n transparent 100%\n );\n }\n\n tr.last + tr > & {\n border-left-color: transparent;\n }\n\n tr.last:first-child > & {\n background: none;\n border-left-color: transparent;\n }\n`;\n\nexport const PropertyCellWithInner = styled(PropertyCell)`\n padding: 0;\n`;\n\nexport const PropertyNameCell = styled(PropertyCell)`\n vertical-align: top;\n line-height: 20px;\n white-space: nowrap;\n font-size: 13px;\n font-family: ${props => props.theme.typography.code.fontFamily};\n\n &.deprecated {\n ${deprecatedCss};\n }\n\n ${({ kind }) =>\n kind === 'patternProperties' &&\n css`\n > span.property-name {\n display: inline-table;\n white-space: break-spaces;\n margin-right: 20px;\n\n ::before,\n ::after {\n content: '/';\n filter: opacity(0.2);\n }\n }\n `}\n\n ${({ kind = '' }) =>\n ['field', 'additionalProperties', 'patternProperties'].includes(kind)\n ? ''\n : 'font-style: italic'};\n\n ${extensionsHook('PropertyNameCell')};\n`;\n\nexport const PropertyDetailsCell = styled.td`\n border-bottom: 1px solid #9fb4be;\n padding: 10px 0;\n width: ${props => props.theme.schema.defaultDetailsWidth};\n box-sizing: border-box;\n\n tr.expanded & {\n border-bottom: none;\n }\n\n ${media.lessThan('small')`\n padding: 0 20px;\n border-bottom: none;\n border-left: 1px solid ${props => props.theme.schema.linesColor};\n\n tr.last > & {\n border-left: none;\n }\n `}\n\n ${extensionsHook('PropertyDetailsCell')};\n`;\n\nexport const PropertyBullet = styled.span`\n color: ${props => props.theme.schema.linesColor};\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin-right: 10px;\n\n &::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n width: 10px;\n height: 1px;\n background: ${props => props.theme.schema.linesColor};\n }\n\n &::after {\n content: '';\n display: inline-block;\n vertical-align: middle;\n width: 1px;\n background: ${props => props.theme.schema.linesColor};\n height: 7px;\n }\n`;\n\nexport const InnerPropertiesWrap = styled.div`\n padding: ${({ theme }) => theme.schema.nestingSpacing};\n`;\n\nexport const PropertiesTable = styled.table`\n border-collapse: separate;\n border-radius: 3px;\n font-size: ${props => props.theme.typography.fontSize};\n\n border-spacing: 0;\n width: 100%;\n\n > tr {\n vertical-align: middle;\n }\n\n ${media.lessThan('small')`\n display: block;\n > tr, > tbody > tr {\n display: block;\n }\n `}\n\n ${media.lessThan('small', false, ' and (-ms-high-contrast:none)')`\n td {\n float: left;\n width: 100%;\n }\n `}\n\n &\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap} {\n margin: ${({ theme }) => theme.schema.nestingSpacing};\n margin-right: 0;\n background: ${({ theme }) => theme.schema.nestedBackground};\n }\n\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap} {\n background: #ffffff;\n }\n`;\n","import styled from '../styled-components';\nimport { darken } from 'polished';\nimport { deprecatedCss } from './mixins';\n\nexport const OneOfList = styled.div`\n margin: 0 0 3px 0;\n display: inline-block;\n`;\n\nexport const OneOfLabel = styled.span`\n font-size: 0.9em;\n margin-right: 10px;\n color: ${props => props.theme.colors.primary.main};\n font-family: ${props => props.theme.typography.headings.fontFamily};\n}\n`;\n\nexport const OneOfButton = styled.button<{ $active: boolean; $deprecated: boolean }>`\n display: inline-block;\n margin-right: 10px;\n margin-bottom: 5px;\n font-size: 0.8em;\n cursor: pointer;\n border: 1px solid ${props => props.theme.colors.primary.main};\n padding: 2px 10px;\n line-height: 1.5em;\n outline: none;\n &:focus {\n box-shadow: 0 0 0 1px ${props => props.theme.colors.primary.main};\n }\n\n ${({ $deprecated }) => ($deprecated && deprecatedCss) || ''};\n\n ${props => {\n if (props.$active) {\n return `\n color: white;\n background-color: ${props.theme.colors.primary.main};\n &:focus {\n box-shadow: none;\n background-color: ${darken(0.15, props.theme.colors.primary.main)};\n }\n `;\n } else {\n return `\n color: ${props.theme.colors.primary.main};\n background-color: white;\n `;\n }\n }}\n`;\n\nexport const ArrayOpenningLabel = styled.div`\n font-size: 0.9em;\n font-family: ${props => props.theme.typography.code.fontFamily};\n &::after {\n content: ' [';\n }\n`;\n\nexport const ArrayClosingLabel = styled.div`\n font-size: 0.9em;\n font-family: ${props => props.theme.typography.code.fontFamily};\n &::after {\n content: ']';\n }\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-tabs\");","import { darken } from 'polished';\nimport { Tabs as ReactTabs } from 'react-tabs';\n\nimport styled from '../styled-components';\n\nexport { Tab, TabList, TabPanel } from 'react-tabs';\n\nexport const Tabs = styled(ReactTabs)`\n > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n margin: 0 -5px;\n\n > li {\n padding: 5px 10px;\n display: inline-block;\n\n background-color: ${({ theme }) => theme.codeBlock.backgroundColor};\n border-bottom: 1px solid rgba(0, 0, 0, 0.5);\n cursor: pointer;\n text-align: center;\n outline: none;\n color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.rightPanel.textColor)};\n margin: 0\n ${({ theme }) => `${theme.spacing.unit}px ${theme.spacing.unit}px ${theme.spacing.unit}px`};\n border: 1px solid ${({ theme }) => darken(0.05, theme.codeBlock.backgroundColor)};\n border-radius: 5px;\n min-width: 60px;\n font-size: 0.9em;\n font-weight: bold;\n\n &.react-tabs__tab--selected {\n color: ${props => props.theme.colors.text.primary};\n background: ${({ theme }) => theme.rightPanel.textColor};\n &:focus {\n outline: auto;\n }\n }\n\n &:only-child {\n flex: none;\n min-width: 100px;\n }\n\n &.tab-success {\n color: ${props => props.theme.colors.responses.success.tabTextColor};\n }\n\n &.tab-redirect {\n color: ${props => props.theme.colors.responses.redirect.tabTextColor};\n }\n\n &.tab-info {\n color: ${props => props.theme.colors.responses.info.tabTextColor};\n }\n\n &.tab-error {\n color: ${props => props.theme.colors.responses.error.tabTextColor};\n }\n }\n }\n > .react-tabs__tab-panel {\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 4}px;\n margin: 0;\n }\n\n & > div > pre {\n padding: 0;\n }\n }\n`;\n\nexport const SmallTabs = styled(Tabs)`\n > ul {\n display: block;\n > li {\n padding: 2px 5px;\n min-width: auto;\n margin: 0 15px 0 0;\n font-size: 13px;\n font-weight: normal;\n border-bottom: 1px dashed;\n color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.rightPanel.textColor)};\n border-radius: 0;\n background: none;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.react-tabs__tab--selected {\n color: ${({ theme }) => theme.rightPanel.textColor};\n background: none;\n }\n }\n }\n > .react-tabs__tab-panel {\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 2}px 0;\n }\n }\n`;\n","import styled, { extensionsHook } from '../styled-components';\n\nexport const PrismDiv = styled.div`\n /**\n * Based on prism-dark.css\n */\n\n code[class*='language-'],\n pre[class*='language-'] {\n /* color: white;\n background: none; */\n text-shadow: 0 -0.1em 0.2em black;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n }\n\n @media print {\n code[class*='language-'],\n pre[class*='language-'] {\n text-shadow: none;\n }\n }\n\n /* Code blocks */\n pre[class*='language-'] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n }\n\n .token.comment,\n .token.prolog,\n .token.doctype,\n .token.cdata {\n color: hsl(30, 20%, 50%);\n }\n\n .token.punctuation {\n opacity: 0.7;\n }\n\n .namespace {\n opacity: 0.7;\n }\n\n .token.property,\n .token.tag,\n .token.number,\n .token.constant,\n .token.symbol {\n color: #4a8bb3;\n }\n\n .token.boolean {\n color: #e64441;\n }\n\n .token.selector,\n .token.attr-name,\n .token.string,\n .token.char,\n .token.builtin,\n .token.inserted {\n color: #a0fbaa;\n & + a,\n & + a:visited {\n color: #4ed2ba;\n text-decoration: underline;\n }\n }\n\n .token.property.string {\n color: white;\n }\n\n .token.operator,\n .token.entity,\n .token.url,\n .token.variable {\n color: hsl(40, 90%, 60%);\n }\n\n .token.atrule,\n .token.attr-value,\n .token.keyword {\n color: hsl(350, 40%, 70%);\n }\n\n .token.regex,\n .token.important {\n color: #e90;\n }\n\n .token.important,\n .token.bold {\n font-weight: bold;\n }\n .token.italic {\n font-style: italic;\n }\n\n .token.entity {\n cursor: help;\n }\n\n .token.deleted {\n color: red;\n }\n\n ${extensionsHook('Prism')};\n`;\n","import styled from '../styled-components';\nimport { PrismDiv } from './PrismDiv';\n\nexport const SampleControls = styled.div`\n opacity: 0.7;\n transition: opacity 0.3s ease;\n text-align: right;\n &:focus-within {\n opacity: 1;\n }\n > button {\n background-color: transparent;\n border: 0;\n color: inherit;\n padding: 2px 10px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n font-size: ${({ theme }) => theme.typography.fontSize};\n line-height: ${({ theme }) => theme.typography.lineHeight};\n cursor: pointer;\n outline: 0;\n\n :hover,\n :focus {\n background: rgba(255, 255, 255, 0.1);\n }\n }\n`;\n\nexport const SampleControlsWrap = styled.div`\n &:hover ${SampleControls} {\n opacity: 1;\n }\n`;\n\nexport const StyledPre = styled(PrismDiv).attrs({\n as: 'pre',\n})`\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n overflow-x: auto;\n margin: 0;\n\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"perfect-scrollbar\");","import * as React from 'react';\n\nimport PerfectScrollbarType, * as PerfectScrollbarNamespace from 'perfect-scrollbar';\n\nimport { OptionsContext } from '../components/OptionsProvider';\nimport styled, { createGlobalStyle } from '../styled-components';\nimport { IS_BROWSER } from '../utils';\n\n/*\n * perfect scrollbar umd bundle uses exports assignment while module uses default export\n * so when bundled with webpack default export works but with jest it crashes\n * That's why the following ugly fix is required\n */\nconst PerfectScrollbarConstructor =\n PerfectScrollbarNamespace.default || (PerfectScrollbarNamespace as any as PerfectScrollbarType);\n\nlet psStyles = '';\nif (IS_BROWSER) {\n psStyles = require('perfect-scrollbar/css/perfect-scrollbar.css');\n psStyles = (typeof psStyles.toString === 'function' && psStyles.toString()) || '';\n psStyles = psStyles === '[object Object]' ? '' : psStyles;\n}\n\nconst PSStyling = createGlobalStyle`${psStyles}`;\n\nconst StyledScrollWrapper = styled.div`\n position: relative;\n`;\n\nexport interface PerfectScrollbarProps {\n options?: PerfectScrollbarType.Options;\n className?: string;\n updateFn?: (fn) => void;\n}\n\nexport class PerfectScrollbar extends React.Component<\n React.PropsWithChildren<PerfectScrollbarProps>\n> {\n private _container: HTMLElement;\n private inst: PerfectScrollbarType;\n\n componentDidMount() {\n const offset = (this._container.parentElement && this._container.parentElement.scrollTop) || 0;\n this.inst = new PerfectScrollbarConstructor(this._container, this.props.options || {});\n if (this._container.scrollTo) {\n this._container.scrollTo(0, offset);\n }\n }\n\n componentDidUpdate() {\n this.inst.update();\n }\n\n componentWillUnmount() {\n this.inst.destroy();\n }\n\n handleRef = ref => {\n this._container = ref;\n };\n\n render() {\n const { children, className, updateFn } = this.props;\n\n if (updateFn) {\n updateFn(this.componentDidUpdate.bind(this));\n }\n\n return (\n <>\n {psStyles && <PSStyling />}\n <StyledScrollWrapper className={`scrollbar-container ${className}`} ref={this.handleRef}>\n {children}\n </StyledScrollWrapper>\n </>\n );\n }\n}\n\nexport function PerfectScrollbarWrap(\n props: PerfectScrollbarProps & { children: JSX.Element[] | JSX.Element },\n) {\n return (\n <OptionsContext.Consumer>\n {options =>\n !options.nativeScrollbars ? (\n <PerfectScrollbar {...props}>{props.children}</PerfectScrollbar>\n ) : (\n <div\n style={{\n overflow: 'auto',\n overscrollBehavior: 'contain',\n msOverflowStyle: '-ms-autohiding-scrollbar',\n }}\n >\n {props.children}\n </div>\n )\n }\n </OptionsContext.Consumer>\n );\n}\n","import * as React from 'react';\nimport styled from '../../styled-components';\nimport { ArrowIconProps, DropdownProps, DropdownOption } from './types';\n\nconst ArrowSvg = ({ className, style }: ArrowIconProps): JSX.Element => (\n <svg\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n);\n\nconst ArrowIcon = styled(ArrowSvg)`\n position: absolute;\n pointer-events: none;\n z-index: 1;\n top: 50%;\n -webkit-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n transform: translateY(-50%);\n right: 8px;\n margin: auto;\n text-align: center;\n polyline {\n color: ${props => props.variant === 'dark' && 'white'};\n }\n`;\n\nconst DropdownComponent = (props: DropdownProps): JSX.Element => {\n const { options, onChange, placeholder, value = '', variant, className } = props;\n\n const handleOnChange = event => {\n const { selectedIndex } = event.target;\n const index = placeholder ? selectedIndex - 1 : selectedIndex;\n onChange(options[index]);\n };\n\n return (\n <div className={className}>\n <ArrowIcon variant={variant} />\n <select onChange={handleOnChange} value={value} className=\"dropdown-select\">\n {placeholder && (\n <option disabled hidden value={placeholder}>\n {placeholder}\n </option>\n )}\n {options.map(({ idx, value, title }: DropdownOption, index) => (\n <option key={idx || value + index} value={value}>\n {title || value}\n </option>\n ))}\n </select>\n <label>{value}</label>\n </div>\n );\n};\n\nexport const Dropdown = React.memo<DropdownProps>(DropdownComponent);\n","import styled from 'styled-components';\n\nimport { Dropdown as DropdownComponent } from './Dropdown';\n\nexport const Dropdown = styled(DropdownComponent)<{\n fullWidth?: boolean;\n}>`\n label {\n box-sizing: border-box;\n min-width: 100px;\n outline: none;\n display: inline-block;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n color: ${({ theme }) => theme.colors.text.primary};\n vertical-align: bottom;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')};\n text-transform: none;\n padding: 0 22px 0 4px;\n\n font-size: 0.929em;\n line-height: 1.5em;\n font-family: inherit;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n .dropdown-select {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n border: none;\n appearance: none;\n cursor: pointer;\n\n color: ${({ theme }) => theme.colors.text.primary};\n line-height: inherit;\n font-family: inherit;\n }\n box-sizing: border-box;\n min-width: 100px;\n outline: none;\n display: inline-block;\n border-radius: 2px;\n border: 1px solid rgba(38, 50, 56, 0.5);\n vertical-align: bottom;\n padding: 2px 0px 2px 6px;\n position: relative;\n width: auto;\n background: white;\n color: #263238;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n font-size: 0.929em;\n line-height: 1.5em;\n cursor: pointer;\n transition: border 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;\n\n &:hover,\n &:focus-within {\n border: 1px solid ${props => props.theme.colors.primary.main};\n color: ${props => props.theme.colors.primary.main};\n box-shadow: 0px 0px 0px 1px ${props => props.theme.colors.primary.main};\n }\n`;\n\nexport const SimpleDropdown = styled(Dropdown)`\n margin-left: 10px;\n text-transform: none;\n font-size: 0.969em;\n\n font-size: 1em;\n border: none;\n padding: 0 1.2em 0 0;\n background: transparent;\n\n &:hover,\n &:focus-within {\n border: none;\n box-shadow: none;\n label {\n color: ${props => props.theme.colors.primary.main};\n text-shadow: 0px 0px 0px ${props => props.theme.colors.primary.main};\n }\n }\n`;\n\nexport const MimeLabel = styled.span`\n margin-left: 10px;\n text-transform: none;\n font-size: 0.929em;\n color: black;\n`;\n","import * as React from 'react';\nimport { StyledComponent } from 'styled-components';\n\nimport { DropdownProps, MimeLabel, SimpleDropdown } from '../../common-elements/Dropdown';\n\nexport interface DropdownOrLabelProps extends DropdownProps {\n Label?: StyledComponent<any, any, Record<string, any>, never>;\n Dropdown?: StyledComponent<\n React.NamedExoticComponent<DropdownProps>,\n any,\n {\n fullWidth?: boolean | undefined;\n },\n never\n >;\n}\n\nexport function DropdownOrLabel(props: DropdownOrLabelProps): JSX.Element {\n const { Label = MimeLabel, Dropdown = SimpleDropdown } = props;\n if (props.options.length === 1) {\n return <Label>{props.options[0].value}</Label>;\n }\n return <Dropdown {...props} />;\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"dompurify\");","import { headerCommonMixin, linkifyMixin } from '../../common-elements';\nimport { PrismDiv } from '../../common-elements/PrismDiv';\nimport styled, { css, extensionsHook, ResolvedThemeInterface } from '../../styled-components';\n\nimport { StyledComponent } from 'styled-components';\n\nexport const linksCss = css`\n a {\n text-decoration: ${props => props.theme.typography.links.textDecoration};\n color: ${props => props.theme.typography.links.color};\n\n &:visited {\n color: ${props => props.theme.typography.links.visited};\n }\n\n &:hover {\n color: ${props => props.theme.typography.links.hover};\n text-decoration: ${props => props.theme.typography.links.hoverTextDecoration};\n }\n }\n`;\n\nexport const StyledMarkdownBlock = styled(\n PrismDiv as StyledComponent<\n 'div',\n ResolvedThemeInterface,\n { $compact?: boolean; $inline?: boolean }\n >,\n)`\n font-family: ${props => props.theme.typography.fontFamily};\n font-weight: ${props => props.theme.typography.fontWeightRegular};\n line-height: ${props => props.theme.typography.lineHeight};\n\n p {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n ${({ $compact }) =>\n $compact &&\n `\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n `}\n\n ${({ $inline }) =>\n $inline &&\n ` p {\n display: inline-block;\n }`}\n\n h1 {\n ${headerCommonMixin(1)};\n color: ${props => props.theme.colors.primary.main};\n margin-top: 0;\n }\n\n h2 {\n ${headerCommonMixin(2)};\n color: ${props => props.theme.colors.text.primary};\n }\n\n code {\n color: ${({ theme }) => theme.typography.code.color};\n background-color: ${({ theme }) => theme.typography.code.backgroundColor};\n\n font-family: ${props => props.theme.typography.code.fontFamily};\n border-radius: 2px;\n border: 1px solid rgba(38, 50, 56, 0.1);\n padding: 0 ${({ theme }) => theme.spacing.unit}px;\n font-size: ${props => props.theme.typography.code.fontSize};\n font-weight: ${({ theme }) => theme.typography.code.fontWeight};\n\n word-break: break-word;\n }\n\n pre {\n font-family: ${props => props.theme.typography.code.fontFamily};\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n background-color: ${({ theme }) => theme.codeBlock.backgroundColor};\n color: white;\n padding: ${props => props.theme.spacing.unit * 4}px;\n overflow-x: auto;\n line-height: normal;\n border-radius: 0;\n border: 1px solid rgba(38, 50, 56, 0.1);\n\n code {\n background-color: transparent;\n color: white;\n padding: 0;\n\n &:before,\n &:after {\n content: none;\n }\n }\n }\n\n blockquote {\n margin: 0;\n margin-bottom: 1em;\n padding: 0 15px;\n color: #777;\n border-left: 4px solid #ddd;\n }\n\n img {\n max-width: 100%;\n box-sizing: content-box;\n }\n\n ul,\n ol {\n padding-left: 2em;\n margin: 0;\n margin-bottom: 1em;\n\n ul,\n ol {\n margin-bottom: 0;\n margin-top: 0;\n }\n }\n\n table {\n display: block;\n width: 100%;\n overflow: auto;\n word-break: normal;\n word-break: keep-all;\n border-collapse: collapse;\n border-spacing: 0;\n margin-top: 1.5em;\n margin-bottom: 1.5em;\n }\n\n table tr {\n background-color: #fff;\n border-top: 1px solid #ccc;\n\n &:nth-child(2n) {\n background-color: ${({ theme }) => theme.schema.nestedBackground};\n }\n }\n\n table th,\n table td {\n padding: 6px 13px;\n border: 1px solid #ddd;\n }\n\n table th {\n text-align: left;\n font-weight: bold;\n }\n\n ${linkifyMixin('.share-link')};\n\n ${linksCss}\n\n ${extensionsHook('Markdown')};\n`;\n","import * as DOMPurify from 'dompurify';\nimport * as React from 'react';\n\nimport { OptionsConsumer } from '../OptionsProvider';\nimport { StylingMarkdownProps } from './Markdown';\nimport { StyledMarkdownBlock } from './styled.elements';\nimport styled from 'styled-components';\n\n// Workaround for DOMPurify type issues (https://github.com/cure53/DOMPurify/issues/1034)\nconst dompurify = DOMPurify['default'] as DOMPurify.DOMPurify;\n\nconst StyledMarkdownSpan = styled(StyledMarkdownBlock)`\n display: inline;\n`;\n\nconst sanitize = (sanitize, html) => (sanitize ? dompurify.sanitize(html) : html);\n\nexport function SanitizedMarkdownHTML({\n inline,\n compact,\n ...rest\n}: StylingMarkdownProps & { html: string; className?: string; 'data-role'?: string }) {\n const Wrap = inline ? StyledMarkdownSpan : StyledMarkdownBlock;\n\n return (\n <OptionsConsumer>\n {options => (\n <Wrap\n className={'redoc-markdown ' + (rest.className || '')}\n dangerouslySetInnerHTML={{\n __html: sanitize(options.sanitize, rest.html),\n }}\n data-role={rest['data-role']}\n {...rest}\n $inline={inline}\n $compact={compact}\n />\n )}\n </OptionsConsumer>\n );\n}\n","import * as React from 'react';\n\nimport { MarkdownRenderer } from '../../services';\nimport { SanitizedMarkdownHTML } from './SanitizedMdBlock';\n\nexport interface StylingMarkdownProps {\n compact?: boolean;\n inline?: boolean;\n}\n\nexport interface BaseMarkdownProps {\n sanitize?: boolean;\n source: string;\n}\n\nexport type MarkdownProps = BaseMarkdownProps &\n StylingMarkdownProps & {\n source: string;\n className?: string;\n 'data-role'?: string;\n };\n\nexport class Markdown extends React.Component<MarkdownProps> {\n render() {\n const { source, inline, compact, className, 'data-role': dataRole } = this.props;\n const renderer = new MarkdownRenderer();\n return (\n <SanitizedMarkdownHTML\n html={renderer.renderMd(source)}\n inline={inline}\n compact={compact}\n className={className}\n data-role={dataRole}\n />\n );\n }\n}\n","import * as React from 'react';\n\nimport styled from '../styled-components';\n\nconst Wrapper = styled.div`\n position: relative;\n`;\n\nconst Tip = styled.div`\n position: absolute;\n min-width: 80px;\n max-width: 500px;\n background: #fff;\n bottom: 100%;\n left: 50%;\n margin-bottom: 10px;\n transform: translateX(-50%);\n\n border-radius: 4px;\n padding: 0.3em 0.6em;\n text-align: center;\n box-shadow: 0px 0px 5px 0px rgba(204, 204, 204, 1);\n`;\n\nconst Content = styled.div`\n background: #fff;\n color: #000;\n display: inline;\n font-size: 0.85em;\n white-space: nowrap;\n`;\n\nconst Arrow = styled.div`\n position: absolute;\n width: 0;\n height: 0;\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n border-left: solid transparent 5px;\n border-right: solid transparent 5px;\n border-top: solid #fff 5px;\n`;\n\nconst Gap = styled.div`\n position: absolute;\n width: 100%;\n height: 20px;\n bottom: -20px;\n`;\n\nexport interface TooltipProps extends React.PropsWithChildren<any> {\n open: boolean;\n title: string;\n}\n\nexport class Tooltip extends React.Component<TooltipProps> {\n render() {\n const { open, title, children } = this.props;\n return (\n <Wrapper>\n {children}\n {open && (\n <Tip>\n <Content>{title}</Content>\n <Arrow />\n <Gap />\n </Tip>\n )}\n </Wrapper>\n );\n }\n}\n","const isSupported =\n typeof document !== 'undefined' &&\n document.queryCommandSupported &&\n document.queryCommandSupported('copy');\n\nexport class ClipboardService {\n static isSupported(): boolean {\n return isSupported;\n }\n\n static selectElement(element: any): void {\n let range;\n let selection;\n if ((document.body as any).createTextRange) {\n range = (document.body as any).createTextRange();\n range.moveToElementText(element);\n range.select();\n } else if (document.createRange && window.getSelection) {\n selection = window.getSelection();\n range = document.createRange();\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n static deselect(): void {\n if ((document as any).selection) {\n (document as any).selection.empty();\n } else if (window.getSelection) {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n }\n }\n\n static copySelected(): boolean {\n let result;\n try {\n result = document.execCommand('copy');\n } catch (err) {\n result = false;\n }\n return result;\n }\n\n static copyElement(element: any): boolean {\n ClipboardService.selectElement(element);\n const res = ClipboardService.copySelected();\n if (res) {\n ClipboardService.deselect();\n }\n return res;\n }\n\n static copyCustom(text: string): boolean {\n const textArea = document.createElement('textarea');\n textArea.style.position = 'fixed';\n textArea.style.top = '0';\n textArea.style.left = '0';\n\n // Ensure it has a small width and height. Setting to 1px / 1em\n // doesn't work as this gives a negative w/h on some browsers.\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n\n // We don't need padding, reducing the size if it does flash render.\n textArea.style.padding = '0';\n\n // Clean up any borders.\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n\n // Avoid flash of white box if rendered for any reason.\n textArea.style.background = 'transparent';\n\n textArea.value = text;\n\n document.body.appendChild(textArea);\n\n textArea.select();\n\n const res = ClipboardService.copySelected();\n\n document.body.removeChild(textArea);\n return res;\n }\n}\n","import * as React from 'react';\nimport { Tooltip } from '../common-elements/Tooltip';\n\nimport { ClipboardService } from '../services/ClipboardService';\n\nexport interface CopyButtonWrapperProps {\n data: any;\n children: (props: { renderCopyButton: () => React.ReactNode }) => React.ReactNode;\n}\n\nexport const CopyButtonWrapper = (\n props: CopyButtonWrapperProps & { tooltipShown?: boolean },\n): JSX.Element => {\n const [tooltipShown, setTooltipShown] = React.useState(false);\n\n const copy = () => {\n const content =\n typeof props.data === 'string' ? props.data : JSON.stringify(props.data, null, 2);\n ClipboardService.copyCustom(content);\n showTooltip();\n };\n\n const renderCopyButton = () => {\n return (\n <button onClick={copy}>\n <Tooltip\n title={ClipboardService.isSupported() ? 'Copied' : 'Not supported in your browser'}\n open={tooltipShown}\n >\n Copy\n </Tooltip>\n </button>\n );\n };\n\n const showTooltip = () => {\n setTooltipShown(true);\n\n setTimeout(() => {\n setTooltipShown(false);\n }, 1500);\n };\n return props.children({ renderCopyButton: renderCopyButton }) as JSX.Element;\n};\n","let level = 1;\n\nexport function jsonToHTML(json, maxExpandLevel) {\n level = 1;\n let output = '';\n output += '<div class=\"redoc-json\">';\n output += '<code>';\n output += valueToHTML(json, maxExpandLevel);\n output += '</code>';\n output += '</div>';\n return output;\n}\n\nfunction htmlEncode(t) {\n return t !== undefined\n ? t\n .toString()\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n : '';\n}\n\nfunction stringifyStringLiteral(str: string) {\n return JSON.stringify(str).slice(1, -1);\n}\n\nfunction decorateWithSpan(value, className) {\n return '<span class=\"' + className + '\">' + htmlEncode(value) + '</span>';\n}\n\nfunction punctuation(val) {\n return '<span class=\"token punctuation\">' + val + '</span>';\n}\n\nfunction valueToHTML(value, maxExpandLevel: number) {\n const valueType = typeof value;\n let output = '';\n if (value === undefined || value === null) {\n output += decorateWithSpan('null', 'token keyword');\n } else if (value && value.constructor === Array) {\n level++;\n output += arrayToHTML(value, maxExpandLevel);\n level--;\n } else if (value && value.constructor === Date) {\n output += decorateWithSpan('\"' + value.toISOString() + '\"', 'token string');\n } else if (valueType === 'object') {\n level++;\n output += objectToHTML(value, maxExpandLevel);\n level--;\n } else if (valueType === 'number') {\n output += decorateWithSpan(value, 'token number');\n } else if (valueType === 'string') {\n if (/^(http|https):\\/\\/[^\\s]+$/.test(value)) {\n output +=\n decorateWithSpan('\"', 'token string') +\n '<a href=\"' +\n encodeURI(value) +\n '\">' +\n htmlEncode(stringifyStringLiteral(value)) +\n '</a>' +\n decorateWithSpan('\"', 'token string');\n } else {\n output += decorateWithSpan('\"' + stringifyStringLiteral(value) + '\"', 'token string');\n }\n } else if (valueType === 'boolean') {\n output += decorateWithSpan(value, 'token boolean');\n }\n\n return output;\n}\n\nfunction arrayToHTML(json, maxExpandLevel: number) {\n const collapsed = level > maxExpandLevel ? 'collapsed' : '';\n let output = `<button class=\"collapser\" aria-label=\"${\n level > maxExpandLevel + 1 ? 'expand' : 'collapse'\n }\"></button>${punctuation('[')}<span class=\"ellipsis\"></span><ul class=\"array collapsible\">`;\n let hasContents = false;\n const length = json.length;\n for (let i = 0; i < length; i++) {\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += valueToHTML(json[i], maxExpandLevel);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += `</ul>${punctuation(']')}`;\n if (!hasContents) {\n output = punctuation('[ ]');\n }\n return output;\n}\n\nfunction objectToHTML(json, maxExpandLevel: number) {\n const collapsed = level > maxExpandLevel ? 'collapsed' : '';\n const keys = Object.keys(json);\n const length = keys.length;\n let output = `<button class=\"collapser\" aria-label=\"${\n level > maxExpandLevel + 1 ? 'expand' : 'collapse'\n }\"></button>${punctuation('{')}<span class=\"ellipsis\"></span><ul class=\"obj collapsible\">`;\n let hasContents = false;\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += '<span class=\"property token string\">\"' + htmlEncode(key) + '\"</span>: ';\n output += valueToHTML(json[key], maxExpandLevel);\n if (i < length - 1) {\n output += punctuation(',');\n }\n output += '</div></li>';\n }\n output += `</ul>${punctuation('}')}`;\n if (!hasContents) {\n output = punctuation('{ }');\n }\n return output;\n}\n","import { css } from '../../styled-components';\n\nexport const jsonStyles = css`\n .redoc-json code > .collapser {\n display: none;\n pointer-events: none;\n }\n\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n contain: content;\n overflow-x: auto;\n\n .callback-function {\n color: gray;\n }\n\n .collapser:after {\n content: '-';\n cursor: pointer;\n }\n\n .collapsed > .collapser:after {\n content: '+';\n cursor: pointer;\n }\n\n .ellipsis:after {\n content: ' … ';\n }\n\n .collapsible {\n margin-left: 2em;\n }\n\n .hoverable {\n padding-top: 1px;\n padding-bottom: 1px;\n padding-left: 2px;\n padding-right: 2px;\n border-radius: 2px;\n }\n\n .hovered {\n background-color: rgba(235, 238, 249, 1);\n }\n\n .collapser {\n background-color: transparent;\n border: 0;\n color: #fff;\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n padding-right: 6px;\n padding-left: 6px;\n padding-top: 0;\n padding-bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15px;\n height: 15px;\n position: absolute;\n top: 4px;\n left: -1.5em;\n cursor: default;\n user-select: none;\n -webkit-user-select: none;\n padding: 2px;\n &:focus {\n outline-color: #fff;\n outline-style: dotted;\n outline-width: 1px;\n }\n }\n\n ul {\n list-style-type: none;\n padding: 0px;\n margin: 0px 0px 0px 26px;\n }\n\n li {\n position: relative;\n display: block;\n }\n\n .hoverable {\n display: inline-block;\n }\n\n .selected {\n outline-style: solid;\n outline-width: 1px;\n outline-style: dotted;\n }\n\n .collapsed > .collapsible {\n display: none;\n }\n\n .ellipsis {\n display: none;\n }\n\n .collapsed > .ellipsis {\n display: inherit;\n }\n`;\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { SampleControls } from '../../common-elements';\nimport { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper';\nimport { PrismDiv } from '../../common-elements/PrismDiv';\nimport { jsonToHTML } from '../../utils/jsonToHtml';\nimport { OptionsContext } from '../OptionsProvider';\nimport { jsonStyles } from './style';\n\nexport interface JsonProps {\n data: any;\n className?: string;\n}\n\nconst JsonViewerWrap = styled.div`\n &:hover > ${SampleControls} {\n opacity: 1;\n }\n`;\n\nconst Json = (props: JsonProps) => {\n const [node, setNode] = React.useState<HTMLDivElement>();\n\n const renderInner = ({ renderCopyButton }) => {\n const showFoldingButtons =\n props.data &&\n Object.values(props.data).some(value => typeof value === 'object' && value !== null);\n\n return (\n <JsonViewerWrap>\n <SampleControls>\n {renderCopyButton()}\n {showFoldingButtons && (\n <>\n <button onClick={expandAll}> Expand all </button>\n <button onClick={collapseAll}> Collapse all </button>\n </>\n )}\n </SampleControls>\n <OptionsContext.Consumer>\n {options => (\n <PrismDiv\n tabIndex={0}\n className={props.className}\n // tslint:disable-next-line\n ref={node => setNode(node!)}\n dangerouslySetInnerHTML={{\n __html: jsonToHTML(props.data, options.jsonSamplesExpandLevel),\n }}\n />\n )}\n </OptionsContext.Consumer>\n </JsonViewerWrap>\n );\n };\n\n const expandAll = () => {\n const elements = node?.getElementsByClassName('collapsible');\n for (const collapsed of Array.prototype.slice.call(elements)) {\n const parentNode = collapsed.parentNode as Element;\n parentNode.classList.remove('collapsed');\n parentNode.querySelector('.collapser')!.setAttribute('aria-label', 'collapse');\n }\n };\n\n const collapseAll = () => {\n const elements = node?.getElementsByClassName('collapsible');\n // skip first item to avoid collapsing whole object/array\n const elementsArr = Array.prototype.slice.call(elements, 1);\n\n for (const expanded of elementsArr) {\n const parentNode = expanded.parentNode as Element;\n parentNode.classList.add('collapsed');\n parentNode.querySelector('.collapser')!.setAttribute('aria-label', 'expand');\n }\n };\n\n const collapseElement = (target: HTMLElement) => {\n let collapsed;\n if (target.className === 'collapser') {\n collapsed = target.parentElement!.getElementsByClassName('collapsible')[0];\n if (collapsed.parentElement.classList.contains('collapsed')) {\n collapsed.parentElement.classList.remove('collapsed');\n target.setAttribute('aria-label', 'collapse');\n } else {\n collapsed.parentElement.classList.add('collapsed');\n target.setAttribute('aria-label', 'expand');\n }\n }\n };\n\n const clickListener = React.useCallback((event: MouseEvent) => {\n collapseElement(event.target as HTMLElement);\n }, []);\n\n const focusListener = React.useCallback((event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n collapseElement(event.target as HTMLElement);\n }\n }, []);\n\n React.useEffect(() => {\n node?.addEventListener('click', clickListener);\n node?.addEventListener('focus', focusListener);\n return () => {\n node?.removeEventListener('click', clickListener);\n node?.removeEventListener('focus', focusListener);\n };\n }, [clickListener, focusListener, node]);\n\n return <CopyButtonWrapper data={props.data}>{renderInner}</CopyButtonWrapper>;\n};\n\nexport const JsonViewer = styled(Json)`\n ${jsonStyles};\n`;\n","import * as React from 'react';\nimport { highlight } from '../../utils';\n\nimport { SampleControls, SampleControlsWrap, StyledPre } from '../../common-elements';\nimport { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper';\n\nexport interface SourceCodeProps {\n source: string;\n lang: string;\n}\n\nexport const SourceCode = (props: SourceCodeProps) => {\n const { source, lang } = props;\n return <StyledPre dangerouslySetInnerHTML={{ __html: highlight(source, lang) }} />;\n};\n\nexport const SourceCodeWithCopy = (props: SourceCodeProps) => {\n const { source, lang } = props;\n return (\n <CopyButtonWrapper data={source}>\n {({ renderCopyButton }) => (\n <SampleControlsWrap>\n <SampleControls>{renderCopyButton()}</SampleControls>\n <SourceCode lang={lang} source={source} />\n </SampleControlsWrap>\n )}\n </CopyButtonWrapper>\n );\n};\n","import * as React from 'react';\n\nimport { isJsonLike, langFromMime } from '../../utils/openapi';\nimport { JsonViewer } from '../JsonViewer/JsonViewer';\nimport { SourceCodeWithCopy } from '../SourceCode/SourceCode';\n\nexport interface ExampleValueProps {\n value: any;\n mimeType: string;\n}\n\nexport function ExampleValue({ value, mimeType }: ExampleValueProps) {\n if (isJsonLike(mimeType)) {\n return <JsonViewer data={value} />;\n } else {\n if (typeof value === 'object') {\n // just in case example was cached as json but used as non-json\n value = JSON.stringify(value, null, 2);\n }\n return <SourceCodeWithCopy lang={langFromMime(mimeType)} source={value} />;\n }\n}\n","import * as React from 'react';\n\nimport { StyledPre } from '../../common-elements/samples';\nimport { ExampleModel } from '../../services/models';\nimport { ExampleValue } from './ExampleValue';\nimport { useExternalExample } from './exernalExampleHook';\n\nexport interface ExampleProps {\n example: ExampleModel;\n mimeType: string;\n}\n\nexport function Example({ example, mimeType }: ExampleProps) {\n if (example.value === undefined && example.externalValueUrl) {\n return <ExternalExample example={example} mimeType={mimeType} />;\n } else {\n return <ExampleValue value={example.value} mimeType={mimeType} />;\n }\n}\n\nexport function ExternalExample({ example, mimeType }: ExampleProps) {\n const value = useExternalExample(example, mimeType);\n\n if (value === undefined) {\n return <span>Loading...</span>;\n }\n\n if (value instanceof Error) {\n return (\n <StyledPre>\n Error loading external example: <br />\n <a\n className={'token string'}\n href={example.externalValueUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {example.externalValueUrl}\n </a>\n </StyledPre>\n );\n }\n\n return <ExampleValue value={value} mimeType={mimeType} />;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { ExampleModel } from '../../services/models/Example';\n\nexport function useExternalExample(example: ExampleModel, mimeType: string) {\n const [, setIsLoading] = useState(true); // to trigger component reload\n\n const value = useRef<any>(undefined);\n const prevRef = useRef<ExampleModel | undefined>(undefined);\n\n if (prevRef.current !== example) {\n value.current = undefined;\n }\n\n prevRef.current = example;\n\n useEffect(() => {\n const load = async () => {\n setIsLoading(true);\n try {\n value.current = await example.getExternalValue(mimeType);\n } catch (e) {\n value.current = e;\n }\n setIsLoading(false);\n };\n\n load();\n }, [example, mimeType]);\n\n return value.current;\n}\n","import { transparentize } from 'polished';\nimport styled from '../../styled-components';\nimport { Dropdown } from '../../common-elements/Dropdown';\n\nexport const MimeLabel = styled.div`\n padding: 0.9em;\n background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)};\n margin: 0 0 10px 0;\n display: block;\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-size: 0.929em;\n line-height: 1.5em;\n`;\n\nexport const DropdownLabel = styled.span`\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-size: 12px;\n position: absolute;\n z-index: 1;\n top: -11px;\n left: 12px;\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n color: ${({ theme }) => transparentize(0.3, theme.rightPanel.textColor)};\n`;\n\nexport const DropdownWrapper = styled.div`\n position: relative;\n`;\n\nexport const InvertedSimpleDropdown = styled(Dropdown)`\n label {\n color: ${({ theme }) => theme.rightPanel.textColor};\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n font-size: 1em;\n text-transform: none;\n border: none;\n }\n margin: 0 0 10px 0;\n display: block;\n background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)};\n border: none;\n padding: 0.9em 1.6em 0.9em 0.9em;\n box-shadow: none;\n &:hover,\n &:focus-within {\n border: none;\n box-shadow: none;\n background-color: ${({ theme }) => transparentize(0.3, theme.rightPanel.backgroundColor)};\n }\n`;\n\nexport const NoSampleLabel = styled.div`\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: 12px;\n color: #ee807f;\n`;\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nimport { DropdownOption, DropdownProps } from '../../common-elements';\nimport { MediaTypeModel } from '../../services/models';\nimport { Markdown } from '../Markdown/Markdown';\nimport { Example } from './Example';\nimport { DropdownLabel, DropdownWrapper, NoSampleLabel } from './styled.elements';\n\nexport interface PayloadSamplesProps {\n mediaType: MediaTypeModel;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n}\n\ninterface MediaTypeSamplesState {\n activeIdx: number;\n}\n\nexport class MediaTypeSamples extends React.Component<PayloadSamplesProps, MediaTypeSamplesState> {\n state = {\n activeIdx: 0,\n };\n switchMedia = ({ idx }: DropdownOption) => {\n if (idx !== undefined) {\n this.setState({\n activeIdx: idx,\n });\n }\n };\n render() {\n const { activeIdx } = this.state;\n const examples = this.props.mediaType.examples || {};\n const mimeType = this.props.mediaType.name;\n\n const noSample = <NoSampleLabel>No sample</NoSampleLabel>;\n\n const examplesNames = Object.keys(examples);\n if (examplesNames.length === 0) {\n return noSample;\n }\n\n if (examplesNames.length > 1) {\n const options = examplesNames.map((name, idx) => {\n return {\n value: examples[name].summary || name,\n idx,\n };\n });\n\n const example = examples[examplesNames[activeIdx]];\n const description = example.description;\n\n return (\n <SamplesWrapper>\n <DropdownWrapper>\n <DropdownLabel>Example</DropdownLabel>\n {this.props.renderDropdown({\n value: options[activeIdx].value,\n options,\n onChange: this.switchMedia,\n ariaLabel: 'Example',\n })}\n </DropdownWrapper>\n <div>\n {description && <Markdown source={description} />}\n <Example example={example} mimeType={mimeType} />\n </div>\n </SamplesWrapper>\n );\n } else {\n const example = examples[examplesNames[0]];\n return (\n <SamplesWrapper>\n {example.description && <Markdown source={example.description} />}\n <Example example={example} mimeType={mimeType} />\n </SamplesWrapper>\n );\n }\n }\n}\n\nconst SamplesWrapper = styled.div`\n margin-top: 15px;\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-react\");","import { transparentize } from 'polished';\n\nimport styled, { css, extensionsHook } from '../styled-components';\nimport { PropertyNameCell } from './fields-layout';\nimport { deprecatedCss } from './mixins';\nimport { ShelfIcon } from './shelfs';\n\nexport const ClickablePropertyNameCell = styled(PropertyNameCell)`\n &.deprecated {\n span.property-name {\n ${deprecatedCss}\n }\n }\n\n button {\n background-color: transparent;\n border: 0;\n outline: 0;\n font-size: 13px;\n font-family: ${props => props.theme.typography.code.fontFamily};\n cursor: pointer;\n padding: 0;\n color: ${props => props.theme.colors.text.primary};\n &:focus {\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n }\n ${({ kind }) =>\n kind === 'patternProperties' &&\n css`\n display: inline-flex;\n margin-right: 20px;\n\n > span.property-name {\n white-space: break-spaces;\n text-align: left;\n\n ::before,\n ::after {\n content: '/';\n filter: opacity(0.2);\n }\n }\n\n > svg {\n align-self: center;\n }\n `}\n }\n ${ShelfIcon} {\n height: ${({ theme }) => theme.schema.arrow.size};\n width: ${({ theme }) => theme.schema.arrow.size};\n polygon {\n fill: ${({ theme }) => theme.schema.arrow.color};\n }\n }\n`;\n\nexport const FieldLabel = styled.span`\n vertical-align: middle;\n font-size: ${({ theme }) => theme.typography.code.fontSize};\n line-height: 20px;\n`;\n\nexport const TypePrefix = styled(FieldLabel)`\n color: ${props => transparentize(0.1, props.theme.schema.typeNameColor)};\n`;\n\nexport const TypeName = styled(FieldLabel)`\n color: ${props => props.theme.schema.typeNameColor};\n`;\n\nexport const TypeTitle = styled(FieldLabel)`\n color: ${props => props.theme.schema.typeTitleColor};\n word-break: break-word;\n`;\n\nexport const TypeFormat = TypeName;\n\nexport const RequiredLabel = styled(FieldLabel).attrs({\n as: 'div',\n})`\n color: ${props => props.theme.schema.requireLabelColor};\n font-size: ${props => props.theme.schema.labelsTextSize};\n font-weight: normal;\n margin-left: 20px;\n line-height: 1;\n`;\n\nexport const PropertyLabel = styled(RequiredLabel)`\n color: ${props => props.theme.colors.primary.light};\n`;\n\nexport const RecursiveLabel = styled(FieldLabel)`\n color: ${({ theme }) => theme.colors.warning.main};\n font-size: 13px;\n`;\n\nexport const PatternLabel = styled(FieldLabel)`\n color: #0e7c86;\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: 12px;\n &::before,\n &::after {\n content: ' ';\n }\n`;\n\nexport const ExampleValue = styled(FieldLabel)`\n border-radius: 2px;\n word-break: break-word;\n ${({ theme }) => `\n background-color: ${transparentize(0.95, theme.colors.text.primary)};\n color: ${transparentize(0.1, theme.colors.text.primary)};\n\n padding: 0 ${theme.spacing.unit}px;\n border: 1px solid ${transparentize(0.9, theme.colors.text.primary)};\n font-family: ${theme.typography.code.fontFamily};\n}`};\n & + & {\n margin-left: 0;\n }\n ${extensionsHook('ExampleValue')};\n`;\n\nexport const ExtensionValue = styled(ExampleValue)``;\n\nexport const ConstraintItem = styled(FieldLabel)`\n border-radius: 2px;\n ${({ theme }) => `\n background-color: ${transparentize(0.95, theme.colors.primary.light)};\n color: ${transparentize(0.1, theme.colors.primary.main)};\n\n margin: 0 ${theme.spacing.unit}px;\n padding: 0 ${theme.spacing.unit}px;\n border: 1px solid ${transparentize(0.9, theme.colors.primary.main)};\n}`};\n & + & {\n margin-left: 0;\n }\n ${extensionsHook('ConstraintItem')};\n`;\n\nexport const ToggleButton = styled.button`\n background-color: transparent;\n border: 0;\n color: ${({ theme }) => theme.colors.text.secondary};\n margin-left: ${({ theme }) => theme.spacing.unit}px;\n border-radius: 2px;\n cursor: pointer;\n outline-color: ${({ theme }) => theme.colors.text.secondary};\n font-size: 12px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport styled from '../../styled-components';\nimport { OpenAPIExternalDocumentation } from '../../types';\nimport { linksCss } from '../Markdown/styled.elements';\n\nconst LinkWrap = styled.div<{ $compact?: boolean }>`\n ${linksCss};\n ${({ $compact }) => (!$compact ? 'margin: 1em 0' : '')}\n`;\n\n@observer\nexport class ExternalDocumentation extends React.Component<{\n externalDocs: OpenAPIExternalDocumentation;\n compact?: boolean;\n}> {\n render() {\n const { externalDocs } = this.props;\n if (!externalDocs || !externalDocs.url) {\n return null;\n }\n\n return (\n <LinkWrap $compact={this.props.compact}>\n <a href={externalDocs.url}>{externalDocs.description || externalDocs.url}</a>\n </LinkWrap>\n );\n }\n}\n","import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nimport { l } from '../../services/Labels';\nimport { OptionsContext } from '../OptionsProvider';\nimport styled from '../../styled-components';\nimport { RedocRawOptions } from '../../services/RedocNormalizedOptions';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface EnumValuesProps {\n values?: string[] | { [name: string]: string };\n type: string | string[];\n}\n\nexport interface EnumValuesState {\n collapsed: boolean;\n}\n\nconst DescriptionEnumsBlock = styled(StyledMarkdownBlock)`\n table {\n margin-bottom: 0.2em;\n }\n`;\n\nexport class EnumValues extends React.PureComponent<EnumValuesProps, EnumValuesState> {\n constructor(props: EnumValuesProps) {\n super(props);\n this.toggle = this.toggle.bind(this);\n }\n state: EnumValuesState = {\n collapsed: true,\n };\n\n static contextType = OptionsContext;\n\n private toggle() {\n this.setState({ collapsed: !this.state.collapsed });\n }\n\n render() {\n const { values, type } = this.props;\n const { collapsed } = this.state;\n const isDescriptionEnum = !Array.isArray(values);\n const enums =\n (Array.isArray(values) && values) ||\n Object.entries(values || {}).map(([value, description]) => ({\n value,\n description,\n }));\n\n // TODO: provide context interface in more elegant way\n const { enumSkipQuotes, maxDisplayedEnumValues } = this.context as RedocRawOptions;\n\n if (!enums.length) {\n return null;\n }\n\n const displayedItems =\n this.state.collapsed && maxDisplayedEnumValues\n ? enums.slice(0, maxDisplayedEnumValues)\n : enums;\n\n const showToggleButton = maxDisplayedEnumValues ? enums.length > maxDisplayedEnumValues : false;\n\n const toggleButtonText = maxDisplayedEnumValues\n ? collapsed\n ? `… ${enums.length - maxDisplayedEnumValues} more`\n : 'Hide'\n : '';\n\n return (\n <div>\n {isDescriptionEnum ? (\n <>\n <DescriptionEnumsBlock>\n <table>\n <thead>\n <tr>\n <th>\n <FieldLabel>\n {type === 'array' ? l('enumArray') : ''}{' '}\n {enums.length === 1 ? l('enumSingleValue') : l('enum')}\n </FieldLabel>{' '}\n </th>\n <th>\n <strong>Description</strong>\n </th>\n </tr>\n </thead>\n <tbody>\n {(displayedItems as { value: string; description: string }[]).map(\n ({ description, value }) => {\n return (\n <tr key={value}>\n <td>{value}</td>\n <td>\n <Markdown source={description} compact inline />\n </td>\n </tr>\n );\n },\n )}\n </tbody>\n </table>\n </DescriptionEnumsBlock>\n {showToggleButton ? (\n <ToggleButton onClick={this.toggle}>{toggleButtonText}</ToggleButton>\n ) : null}\n </>\n ) : (\n <>\n <FieldLabel>\n {type === 'array' ? l('enumArray') : ''}{' '}\n {values.length === 1 ? l('enumSingleValue') : l('enum')}:\n </FieldLabel>{' '}\n {displayedItems.map((value, idx) => {\n const exampleValue = enumSkipQuotes ? String(value) : JSON.stringify(value);\n return (\n <React.Fragment key={idx}>\n <ExampleValue>{exampleValue}</ExampleValue>{' '}\n </React.Fragment>\n );\n })}\n {showToggleButton ? (\n <ToggleButton onClick={this.toggle}>{toggleButtonText}</ToggleButton>\n ) : null}\n </>\n )}\n </div>\n );\n }\n}\n\nconst ToggleButton = styled.span`\n color: ${props => props.theme.colors.primary.main};\n vertical-align: middle;\n font-size: 13px;\n line-height: 20px;\n padding: 0 5px;\n cursor: pointer;\n`;\n","import * as React from 'react';\n\nimport { ExtensionValue, FieldLabel } from '../../common-elements/fields';\n\nimport styled from '../../styled-components';\n\nimport { OptionsContext } from '../OptionsProvider';\n\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\n\nconst Extension = styled(StyledMarkdownBlock)`\n margin: 2px 0;\n`;\n\nexport interface ExtensionsProps {\n extensions: {\n [k: string]: any;\n };\n}\n\nexport class Extensions extends React.PureComponent<ExtensionsProps> {\n render() {\n const exts = this.props.extensions;\n return (\n <OptionsContext.Consumer>\n {options => (\n <>\n {options.showExtensions &&\n Object.keys(exts).map(key => (\n <Extension key={key}>\n <FieldLabel> {key.substring(2)}: </FieldLabel>{' '}\n <ExtensionValue>\n {typeof exts[key] === 'string' ? exts[key] : JSON.stringify(exts[key])}\n </ExtensionValue>\n </Extension>\n ))}\n </>\n )}\n </OptionsContext.Consumer>\n );\n }\n}\n","import * as React from 'react';\n\nimport { FieldLabel, ExampleValue } from '../../common-elements/fields';\nimport { getSerializedValue, isArray } from '../../utils';\n\nimport { l } from '../../services/Labels';\nimport { FieldModel } from '../../services';\nimport styled from '../../styled-components';\n\nexport function Examples({ field }: { field: FieldModel }) {\n if (!field.examples) {\n return null;\n }\n\n return (\n <>\n <FieldLabel> {l('examples')}: </FieldLabel>\n {isArray(field.examples) ? (\n field.examples.map((example, idx) => {\n const value = getSerializedValue(field, example);\n const stringifyValue = field.in ? String(value) : JSON.stringify(value);\n return (\n <React.Fragment key={idx}>\n <ExampleValue>{stringifyValue}</ExampleValue>{' '}\n </React.Fragment>\n );\n })\n ) : (\n <ExamplesList>\n {Object.values(field.examples).map((example, idx) => (\n <li key={idx + example.value}>\n <ExampleValue>{getSerializedValue(field, example.value)}</ExampleValue> -{' '}\n {example.summary || example.description}\n </li>\n ))}\n </ExamplesList>\n )}\n </>\n );\n}\n\nconst ExamplesList = styled.ul`\n margin-top: 1em;\n list-style-position: outside;\n`;\n","import * as React from 'react';\nimport { ConstraintItem } from '../../common-elements/fields';\n\nexport interface ConstraintsViewProps {\n constraints: string[];\n}\n\nexport class ConstraintsView extends React.PureComponent<ConstraintsViewProps> {\n render() {\n if (this.props.constraints.length === 0) {\n return null;\n }\n return (\n <span>\n {' '}\n {this.props.constraints.map(constraint => (\n <ConstraintItem key={constraint}> {constraint} </ConstraintItem>\n ))}\n </span>\n );\n }\n}\n","import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nexport interface FieldDetailProps {\n value?: any;\n label: string;\n raw?: boolean;\n}\n\nfunction FieldDetailComponent({ value, label, raw }: FieldDetailProps) {\n if (value === undefined) {\n return null;\n }\n\n const stringifyValue = raw ? String(value) : JSON.stringify(value);\n\n return (\n <div>\n <FieldLabel> {label} </FieldLabel> <ExampleValue>{stringifyValue}</ExampleValue>\n </div>\n );\n}\n\nexport const FieldDetail = React.memo<FieldDetailProps>(FieldDetailComponent);\n","import * as React from 'react';\nimport { PatternLabel, ToggleButton } from '../../common-elements/fields';\nimport { OptionsContext } from '../OptionsProvider';\nimport { SchemaModel } from '../../services';\n\nconst MAX_PATTERN_LENGTH = 45;\n\nexport function Pattern(props: { schema: SchemaModel }) {\n const pattern = props.schema.pattern;\n const { hideSchemaPattern } = React.useContext(OptionsContext);\n const [isPatternShown, setIsPatternShown] = React.useState(false);\n const togglePattern = React.useCallback(\n () => setIsPatternShown(!isPatternShown),\n [isPatternShown],\n );\n\n if (!pattern || hideSchemaPattern) return null;\n\n return (\n <>\n <PatternLabel>\n {isPatternShown || pattern.length < MAX_PATTERN_LENGTH\n ? pattern\n : `${pattern.substr(0, MAX_PATTERN_LENGTH)}...`}\n </PatternLabel>\n {pattern.length > MAX_PATTERN_LENGTH && (\n <ToggleButton onClick={togglePattern}>\n {isPatternShown ? 'Hide pattern' : 'Show pattern'}\n </ToggleButton>\n )}\n </>\n );\n}\n","import * as React from 'react';\nimport { TypeFormat, TypePrefix } from '../../common-elements/fields';\nimport { ConstraintsView } from './FieldConstraints';\nimport { Pattern } from './Pattern';\nimport { SchemaModel } from '../../services';\nimport styled from '../../styled-components';\nimport { OptionsContext } from '../OptionsProvider';\n\nexport function ArrayItemDetails({ schema }: { schema: SchemaModel }) {\n const { hideSchemaPattern } = React.useContext(OptionsContext);\n if (\n !schema ||\n ((!schema?.pattern || hideSchemaPattern) &&\n !schema.items &&\n !schema.displayFormat &&\n !schema.constraints?.length) // return null for cases where all constraints are empty\n ) {\n return null;\n }\n\n return (\n <Wrapper>\n [ items\n {schema.displayFormat && <TypeFormat> &lt;{schema.displayFormat} &gt;</TypeFormat>}\n <ConstraintsView constraints={schema.constraints} />\n <Pattern schema={schema} />\n {schema.items && <ArrayItemDetails schema={schema.items} />} ]\n </Wrapper>\n );\n}\n\nconst Wrapper = styled(TypePrefix)`\n margin: 0 5px;\n vertical-align: text-top;\n`;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport {\n RecursiveLabel,\n TypeFormat,\n TypeName,\n TypePrefix,\n TypeTitle,\n} from '../../common-elements/fields';\nimport { getSerializedValue, isArray, isObject } from '../../utils';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Markdown } from '../Markdown/Markdown';\nimport { EnumValues } from './EnumValues';\nimport { Extensions } from './Extensions';\nimport { FieldProps } from './Field';\nimport { Examples } from './Examples';\nimport { ConstraintsView } from './FieldConstraints';\nimport { FieldDetail } from './FieldDetail';\n\nimport { Badge } from '../../common-elements/';\n\nimport { l } from '../../services/Labels';\nimport { OptionsContext } from '../OptionsProvider';\nimport { Pattern } from './Pattern';\nimport { ArrayItemDetails } from './ArrayItemDetails';\n\nexport const FieldDetailsComponent = observer((props: FieldProps) => {\n const { enumSkipQuotes, hideSchemaTitles } = React.useContext(OptionsContext);\n\n const { showExamples, field, renderDiscriminatorSwitch } = props;\n const { schema, description, deprecated, extensions, in: _in, const: _const } = field;\n const isArrayType =\n schema.type === 'array' || (isArray(schema.type) && schema.type.includes('array'));\n\n const rawDefault = enumSkipQuotes || _in === 'header'; // having quotes around header field default values is confusing and inappropriate\n\n const renderedExamples = React.useMemo<JSX.Element | null>(() => {\n if (showExamples && (field.example !== undefined || field.examples !== undefined)) {\n if (field.examples !== undefined) {\n return <Examples field={field} />;\n } else {\n return (\n <FieldDetail\n label={l('example') + ':'}\n value={getSerializedValue(field, field.example)}\n raw={Boolean(field.in)}\n />\n );\n }\n }\n\n return null;\n }, [field, showExamples]);\n const defaultValue =\n isObject(schema.default) && field.in\n ? getSerializedValue(field, schema.default).replace(`${field.name}=`, '')\n : schema.default;\n\n return (\n <div>\n <div>\n <TypePrefix>{schema.typePrefix}</TypePrefix>\n <TypeName>{schema.displayType}</TypeName>\n {schema.displayFormat && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.displayFormat}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.contentEncoding && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.contentEncoding}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.contentMediaType && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.contentMediaType}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.title && !hideSchemaTitles && <TypeTitle> ({schema.title}) </TypeTitle>}\n <ConstraintsView constraints={schema.constraints} />\n <Pattern schema={schema} />\n {schema.isCircular && <RecursiveLabel> {l('recursive')} </RecursiveLabel>}\n {isArrayType && schema.items && <ArrayItemDetails schema={schema.items} />}\n </div>\n {deprecated && (\n <div>\n <Badge type=\"warning\"> {l('deprecated')} </Badge>\n </div>\n )}\n <FieldDetail raw={rawDefault} label={l('default') + ':'} value={defaultValue} />\n {!renderDiscriminatorSwitch && (\n <EnumValues type={schema.type} values={schema['x-enumDescriptions'] || schema.enum} />\n )}{' '}\n {renderedExamples}\n <Extensions extensions={{ ...extensions, ...schema.extensions }} />\n <div>\n <Markdown compact={true} source={description} />\n </div>\n {schema.externalDocs && (\n <ExternalDocumentation externalDocs={schema.externalDocs} compact={true} />\n )}\n {(renderDiscriminatorSwitch && renderDiscriminatorSwitch(props)) || null}\n {(_const && <FieldDetail label={l('const') + ':'} value={_const} />) || null}\n </div>\n );\n});\n\nexport const FieldDetails = React.memo<FieldProps>(FieldDetailsComponent);\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ClickablePropertyNameCell,\n PropertyLabel,\n RequiredLabel,\n} from '../../common-elements/fields';\nimport { FieldDetails } from './FieldDetails';\nimport {\n InnerPropertiesWrap,\n PropertyBullet,\n PropertyCellWithInner,\n PropertyDetailsCell,\n PropertyNameCell,\n} from '../../common-elements/fields-layout';\nimport { ShelfIcon } from '../../common-elements/';\nimport { Schema } from '../Schema/Schema';\n\nimport type { SchemaOptions } from '../Schema/Schema';\nimport type { FieldModel } from '../../services/models';\nimport { OptionsContext } from '../OptionsProvider';\nimport { RedocNormalizedOptions } from '../../services/RedocNormalizedOptions';\n\nexport interface FieldProps extends SchemaOptions {\n className?: string;\n isLast?: boolean;\n showExamples?: boolean;\n\n field: FieldModel;\n expandByDefault?: boolean;\n fieldParentsName?: string[];\n renderDiscriminatorSwitch?: (opts: FieldProps) => JSX.Element;\n}\n\n@observer\nexport class Field extends React.Component<FieldProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n\n toggle = () => {\n if (this.props.field.expanded === undefined && this.props.expandByDefault) {\n this.props.field.collapse();\n } else {\n this.props.field.toggle();\n }\n };\n\n handleKeyPress = e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n this.toggle();\n }\n };\n\n render() {\n const { hidePropertiesPrefix } = this.context;\n const { className = '', field, isLast, expandByDefault, fieldParentsName = [] } = this.props;\n const { name, deprecated, required, kind } = field;\n const withSubSchema = !field.schema.isPrimitive && !field.schema.isCircular;\n\n const expanded = field.expanded === undefined ? expandByDefault : field.expanded;\n const labels = (\n <>\n {kind === 'additionalProperties' && <PropertyLabel>additional property</PropertyLabel>}\n {kind === 'patternProperties' && <PropertyLabel>pattern property</PropertyLabel>}\n {required && <RequiredLabel>required</RequiredLabel>}\n </>\n );\n\n const paramName = withSubSchema ? (\n <ClickablePropertyNameCell\n className={deprecated ? 'deprecated' : ''}\n kind={kind}\n title={name}\n >\n <PropertyBullet />\n <button\n onClick={this.toggle}\n onKeyPress={this.handleKeyPress}\n aria-label={`expand ${name}`}\n >\n {!hidePropertiesPrefix &&\n fieldParentsName.map(\n name => name + '.\\u200B', // zero-width space, a special character is used for correct line breaking\n )}\n <span className=\"property-name\">{name}</span>\n <ShelfIcon direction={expanded ? 'down' : 'right'} />\n </button>\n {labels}\n </ClickablePropertyNameCell>\n ) : (\n <PropertyNameCell className={deprecated ? 'deprecated' : undefined} kind={kind} title={name}>\n <PropertyBullet />\n {!hidePropertiesPrefix &&\n fieldParentsName.map(\n name => name + '.\\u200B', // zero-width space, a special character is used for correct line breaking\n )}\n <span className=\"property-name\">{name}</span>\n {labels}\n </PropertyNameCell>\n );\n\n return (\n <>\n <tr className={isLast ? 'last ' + className : className}>\n {paramName}\n <PropertyDetailsCell>\n <FieldDetails {...this.props} />\n </PropertyDetailsCell>\n </tr>\n {expanded && withSubSchema && (\n <tr key={field.name + 'inner'}>\n <PropertyCellWithInner colSpan={2}>\n <InnerPropertiesWrap>\n <Schema\n schema={field.schema}\n fieldParentsName={[...(fieldParentsName || []), field.name]}\n skipReadOnly={this.props.skipReadOnly}\n skipWriteOnly={this.props.skipWriteOnly}\n showTitle={this.props.showTitle}\n level={this.props.level}\n />\n </InnerPropertiesWrap>\n </PropertyCellWithInner>\n </tr>\n )}\n </>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, Dropdown } from '../../common-elements/Dropdown';\nimport { SchemaModel } from '../../services/models';\n\n@observer\nexport class DiscriminatorDropdown extends React.Component<{\n parent: SchemaModel;\n enumValues: string[];\n}> {\n sortOptions(options: DropdownOption[], enumValues: string[]): void {\n if (enumValues.length === 0) {\n return;\n }\n\n const enumOrder = {};\n\n enumValues.forEach((enumItem, idx) => {\n enumOrder[enumItem] = idx;\n });\n\n options.sort((a, b) => {\n return enumOrder[a.value] > enumOrder[b.value] ? 1 : -1;\n });\n }\n\n render() {\n const { parent, enumValues } = this.props;\n if (parent.oneOf === undefined) {\n return null;\n }\n\n const options = parent.oneOf.map((subSchema, idx) => {\n return {\n value: subSchema.title,\n idx,\n };\n });\n\n const activeValue = options[parent.activeOneOf].value;\n\n this.sortOptions(options, enumValues);\n\n return (\n <Dropdown\n value={activeValue}\n options={options}\n onChange={this.changeActiveChild}\n ariaLabel=\"Example\"\n />\n );\n }\n\n changeActiveChild = (option: DropdownOption) => {\n if (option.idx !== undefined) {\n this.props.parent.activateOneOf(option.idx);\n }\n };\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SchemaModel } from '../../services/models';\n\nimport { PropertiesTable, PropertiesTableCaption } from '../../common-elements/fields-layout';\nimport { Field } from '../Fields/Field';\nimport { DiscriminatorDropdown } from './DiscriminatorDropdown';\nimport { SchemaProps } from './Schema';\n\nimport { mapWithLast } from '../../utils';\nimport { OptionsContext } from '../OptionsProvider';\n\nexport interface ObjectSchemaProps extends SchemaProps {\n discriminator?: {\n fieldName: string;\n parentSchema: SchemaModel;\n };\n fieldParentsName?: string[];\n}\n\nexport const ObjectSchema = observer(\n ({\n schema: { fields = [], title },\n showTitle,\n discriminator,\n skipReadOnly,\n skipWriteOnly,\n level,\n fieldParentsName,\n }: ObjectSchemaProps) => {\n const { expandSingleSchemaField, showObjectSchemaExamples, schemasExpansionLevel } =\n React.useContext(OptionsContext);\n\n const filteredFields = React.useMemo(\n () =>\n skipReadOnly || skipWriteOnly\n ? fields.filter(\n item =>\n !(\n (skipReadOnly && item.schema.readOnly) ||\n (skipWriteOnly && item.schema.writeOnly)\n ),\n )\n : fields,\n [skipReadOnly, skipWriteOnly, fields],\n );\n\n const expandByDefault =\n (expandSingleSchemaField && filteredFields.length === 1) || schemasExpansionLevel >= level!;\n\n return (\n <PropertiesTable>\n {showTitle && <PropertiesTableCaption>{title}</PropertiesTableCaption>}\n <tbody>\n {mapWithLast(filteredFields, (field, isLast) => {\n return (\n <Field\n key={field.name}\n isLast={isLast}\n field={field}\n expandByDefault={expandByDefault}\n fieldParentsName={Number(level) > 1 ? fieldParentsName : []}\n renderDiscriminatorSwitch={\n discriminator?.fieldName === field.name\n ? () => (\n <DiscriminatorDropdown\n parent={discriminator!.parentSchema}\n enumValues={field.schema.enum}\n />\n )\n : undefined\n }\n className={field.expanded ? 'expanded' : undefined}\n showExamples={showObjectSchemaExamples}\n skipReadOnly={skipReadOnly}\n skipWriteOnly={skipWriteOnly}\n showTitle={showTitle}\n level={level}\n />\n );\n })}\n </tbody>\n </PropertiesTable>\n );\n },\n);\n","import * as React from 'react';\n\nimport { Schema, SchemaProps } from './Schema';\n\nimport { ArrayClosingLabel, ArrayOpenningLabel } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { humanizeConstraints } from '../../utils';\nimport { TypeName } from '../../common-elements/fields';\nimport { ObjectSchema } from './ObjectSchema';\n\nconst PaddedSchema = styled.div`\n padding-left: ${({ theme }) => theme.spacing.unit * 2}px;\n`;\n\nexport class ArraySchema extends React.PureComponent<SchemaProps> {\n render() {\n const schema = this.props.schema;\n const itemsSchema = schema.items;\n const fieldParentsName = this.props.fieldParentsName;\n\n const minMaxItems =\n schema.minItems === undefined && schema.maxItems === undefined\n ? ''\n : `(${humanizeConstraints(schema)})`;\n\n const updatedParentsArray = fieldParentsName\n ? [...fieldParentsName.slice(0, -1), fieldParentsName[fieldParentsName.length - 1] + '[]']\n : fieldParentsName;\n if (schema.fields) {\n return (\n <ObjectSchema\n {...(this.props as any)}\n level={this.props.level}\n fieldParentsName={updatedParentsArray}\n />\n );\n }\n if (schema.displayType && !itemsSchema && !minMaxItems.length) {\n return (\n <div>\n <TypeName>{schema.displayType}</TypeName>\n </div>\n );\n }\n\n return (\n <div>\n <ArrayOpenningLabel> Array {minMaxItems}</ArrayOpenningLabel>\n <PaddedSchema>\n <Schema {...this.props} schema={itemsSchema} fieldParentsName={updatedParentsArray} />\n </PaddedSchema>\n <ArrayClosingLabel />\n </div>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n OneOfButton as StyledOneOfButton,\n OneOfLabel,\n OneOfList,\n} from '../../common-elements/schema';\nimport { Badge } from '../../common-elements/shelfs';\nimport { SchemaModel } from '../../services/models';\nimport { ConstraintsView } from '../Fields/FieldConstraints';\nimport { Schema, SchemaProps } from './Schema';\n\nexport interface OneOfButtonProps {\n subSchema: SchemaModel;\n idx: number;\n schema: SchemaModel;\n}\n\n@observer\nexport class OneOfButton extends React.Component<OneOfButtonProps> {\n render() {\n const { idx, schema, subSchema } = this.props;\n return (\n <StyledOneOfButton\n $deprecated={subSchema.deprecated}\n $active={idx === schema.activeOneOf}\n onClick={this.activateOneOf}\n >\n {subSchema.title || subSchema.typePrefix + subSchema.displayType}\n </StyledOneOfButton>\n );\n }\n\n activateOneOf = () => {\n this.props.schema.activateOneOf(this.props.idx);\n };\n}\n\n@observer\nexport class OneOfSchema extends React.Component<SchemaProps> {\n render() {\n const {\n schema: { oneOf },\n schema,\n } = this.props;\n\n if (oneOf === undefined) {\n return null;\n }\n const activeSchema = oneOf[schema.activeOneOf];\n\n return (\n <div>\n <OneOfLabel> {schema.oneOfType} </OneOfLabel>\n <OneOfList>\n {oneOf.map((subSchema, idx) => (\n <OneOfButton key={subSchema.pointer} schema={schema} subSchema={subSchema} idx={idx} />\n ))}\n </OneOfList>\n <div>\n {oneOf[schema.activeOneOf].deprecated && <Badge type=\"warning\">Deprecated</Badge>}\n </div>\n <ConstraintsView constraints={activeSchema.constraints} />\n <Schema {...this.props} schema={activeSchema} />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { RecursiveLabel, TypeName, TypeTitle } from '../../common-elements/fields';\nimport { l } from '../../services/Labels';\nimport type { SchemaProps } from '.';\n\nexport const RecursiveSchema = observer(({ schema }: SchemaProps) => {\n return (\n <div>\n <TypeName>{schema.displayType}</TypeName>\n {schema.title && <TypeTitle> {schema.title} </TypeTitle>}\n <RecursiveLabel> {l('recursive')} </RecursiveLabel>\n </div>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { FieldDetails } from '../Fields/FieldDetails';\n\nimport { FieldModel, SchemaModel } from '../../services/models';\n\nimport { ArraySchema } from './ArraySchema';\nimport { ObjectSchema } from './ObjectSchema';\nimport { OneOfSchema } from './OneOfSchema';\nimport { RecursiveSchema } from './RecursiveSchema';\n\nimport { isArray } from '../../utils/helpers';\n\nexport interface SchemaOptions {\n showTitle?: boolean;\n skipReadOnly?: boolean;\n skipWriteOnly?: boolean;\n level?: number;\n}\n\nexport interface SchemaProps extends SchemaOptions {\n schema: SchemaModel;\n fieldParentsName?: string[];\n}\n\n@observer\nexport class Schema extends React.Component<Partial<SchemaProps>> {\n render() {\n const { schema, ...rest } = this.props;\n const level = (rest.level || 0) + 1;\n\n if (!schema) {\n return <em> Schema not provided </em>;\n }\n const { type, oneOf, discriminatorProp, isCircular } = schema;\n\n if (isCircular) {\n return <RecursiveSchema schema={schema} />;\n }\n\n if (discriminatorProp !== undefined) {\n if (!oneOf || !oneOf.length) {\n console.warn(\n `Looks like you are using discriminator wrong: you don't have any definition inherited from the ${schema.title}`,\n );\n return null;\n }\n const activeSchema = oneOf[schema.activeOneOf];\n return activeSchema.isCircular ? (\n <RecursiveSchema schema={activeSchema} />\n ) : (\n <ObjectSchema\n {...rest}\n level={level}\n schema={activeSchema}\n discriminator={{\n fieldName: discriminatorProp,\n parentSchema: schema,\n }}\n />\n );\n }\n\n if (oneOf !== undefined) {\n return <OneOfSchema schema={schema} {...rest} />;\n }\n\n const types = isArray(type) ? type : [type];\n if (types.includes('object')) {\n if (schema.fields?.length) {\n return <ObjectSchema {...(this.props as any)} level={level} />;\n }\n } else if (types.includes('array')) {\n return <ArraySchema {...(this.props as any)} level={level} />;\n }\n\n // TODO: maybe adjust FieldDetails to accept schema\n const field = {\n schema,\n name: '',\n required: false,\n description: schema.description,\n externalDocs: schema.externalDocs,\n deprecated: false,\n toggle: () => null,\n expanded: false,\n } as any as FieldModel; // cast needed for hot-loader to not fail\n\n return (\n <div>\n <FieldDetails field={field} />\n </div>\n );\n }\n}\n","import * as React from 'react';\n\nimport { DarkRightPanel, MiddlePanel, MimeLabel, Row, Section } from '../../common-elements';\nimport { MediaTypeModel, OpenAPIParser, RedocNormalizedOptions } from '../../services';\nimport styled from '../../styled-components';\nimport { OpenAPIMediaType } from '../../types';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples';\nimport { InvertedSimpleDropdown } from '../PayloadSamples/styled.elements';\nimport { Schema } from '../Schema';\n\nexport interface ObjectDescriptionProps {\n schemaRef: string;\n exampleRef?: string;\n showReadOnly?: boolean;\n showWriteOnly?: boolean;\n showExample?: boolean;\n parser: OpenAPIParser;\n options: RedocNormalizedOptions;\n}\n\nexport class SchemaDefinition extends React.PureComponent<ObjectDescriptionProps> {\n private static getMediaType(schemaRef: string, exampleRef?: string): OpenAPIMediaType {\n if (!schemaRef) {\n return {};\n }\n\n const info: OpenAPIMediaType = {\n schema: { $ref: schemaRef },\n };\n\n if (exampleRef) {\n info.examples = { example: { $ref: exampleRef } };\n }\n\n return info;\n }\n\n private _mediaModel: MediaTypeModel;\n\n private get mediaModel() {\n const { parser, schemaRef, exampleRef, options } = this.props;\n if (!this._mediaModel) {\n this._mediaModel = new MediaTypeModel(\n parser,\n 'json',\n false,\n SchemaDefinition.getMediaType(schemaRef, exampleRef),\n options,\n );\n }\n\n return this._mediaModel;\n }\n\n render() {\n const { showReadOnly = true, showWriteOnly = false, showExample = true } = this.props;\n return (\n <Section>\n <Row>\n <MiddlePanel>\n <Schema\n skipWriteOnly={!showWriteOnly}\n skipReadOnly={!showReadOnly}\n schema={this.mediaModel.schema}\n />\n </MiddlePanel>\n {showExample && (\n <DarkRightPanel>\n <MediaSamplesWrap>\n <MediaTypeSamples\n renderDropdown={this.renderDropdown}\n mediaType={this.mediaModel}\n />\n </MediaSamplesWrap>\n </DarkRightPanel>\n )}\n </Row>\n </Section>\n );\n }\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n}\n\nconst MediaSamplesWrap = styled.div`\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 4}px;\n margin: 0;\n }\n\n & > div > pre {\n padding: 0;\n }\n`;\n","import styled from 'styled-components';\nimport { linksCss } from '../Markdown/styled.elements';\nimport { media } from '../../styled-components';\nimport { UnderlinedHeader } from '../../common-elements';\n\nexport const Header = styled.div`\n background-color: #e4e7eb;\n`;\n\nexport const ScopeNameList = styled.ul`\n display: inline;\n list-style: none;\n padding: 0;\n\n li {\n display: inherit;\n\n &:after {\n content: ',';\n }\n &:last-child:after {\n content: none;\n }\n }\n`;\n\nexport const ScopeName = styled.code`\n font-size: ${props => props.theme.typography.code.fontSize};\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin: 0 3px;\n padding: 0.2em;\n display: inline-block;\n line-height: 1;\n\n &:after {\n content: ',';\n font-weight: normal;\n }\n\n &:last-child:after {\n content: none;\n }\n`;\n\nexport const SecurityRequirementAndWrap = styled.span`\n &:after {\n content: ' and ';\n font-weight: normal;\n }\n\n &:last-child:after {\n content: none;\n }\n\n ${linksCss};\n`;\n\nexport const SecurityRequirementOrWrap = styled.span<{ $expanded?: boolean }>`\n ${p => !p.$expanded && `white-space: nowrap;`}\n &:after {\n content: ' or ';\n ${p => p.$expanded && `content: ' or \\\\a';`}\n white-space: pre;\n }\n\n &:last-child:after,\n &:only-child:after {\n content: none;\n }\n\n ${linksCss};\n`;\n\nexport const AuthHeaderColumn = styled.div`\n flex: 1 1 auto;\n cursor: pointer;\n`;\n\nexport const SecuritiesColumn = styled.div<{ $expanded?: boolean }>`\n width: ${props => props.theme.schema.defaultDetailsWidth};\n text-overflow: ellipsis;\n border-radius: 4px;\n overflow: hidden;\n ${p =>\n p.$expanded &&\n `background: ${p.theme.colors.gray['100']};\n padding: 8px 9.6px;\n margin: 20px 0;\n width: 100%;\n `};\n ${media.lessThan('small')`\n margin-top: 10px;\n `}\n`;\n\nexport const AuthHeader = styled(UnderlinedHeader)`\n display: inline-block;\n margin: 0;\n`;\n\nexport const Wrap = styled.div<{ $expanded?: boolean }>`\n width: 100%;\n display: flex;\n margin: 1em 0;\n flex-direction: ${p => (p.$expanded ? 'column' : 'row')};\n ${media.lessThan('small')`\n flex-direction: column;\n `}\n`;\n\nexport const SecurityRow = styled.div`\n margin: 0.5em 0;\n`;\n\nexport const SecurityDetailsStyle = styled.div`\n border-bottom: 1px solid ${({ theme }) => theme.colors.border.dark};\n margin-bottom: 1.5em;\n padding-bottom: 0.7em;\n\n h5 {\n line-height: 1em;\n margin: 0 0 0.6em;\n font-size: ${({ theme }) => theme.typography.fontSize};\n }\n\n .redoc-markdown p:first-child {\n display: inline;\n }\n`;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst TOLERANCE_PX = 20;\n\ninterface SeeMoreProps {\n children?: React.ReactNode;\n height: string;\n}\n\nexport function SeeMore({ children, height }: SeeMoreProps): JSX.Element {\n const ref = React.createRef() as React.RefObject<HTMLDivElement>;\n const [showMore, setShowMore] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n\n React.useEffect(() => {\n if (ref.current && ref.current.clientHeight + TOLERANCE_PX < ref.current.scrollHeight) {\n setShowLink(true);\n }\n }, [ref]);\n\n const onClickMore = () => {\n setShowMore(!showMore);\n };\n\n return (\n <>\n <Container\n ref={ref}\n className={showMore ? '' : 'container'}\n style={{ height: showMore ? 'auto' : height }}\n >\n {children}\n </Container>\n <ButtonContainer $dimmed={!showMore}>\n {showLink && (\n <ButtonLinkStyled onClick={onClickMore}>\n {showMore ? 'See less' : 'See more'}\n </ButtonLinkStyled>\n )}\n </ButtonContainer>\n </>\n );\n}\n\nconst Container = styled.div`\n overflow-y: hidden;\n`;\n\nconst ButtonContainer = styled.div<{ $dimmed?: boolean }>`\n text-align: center;\n line-height: 1.5em;\n ${({ $dimmed }) =>\n $dimmed &&\n `background-image: linear-gradient(to bottom, transparent,rgb(255 255 255));\n position: relative;\n top: -0.5em;\n padding-top: 0.5em;\n background-position-y: -1em;\n `}\n`;\n\nconst ButtonLinkStyled = styled.a`\n cursor: pointer;\n`;\n","import * as React from 'react';\nimport { OpenAPISecurityScheme } from '../../types';\nimport { SecurityRow } from './styled.elements';\nimport { SeeMore } from '../SeeMore/SeeMore';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface OAuthFlowProps {\n type: string;\n flow: OpenAPISecurityScheme['flows'][keyof OpenAPISecurityScheme['flows']];\n RequiredScopes?: JSX.Element;\n}\n\nexport function OAuthFlowComponent(props: OAuthFlowProps) {\n const { type, flow, RequiredScopes } = props;\n const scopesNames = Object.keys(flow?.scopes || {});\n\n return (\n <>\n <SecurityRow>\n <b>Flow type: </b>\n <code>{type} </code>\n </SecurityRow>\n {(type === 'implicit' || type === 'authorizationCode') && (\n <SecurityRow>\n <strong> Authorization URL: </strong>\n <code>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href={(flow as any).authorizationUrl}>\n {(flow as any).authorizationUrl}\n </a>\n </code>\n </SecurityRow>\n )}\n {(type === 'password' || type === 'clientCredentials' || type === 'authorizationCode') && (\n <SecurityRow>\n <b> Token URL: </b>\n <code>{(flow as any).tokenUrl}</code>\n </SecurityRow>\n )}\n {flow!.refreshUrl && (\n <SecurityRow>\n <strong> Refresh URL: </strong>\n <code>{flow!.refreshUrl}</code>\n </SecurityRow>\n )}\n {!!scopesNames.length && (\n <>\n {RequiredScopes || null}\n <SecurityRow>\n <b> Scopes: </b>\n </SecurityRow>\n <SeeMore height=\"4em\">\n <ul>\n {scopesNames.map(scope => (\n <li key={scope}>\n <code>{scope}</code> -{' '}\n <Markdown\n className={'redoc-markdown'}\n inline={true}\n source={flow!.scopes[scope] || ''}\n />\n </li>\n ))}\n </ul>\n </SeeMore>\n </>\n )}\n </>\n );\n}\n\nexport const OAuthFlow = React.memo<OAuthFlowProps>(OAuthFlowComponent);\n","import * as React from 'react';\nimport { SecuritySchemeModel } from '../../services';\nimport { titleize } from '../../utils';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport { SecurityRow } from './styled.elements';\nimport { OAuthFlow } from './OAuthFlow';\n\ninterface SecuritySchemaProps {\n RequiredScopes?: JSX.Element;\n scheme: SecuritySchemeModel;\n}\nexport function SecurityDetails(props: SecuritySchemaProps) {\n const { RequiredScopes, scheme } = props;\n\n return (\n <StyledMarkdownBlock>\n {scheme.apiKey ? (\n <>\n <SecurityRow>\n <b>{titleize(scheme.apiKey.in || '')} parameter name: </b>\n <code>{scheme.apiKey.name}</code>\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.http ? (\n <>\n <SecurityRow>\n <b>HTTP Authorization Scheme: </b>\n <code>{scheme.http.scheme}</code>\n </SecurityRow>\n <SecurityRow>\n {scheme.http.scheme === 'bearer' && scheme.http.bearerFormat && (\n <>\n <b>Bearer format: </b>\n <code>{scheme.http.bearerFormat}</code>\n </>\n )}\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.openId ? (\n <>\n <SecurityRow>\n <b>Connect URL: </b>\n <code>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href={scheme.openId.connectUrl}>\n {scheme.openId.connectUrl}\n </a>\n </code>\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.flows ? (\n Object.keys(scheme.flows).map(type => (\n <OAuthFlow\n key={type}\n type={type}\n RequiredScopes={RequiredScopes}\n flow={scheme.flows[type]}\n />\n ))\n ) : null}\n </StyledMarkdownBlock>\n );\n}\n","import * as React from 'react';\n\nimport { SecuritySchemesModel } from '../../services';\nimport { H2, Row, ShareLink, MiddlePanel, Section } from '../../common-elements';\nimport { Markdown } from '../Markdown/Markdown';\nimport { SecurityDetails } from '../SecurityRequirement/SecurityDetails';\nimport { SecurityDetailsStyle, SecurityRow } from '../SecurityRequirement/styled.elements';\n\nexport const AUTH_TYPES = {\n oauth2: 'OAuth2',\n apiKey: 'API Key',\n http: 'HTTP',\n openIdConnect: 'OpenID Connect',\n};\n\nexport interface SecurityDefsProps {\n securitySchemes: SecuritySchemesModel;\n}\n\nexport class SecurityDefs extends React.PureComponent<SecurityDefsProps> {\n render() {\n return this.props.securitySchemes.schemes.map(scheme => (\n <Section id={scheme.sectionId} key={scheme.id}>\n <Row>\n <MiddlePanel>\n <H2>\n <ShareLink to={scheme.sectionId} />\n {scheme.displayName}\n </H2>\n <Markdown source={scheme.description || ''} />\n <SecurityDetailsStyle>\n <SecurityRow>\n <b>Security Scheme Type: </b>\n <span>{AUTH_TYPES[scheme.type] || scheme.type}</span>\n </SecurityRow>\n <SecurityDetails scheme={scheme} />\n </SecurityDetailsStyle>\n </MiddlePanel>\n </Row>\n </Section>\n ));\n }\n}\n","import { Lambda, observe } from 'mobx';\n\nimport type { OpenAPISpec } from '../types';\nimport { loadAndBundleSpec } from '../utils/loadAndBundleSpec';\nimport { history } from './HistoryService';\nimport { MarkerService } from './MarkerService';\nimport { MenuStore } from './MenuStore';\nimport { SpecStore } from './models';\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { RedocRawOptions } from './RedocNormalizedOptions';\nimport { ScrollService } from './ScrollService';\nimport { SearchStore } from './SearchStore';\n\nimport { SchemaDefinition } from '../components/SchemaDefinition/SchemaDefinition';\nimport { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes';\nimport {\n SCHEMA_DEFINITION_JSX_NAME,\n SECURITY_DEFINITIONS_JSX_NAME,\n OLD_SECURITY_DEFINITIONS_JSX_NAME,\n} from '../utils/openapi';\n\nimport { IS_BROWSER } from '../utils';\nimport type { StoreState } from './types';\n\nexport async function createStore(\n spec: object,\n specUrl: string | undefined,\n options: RedocRawOptions = {},\n) {\n const resolvedSpec = await loadAndBundleSpec(spec || specUrl);\n return new AppStore(resolvedSpec, specUrl, options);\n}\n\nexport class AppStore {\n /**\n * deserialize store\n * **SUPER HACKY AND NOT OPTIMAL IMPLEMENTATION**\n */\n // TODO:\n static fromJS(state: StoreState): AppStore {\n const inst = new AppStore(state.spec.data, state.spec.url, state.options, false);\n inst.menu.activeItemIdx = state.menu.activeItemIdx || 0;\n inst.menu.activate(inst.menu.flatItems[inst.menu.activeItemIdx]);\n if (!inst.options.disableSearch) {\n inst.search!.load(state.searchIndex);\n }\n return inst;\n }\n\n menu: MenuStore;\n spec: SpecStore;\n rawOptions: RedocRawOptions;\n options: RedocNormalizedOptions;\n search?: SearchStore<string>;\n marker = new MarkerService();\n\n private scroll: ScrollService;\n private disposer: Lambda | null = null;\n\n constructor(\n spec: OpenAPISpec,\n specUrl?: string,\n options: RedocRawOptions = {},\n createSearchIndex: boolean = true,\n ) {\n this.rawOptions = options;\n this.options = new RedocNormalizedOptions(options, DEFAULT_OPTIONS);\n this.scroll = new ScrollService(this.options);\n\n // update position statically based on hash (in case of SSR)\n MenuStore.updateOnHistory(history.currentId, this.scroll);\n\n this.spec = new SpecStore(spec, specUrl, this.options);\n this.menu = new MenuStore(this.spec, this.scroll, history);\n\n if (!this.options.disableSearch) {\n this.search = new SearchStore();\n if (createSearchIndex) {\n this.search.indexItems(this.menu.items);\n }\n\n this.disposer = observe(this.menu, 'activeItemIdx', change => {\n this.updateMarkOnMenu(change.newValue as number);\n });\n }\n }\n\n onDidMount() {\n this.menu.updateOnHistory();\n this.updateMarkOnMenu(this.menu.activeItemIdx);\n }\n\n dispose() {\n this.scroll.dispose();\n this.menu.dispose();\n if (this.search) {\n this.search.dispose();\n }\n if (this.disposer != null) {\n this.disposer();\n }\n }\n\n /**\n * serializes store\n * **SUPER HACKY AND NOT OPTIMAL IMPLEMENTATION**\n */\n // TODO: improve\n async toJS(): Promise<StoreState> {\n return {\n menu: {\n activeItemIdx: this.menu.activeItemIdx,\n },\n spec: {\n url: this.spec.parser.specUrl,\n data: this.spec.parser.spec,\n },\n searchIndex: this.search ? await this.search.toJS() : undefined,\n options: this.rawOptions,\n };\n }\n\n private updateMarkOnMenu(idx: number) {\n const start = Math.max(0, idx);\n const end = Math.min(this.menu.flatItems.length, start + 5);\n\n const elements: Element[] = [];\n for (let i = start; i < end; i++) {\n const elem = this.menu.getElementAt(i);\n if (!elem) {\n continue;\n }\n elements.push(elem);\n }\n\n if (idx === -1 && IS_BROWSER) {\n const $description = document.querySelector('[data-role=\"redoc-description\"]');\n const $summary = document.querySelector('[data-role=\"redoc-summary\"]');\n\n if ($description) elements.push($description);\n if ($summary) elements.push($summary);\n }\n\n this.marker.addOnly(elements);\n this.marker.mark();\n }\n}\n\nconst DEFAULT_OPTIONS: RedocRawOptions = {\n allowedMdComponents: {\n [SECURITY_DEFINITIONS_JSX_NAME]: {\n component: SecurityDefs,\n propsSelector: (store: AppStore) => ({\n securitySchemes: store.spec.securitySchemes,\n }),\n },\n [OLD_SECURITY_DEFINITIONS_JSX_NAME]: {\n component: SecurityDefs,\n propsSelector: (store: AppStore) => ({\n securitySchemes: store.spec.securitySchemes,\n }),\n },\n [SCHEMA_DEFINITION_JSX_NAME]: {\n component: SchemaDefinition,\n propsSelector: (store: AppStore) => ({\n parser: store.spec.parser,\n options: store.options,\n }),\n },\n },\n};\n","import { H1, MiddlePanel } from '../../common-elements';\nimport styled, { extensionsHook } from '../../styled-components';\n\nconst delimiterWidth = 15;\n\nexport const ApiInfoWrap = MiddlePanel;\n\nexport const ApiHeader = styled(H1)`\n margin-top: 0;\n margin-bottom: 0.5em;\n\n ${extensionsHook('ApiHeader')};\n`;\n\nexport const DownloadButton = styled.a`\n border: 1px solid ${props => props.theme.colors.primary.main};\n color: ${props => props.theme.colors.primary.main};\n font-weight: normal;\n margin-left: 0.5em;\n padding: 4px 8px 4px;\n display: inline-block;\n text-decoration: none;\n cursor: pointer;\n\n ${extensionsHook('DownloadButton')};\n`;\n\nexport const InfoSpan = styled.span`\n &::before {\n content: '|';\n display: inline-block;\n opacity: 0.5;\n width: ${delimiterWidth}px;\n text-align: center;\n }\n\n &:last-child::after {\n display: none;\n }\n`;\n\nexport const InfoSpanBoxWrap = styled.div`\n overflow: hidden;\n`;\n\nexport const InfoSpanBox = styled.div`\n display: flex;\n flex-wrap: wrap;\n // hide separator on new lines: idea from https://stackoverflow.com/a/31732902/1749888\n margin-left: -${delimiterWidth}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AppStore } from '../../services/AppStore';\n\nimport { MiddlePanel, Row, Section } from '../../common-elements/';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Markdown } from '../Markdown/Markdown';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport {\n ApiHeader,\n DownloadButton,\n InfoSpan,\n InfoSpanBox,\n InfoSpanBoxWrap,\n} from './styled.elements';\nimport { l } from '../../services/Labels';\n\nexport interface ApiInfoProps {\n store: AppStore;\n}\n\n@observer\nexport class ApiInfo extends React.Component<ApiInfoProps> {\n render() {\n const { store } = this.props;\n const { info, externalDocs } = store.spec;\n const hideDownloadButtons = store.options.hideDownloadButtons;\n\n const downloadUrls = info.downloadUrls;\n const downloadFileName = info.downloadFileName;\n const license =\n (info.license && (\n <InfoSpan>\n License:{' '}\n {info.license.identifier ? (\n info.license.identifier\n ) : (\n <a href={info.license.url}>{info.license.name}</a>\n )}\n </InfoSpan>\n )) ||\n null;\n\n const website =\n (info.contact && info.contact.url && (\n <InfoSpan>\n URL: <a href={info.contact.url}>{info.contact.url}</a>\n </InfoSpan>\n )) ||\n null;\n\n const email =\n (info.contact && info.contact.email && (\n <InfoSpan>\n {info.contact.name || 'E-mail'}:{' '}\n <a href={'mailto:' + info.contact.email}>{info.contact.email}</a>\n </InfoSpan>\n )) ||\n null;\n\n const terms =\n (info.termsOfService && (\n <InfoSpan>\n <a href={info.termsOfService}>Terms of Service</a>\n </InfoSpan>\n )) ||\n null;\n\n const version = (info.version && <span>({info.version})</span>) || null;\n\n return (\n <Section>\n <Row>\n <MiddlePanel className=\"api-info\">\n <ApiHeader>\n {info.title} {version}\n </ApiHeader>\n {!hideDownloadButtons && (\n <p>\n {l('downloadSpecification')}:\n {downloadUrls?.map(({ title, url }) => {\n return (\n <DownloadButton\n download={downloadFileName || true}\n target=\"_blank\"\n href={url}\n rel=\"noreferrer\"\n key={url}\n >\n {title}\n </DownloadButton>\n );\n })}\n </p>\n )}\n <StyledMarkdownBlock>\n {((info.license || info.contact || info.termsOfService) && (\n <InfoSpanBoxWrap>\n <InfoSpanBox>\n {email} {website} {license} {terms}\n </InfoSpanBox>\n </InfoSpanBoxWrap>\n )) ||\n null}\n </StyledMarkdownBlock>\n <Markdown source={store.spec.info.summary} data-role=\"redoc-summary\" />\n <Markdown source={store.spec.info.description} data-role=\"redoc-description\" />\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </MiddlePanel>\n </Row>\n </Section>\n );\n }\n}\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nexport const LogoImgEl = styled.img`\n max-height: ${props => props.theme.logo.maxHeight};\n max-width: ${props => props.theme.logo.maxWidth};\n padding: ${props => props.theme.logo.gutter};\n width: 100%;\n display: block;\n`;\n\nexport const LogoWrap = styled.div`\n text-align: center;\n`;\n\nconst Link = styled.a`\n display: inline-block;\n`;\n\n// eslint-disable-next-line react/display-name\nexport const LinkWrap = url => Component => <Link href={url}>{Component}</Link>;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { OpenAPIInfo } from '../../types';\nimport { LinkWrap, LogoImgEl, LogoWrap } from './styled.elements';\n\n@observer\nexport class ApiLogo extends React.Component<{ info: OpenAPIInfo }> {\n render() {\n const { info } = this.props;\n const logoInfo = info['x-logo'];\n if (!logoInfo || !logoInfo.url) {\n return null;\n }\n\n const logoHref = logoInfo.href || (info.contact && info.contact.url);\n\n // Use the english word logo if no alt text is provided\n const altText = logoInfo.altText ? logoInfo.altText : 'logo';\n\n const logo = <LogoImgEl src={logoInfo.url} alt={altText} />;\n return (\n <LogoWrap style={{ backgroundColor: logoInfo.backgroundColor }}>\n {logoHref ? LinkWrap(logoHref)(logo) : logo}\n </LogoWrap>\n );\n }\n}\n","import * as React from 'react';\n\nimport { AppStore, MarkdownRenderer, RedocNormalizedOptions } from '../../services';\nimport { BaseMarkdownProps } from './Markdown';\nimport { SanitizedMarkdownHTML } from './SanitizedMdBlock';\n\nimport { OptionsConsumer } from '../OptionsProvider';\nimport { StoreConsumer } from '../StoreBuilder';\n\nexport interface AdvancedMarkdownProps extends BaseMarkdownProps {\n htmlWrap?: (part: JSX.Element) => JSX.Element;\n parentId?: string;\n}\n\nexport class AdvancedMarkdown extends React.Component<AdvancedMarkdownProps> {\n render() {\n return (\n <OptionsConsumer>\n {options => (\n <StoreConsumer>{store => this.renderWithOptionsAndStore(options, store)}</StoreConsumer>\n )}\n </OptionsConsumer>\n );\n }\n\n renderWithOptionsAndStore(options: RedocNormalizedOptions, store?: AppStore) {\n const { source, htmlWrap = i => i } = this.props;\n if (!store) {\n throw new Error('When using components in markdown, store prop must be provided');\n }\n\n const renderer = new MarkdownRenderer(options, this.props.parentId);\n const parts = renderer.renderMdWithComponents(source);\n\n if (!parts.length) {\n return null;\n }\n\n return parts.map((part, idx) => {\n if (typeof part === 'string') {\n return React.cloneElement(\n htmlWrap(<SanitizedMarkdownHTML html={part} inline={false} compact={false} />),\n { key: idx },\n );\n }\n const PartComponent = part.component as React.FunctionComponent;\n return <PartComponent key={idx} {...{ ...part.props, ...part.propsSelector(store) }} />;\n });\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"classnames\");","import * as classnames from 'classnames';\nimport { darken } from 'polished';\n\nimport { deprecatedCss, ShelfIcon } from '../../common-elements';\nimport styled, { css, media, ResolvedThemeInterface } from '../../styled-components';\n\nexport const OperationBadge = styled.span.attrs((props: { type: string; color?: string }) => ({\n className: `operation-type ${props.type}`,\n}))<{ type: string; color?: string }>`\n width: 9ex;\n display: inline-block;\n height: ${props => props.theme.typography.code.fontSize};\n line-height: ${props => props.theme.typography.code.fontSize};\n background-color: ${props => props.color || '#333'};\n border-radius: 3px;\n background-repeat: no-repeat;\n background-position: 6px 4px;\n font-size: 7px;\n font-family: Verdana, sans-serif; // web-safe\n color: white;\n text-transform: uppercase;\n text-align: center;\n font-weight: bold;\n vertical-align: middle;\n margin-right: 6px;\n margin-top: 2px;\n\n &.get {\n background-color: ${({ theme }) => theme.colors.http.get};\n }\n\n &.post {\n background-color: ${({ theme }) => theme.colors.http.post};\n }\n\n &.put {\n background-color: ${({ theme }) => theme.colors.http.put};\n }\n\n &.options {\n background-color: ${({ theme }) => theme.colors.http.options};\n }\n\n &.patch {\n background-color: ${({ theme }) => theme.colors.http.patch};\n }\n\n &.delete {\n background-color: ${({ theme }) => theme.colors.http.delete};\n }\n\n &.basic {\n background-color: ${({ theme }) => theme.colors.http.basic};\n }\n\n &.link {\n background-color: ${({ theme }) => theme.colors.http.link};\n }\n\n &.head {\n background-color: ${({ theme }) => theme.colors.http.head};\n }\n\n &.hook {\n background-color: ${({ theme }) => theme.colors.primary.main};\n }\n\n &.schema {\n background-color: ${({ theme }) => theme.colors.http.basic};\n }\n`;\n\nfunction menuItemActive(\n depth,\n { theme }: { theme: ResolvedThemeInterface },\n option: string,\n): string {\n if (depth > 1) {\n return theme.sidebar.level1Items[option];\n } else if (depth === 1) {\n return theme.sidebar.groupItems[option];\n } else {\n return '';\n }\n}\n\nexport const MenuItemUl = styled.ul<{ $expanded: boolean }>`\n margin: 0;\n padding: 0;\n\n &:first-child {\n padding-bottom: 32px;\n }\n\n & & {\n font-size: 0.929em;\n }\n\n ${props => (props.$expanded ? '' : 'display: none;')};\n`;\n\nexport const MenuItemLi = styled.li<{ depth: number }>`\n list-style: none inside none;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n ${props => (props.depth === 0 ? 'margin-top: 15px' : '')};\n`;\n\nexport const menuItemDepth = {\n 0: css`\n opacity: 0.7;\n text-transform: ${({ theme }) => theme.sidebar.groupItems.textTransform};\n font-size: 0.8em;\n padding-bottom: 0;\n cursor: default;\n `,\n 1: css`\n font-size: 0.929em;\n text-transform: ${({ theme }) => theme.sidebar.level1Items.textTransform};\n `,\n};\n\nexport interface MenuItemLabelType {\n $depth: number;\n $active: boolean;\n $deprecated?: boolean;\n $type?: string;\n}\n\nexport const MenuItemLabel = styled.label.attrs((props: MenuItemLabelType) => ({\n className: classnames('-depth' + props.$depth, {\n active: props.$active,\n }),\n}))<MenuItemLabelType>`\n cursor: pointer;\n color: ${props =>\n props.$active\n ? menuItemActive(props.$depth, props, 'activeTextColor')\n : props.theme.sidebar.textColor};\n margin: 0;\n padding: 12.5px ${props => props.theme.spacing.unit * 4}px;\n ${({ $depth, $type, theme }) =>\n ($type === 'section' && $depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''}\n display: flex;\n justify-content: space-between;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n ${props => menuItemDepth[props.$depth]};\n background-color: ${props =>\n props.$active\n ? menuItemActive(props.$depth, props, 'activeBackgroundColor')\n : props.theme.sidebar.backgroundColor};\n\n ${props => (props.$deprecated && deprecatedCss) || ''};\n\n &:hover {\n color: ${props => menuItemActive(props.$depth, props, 'activeTextColor')};\n background-color: ${props => menuItemActive(props.$depth, props, 'activeBackgroundColor')};\n }\n\n ${ShelfIcon} {\n height: ${({ theme }) => theme.sidebar.arrow.size};\n width: ${({ theme }) => theme.sidebar.arrow.size};\n polygon {\n fill: ${({ theme }) => theme.sidebar.arrow.color};\n }\n }\n`;\n\nexport const MenuItemTitle = styled.span<{ width?: string }>`\n display: inline-block;\n vertical-align: middle;\n width: ${props => (props.width ? props.width : 'auto')};\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const RedocAttribution = styled.div`\n ${({ theme }) => css`\n font-size: 0.8em;\n margin-top: ${theme.spacing.unit * 2}px;\n text-align: center;\n position: fixed;\n width: ${theme.sidebar.width};\n bottom: 0;\n background: ${theme.sidebar.backgroundColor};\n\n a,\n a:visited,\n a:hover {\n color: ${theme.sidebar.textColor} !important;\n padding: ${theme.spacing.unit}px 0;\n border-top: 1px solid ${darken(0.1, theme.sidebar.backgroundColor)};\n text-decoration: none;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `};\n img {\n width: 15px;\n margin-right: 5px;\n }\n\n ${media.lessThan('small')`\n width: 100%;\n `};\n`;\n","import * as React from 'react';\n\nimport { darken } from 'polished';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationBadge } from '../SideMenu/styled.elements';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport styled from '../../styled-components';\nimport { Badge } from '../../common-elements/';\nimport { l } from '../../services/Labels';\n\nexport interface CallbackTitleProps {\n name: string;\n opened?: boolean;\n httpVerb: string;\n deprecated?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nexport const CallbackTitle = (props: CallbackTitleProps) => {\n const { name, opened, className, onClick, httpVerb, deprecated } = props;\n\n return (\n <CallbackTitleWrapper className={className} onClick={onClick || undefined}>\n <OperationBadgeStyled type={httpVerb}>{shortenHTTPVerb(httpVerb)}</OperationBadgeStyled>\n <ShelfIcon size={'1.5em'} direction={opened ? 'down' : 'right'} float={'left'} />\n <CallbackName $deprecated={deprecated}>{name}</CallbackName>\n {deprecated ? <Badge type=\"warning\"> {l('deprecated')} </Badge> : null}\n </CallbackTitleWrapper>\n );\n};\n\nconst CallbackTitleWrapper = styled.button`\n border: 0;\n width: 100%;\n text-align: left;\n & > * {\n vertical-align: middle;\n }\n\n ${ShelfIcon} {\n polygon {\n fill: ${({ theme }) => darken(theme.colors.tonalOffset, theme.colors.gray[100])};\n }\n }\n`;\n\nconst CallbackName = styled.span<{ $deprecated?: boolean }>`\n text-decoration: ${props => (props.$deprecated ? 'line-through' : 'none')};\n margin-right: 8px;\n`;\n\nconst OperationBadgeStyled = styled(OperationBadge)`\n margin: 0 5px 0 0;\n`;\n","import styled from '../../styled-components';\nimport { CallbackTitle } from './CallbackTitle';\nimport { darken } from 'polished';\n\nexport const StyledCallbackTitle = styled(CallbackTitle)`\n padding: 10px;\n border-radius: 2px;\n margin-bottom: 4px;\n line-height: 1.5em;\n background-color: ${({ theme }) => theme.colors.gray[100]};\n cursor: pointer;\n outline-color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.colors.gray[100])};\n`;\n\nexport const CallbackDetailsWrap = styled.div`\n padding: 10px 25px;\n background-color: ${({ theme }) => theme.colors.gray[50]};\n margin-bottom: 5px;\n margin-top: 5px;\n`;\n","import * as React from 'react';\n\nimport { ClipboardService } from '../../services';\n\nexport class SelectOnClick extends React.PureComponent<React.PropsWithChildren<any>> {\n private child: HTMLDivElement | null;\n selectElement = () => {\n ClipboardService.selectElement(this.child);\n };\n\n render() {\n const { children } = this.props;\n return (\n <div\n ref={el => (this.child = el)}\n onClick={this.selectElement}\n onFocus={this.selectElement}\n tabIndex={0}\n role=\"button\"\n >\n {children}\n </div>\n );\n }\n}\n","import styled from '../../styled-components';\n\nexport const OperationEndpointWrap = styled.div`\n cursor: pointer;\n position: relative;\n margin-bottom: 5px;\n`;\n\nexport const ServerRelativeURL = styled.span`\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin-left: 10px;\n flex: 1;\n overflow-x: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const EndpointInfo = styled.button<{ $expanded?: boolean; $inverted?: boolean }>`\n outline: 0;\n color: inherit;\n width: 100%;\n text-align: left;\n cursor: pointer;\n padding: 10px 30px 10px ${props => (props.$inverted ? '10px' : '20px')};\n border-radius: ${props => (props.$inverted ? '0' : '4px 4px 0 0')};\n background-color: ${props =>\n props.$inverted ? 'transparent' : props.theme.codeBlock.backgroundColor};\n display: flex;\n white-space: nowrap;\n align-items: center;\n border: ${props => (props.$inverted ? '0' : '1px solid transparent')};\n border-bottom: ${props => (props.$inverted ? '1px solid #ccc' : '0')};\n transition: border-color 0.25s ease;\n\n ${props =>\n (props.$expanded && !props.$inverted && `border-color: ${props.theme.colors.border.dark};`) ||\n ''}\n\n .${ServerRelativeURL} {\n color: ${props => (props.$inverted ? props.theme.colors.text.primary : '#ffffff')};\n }\n &:focus {\n box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.45), 0 2px 0 rgba(128, 128, 128, 0.25);\n }\n`;\n\nexport const HttpVerb = styled.span.attrs((props: { type: string; $compact?: boolean }) => ({\n className: `http-verb ${props.type}`,\n}))<{ type: string; $compact?: boolean }>`\n font-size: ${props => (props.$compact ? '0.8em' : '0.929em')};\n line-height: ${props => (props.$compact ? '18px' : '20px')};\n background-color: ${props => props.theme.colors.http[props.type] || '#999999'};\n color: #ffffff;\n padding: ${props => (props.$compact ? '2px 8px' : '3px 10px')};\n text-transform: uppercase;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n margin: 0;\n`;\n\nexport const ServersOverlay = styled.div<{ $expanded: boolean }>`\n position: absolute;\n width: 100%;\n z-index: 100;\n background: ${props => props.theme.rightPanel.servers.overlay.backgroundColor};\n color: ${props => props.theme.rightPanel.servers.overlay.textColor};\n box-sizing: border-box;\n box-shadow: 0 0 6px rgba(0, 0, 0, 0.33);\n overflow: hidden;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n transition: all 0.25s ease;\n visibility: hidden;\n ${props => (props.$expanded ? 'visibility: visible;' : 'transform: translateY(-50%) scaleY(0);')}\n`;\n\nexport const ServerItem = styled.div`\n padding: 10px;\n`;\n\nexport const ServerUrl = styled.div`\n padding: 5px;\n border: 1px solid #ccc;\n background: ${props => props.theme.rightPanel.servers.url.backgroundColor};\n word-break: break-all;\n color: ${props => props.theme.colors.primary.main};\n > span {\n color: ${props => props.theme.colors.text.primary};\n }\n`;\n","import * as React from 'react';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationModel } from '../../services';\nimport { Markdown } from '../Markdown/Markdown';\nimport { OptionsContext } from '../OptionsProvider';\nimport { SelectOnClick } from '../SelectOnClick/SelectOnClick';\n\nimport { expandDefaultServerVariables, getBasePath } from '../../utils';\nimport {\n EndpointInfo,\n HttpVerb,\n OperationEndpointWrap,\n ServerItem,\n ServerRelativeURL,\n ServersOverlay,\n ServerUrl,\n} from './styled.elements';\n\nexport interface EndpointProps {\n operation: OperationModel;\n\n hideHostname?: boolean;\n inverted?: boolean;\n compact?: boolean;\n}\n\nexport interface EndpointState {\n expanded: boolean;\n}\n\nexport class Endpoint extends React.Component<EndpointProps, EndpointState> {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n }\n\n toggle = () => {\n this.setState({ expanded: !this.state.expanded });\n };\n\n render() {\n const { operation, inverted, hideHostname } = this.props;\n const { expanded } = this.state;\n\n // TODO: highlight server variables, e.g. https://{user}.test.com\n return (\n <OptionsContext.Consumer>\n {options => (\n <OperationEndpointWrap>\n <EndpointInfo onClick={this.toggle} $expanded={expanded} $inverted={inverted}>\n <HttpVerb type={operation.httpVerb} $compact={this.props.compact}>\n {operation.httpVerb}\n </HttpVerb>\n <ServerRelativeURL>{operation.path}</ServerRelativeURL>\n <ShelfIcon\n float={'right'}\n color={inverted ? 'black' : 'white'}\n size={'20px'}\n direction={expanded ? 'up' : 'down'}\n style={{ marginRight: '-25px' }}\n />\n </EndpointInfo>\n <ServersOverlay $expanded={expanded} aria-hidden={!expanded}>\n {operation.servers.map(server => {\n const normalizedUrl = options.expandDefaultServerVariables\n ? expandDefaultServerVariables(server.url, server.variables)\n : server.url;\n const basePath = getBasePath(normalizedUrl);\n return (\n <ServerItem key={normalizedUrl}>\n <Markdown source={server.description || ''} compact={true} />\n <SelectOnClick>\n <ServerUrl>\n <span>\n {hideHostname || options.hideHostname\n ? basePath === '/'\n ? ''\n : basePath\n : normalizedUrl}\n </span>\n {operation.path}\n </ServerUrl>\n </SelectOnClick>\n </ServerItem>\n );\n })}\n </ServersOverlay>\n </OperationEndpointWrap>\n )}\n </OptionsContext.Consumer>\n );\n }\n}\n","import * as React from 'react';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldModel } from '../../services/models';\nimport { Field } from '../Fields/Field';\n\nimport { mapWithLast } from '../../utils';\n\nexport interface ParametersGroupProps {\n place: string;\n parameters: FieldModel[];\n}\n\nexport class ParametersGroup extends React.PureComponent<ParametersGroupProps, any> {\n render() {\n const { place, parameters } = this.props;\n if (!parameters || !parameters.length) {\n return null;\n }\n\n return (\n <div key={place}>\n <UnderlinedHeader>{place} Parameters</UnderlinedHeader>\n <PropertiesTable>\n <tbody>\n {mapWithLast(parameters, (field, isLast) => (\n <Field key={field.name} isLast={isLast} field={field} showExamples={true} />\n ))}\n </tbody>\n </PropertiesTable>\n </div>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, DropdownProps } from '../../common-elements/Dropdown';\nimport { MediaContentModel, MediaTypeModel, SchemaModel } from '../../services/models';\nimport { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements';\n\nexport interface MediaTypeChildProps {\n schema: SchemaModel;\n mime?: string;\n}\n\nexport interface MediaTypesSwitchProps {\n content?: MediaContentModel;\n withLabel?: boolean;\n\n renderDropdown: (props: DropdownProps) => JSX.Element;\n children: (activeMime: MediaTypeModel) => JSX.Element;\n}\n\n@observer\nexport class MediaTypesSwitch extends React.Component<MediaTypesSwitchProps> {\n switchMedia = ({ idx }: DropdownOption) => {\n if (this.props.content && idx !== undefined) {\n this.props.content.activate(idx);\n }\n };\n\n render() {\n const { content } = this.props;\n if (!content || !content.mediaTypes || !content.mediaTypes.length) {\n return null;\n }\n const activeMimeIdx = content.activeMimeIdx;\n\n const options = content.mediaTypes.map((mime, idx) => {\n return {\n value: mime.name,\n idx,\n };\n });\n\n const Wrapper = ({ children }) =>\n this.props.withLabel ? (\n <DropdownWrapper>\n <DropdownLabel>Content type</DropdownLabel>\n {children}\n </DropdownWrapper>\n ) : (\n children\n );\n\n return (\n <>\n <Wrapper>\n {this.props.renderDropdown({\n value: options[activeMimeIdx].value,\n options,\n onChange: this.switchMedia,\n ariaLabel: 'Content type',\n })}\n </Wrapper>\n {this.props.children(content.active)}\n </>\n );\n }\n}\n","import * as React from 'react';\nimport { DropdownOrLabel, DropdownOrLabelProps } from '../DropdownOrLabel/DropdownOrLabel';\nimport { ParametersGroup } from './ParametersGroup';\n\nimport { UnderlinedHeader } from '../../common-elements';\n\nimport { MediaContentModel } from '../../services';\nimport { FieldModel, RequestBodyModel } from '../../services/models';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { Schema } from '../Schema';\n\nimport { Markdown } from '../Markdown/Markdown';\nimport { ConstraintsView } from '../Fields/FieldConstraints';\nimport { RequiredLabel } from '../../common-elements/fields';\nimport styled from '../../styled-components';\n\nfunction safePush(obj, prop, item) {\n if (!obj[prop]) {\n obj[prop] = [];\n }\n obj[prop].push(item);\n}\n\nexport interface ParametersProps {\n parameters?: FieldModel[];\n body?: RequestBodyModel;\n}\n\nconst PARAM_PLACES = ['path', 'query', 'cookie', 'header'];\n\nexport class Parameters extends React.PureComponent<ParametersProps> {\n orderParams(params: FieldModel[]): Record<string, FieldModel[]> {\n const res = {};\n params.forEach(param => {\n safePush(res, param.in, param);\n });\n return res;\n }\n\n render() {\n const { body, parameters = [] } = this.props;\n if (body === undefined && parameters === undefined) {\n return null;\n }\n\n const paramsMap = this.orderParams(parameters);\n\n const paramsPlaces = parameters.length > 0 ? PARAM_PLACES : [];\n\n const bodyContent = body && body.content;\n\n const bodyDescription = body && body.description;\n\n const bodyRequired = body && body.required;\n\n return (\n <>\n {paramsPlaces.map(place => (\n <ParametersGroup key={place} place={place} parameters={paramsMap[place]} />\n ))}\n {bodyContent && (\n <BodyContent\n content={bodyContent}\n description={bodyDescription}\n bodyRequired={bodyRequired}\n />\n )}\n </>\n );\n }\n}\n\nfunction DropdownWithinHeader({\n bodyRequired,\n ...props\n}: DropdownOrLabelProps & { bodyRequired?: boolean }) {\n const isRequired = typeof bodyRequired === 'boolean' && !!bodyRequired;\n const isOptional = typeof bodyRequired === 'boolean' && !bodyRequired;\n\n return (\n <UnderlinedHeader key=\"header\">\n Request Body schema: <DropdownOrLabel {...props} />\n {isRequired && <RequiredBody>required</RequiredBody>}\n {isOptional && <OptionalBody>optional</OptionalBody>}\n </UnderlinedHeader>\n );\n}\n\nexport function BodyContent(props: {\n content: MediaContentModel;\n description?: string;\n bodyRequired?: boolean;\n}): JSX.Element {\n const { content, description, bodyRequired } = props;\n const { isRequestType } = content;\n return (\n <MediaTypesSwitch\n content={content}\n renderDropdown={props => <DropdownWithinHeader bodyRequired={bodyRequired} {...props} />}\n >\n {({ schema }) => {\n return (\n <>\n {description !== undefined && <Markdown source={description} />}\n {schema?.type === 'object' && (\n <ConstraintsView constraints={schema?.constraints || []} />\n )}\n <Schema\n skipReadOnly={isRequestType}\n skipWriteOnly={!isRequestType}\n key=\"schema\"\n schema={schema}\n />\n </>\n );\n }}\n </MediaTypesSwitch>\n );\n}\n\nconst commonStyles = `\n text-transform: lowercase;\n margin-left: 0;\n line-height: 1.5em;\n`;\n\nconst RequiredBody = styled(RequiredLabel)`\n ${commonStyles}\n`;\n\nconst OptionalBody = styled('div')`\n ${commonStyles}\n color: ${({ theme }) => theme.colors.text.secondary};\n font-size: ${props => props.theme.schema.labelsTextSize};\n`;\n","import * as React from 'react';\n\nimport { Code } from './styled.elements';\nimport { ShelfIcon } from '../../common-elements';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface ResponseTitleProps {\n code: string;\n title: string;\n type: string;\n empty?: boolean;\n opened?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nfunction ResponseTitleComponent({\n title,\n type,\n empty,\n code,\n opened,\n className,\n onClick,\n}: ResponseTitleProps): React.ReactElement {\n return (\n <button\n className={className}\n onClick={(!empty && onClick) || undefined}\n aria-expanded={opened}\n disabled={empty}\n >\n {!empty && (\n <ShelfIcon\n size={'1.5em'}\n color={type}\n direction={opened ? 'down' : 'right'}\n float={'left'}\n />\n )}\n <Code>{code} </Code>\n <Markdown compact={true} inline={true} source={title} />\n </button>\n );\n}\n\nexport const ResponseTitle = React.memo<ResponseTitleProps>(ResponseTitleComponent);\n","import { UnderlinedHeader } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { ResponseTitle } from './ResponseTitle';\n\nexport const StyledResponseTitle = styled(ResponseTitle)`\n display: block;\n border: 0;\n width: 100%;\n text-align: left;\n padding: 10px;\n border-radius: 2px;\n margin-bottom: 4px;\n line-height: 1.5em;\n cursor: pointer;\n\n color: ${props => props.theme.colors.responses[props.type].color};\n background-color: ${props => props.theme.colors.responses[props.type].backgroundColor};\n &:focus {\n outline: auto ${props => props.theme.colors.responses[props.type].color};\n }\n ${props =>\n (props.empty &&\n `\ncursor: default;\n&::before {\n content: \"—\";\n font-weight: bold;\n width: 1.5em;\n text-align: center;\n display: inline-block;\n vertical-align: top;\n}\n&:focus {\n outline: 0;\n}\n`) ||\n ''};\n`;\n\nexport const ResponseDetailsWrap = styled.div`\n padding: 10px;\n`;\n\nexport const HeadersCaption = styled(UnderlinedHeader).attrs({\n as: 'caption',\n})`\n text-align: left;\n margin-top: 1em;\n caption-side: top;\n`;\n\nexport const Code = styled.strong`\n vertical-align: top;\n`;\n","import * as React from 'react';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldModel } from '../../services/models';\nimport { mapWithLast } from '../../utils';\nimport { Field } from '../Fields/Field';\nimport { HeadersCaption } from './styled.elements';\n\nexport interface ResponseHeadersProps {\n headers?: FieldModel[];\n}\n\nexport class ResponseHeaders extends React.PureComponent<ResponseHeadersProps> {\n render() {\n const { headers } = this.props;\n if (headers === undefined || headers.length === 0) {\n return null;\n }\n return (\n <PropertiesTable>\n <HeadersCaption> Response Headers </HeadersCaption>\n <tbody>\n {mapWithLast(headers, (header, isLast) => (\n <Field isLast={isLast} key={header.name} field={header} showExamples={true} />\n ))}\n </tbody>\n </PropertiesTable>\n );\n }\n}\n","import * as React from 'react';\n\nimport { ResponseModel } from '../../services/models';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { Schema } from '../Schema';\n\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { ResponseHeaders } from './ResponseHeaders';\nimport { ConstraintsView } from '../Fields/FieldConstraints';\n\nexport class ResponseDetails extends React.PureComponent<{ response: ResponseModel }> {\n render() {\n const { description, extensions, headers, content } = this.props.response;\n return (\n <>\n {description && <Markdown source={description} />}\n <Extensions extensions={extensions} />\n <ResponseHeaders headers={headers} />\n <MediaTypesSwitch content={content} renderDropdown={this.renderDropdown}>\n {({ schema }) => {\n return (\n <>\n {schema?.type === 'object' && (\n <ConstraintsView constraints={schema?.constraints || []} />\n )}\n <Schema skipWriteOnly={true} key=\"schema\" schema={schema} />\n </>\n );\n }}\n </MediaTypesSwitch>\n </>\n );\n }\n\n private renderDropdown = props => {\n return (\n <UnderlinedHeader key=\"header\">\n Response Schema: <DropdownOrLabel {...props} />\n </UnderlinedHeader>\n );\n };\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport type { ResponseModel, MediaTypeModel } from '../../services/models';\nimport { ResponseDetails } from './ResponseDetails';\nimport { ResponseDetailsWrap, StyledResponseTitle } from './styled.elements';\n\nexport interface ResponseViewProps {\n response: ResponseModel;\n}\n\nexport const ResponseView = observer(({ response }: ResponseViewProps): React.ReactElement => {\n const { extensions, headers, type, summary, description, code, expanded, content } = response;\n\n const mimes = React.useMemo<MediaTypeModel[]>(\n () =>\n content === undefined ? [] : content.mediaTypes.filter(mime => mime.schema !== undefined),\n [content],\n );\n\n const empty = React.useMemo<boolean>(\n () =>\n (!extensions || Object.keys(extensions).length === 0) &&\n headers.length === 0 &&\n mimes.length === 0 &&\n !description,\n [extensions, headers, mimes, description],\n );\n\n return (\n <div>\n <StyledResponseTitle\n onClick={() => response.toggle()}\n type={type}\n empty={empty}\n title={summary || ''}\n code={code}\n opened={expanded}\n />\n {expanded && !empty && (\n <ResponseDetailsWrap>\n <ResponseDetails response={response} />\n </ResponseDetailsWrap>\n )}\n </div>\n );\n});\n","import * as React from 'react';\nimport { l } from '../../services/Labels';\nimport { ResponseModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { ResponseView } from './Response';\n\nconst ResponsesHeader = styled.h3`\n font-size: 1.3em;\n padding: 0.2em 0;\n margin: 3em 0 1.1em;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: normal;\n`;\n\nexport interface ResponseListProps {\n responses: ResponseModel[];\n isCallback?: boolean;\n}\n\nexport class ResponsesList extends React.PureComponent<ResponseListProps> {\n render() {\n const { responses, isCallback } = this.props;\n\n if (!responses || responses.length === 0) {\n return null;\n }\n\n return (\n <div>\n <ResponsesHeader>{isCallback ? l('callbackResponses') : l('responses')}</ResponsesHeader>\n {responses.map(response => {\n return <ResponseView key={response.code} response={response} />;\n })}\n </div>\n );\n }\n}\n","import { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n ScopeName,\n SecurityRequirementAndWrap,\n SecurityRequirementOrWrap,\n} from './styled.elements';\nimport * as React from 'react';\nimport { AUTH_TYPES } from '../SecuritySchemes/SecuritySchemes';\n\nexport interface SecurityRequirementProps {\n security: SecurityRequirementModel;\n showSecuritySchemeType?: boolean;\n expanded: boolean;\n}\n\nexport function SecurityHeader(props: SecurityRequirementProps) {\n const { security, showSecuritySchemeType, expanded } = props;\n\n const grouping = security.schemes.length > 1;\n if (security.schemes.length === 0)\n return <SecurityRequirementOrWrap $expanded={expanded}>None</SecurityRequirementOrWrap>;\n return (\n <SecurityRequirementOrWrap $expanded={expanded}>\n {grouping && '('}\n {security.schemes.map(scheme => {\n return (\n <SecurityRequirementAndWrap key={scheme.id}>\n {showSecuritySchemeType && `${AUTH_TYPES[scheme.type] || scheme.type}: `}\n <i>{scheme.displayName}</i>\n {expanded && scheme.scopes.length\n ? [\n ' (',\n scheme.scopes.map<React.ReactNode>(scope => (\n <ScopeName key={scope}>{scope}</ScopeName>\n )),\n ') ',\n ]\n : null}\n </SecurityRequirementAndWrap>\n );\n })}\n {grouping && ') '}\n </SecurityRequirementOrWrap>\n );\n}\n","import * as React from 'react';\n\nexport const RequiredScopesRow = ({ scopes }: { scopes: string[] }): JSX.Element | null => {\n if (!scopes.length) return null;\n\n return (\n <div>\n <b>Required scopes: </b>\n {scopes.map((scope, idx) => {\n return (\n <React.Fragment key={idx}>\n <code>{scope}</code>{' '}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n AuthHeader,\n AuthHeaderColumn,\n SecuritiesColumn,\n SecurityDetailsStyle,\n Wrap,\n} from './styled.elements';\nimport { useStore } from '../StoreBuilder';\nimport { SecurityHeader } from './SecurityHeader';\nimport { RequiredScopesRow } from './RequiredScopesRow';\nimport { AUTH_TYPES } from '../SecuritySchemes/SecuritySchemes';\nimport { Markdown } from '../Markdown/Markdown';\nimport { SecurityDetails } from './SecurityDetails';\nimport { ShelfIcon } from '../../common-elements';\n\nexport interface SecurityRequirementsProps {\n securities: SecurityRequirementModel[];\n}\n\nexport function SecurityRequirements(props: SecurityRequirementsProps) {\n const store = useStore();\n const showSecuritySchemeType = store?.options.showSecuritySchemeType;\n const [expanded, setExpanded] = useState(false);\n\n const { securities } = props;\n\n if (!securities?.length || store?.options.hideSecuritySection) {\n return null;\n }\n\n const operationSecuritySchemes = store?.spec.securitySchemes.schemes.filter(({ id }) => {\n return securities.find(security => security.schemes.find(scheme => scheme.id === id));\n });\n\n return (\n <>\n <Wrap $expanded={expanded}>\n <AuthHeaderColumn onClick={() => setExpanded(!expanded)}>\n <AuthHeader>Authorizations:</AuthHeader>\n <ShelfIcon size={'1.3em'} direction={expanded ? 'down' : 'right'} />\n </AuthHeaderColumn>\n <SecuritiesColumn $expanded={expanded}>\n {securities.map((security, idx) => (\n <SecurityHeader\n key={idx}\n expanded={expanded}\n showSecuritySchemeType={showSecuritySchemeType}\n security={security}\n />\n ))}\n </SecuritiesColumn>\n </Wrap>\n {expanded &&\n !!operationSecuritySchemes?.length &&\n operationSecuritySchemes.map((scheme, idx) => (\n <SecurityDetailsStyle key={idx}>\n <h5>\n <LockIcon /> {AUTH_TYPES[scheme.type] || scheme.type}: {scheme.id}\n </h5>\n <Markdown source={scheme.description || ''} />\n <SecurityDetails\n key={scheme.id}\n scheme={scheme}\n RequiredScopes={\n <RequiredScopesRow scopes={getRequiredScopes(scheme.id, securities)} />\n }\n />\n </SecurityDetailsStyle>\n ))}\n </>\n );\n}\n\nconst LockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"11\" height=\"11\">\n <path\n fill=\"currentColor\"\n d=\"M18 10V6A6 6 0 0 0 6 6v4H3v14h18V10h-3zM8 6c0-2.206 1.794-4 4-4s4 1.794 4 4v4H8V6zm11 16H5V12h14v10z\"\n />\n </svg>\n);\n\nfunction getRequiredScopes(id: string, securities: SecurityRequirementModel[]): string[] {\n const allScopes: string[] = [];\n let securitiesLength = securities.length;\n\n while (securitiesLength--) {\n const security = securities[securitiesLength];\n let schemesLength = security.schemes.length;\n while (schemesLength--) {\n const scheme = security.schemes[schemesLength];\n if (scheme.id === id && Array.isArray(scheme.scopes)) {\n allScopes.push(...scheme.scopes);\n }\n }\n }\n\n return Array.from(new Set(allScopes));\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { Endpoint } from '../Endpoint/Endpoint';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { Parameters } from '../Parameters/Parameters';\nimport { ResponsesList } from '../Responses/ResponsesList';\nimport { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement';\nimport { CallbackDetailsWrap } from './styled.elements';\n\nexport interface CallbackDetailsProps {\n operation: OperationModel;\n}\n\n@observer\nexport class CallbackDetails extends React.Component<CallbackDetailsProps> {\n render() {\n const { operation } = this.props;\n const { description, externalDocs } = operation;\n const hasDescription = !!(description || externalDocs);\n\n return (\n <CallbackDetailsWrap>\n {hasDescription && (\n <Description>\n {description !== undefined && <Markdown source={description} />}\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </Description>\n )}\n <Endpoint operation={this.props.operation} inverted={true} compact={true} />\n <Extensions extensions={operation.extensions} />\n <SecurityRequirements securities={operation.security} />\n <Parameters parameters={operation.parameters} body={operation.requestBody} />\n <ResponsesList responses={operation.responses} isCallback={operation.isCallback} />\n </CallbackDetailsWrap>\n );\n }\n}\n\nconst Description = styled.div`\n margin-bottom: ${({ theme }) => theme.spacing.unit * 3}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\nimport { StyledCallbackTitle } from './styled.elements';\nimport { CallbackDetails } from './CallbackDetails';\n\n@observer\nexport class CallbackOperation extends React.Component<{ callbackOperation: OperationModel }> {\n toggle = () => {\n this.props.callbackOperation.toggle();\n };\n\n render() {\n const { name, expanded, httpVerb, deprecated } = this.props.callbackOperation;\n\n return (\n <>\n <StyledCallbackTitle\n onClick={this.toggle}\n name={name}\n opened={expanded}\n httpVerb={httpVerb}\n deprecated={deprecated}\n />\n {expanded && <CallbackDetails operation={this.props.callbackOperation} />}\n </>\n );\n }\n}\n","import * as React from 'react';\n\nimport { CallbackModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { CallbackOperation } from './CallbackOperation';\n\nexport interface CallbacksListProps {\n callbacks: CallbackModel[];\n}\n\nexport class CallbacksList extends React.PureComponent<CallbacksListProps> {\n render() {\n const { callbacks } = this.props;\n\n if (!callbacks || callbacks.length === 0) {\n return null;\n }\n\n return (\n <div>\n <CallbacksHeader> Callbacks </CallbacksHeader>\n {callbacks.map(callback => {\n return callback.operations.map((operation, index) => {\n return (\n <CallbackOperation key={`${callback.name}_${index}`} callbackOperation={operation} />\n );\n });\n })}\n </div>\n );\n }\n}\n\nconst CallbacksHeader = styled.h3`\n font-size: 1.3em;\n padding: 0.2em 0;\n margin: 3em 0 1.1em;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: normal;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownProps, DropdownOption } from '../../common-elements/Dropdown';\nimport { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements';\n\nexport interface GenericChildrenSwitcherProps<T> {\n items?: T[];\n options: DropdownOption[];\n label?: string;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n children: (activeItem: T) => JSX.Element;\n}\n\nexport interface GenericChildrenSwitcherState {\n activeItemIdx: number;\n}\n/**\n * TODO: Refactor this component:\n * Implement rendering dropdown/label directly in this component\n * Accept as a parameter mapper-function for building dropdown option labels\n */\n@observer\nexport class GenericChildrenSwitcher<T> extends React.Component<\n GenericChildrenSwitcherProps<T>,\n GenericChildrenSwitcherState\n> {\n constructor(props) {\n super(props);\n this.state = {\n activeItemIdx: 0,\n };\n }\n\n switchItem = ({ idx }: DropdownOption) => {\n if (this.props.items && idx !== undefined) {\n this.setState({\n activeItemIdx: idx,\n });\n }\n };\n\n render() {\n const { items } = this.props;\n\n if (!items || !items.length) {\n return null;\n }\n\n const Wrapper = ({ children }) =>\n this.props.label ? (\n <DropdownWrapper>\n <DropdownLabel>{this.props.label}</DropdownLabel>\n {children}\n </DropdownWrapper>\n ) : (\n children\n );\n\n return (\n <>\n <Wrapper>\n {this.props.renderDropdown({\n value: this.props.options[this.state.activeItemIdx].value,\n options: this.props.options,\n onChange: this.switchItem,\n ariaLabel: this.props.label || 'Callback',\n })}\n </Wrapper>\n\n {this.props.children(items[this.state.activeItemIdx])}\n </>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { MediaTypeSamples } from './MediaTypeSamples';\n\nimport { MediaContentModel } from '../../services/models';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { InvertedSimpleDropdown, MimeLabel } from './styled.elements';\n\nexport interface PayloadSamplesProps {\n content: MediaContentModel;\n}\n\n@observer\nexport class PayloadSamples extends React.Component<PayloadSamplesProps> {\n render() {\n const mimeContent = this.props.content;\n if (mimeContent === undefined) {\n return null;\n }\n\n return (\n <MediaTypesSwitch content={mimeContent} renderDropdown={this.renderDropdown} withLabel={true}>\n {mediaType => (\n <MediaTypeSamples\n key=\"samples\"\n mediaType={mediaType}\n renderDropdown={this.renderDropdown}\n />\n )}\n </MediaTypesSwitch>\n );\n }\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n}\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { DropdownProps } from '../../common-elements';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { OperationModel } from '../../services/models';\nimport { XPayloadSample } from '../../services/models/Operation';\nimport { isPayloadSample } from '../../services';\n\nexport interface PayloadSampleProps {\n callback: OperationModel;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n}\n\nexport class CallbackPayloadSample extends React.Component<PayloadSampleProps> {\n render() {\n const payloadSample = this.props.callback.codeSamples.find(sample =>\n isPayloadSample(sample),\n ) as XPayloadSample | undefined;\n\n if (!payloadSample) {\n return null;\n }\n\n return (\n <PayloadSampleWrapper>\n <PayloadSamples content={payloadSample.requestBodyContent} />\n </PayloadSampleWrapper>\n );\n }\n}\n\nexport const PayloadSampleWrapper = styled.div`\n margin-top: 15px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { RightPanelHeader } from '../../common-elements';\nimport { RedocNormalizedOptions } from '../../services';\nimport { CallbackModel } from '../../services/models';\nimport { OptionsContext } from '../OptionsProvider';\nimport { GenericChildrenSwitcher } from '../GenericChildrenSwitcher/GenericChildrenSwitcher';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { InvertedSimpleDropdown, MimeLabel } from '../PayloadSamples/styled.elements';\nimport { CallbackPayloadSample } from './CallbackReqSamples';\n\nexport interface CallbackSamplesProps {\n callbacks: CallbackModel[];\n}\n\n@observer\nexport class CallbackSamples extends React.Component<CallbackSamplesProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n\n render() {\n const { callbacks } = this.props;\n\n if (!callbacks || callbacks.length === 0) {\n return null;\n }\n\n const operations = callbacks\n .map(callback => callback.operations.map(operation => operation))\n .reduce((a, b) => a.concat(b), []);\n\n const hasSamples = operations.some(operation => operation.codeSamples.length > 0);\n\n if (!hasSamples) {\n return null;\n }\n\n const dropdownOptions = operations.map((callback, idx) => {\n return {\n value: `${callback.httpVerb.toUpperCase()}: ${callback.name}`,\n idx,\n };\n });\n\n return (\n <div>\n <RightPanelHeader> Callback payload samples </RightPanelHeader>\n\n <SamplesWrapper>\n <GenericChildrenSwitcher\n items={operations}\n renderDropdown={this.renderDropdown}\n label={'Callback'}\n options={dropdownOptions}\n >\n {callback => (\n <CallbackPayloadSample\n key=\"callbackPayloadSample\"\n callback={callback}\n renderDropdown={this.renderDropdown}\n />\n )}\n </GenericChildrenSwitcher>\n </SamplesWrapper>\n </div>\n );\n }\n}\n\nexport const SamplesWrapper = styled.div`\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n padding: ${props => props.theme.spacing.unit * 4}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { isPayloadSample, OperationModel, RedocNormalizedOptions } from '../../services';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { SourceCodeWithCopy } from '../SourceCode/SourceCode';\n\nimport { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';\nimport { OptionsContext } from '../OptionsProvider';\nimport { l } from '../../services/Labels';\n\nexport interface RequestSamplesProps {\n operation: OperationModel;\n}\n\n@observer\nexport class RequestSamples extends React.Component<RequestSamplesProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n operation: OperationModel;\n\n render() {\n const { operation } = this.props;\n const samples = operation.codeSamples;\n\n const hasSamples = samples.length > 0;\n const hideTabList = samples.length === 1 ? this.context.hideSingleRequestSampleTab : false;\n return (\n (hasSamples && (\n <div>\n <RightPanelHeader> {l('requestSamples')} </RightPanelHeader>\n\n <Tabs defaultIndex={0}>\n <TabList hidden={hideTabList}>\n {samples.map(sample => (\n <Tab key={sample.lang + '_' + (sample.label || '')}>\n {sample.label !== undefined ? sample.label : sample.lang}\n </Tab>\n ))}\n </TabList>\n {samples.map(sample => (\n <TabPanel key={sample.lang + '_' + (sample.label || '')}>\n {isPayloadSample(sample) ? (\n <div>\n <PayloadSamples content={sample.requestBodyContent} />\n </div>\n ) : (\n <SourceCodeWithCopy lang={sample.lang} source={sample.source} />\n )}\n </TabPanel>\n ))}\n </Tabs>\n </div>\n )) ||\n null\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\n\nimport { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { l } from '../../services/Labels';\n\nexport interface ResponseSamplesProps {\n operation: OperationModel;\n}\n\n@observer\nexport class ResponseSamples extends React.Component<ResponseSamplesProps> {\n operation: OperationModel;\n\n render() {\n const { operation } = this.props;\n const responses = operation.responses.filter(response => {\n return response.content && response.content.hasSample;\n });\n\n return (\n (responses.length > 0 && (\n <div>\n <RightPanelHeader> {l('responseSamples')} </RightPanelHeader>\n\n <Tabs defaultIndex={0}>\n <TabList>\n {responses.map(response => (\n <Tab className={'tab-' + response.type} key={response.code}>\n {response.code}\n </Tab>\n ))}\n </TabList>\n {responses.map(response => (\n <TabPanel key={response.code}>\n <div>\n <PayloadSamples content={response.content!} />\n </div>\n </TabPanel>\n ))}\n </Tabs>\n </div>\n )) ||\n null\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { Badge, DarkRightPanel, H2, MiddlePanel, Row } from '../../common-elements';\nimport { ShareLink } from '../../common-elements/linkify';\nimport { OperationModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { CallbacksList } from '../Callbacks';\nimport { CallbackSamples } from '../CallbackSamples/CallbackSamples';\nimport { Endpoint } from '../Endpoint/Endpoint';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { OptionsContext } from '../OptionsProvider';\nimport { Parameters } from '../Parameters/Parameters';\nimport { RequestSamples } from '../RequestSamples/RequestSamples';\nimport { ResponsesList } from '../Responses/ResponsesList';\nimport { ResponseSamples } from '../ResponseSamples/ResponseSamples';\nimport { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement';\nimport { SECTION_ATTR } from '../../services';\n\nconst Description = styled.div`\n margin-bottom: ${({ theme }) => theme.spacing.unit * 6}px;\n`;\n\nexport interface OperationProps {\n operation: OperationModel;\n}\n\nexport const Operation = observer(({ operation }: OperationProps): JSX.Element => {\n const {\n name: summary,\n description,\n deprecated,\n externalDocs,\n isWebhook,\n httpVerb,\n badges,\n } = operation;\n const hasDescription = !!(description || externalDocs);\n const { showWebhookVerb } = React.useContext(OptionsContext);\n const badgesBefore = badges.filter(({ position }) => position === 'before');\n const badgesAfter = badges.filter(({ position }) => position === 'after');\n\n return (\n <OptionsContext.Consumer>\n {options => (\n <Row {...{ [SECTION_ATTR]: operation.operationHash }} id={operation.operationHash}>\n <MiddlePanel>\n <H2>\n <ShareLink to={operation.id} />\n {badgesBefore.map(({ name, color }) => (\n <Badge type=\"primary\" key={name} color={color}>\n {name}\n </Badge>\n ))}\n {summary} {deprecated && <Badge type=\"warning\"> Deprecated </Badge>}\n {isWebhook && (\n <Badge type=\"primary\">\n {' '}\n Webhook {showWebhookVerb && httpVerb && '| ' + httpVerb.toUpperCase()}\n </Badge>\n )}\n {badgesAfter.map(({ name, color }) => (\n <Badge type=\"primary\" key={name} color={color}>\n {name}\n </Badge>\n ))}\n </H2>\n {options.pathInMiddlePanel && !isWebhook && (\n <Endpoint operation={operation} inverted={true} />\n )}\n {hasDescription && (\n <Description>\n {description !== undefined && <Markdown source={description} />}\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </Description>\n )}\n <Extensions extensions={operation.extensions} />\n <SecurityRequirements securities={operation.security} />\n <Parameters parameters={operation.parameters} body={operation.requestBody} />\n <ResponsesList responses={operation.responses} />\n <CallbacksList callbacks={operation.callbacks} />\n </MiddlePanel>\n <DarkRightPanel>\n {!options.pathInMiddlePanel && !isWebhook && <Endpoint operation={operation} />}\n <RequestSamples operation={operation} />\n <ResponseSamples operation={operation} />\n <CallbackSamples callbacks={operation.callbacks} />\n </DarkRightPanel>\n </Row>\n )}\n </OptionsContext.Consumer>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown';\nimport { H2, H3, MiddlePanel, Row, Section, ShareLink } from '../../common-elements';\nimport type { ContentItemModel } from '../../services';\nimport type { GroupModel, OperationModel } from '../../services/models';\nimport { Operation } from '../Operation/Operation';\n\n@observer\nexport class ContentItems extends React.Component<{\n items: ContentItemModel[];\n}> {\n render() {\n const items = this.props.items;\n if (items.length === 0) {\n return null;\n }\n return items.map(item => {\n return <ContentItem key={item.id} item={item} />;\n });\n }\n}\n\nexport interface ContentItemProps {\n item: ContentItemModel;\n}\n\n@observer\nexport class ContentItem extends React.Component<ContentItemProps> {\n render() {\n const item = this.props.item;\n let content;\n const { type } = item;\n switch (type) {\n case 'group':\n content = null;\n break;\n case 'tag':\n case 'section':\n content = <SectionItem {...this.props} />;\n break;\n case 'operation':\n content = <OperationItem item={item as any} />;\n break;\n default:\n content = <SectionItem {...this.props} />;\n }\n\n return (\n <>\n {content && (\n <Section id={item.id} $underlined={item.type === 'operation'}>\n {content}\n </Section>\n )}\n {item.items && <ContentItems items={item.items} />}\n </>\n );\n }\n}\n\nconst middlePanelWrap = component => <MiddlePanel $compact={true}>{component}</MiddlePanel>;\n\n@observer\nexport class SectionItem extends React.Component<ContentItemProps> {\n render() {\n const { name, description, externalDocs, level } = this.props.item as GroupModel;\n\n const Header = level === 2 ? H3 : H2;\n return (\n <>\n <Row>\n <MiddlePanel $compact={false}>\n <Header>\n <ShareLink to={this.props.item.id} />\n {name}\n </Header>\n </MiddlePanel>\n </Row>\n <AdvancedMarkdown\n parentId={this.props.item.id}\n source={description || ''}\n htmlWrap={middlePanelWrap}\n />\n {externalDocs && (\n <Row>\n <MiddlePanel>\n <ExternalDocumentation externalDocs={externalDocs} />\n </MiddlePanel>\n </Row>\n )}\n </>\n );\n }\n}\n\n@observer\nexport class OperationItem extends React.Component<{\n item: OperationModel;\n}> {\n render() {\n return <Operation operation={this.props.item} />;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ShelfIcon } from '../../common-elements/shelfs';\nimport type { IMenuItem } from '../../services';\nimport { OperationModel } from '../../services';\nimport { l } from '../../services/Labels';\nimport { scrollIntoViewIfNeeded } from '../../utils';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport { OptionsContext } from '../OptionsProvider';\nimport { MenuItems } from './MenuItems';\nimport { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements';\n\nexport interface MenuItemProps {\n item: IMenuItem;\n onActivate?: (item: IMenuItem) => void;\n withoutChildren?: boolean;\n children?: React.ReactChild;\n}\n\n@observer\nexport class MenuItem extends React.Component<MenuItemProps> {\n ref = React.createRef<HTMLLabelElement>();\n\n activate = (evt: React.MouseEvent<HTMLElement>) => {\n this.props.onActivate!(this.props.item);\n evt.stopPropagation();\n };\n\n componentDidMount() {\n this.scrollIntoViewIfActive();\n }\n\n componentDidUpdate() {\n this.scrollIntoViewIfActive();\n }\n\n scrollIntoViewIfActive() {\n if (this.props.item.active && this.ref.current) {\n scrollIntoViewIfNeeded(this.ref.current);\n }\n }\n\n render() {\n const { item, withoutChildren } = this.props;\n return (\n <MenuItemLi\n tabIndex={0}\n onClick={this.activate}\n onKeyDown={evt => {\n // Space or Enter key will activate the menu item\n if (evt.key === 'Enter' || evt.key === ' ') {\n this.props.onActivate!(this.props.item);\n evt.stopPropagation();\n }\n }}\n depth={item.depth}\n data-item-id={item.id}\n role=\"menuitem\"\n aria-label={item.sidebarLabel}\n aria-expanded={item.expanded}\n >\n {item.type === 'operation' ? (\n <OperationMenuItemContent {...this.props} item={item as OperationModel} />\n ) : (\n <MenuItemLabel $depth={item.depth} $active={item.active} $type={item.type} ref={this.ref}>\n {item.type === 'schema' && <OperationBadge type=\"schema\">schema</OperationBadge>}\n <MenuItemTitle width=\"calc(100% - 38px)\" title={item.sidebarLabel}>\n {item.sidebarLabel}\n {this.props.children}\n </MenuItemTitle>\n {(item.depth > 0 && item.items.length > 0 && (\n <ShelfIcon float={'right'} direction={item.expanded ? 'down' : 'right'} />\n )) ||\n null}\n </MenuItemLabel>\n )}\n {!withoutChildren && item.items && item.items.length > 0 && (\n <MenuItems\n expanded={item.expanded}\n items={item.items}\n onActivate={this.props.onActivate}\n />\n )}\n </MenuItemLi>\n );\n }\n}\n\nexport interface OperationMenuItemContentProps {\n item: OperationModel;\n children?: React.ReactChild;\n}\n\nexport const OperationMenuItemContent = observer((props: OperationMenuItemContentProps) => {\n const { item } = props;\n const ref = React.createRef<HTMLLabelElement>();\n const { showWebhookVerb } = React.useContext(OptionsContext);\n\n React.useEffect(() => {\n if (props.item.active && ref.current) {\n scrollIntoViewIfNeeded(ref.current);\n }\n }, [props.item.active, ref]);\n\n return (\n <MenuItemLabel\n $depth={item.depth}\n $active={item.active}\n $deprecated={item.deprecated}\n ref={ref}\n >\n {item.badges &&\n item.badges?.map(({ name, color }) => (\n <OperationBadge type=\"badge\" color={color} key={name}>\n {name}\n </OperationBadge>\n ))}\n {item.isWebhook ? (\n <OperationBadge type=\"hook\">\n {showWebhookVerb ? item.httpVerb : l('webhook')}\n </OperationBadge>\n ) : (\n <OperationBadge type={item.httpVerb}>{shortenHTTPVerb(item.httpVerb)}</OperationBadge>\n )}\n <MenuItemTitle tabIndex={0} width=\"calc(100% - 38px)\">\n {item.sidebarLabel}\n {props.children}\n </MenuItemTitle>\n </MenuItemLabel>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport type { IMenuItem } from '../../services';\n\nimport { MenuItem } from './MenuItem';\nimport { MenuItemUl } from './styled.elements';\n\nexport interface MenuItemsProps {\n items: IMenuItem[];\n expanded?: boolean;\n onActivate?: (item: IMenuItem) => void;\n style?: React.CSSProperties;\n root?: boolean;\n\n className?: string;\n}\n\n@observer\nexport class MenuItems extends React.Component<MenuItemsProps> {\n render() {\n const { items, root, className } = this.props;\n const expanded = this.props.expanded == null ? true : this.props.expanded;\n return (\n <MenuItemUl\n className={className}\n style={this.props.style}\n $expanded={expanded}\n {...(root ? { role: 'menu' } : {})}\n >\n {items.map((item, idx) => (\n <MenuItem key={idx} item={item} onActivate={this.props.onActivate} />\n ))}\n </MenuItemUl>\n );\n }\n}\n","import { useEffect, useState } from 'react';\nimport * as React from 'react';\n\nexport default function RedoclyLogo(): JSX.Element | null {\n const [isDisplay, setDisplay] = useState(false);\n\n useEffect(() => {\n setDisplay(true);\n }, []);\n\n return isDisplay ? (\n <img\n alt={'redocly logo'}\n onError={() => setDisplay(false)}\n src={'https://cdn.redoc.ly/redoc/logo-mini.svg'}\n />\n ) : null;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services';\nimport type { IMenuItem } from '../../services';\nimport { OptionsContext } from '../OptionsProvider';\nimport { MenuItems } from './MenuItems';\n\nimport { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';\nimport { RedocAttribution } from './styled.elements';\nimport RedoclyLogo from './Logo';\n\n@observer\nexport class SideMenu extends React.Component<{ menu: MenuStore; className?: string }> {\n static contextType = OptionsContext;\n declare context: React.ContextType<typeof OptionsContext>;\n private _updateScroll?: () => void;\n\n render() {\n const store = this.props.menu;\n return (\n <PerfectScrollbarWrap\n updateFn={this.saveScrollUpdate}\n className={this.props.className}\n options={{\n wheelPropagation: false,\n }}\n >\n <MenuItems items={store.items} onActivate={this.activate} root={true} />\n <RedocAttribution>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://redocly.com/redoc/\">\n <RedoclyLogo />\n API docs by Redocly\n </a>\n </RedocAttribution>\n </PerfectScrollbarWrap>\n );\n }\n\n activate = (item: IMenuItem) => {\n if (item && item.active && this.context.menuToggle) {\n return item.expanded ? item.collapse() : item.expand();\n }\n this.props.menu.activateAndScroll(item, true);\n setTimeout(() => {\n if (this._updateScroll) {\n this._updateScroll();\n }\n });\n };\n\n private saveScrollUpdate = upd => {\n this._updateScroll = upd;\n };\n}\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nexport const AnimatedChevronButton = ({ open }: { open: boolean }) => {\n const iconOffset = open ? 8 : -4;\n\n return (\n <ChevronContainer>\n <ChevronSvg\n size={15}\n style={{\n transform: `translate(2px, ${iconOffset}px) rotate(180deg)`,\n transition: 'transform 0.2s ease',\n }}\n />\n <ChevronSvg\n size={15}\n style={{\n transform: `translate(2px, ${0 - iconOffset}px)`,\n transition: 'transform 0.2s ease',\n }}\n />\n </ChevronContainer>\n );\n};\n\n// adapted from reactjs.org\nconst ChevronSvg = ({ size = 10, className = '', style }) => (\n <svg\n className={className}\n style={style || {}}\n viewBox=\"0 0 926.23699 573.74994\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n width={size}\n height={size}\n >\n <g transform=\"translate(904.92214,-879.1482)\">\n <path\n d={`\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n `}\n fill=\"currentColor\"\n />\n </g>\n </svg>\n);\n\nconst ChevronContainer = styled.div`\n user-select: none;\n width: 20px;\n height: 20px;\n align-self: center;\n display: flex;\n flex-direction: column;\n color: ${props => props.theme.colors.primary.main};\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services/MenuStore';\nimport { RedocNormalizedOptions, RedocRawOptions } from '../../services/RedocNormalizedOptions';\nimport styled, { media } from '../../styled-components';\nimport { IS_BROWSER } from '../../utils/index';\nimport { OptionsContext } from '../OptionsProvider';\nimport { AnimatedChevronButton } from './ChevronSvg';\n\nlet Stickyfill;\nif (IS_BROWSER) {\n Stickyfill = require('stickyfill');\n}\n\nexport interface StickySidebarProps {\n className?: string;\n scrollYOffset?: RedocRawOptions['scrollYOffset']; // passed directly or via context\n menu: MenuStore;\n}\n\nexport interface StickySidebarState {\n offsetTop?: string;\n}\n\nconst stickyfill = Stickyfill && Stickyfill();\n\nconst StyledStickySidebar = styled.div<{ $open?: boolean }>`\n width: ${props => props.theme.sidebar.width};\n background-color: ${props => props.theme.sidebar.backgroundColor};\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n backface-visibility: hidden;\n /* contain: strict; TODO: breaks layout since Chrome 80*/\n\n height: 100vh;\n position: sticky;\n position: -webkit-sticky;\n top: 0;\n\n ${media.lessThan('small')`\n position: fixed;\n z-index: 20;\n width: 100%;\n background: ${({ theme }) => theme.sidebar.backgroundColor};\n display: ${props => (props.$open ? 'flex' : 'none')};\n `};\n\n @media print {\n display: none;\n }\n`;\n\nconst FloatingButton = styled.div`\n outline: none;\n user-select: none;\n background-color: ${({ theme }) => theme.fab.backgroundColor};\n color: ${props => props.theme.colors.primary.main};\n display: none;\n cursor: pointer;\n position: fixed;\n right: 20px;\n z-index: 100;\n border-radius: 50%;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);\n ${media.lessThan('small')`\n display: flex;\n `};\n\n bottom: 44px;\n\n width: 60px;\n height: 60px;\n padding: 0 20px;\n svg {\n color: ${({ theme }) => theme.fab.color};\n }\n\n @media print {\n display: none;\n }\n`;\n\n@observer\nexport class StickyResponsiveSidebar extends React.Component<\n React.PropsWithChildren<StickySidebarProps>,\n StickySidebarState\n> {\n static contextType = OptionsContext;\n context!: React.ContextType<typeof OptionsContext>;\n state: StickySidebarState = { offsetTop: '0px' };\n\n stickyElement: Element;\n\n componentDidMount() {\n if (stickyfill) {\n stickyfill.add(this.stickyElement);\n }\n\n // rerender when hydrating from SSR\n // see https://github.com/facebook/react/issues/8017#issuecomment-256351955\n this.setState({\n offsetTop: this.getScrollYOffset(this.context),\n });\n }\n\n componentWillUnmount() {\n if (stickyfill) {\n stickyfill.remove(this.stickyElement);\n }\n }\n\n getScrollYOffset(options: RedocNormalizedOptions) {\n let top;\n if (this.props.scrollYOffset !== undefined) {\n top = RedocNormalizedOptions.normalizeScrollYOffset(this.props.scrollYOffset)();\n } else {\n top = options.scrollYOffset();\n }\n return top + 'px';\n }\n\n render() {\n const open = this.props.menu.sideBarOpened;\n\n const top = this.state.offsetTop;\n\n return (\n <>\n <StyledStickySidebar\n $open={open}\n className={this.props.className}\n style={{\n top,\n height: `calc(100vh - ${top})`,\n }}\n // tslint:disable-next-line\n ref={el => {\n this.stickyElement = el as any;\n }}\n >\n {this.props.children}\n </StyledStickySidebar>\n {!this.context.hideFab && (\n <FloatingButton onClick={this.toggleNavMenu}>\n <AnimatedChevronButton open={open} />\n </FloatingButton>\n )}\n </>\n );\n }\n\n private toggleNavMenu = () => {\n this.props.menu.toggleSidebar();\n };\n}\n","import styled, { media } from '../../styled-components';\n\nexport const RedocWrap = styled.div`\n ${({ theme }) => `\n font-family: ${theme.typography.fontFamily};\n font-size: ${theme.typography.fontSize};\n font-weight: ${theme.typography.fontWeightRegular};\n line-height: ${theme.typography.lineHeight};\n color: ${theme.colors.text.primary};\n display: flex;\n position: relative;\n text-align: left;\n\n -webkit-font-smoothing: ${theme.typography.smoothing};\n font-smoothing: ${theme.typography.smoothing};\n ${(theme.typography.optimizeSpeed && 'text-rendering: optimizeSpeed !important') || ''};\n\n tap-highlight-color: rgba(0, 0, 0, 0);\n text-size-adjust: 100%;\n\n * {\n box-sizing: border-box;\n -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n }\n`};\n`;\n\nexport const ApiContentWrap = styled.div`\n z-index: 1;\n position: relative;\n overflow: hidden;\n width: calc(100% - ${props => props.theme.sidebar.width});\n ${media.lessThan('small', true)`\n width: 100%;\n `};\n\n contain: layout;\n`;\n\nexport const BackgroundStub = styled.div`\n background: ${({ theme }) => theme.rightPanel.backgroundColor};\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: ${({ theme }) => {\n if (theme.rightPanel.width.endsWith('%')) {\n const percents = parseInt(theme.rightPanel.width, 10);\n return `calc((100% - ${theme.sidebar.width}) * ${percents / 100})`;\n } else {\n return theme.rightPanel.width;\n }\n }};\n ${media.lessThan('medium', true)`\n display: none;\n `};\n`;\n","import * as React from 'react';\n\nimport { darken, getLuminance, lighten } from 'polished';\nimport styled from '../../styled-components';\nimport { MenuItemLabel } from '../SideMenu/styled.elements';\n\nexport const SearchWrap = styled.div`\n padding: 5px 0;\n`;\n\nexport const SearchInput = styled.input.attrs(() => ({\n className: 'search-input',\n}))`\n width: calc(100% - ${props => props.theme.spacing.unit * 8}px);\n box-sizing: border-box;\n margin: 0 ${props => props.theme.spacing.unit * 4}px;\n padding: 5px ${props => props.theme.spacing.unit * 2}px 5px\n ${props => props.theme.spacing.unit * 4}px;\n border: 0;\n border-bottom: 1px solid\n ${({ theme }) =>\n (getLuminance(theme.sidebar.backgroundColor) > 0.5 ? darken : lighten)(\n 0.1,\n theme.sidebar.backgroundColor,\n )};\n font-family: ${({ theme }) => theme.typography.fontFamily};\n font-weight: bold;\n font-size: 13px;\n color: ${props => props.theme.sidebar.textColor};\n background-color: transparent;\n outline: none;\n`;\n\nexport const SearchIcon = styled((props: { className?: string }) => (\n <svg\n className={props.className}\n version=\"1.1\"\n viewBox=\"0 0 1000 1000\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\"\n >\n <path d=\"M968.2,849.4L667.3,549c83.9-136.5,66.7-317.4-51.7-435.6C477.1-25,252.5-25,113.9,113.4c-138.5,138.3-138.5,362.6,0,501C219.2,730.1,413.2,743,547.6,666.5l301.9,301.4c43.6,43.6,76.9,14.9,104.2-12.4C981,928.3,1011.8,893,968.2,849.4z M524.5,522c-88.9,88.7-233,88.7-321.8,0c-88.9-88.7-88.9-232.6,0-321.3c88.9-88.7,233-88.7,321.8,0C613.4,289.4,613.4,433.3,524.5,522z\" />\n </svg>\n)).attrs({\n className: 'search-icon',\n})`\n position: absolute;\n left: ${props => props.theme.spacing.unit * 4}px;\n height: 1.8em;\n width: 0.9em;\n\n path {\n fill: ${props => props.theme.sidebar.textColor};\n }\n`;\n\nexport const SearchResultsBox = styled.div`\n padding: ${props => props.theme.spacing.unit}px 0;\n background-color: ${({ theme }) => darken(0.05, theme.sidebar.backgroundColor)}};\n color: ${props => props.theme.sidebar.textColor};\n min-height: 150px;\n max-height: 250px;\n border-top: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)}};\n border-bottom: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)}};\n margin-top: 10px;\n line-height: 1.4;\n font-size: 0.9em;\n \n li {\n background-color: inherit;\n }\n\n ${MenuItemLabel} {\n padding-top: 6px;\n padding-bottom: 6px;\n\n &:hover,\n &.active {\n background-color: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)};\n }\n\n > svg {\n display: none;\n }\n }\n`;\n\nexport const ClearIcon = styled.i`\n position: absolute;\n display: inline-block;\n width: ${props => props.theme.spacing.unit * 2}px;\n text-align: center;\n right: ${props => props.theme.spacing.unit * 4}px;\n line-height: 2em;\n vertical-align: middle;\n margin-right: 2px;\n cursor: pointer;\n font-style: normal;\n color: '#666';\n`;\n","import * as React from 'react';\n\nimport type { IMenuItem, SearchResult } from '../../services/types';\nimport type { SearchStore } from '../../services/SearchStore';\nimport type { MarkerService } from '../../services/MarkerService';\n\nimport { MenuItem } from '../SideMenu/MenuItem';\nimport { OptionsContext } from '../OptionsProvider';\nimport { bind, debounce } from 'decko';\nimport { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';\nimport {\n ClearIcon,\n SearchIcon,\n SearchInput,\n SearchResultsBox,\n SearchWrap,\n} from './styled.elements';\nimport { l } from '../../services/Labels';\n\nexport interface SearchBoxProps {\n search: SearchStore<string>;\n marker: MarkerService;\n getItemById: (id: string) => IMenuItem | undefined;\n onActivate: (item: IMenuItem) => void;\n\n className?: string;\n}\n\nexport interface SearchBoxState {\n results: SearchResult[];\n noResults: boolean;\n term: string;\n activeItemIdx: number;\n}\n\nexport class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxState> {\n activeItemRef: MenuItem | null = null;\n\n static contextType = OptionsContext;\n declare context: React.ContextType<typeof OptionsContext>;\n\n constructor(props) {\n super(props);\n this.state = {\n results: [],\n noResults: false,\n term: '',\n activeItemIdx: -1,\n };\n }\n\n clearResults(term: string) {\n this.setState({\n results: [],\n noResults: false,\n term,\n });\n this.props.marker.unmark();\n }\n\n clear = () => {\n this.setState({\n results: [],\n noResults: false,\n term: '',\n activeItemIdx: -1,\n });\n this.props.marker.unmark();\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.keyCode === 27) {\n // ESQ\n this.clear();\n }\n if (event.keyCode === 40) {\n // Arrow down\n this.setState({\n activeItemIdx: Math.min(this.state.activeItemIdx + 1, this.state.results.length - 1),\n });\n event.preventDefault();\n }\n if (event.keyCode === 38) {\n // Arrow up\n this.setState({\n activeItemIdx: Math.max(0, this.state.activeItemIdx - 1),\n });\n event.preventDefault();\n }\n if (event.keyCode === 13) {\n // enter\n const activeResult = this.state.results[this.state.activeItemIdx];\n if (activeResult) {\n const item = this.props.getItemById(activeResult.meta);\n if (item) {\n this.props.onActivate(item);\n }\n }\n }\n };\n\n setResults(results: SearchResult[], term: string) {\n this.setState({\n results,\n noResults: results.length === 0,\n });\n this.props.marker.mark(term);\n }\n\n @bind\n @debounce(400)\n searchCallback(searchTerm: string) {\n this.props.search.search(searchTerm).then(res => {\n this.setResults(res, searchTerm);\n });\n }\n\n search = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { minCharacterLengthToInitSearch } = this.context;\n const q = event.target.value;\n if (q.length < minCharacterLengthToInitSearch) {\n this.clearResults(q);\n return;\n }\n\n this.setState(\n {\n term: q,\n },\n () => this.searchCallback(this.state.term),\n );\n };\n\n render() {\n const { activeItemIdx } = this.state;\n const results = this.state.results\n .filter(res => this.props.getItemById(res.meta))\n .map(res => ({\n item: this.props.getItemById(res.meta)!,\n score: res.score,\n }))\n .sort((a, b) => b.score - a.score);\n\n return (\n <SearchWrap role=\"search\">\n {this.state.term && <ClearIcon onClick={this.clear}>×</ClearIcon>}\n <SearchIcon />\n <SearchInput\n value={this.state.term}\n onKeyDown={this.handleKeyDown}\n placeholder=\"Search...\"\n aria-label=\"Search\"\n type=\"text\"\n onChange={this.search}\n />\n {results.length > 0 && (\n <PerfectScrollbarWrap\n options={{\n wheelPropagation: false,\n }}\n >\n <SearchResultsBox data-role=\"search:results\">\n {results.map((res, idx) => (\n <MenuItem\n item={Object.create(res.item, {\n active: {\n value: idx === activeItemIdx,\n },\n })}\n onActivate={this.props.onActivate}\n withoutChildren={true}\n key={res.item.id}\n data-role=\"search:result\"\n />\n ))}\n </SearchResultsBox>\n </PerfectScrollbarWrap>\n )}\n {this.state.term && this.state.noResults ? (\n <SearchResultsBox data-role=\"search:results\">{l('noResultsFound')}</SearchResultsBox>\n ) : null}\n </SearchWrap>\n );\n }\n}\n","import * as PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport { ThemeProvider } from '../../styled-components';\nimport { OptionsProvider } from '../OptionsProvider';\n\nimport { AppStore } from '../../services';\nimport { ApiInfo } from '../ApiInfo/';\nimport { ApiLogo } from '../ApiLogo/ApiLogo';\nimport { ContentItems } from '../ContentItems/ContentItems';\nimport { SideMenu } from '../SideMenu/SideMenu';\nimport { StickyResponsiveSidebar } from '../StickySidebar/StickyResponsiveSidebar';\nimport { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements';\n\nimport { SearchBox } from '../SearchBox/SearchBox';\nimport { StoreProvider } from '../StoreBuilder';\n\nexport interface RedocProps {\n store: AppStore;\n}\n\nexport class Redoc extends React.Component<RedocProps> {\n static propTypes = {\n store: PropTypes.instanceOf(AppStore).isRequired,\n };\n\n componentDidMount() {\n this.props.store.onDidMount();\n }\n\n componentWillUnmount() {\n this.props.store.dispose();\n }\n\n render() {\n const {\n store: { spec, menu, options, search, marker },\n } = this.props;\n const store = this.props.store;\n return (\n <ThemeProvider theme={options.theme}>\n <StoreProvider value={store}>\n <OptionsProvider value={options}>\n <RedocWrap className=\"redoc-wrap\">\n <StickyResponsiveSidebar menu={menu} className=\"menu-content\">\n <ApiLogo info={spec.info} />\n {(!options.disableSearch && (\n <SearchBox\n search={search!}\n marker={marker}\n getItemById={menu.getItemById}\n onActivate={menu.activateAndScroll}\n />\n )) ||\n null}\n <SideMenu menu={menu} />\n </StickyResponsiveSidebar>\n <ApiContentWrap className=\"api-content\">\n <ApiInfo store={store} />\n <ContentItems items={menu.items as any} />\n </ApiContentWrap>\n <BackgroundStub />\n </RedocWrap>\n </OptionsProvider>\n </StoreProvider>\n </ThemeProvider>\n );\n }\n}\n","import * as React from 'react';\n\nimport {\n argValueToBoolean,\n RedocNormalizedOptions,\n RedocRawOptions,\n} from '../services/RedocNormalizedOptions';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { Loading } from './Loading/Loading';\nimport { Redoc } from './Redoc/Redoc';\nimport { StoreBuilder } from './StoreBuilder';\n\nexport interface RedocStandaloneProps {\n spec?: object;\n specUrl?: string;\n options?: RedocRawOptions;\n onLoaded?: (e?: Error) => any;\n}\n\ndeclare let __webpack_nonce__: string;\n\nexport const RedocStandalone = function (props: RedocStandaloneProps) {\n const { spec, specUrl, options = {}, onLoaded } = props;\n const hideLoading = argValueToBoolean(options.hideLoading, false);\n\n const normalizedOpts = new RedocNormalizedOptions(options);\n\n if (normalizedOpts.nonce !== undefined) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __webpack_nonce__ = normalizedOpts.nonce;\n } catch {} // If we have exception, Webpack was not used to run this.\n }\n\n return (\n <ErrorBoundary>\n <StoreBuilder\n spec={spec ? { ...spec } : undefined}\n specUrl={specUrl}\n options={options}\n onLoaded={onLoaded}\n >\n {({ loading, store }) =>\n !loading ? (\n <Redoc store={store!} />\n ) : hideLoading ? null : (\n <Loading color={normalizedOpts.theme.colors.primary.main} />\n )\n }\n </StoreBuilder>\n </ErrorBoundary>\n );\n};\n"],"names":["root","factory","exports","module","define","amd","this","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","map","item","content","concat","join","i","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","_arrayLikeToArray","arr","len","arr2","Array","_item","isArray","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","value","err","_iterableToArrayLimit","o","minLen","n","Object","prototype","slice","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","require","Worker","add","search","toJS","load","dispose","fromExternalJS","builder","resolveIndex","index","store","initEmpty","field","ref","pipeline","Promise","resolve","separator","expandTerm","term","token","title","description","meta","toLowerCase","build","toJSON","path","exportName","importScripts","self","Error","e","console","error","message","state","q","limit","trim","searchResults","query","t","split","forEach","exp","res","score","sjs","colour","NODE_DISABLE_COLORS","red","yellow","green","normal","deepEquals","obj1","obj2","_equals","assign","sanitise","s","components","replace","String","toCamelCase","match","group1","toUpperCase","uniqueOnly","indexOf","hasDuplicates","array","Set","size","allSame","distinctArray","result","candidate","find","a","compressArray","firstDupe","hash","chr","charCodeAt","parameterTypeProperties","arrayProperties","httpMethods","sanitiseAll","fs","url","fetch","yaml","jptr","recurse","clone","deRef","isRef","common","resolveAllFragment","obj","context","src","parentPath","base","options","attachPoint","externalRefs","paths","baseUrl","parse","seen","changes","identityDetection","key","startsWith","$fixed","newRef","parent","pkey","$ref","verbose","warn","target","fatal","ex","promise","reject","protocol","failed","filterData","filters","filter","resolveExternal","pointer","callback","u","pop","fragment","fnComponents","effectiveProtocol","input","backup","cache","externalRef","handlers","then","catch","fetchOptions","agent","status","ignoreIOErrors","text","schema","prettyErrors","def","filename","encoding","readFile","readFileAsync","findExternalRefs","rej","inner","$extra","refs","potential","keys","resolved","extras","rewriteRefs","resolvedAt","resolver","depth","openapi","definitions","scanExternalRefs","actions","external","original","updated","externals","localOptions","patch","pointers","sort","b","aComp","bComp","ptr","cdata","loopReferences","funcs","reduce","func","bind","setTimeout","resolveInternal","preserveMiro","setupOptions","srcUrl","optionalResolve","getDefaultState","WeakMap","top","combine","allowRefSiblings","walkSchema","temp","allOf","anyOf","oneOf","has","set","items","property","additionalItems","additionalProperties","properties","prop","subSchema","patternProperties","not","nop","shallowClone","p","hasOwnProperty","deepClone","fastClone","circularClone","Function","get","create","getPrototypeOf","dereference","container","defs","master","logger","args","arguments","apply","getLogger","entry","jpunescape","newValue","parts","decodeURIComponent","setAndLast","parseInt","isNaN","jpescape","object","payload","identity","oPath","identityPath","newState","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","undefined","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","api","update","newObj","remove","lastIdentifiers","newList","newLastIdentifiers","_index","memo","style","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","createElement","attributes","styleElement","nonce","setAttribute","needLayer","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","maybe","cclone","sw","statusCodes","ourVersion","targetVersion","componentNames","S2OError","super","throwError","throwOrWarn","warnOnly","warnProperty","fixUpSchema","required","nullable","propertyName","discriminator","mapping","schemaOrRef","fixUpSubSchemaExtensions","patches","type","newSchema","format","xml","namespace","allowEmptyValue","fixUpSubSchema","fixupRefs","consumes","produces","newKey","schemas","refmap","oldRef","schemaIndex","lastIndexOf","prefix","substr","suffix","refSuffix","tmpRef","inSchema","refSiblings","processSecurity","securityObject","k","sname","processSecurityScheme","scheme","flow","flowName","authorizationUrl","tokenUrl","scopes","flows","keepParameters","processHeader","header","collectionFormat","explode","fixParamRef","param","refComponents","processParameter","op","method","originalType","singularRequestBody","rbody","parameters","newParam","in","deprecated","example","oldCollectionFormat","allowReserved","contentType","default","copyExtensions","operationId","rbname","mimetype","requestBody","newOp","attachRequestBody","tgt","processResponse","response","examples","headers","h","processPaths","containerName","requestBodyCache","trace","summary","servers","debug","security","responses","defaultResp","r","schemes","server","newServer","serverUrl","se","rh","body","ct","effectiveOperationId","rbName","rbStr","rbHash","p2","extractServerParameters","variables","fixInfo","info","version","logo","termsOfService","URL","fixPaths","convertObj","swagger","WeakSet","anchors","detectObjectReferences","direct","origin","converter","host","basePath","xMsPHost","hostTemplate","paramNames","msp","enum","useSchemePrefix","callbacks","links","requestBodies","securitySchemes","securityDefinitions","dedupeRefs","rb","rbNamesGenerated","counter","main","convertStr","str","sourceYaml","convert","convertUrl","convertFile","sourceFile","convertStream","readable","on","chunk","http","STATUS_CODES","addMethods","methods","w","createObjectURL","Blob","worker","c","addEventListener","d","f","evt","createEvent","initEvent","params","dispatchEvent","_arguments","postMessage","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","defineProperty","enumerable","g","globalThis","toStringTag","nc","defaultTheme","spacing","unit","sectionHorizontal","sectionVertical","breakpoints","small","medium","large","colors","tonalOffset","primary","light","lighten","dark","darken","contrastText","readableColor","success","warning","gray","secondary","border","color","backgroundColor","transparentize","tabTextColor","redirect","post","put","delete","basic","link","linesColor","theme","desaturate","defaultDetailsWidth","typeNameColor","typeTitleColor","requireLabelColor","labelsTextSize","nestingSpacing","nestedBackground","arrow","typography","fontSize","lineHeight","fontWeightRegular","fontWeightBold","fontWeightLight","fontFamily","smoothing","optimizeSpeed","headings","fontWeight","code","wrap","visited","hover","textDecoration","hoverTextDecoration","sidebar","width","textColor","activeTextColor","groupItems","activeBackgroundColor","textTransform","level1Items","maxHeight","maxWidth","gutter","rightPanel","overlay","codeBlock","fab","IS_BROWSER","selector","html2Str","html","trimmedChunk","scrollIntoViewIfNeeded","el","centerIfNeeded","parentComputedStyle","getComputedStyle","parentBorderTopWidth","getPropertyValue","parentBorderLeftWidth","overTop","offsetTop","scrollTop","overBottom","clientHeight","overLeft","offsetLeft","scrollLeft","overRight","clientWidth","alignWithTop","scrollIntoView","mapWithLast","iteratee","mapValues","flattenByProp","collectionItems","iterate","stripTrailingSlash","endsWith","substring","isNumeric","parseFloat","isFinite","appendToMdHeading","md","heading","testRegex","RegExp","replaceRegex","br","mergeObjects","shift","isMergebleObject","isObject","safeSlugify","isAbsoluteUrl","resolveUrl","to","urlObj","pathname","href","getBasePath","parseURL","titleize","charAt","removeQueryStringAndHash","escapeHTMLAttrChars","unescapeHTMLChars","_m","fromCharCode","isBoolean","labels","enumSingleValue","enumArray","recursive","arrayOf","webhook","const","noResultsFound","download","downloadSpecification","callbackResponses","requestSamples","responseSamples","l","idx","label","SideNavStyleEnum","argValueToBoolean","val","defaultValue","argValueToNumber","RedocNormalizedOptions","normalizeExpandResponses","normalizeHideHostname","normalizeScrollYOffset","bottom","getBoundingClientRect","normalizeShowExtensions","ext","normalizeSideNavStyle","SummaryOnly","PathOnly","IdOnly","normalizePayloadSampleIdx","Math","max","normalizeJsonSampleExpandLevel","level","Number","ceil","normalizeGeneratedPayloadSamplesMaxDepth","raw","defaults","hook","extensionsHook","_labels","menu","codeSample","resolvedValues","setProxy","currentPath","resolveTheme","scrollYOffset","hideHostname","expandResponses","sortRequiredPropsFirst","requiredPropsFirst","sortPropsAlphabetically","sortEnumValuesAlphabetically","sortOperationsAlphabetically","sortTagsAlphabetically","nativeScrollbars","pathInMiddlePanel","sanitize","untrustedSpec","hideDownloadButtons","hideDownloadButton","downloadFileName","downloadDefinitionUrl","downloadUrls","disableSearch","onlyRequiredInSamples","showExtensions","sideNavStyle","hideSingleRequestSampleTab","hideRequestPayloadSample","menuToggle","jsonSamplesExpandLevel","jsonSampleExpandLevel","enumSkipQuotes","hideSchemaTitles","simpleOneOfTypeLabel","payloadSampleIdx","expandSingleSchemaField","schemasExpansionLevel","Infinity","argValueToExpandLevel","schemaExpansionLevel","schemaDefinitionsTagName","showObjectSchemaExamples","showSecuritySchemeType","hideSecuritySection","unstable_ignoreMimeParameters","allowedMdComponents","expandDefaultServerVariables","maxDisplayedEnumValues","ignoreNamedSchemas","hideSchemaPattern","generatedSamplesMaxDepth","generatedPayloadSamplesMaxDepth","hideFab","minCharacterLengthToInitSearch","showWebhookVerb","hidePropertiesPrefix","styled","createGlobalStyle","keyframes","ThemeProvider","lessThan","breakpoint","print","extra","props","greaterThan","between","firstBreakpoint","secondBreakpoint","styledName","ErrorWrapper","div","ErrorBoundary","componentDidCatch","setState","render","stack","only","children","rotate","Spinner","className","height","viewBox","LoadingMessage","Loading","textAlign","OptionsContext","OptionsProvider","Provider","OptionsConsumer","Consumer","loadAndBundleSpec","specUrlOrObject","config","Config","bundleOpts","location","process","cwd","customFetch","absoluteRef","parsed","bundle","convertSwagger2OpenAPI","spec","origParse","JsonPointer","baseName","tokens","dirName","relative","fromTokens","resTokens","compile","escape","isWildcardStatusCode","statusCode","isStatusCode","getStatusCodeType","defaultAsError","operationNames","isOperationName","getOperationSummary","operation","pathName","schemaKeywordTypes","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","contentEncoding","contentMediaType","maxItems","minItems","uniqueItems","maxProperties","minProperties","unevaluatedProperties","detectType","keywords","keyword","isPrimitiveType","if","else","isPrimitive","isArrayType","includes","prefixItems","isJsonLike","isFormUrlEncoded","delimitedEncodeField","fieldVal","fieldName","delimiter","v","deepObjectEncodeField","serializeFormValue","safeName","expand","urlFormEncodePayload","serializeParameterValueWithMime","mime","serializeParameterValue","parameter","serializationMime","serializePathParameter","serializeQueryParameter","template","serializeHeaderParameter","serializeCookieParameter","getSerializedValue","langFromMime","DEFINITION_NAME_REGEX","isNamedDefinition","getDefinitionName","reverse","humanizeRangeConstraint","min","stringRange","humanizeNumberRange","humanizeConstraints","arrayRange","propertiesRange","multipleOfConstraint","strigifiedMultipleOf","humanizeMultipleOfConstraint","numberRange","sortByRequired","fields","order","unrequiredFields","orderedFields","unorderedFields","sortByField","localeCompare","mergeParams","parser","pathParams","operationParams","operationParamNames","deref","mergeSimilarMediaTypes","types","mergedTypes","normalizedMimeName","normalizeServers","specUrl","dirname","getHref","SECURITY_DEFINITIONS_JSX_NAME","OLD_SECURITY_DEFINITIONS_JSX_NAME","SCHEMA_DEFINITION_JSX_NAME","SECURITY_SCHEMES_SECTION_PREFIX","setSecuritySchemePrefix","shortenHTTPVerb","verb","isRedocExtension","extractExtensions","acc","pluralizeType","displayType","getContentWithLegacyExamples","mediaContent","xExamples","xExample","DEFAULT_LANG","mapLang","lang","json","shell","viml","highlight","grammar","Throttle","delay","_","_2","desc","wait","timeout","previous","later","Date","getTime","now","remaining","clearTimeout","throttle","debugTime","debugTimeEnd","insertBefore","lookbehind","SENTINEL","memoize","descriptor","memoizedName","_memoizeMethod","_memoizeGetter","alphabeticallyByProp","sortOrder","EVENT","HistoryService","emit","_emiter","currentId","EventEmitter","linkForId","subscribe","cb","emmiter","addListener","removeListener","removeEventListener","rewriteHistory","history","replaceState","pushState","debounce","MarkerService","Map","prevTerm","addOnly","elements","inst","elem","unmark","clearAll","clear","mark","async","breaks","extensions","gfm","headerIds","headerPrefix","hooks","langPrefix","mangle","pedantic","renderer","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","encode","unescapeTest","caret","edit","regex","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","baseUrls","justDomain","rtrim","relativeBase","domain","encodeURI","noopTest","exec","splitCells","tableRow","cells","offset","escaped","curr","invert","suffLen","currChar","repeatString","outputLink","cap","lexer","inLink","inlineTokens","Tokenizer","space","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","indentCodeCompensation","inline","_escapes","trimmed","hr","blockquote","blockTokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","itemRegex","repeat","trimLeft","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","task","checked","trimRight","spacers","hasMultipleLineBreaks","some","pre","tag","table","align","rows","j","row","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","reflink","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","reflinkSearch","out","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","leading","tabs","extTokenizer","startBlock","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","startInline","Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","flags","image","TextRenderer","Slugger","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","Hooks","static","preprocess","markdown","postprocess","parseMarkdown","origOpt","msg","onError","marked","checkSanitizeDeprecation","pending","all","setOptions","newDefaults","getDefaults","use","childTokens","pack","opts","prevRenderer","prevTokenizer","prevHook","passThroughHooks","arg","values","LEGACY_REGEXP","MDX_COMPONENT_REGEXP","COMPONENT_REGEXP","buildComponentComment","MarkdownRenderer","parentId","headingRule","currentTopHeading","saveHeading","originalHeadingRule","headingEnhanceRenderer","containsComponent","rawText","componentName","getTextBeforeHading","headingLinePos","flattenHeadings","attachHeadingsDescriptions","buildRegexp","flatHeadings","prevHeading","prevRegexp","prevPos","regexp","currentPos","renderMd","extractHeadings","renderMdWithComponents","names","componentsRegexp","htmlParts","componentDefs","lasxtIdx","componentMeta","component","propsSelector","parseProps","htmlPart","ApiInfoModel","firstHeadingLinePos","getDownloadUrls","getDownloadFileName","getDownloadLink","blob","SecurityRequirementModel","requirement","displayName","sectionId","CallbackModel","infoOrRef","expanded","operations","makeObservable","operationName","operationInfo","OperationModel","httpVerb","pathParameters","pathServers","toggle","observable","action","pushRef","concatRefStacks","OpenAPIParser","allowMergeRefs","byRef","validate","baseRefsStack","mergeAsAllOf","objRefsStack","schemaName","refsStack","mergeRefs","rest","readOnly","writeOnly","mergeAllOf","hoistOneOfs","receiver","allOfSchemas","uniqByPropIncludeMissing","_a","subRefsStack","subRef","subMerged","child","enumProperty","isCircular","otherConstraints","propRefsStack","mergedProp","receiverItems","subSchemaItems","findDerived","$refs","defName","sub","beforeAllOf","afterAllOf","siblingValues","part","isChild","typePrefix","activeOneOf","newRefsStack","rawSchema","init","activateOneOf","hasType","externalDocs","constraints","displayFormat","initConditionalOperators","getDiscriminator","initOneOf","oneOfType","buildFields","filteredType","initDiscriminator","variant","derefVariant","merged","uniqueTypes","crawl","collectUniqueOneOfTypesDeep","discriminatorProp","implicitInversedMapping","isLimitedToMapping","explicitInversedMapping","inversedMapping","left","right","indexLeft","indexRight","innerSchema","ifOperator","elseOperator","thenOperator","restSchema","groupedOperators","SchemaModel","patternProps","additionalProps","itemsProps","FieldModel","kind","fieldsCount","buildAdditionalItems","externalExamplesCache","ExampleModel","externalValue","externalValueUrl","getExternalValue","mimeType","txt","ok","DEFAULT_SERIALIZATION","cookie","fieldSchema","exampleValue","collapse","MediaTypeModel","isRequestType","generateExample","samplerOptions","skipReadOnly","skipWriteOnly","skipNonRequired","maxSampleDepth","sample","MediaContentModel","activeMimeIdx","mediaTypes","activate","active","hasSample","computed","RequestBodyModel","isEvent","isRequest","ResponseModel","isPayloadSample","requestBodyContent","isCodeSamplesWarningPrinted","operationSpec","isCallback","ready","isWebhook","sidebarLabel","badges","position","operationHash","deactivate","codeSamples","samples","insertInx","_parameters","paramOrRef","hasSuccessResponses","callbackEventName","WebhookModel","webhooks","initWebhooks","webhookName","resolvedWebhook","SecuritySchemeModel","apiKey","bearerFormat","openId","connectUrl","openIdConnectUrl","SecuritySchemesModel","SpecStore","contentItems","MenuBuilder","buildStructure","webhookPath","GroupModel","tagOrGroup","GROUP_DEPTH","tags","tagsMap","getTagsWithOperations","addMarkdownItems","getTagGroupsItems","getTagsItems","initialDepth","mapHeadingsDeep","_parent","group","groups","tagNames","tagName","used","getOperationsItems","relatedSchemas","getTagRelatedSchema","explicitTags","getTags","resolvedPaths","operationTags","defaultTags","entries","schemaTags","Boolean","SECTION_ATTR","MenuStore","scroll","activeItemIdx","sideBarOpened","updateOnScroll","isScrolledDown","step","itemIdx","flatItems","getElementAtOrFirstChild","isElementBellow","getElementAt","isElementAbove","updateOnHistory","activateAndScroll","scrollIntoViewBySelector","getItemById","absoluteIdx","_unsubscribe","_hashUnsubscribe","toggleSidebar","closeSidebar","activeItem","updateLocation","menuItem","scrollToActive","bound","ScrollService","_prevOffsetY","_scrollParent","scrollY","handleScroll","removeAllListeners","HTMLElement","pageYOffset","floor","scrollBy","SearchStore","searchWorker","getWorker","indexItems","terminate","$compact","Section","attrs","$underlined","RightPanel","DarkRightPanel","Row","headerFontSize","headerCommonMixin","H1","h1","H2","h2","H3","RightPanelHeader","h3","UnderlinedHeader","h5","StoreContext","createContext","StoreBuilder","onLoaded","resolvedSpec","setResolvedSpec","setError","AppStore","loading","useStore","useContext","linkifyMixin","StyledShareLink","clickHandler","event","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","preventDefault","onClick","ShareLink","directionMap","up","down","ShelfIcon","x","xmlns","y","points","float","direction","Badge","span","deprecatedCss","PropertiesTableCaption","caption","PropertyCell","td","PropertyCellWithInner","PropertyNameCell","PropertyDetailsCell","PropertyBullet","InnerPropertiesWrap","PropertiesTable","OneOfList","OneOfLabel","OneOfButton","$deprecated","$active","ArrayOpenningLabel","ArrayClosingLabel","Tabs","PrismDiv","SampleControls","SampleControlsWrap","StyledPre","as","PerfectScrollbarConstructor","psStyles","PSStyling","StyledScrollWrapper","PerfectScrollbar","handleRef","_container","componentDidMount","parentElement","scrollTo","componentDidUpdate","componentWillUnmount","destroy","updateFn","PerfectScrollbarWrap","overflow","overscrollBehavior","msOverflowStyle","ArrowIcon","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Dropdown","onChange","placeholder","selectedIndex","disabled","hidden","fullWidth","SimpleDropdown","MimeLabel","DropdownOrLabel","Label","linksCss","StyledMarkdownBlock","$inline","dompurify","StyledMarkdownSpan","SanitizedMarkdownHTML","compact","Wrap","dangerouslySetInnerHTML","__html","Markdown","dataRole","Wrapper","Tip","Content","Arrow","Gap","Tooltip","open","isSupported","queryCommandSupported","ClipboardService","selectElement","range","selection","createTextRange","moveToElementText","select","createRange","getSelection","selectNodeContents","removeAllRanges","addRange","deselect","empty","copySelected","execCommand","copyElement","copyCustom","textArea","padding","outline","boxShadow","background","CopyButtonWrapper","tooltipShown","setTooltipShown","copy","showTooltip","renderCopyButton","jsonToHTML","maxExpandLevel","output","valueToHTML","htmlEncode","stringifyStringLiteral","decorateWithSpan","valueType","collapsed","hasContents","arrayToHTML","toISOString","objectToHTML","jsonStyles","JsonViewerWrap","JsonViewer","setNode","renderInner","showFoldingButtons","expandAll","collapseAll","tabIndex","getElementsByClassName","classList","elementsArr","collapseElement","contains","clickListener","focusListener","SourceCode","SourceCodeWithCopy","ExampleValue","Example","ExternalExample","setIsLoading","useState","useRef","prevRef","current","useEffect","useExternalExample","rel","DropdownLabel","DropdownWrapper","InvertedSimpleDropdown","NoSampleLabel","MediaTypeSamples","activeIdx","switchMedia","mediaType","noSample","examplesNames","SamplesWrapper","renderDropdown","ariaLabel","ClickablePropertyNameCell","FieldLabel","TypePrefix","TypeName","TypeTitle","TypeFormat","RequiredLabel","PropertyLabel","RecursiveLabel","PatternLabel","ExtensionValue","ConstraintItem","ToggleButton","LinkWrap","ExternalDocumentation","observer","DescriptionEnumsBlock","EnumValues","isDescriptionEnum","enums","displayedItems","showToggleButton","toggleButtonText","contextType","Extension","Extensions","exts","Examples","stringifyValue","ExamplesList","ul","ConstraintsView","constraint","FieldDetail","MAX_PATTERN_LENGTH","Pattern","isPatternShown","setIsPatternShown","togglePattern","ArrayItemDetails","FieldDetailsComponent","showExamples","renderDiscriminatorSwitch","_in","_const","rawDefault","renderedExamples","FieldDetails","Field","expandByDefault","handleKeyPress","isLast","fieldParentsName","withSubSchema","paramName","onKeyPress","colSpan","Schema","showTitle","DiscriminatorDropdown","changeActiveChild","option","sortOptions","enumValues","enumOrder","enumItem","activeValue","ObjectSchema","filteredFields","parentSchema","PaddedSchema","ArraySchema","itemsSchema","minMaxItems","updatedParentsArray","OneOfSchema","activeSchema","RecursiveSchema","SchemaDefinition","getMediaType","schemaRef","exampleRef","mediaModel","_mediaModel","showReadOnly","showWriteOnly","showExample","MediaSamplesWrap","ScopeName","SecurityRequirementAndWrap","SecurityRequirementOrWrap","$expanded","AuthHeaderColumn","SecuritiesColumn","AuthHeader","SecurityRow","SecurityDetailsStyle","SeeMore","showMore","setShowMore","showLink","setShowLink","scrollHeight","Container","ButtonContainer","$dimmed","ButtonLinkStyled","OAuthFlow","RequiredScopes","scopesNames","refreshUrl","scope","SecurityDetails","AUTH_TYPES","oauth2","openIdConnect","SecurityDefs","createStore","createSearchIndex","marker","disposer","rawOptions","DEFAULT_OPTIONS","observe","change","updateMarkOnMenu","fromJS","searchIndex","onDidMount","end","$description","$summary","ApiHeader","DownloadButton","InfoSpan","InfoSpanBoxWrap","InfoSpanBox","ApiInfo","license","website","contact","email","terms","LogoImgEl","img","LogoWrap","ApiLogo","logoInfo","logoHref","altText","alt","Component","AdvancedMarkdown","renderWithOptionsAndStore","htmlWrap","PartComponent","OperationBadge","menuItemActive","MenuItemUl","MenuItemLi","li","menuItemDepth","MenuItemLabel","$depth","$type","MenuItemTitle","RedocAttribution","CallbackTitleWrapper","CallbackName","OperationBadgeStyled","StyledCallbackTitle","opened","CallbackDetailsWrap","SelectOnClick","onFocus","role","OperationEndpointWrap","ServerRelativeURL","EndpointInfo","$inverted","HttpVerb","ServersOverlay","ServerItem","ServerUrl","Endpoint","inverted","marginRight","normalizedUrl","ParametersGroup","place","MediaTypesSwitch","withLabel","PARAM_PLACES","Parameters","orderParams","paramsMap","paramsPlaces","bodyContent","bodyDescription","bodyRequired","BodyContent","DropdownWithinHeader","isRequired","isOptional","RequiredBody","OptionalBody","commonStyles","ResponseTitle","Code","StyledResponseTitle","ResponseDetailsWrap","HeadersCaption","ResponseHeaders","ResponseDetails","ResponseView","mimes","ResponsesHeader","ResponsesList","SecurityHeader","grouping","RequiredScopesRow","SecurityRequirements","setExpanded","securities","operationSecuritySchemes","LockIcon","getRequiredScopes","allScopes","securitiesLength","schemesLength","CallbackDetails","hasDescription","Description","CallbackOperation","callbackOperation","CallbacksList","CallbacksHeader","GenericChildrenSwitcher","switchItem","PayloadSamples","mimeContent","CallbackPayloadSample","payloadSample","PayloadSampleWrapper","CallbackSamples","dropdownOptions","RequestSamples","hasSamples","hideTabList","defaultIndex","TabList","Tab","TabPanel","ResponseSamples","Operation","badgesBefore","badgesAfter","ContentItems","ContentItem","SectionItem","OperationItem","middlePanelWrap","Header","MenuItem","onActivate","stopPropagation","scrollIntoViewIfActive","withoutChildren","onKeyDown","OperationMenuItemContent","MenuItems","RedoclyLogo","isDisplay","setDisplay","SideMenu","_updateScroll","saveScrollUpdate","upd","wheelPropagation","AnimatedChevronButton","iconOffset","ChevronContainer","ChevronSvg","transform","transition","Stickyfill","stickyfill","StyledStickySidebar","$open","FloatingButton","StickyResponsiveSidebar","toggleNavMenu","stickyElement","getScrollYOffset","RedocWrap","ApiContentWrap","BackgroundStub","percents","SearchWrap","SearchInput","getLuminance","SearchIcon","SearchResultsBox","ClearIcon","SearchBox","activeItemRef","results","noResults","handleKeyDown","keyCode","activeResult","clearResults","searchCallback","setResults","searchTerm","Redoc","propTypes","RedocStandalone","hideLoading","normalizedOpts"],"sourceRoot":""}
1
+ {"version":3,"file":"redoc.lib.js","mappings":"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","sources":["webpack://Redoc/webpack/universalModuleDefinition","webpack://Redoc/./src/services/SearchWorker.worker.ts?756f","webpack://Redoc/./node_modules/@redocly/workerize-loader/dist/rpc-wrapper.js","webpack://Redoc/./node_modules/perfect-scrollbar/css/perfect-scrollbar.css","webpack://Redoc/./node_modules/css-loader/dist/runtime/api.js","webpack://Redoc/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://Redoc/external commonjs \"lunr\"","webpack://Redoc/./src/services/SearchWorker.worker.ts","webpack://Redoc/./node_modules/oas-kit-common/index.js","webpack://Redoc/./node_modules/oas-resolver/index.js","webpack://Redoc/./node_modules/oas-schema-walker/index.js","webpack://Redoc/./node_modules/reftools/lib/clone.js","webpack://Redoc/./node_modules/reftools/lib/dereference.js","webpack://Redoc/./node_modules/reftools/lib/isref.js","webpack://Redoc/./node_modules/reftools/lib/jptr.js","webpack://Redoc/./node_modules/reftools/lib/recurse.js","webpack://Redoc/./node_modules/perfect-scrollbar/css/perfect-scrollbar.css?aae9","webpack://Redoc/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://Redoc/./node_modules/swagger2openapi/index.js","webpack://Redoc/./node_modules/swagger2openapi/lib/statusCodes.js","webpack://Redoc/external commonjs \"call-me-maybe\"","webpack://Redoc/external commonjs \"fast-safe-stringify\"","webpack://Redoc/external commonjs \"stickyfill\"","webpack://Redoc/external commonjs \"yaml\"","webpack://Redoc/external node-commonjs \"fs\"","webpack://Redoc/external node-commonjs \"http\"","webpack://Redoc/external node-commonjs \"path\"","webpack://Redoc/external var \"undefined\"","webpack://Redoc/webpack/bootstrap","webpack://Redoc/webpack/runtime/compat get default export","webpack://Redoc/webpack/runtime/define property getters","webpack://Redoc/webpack/runtime/global","webpack://Redoc/webpack/runtime/hasOwnProperty shorthand","webpack://Redoc/webpack/runtime/make namespace object","webpack://Redoc/webpack/runtime/nonce","webpack://Redoc/external commonjs \"react\"","webpack://Redoc/external commonjs \"polished\"","webpack://Redoc/./src/theme.ts","webpack://Redoc/./src/utils/dom.ts","webpack://Redoc/external commonjs \"slugify\"","webpack://Redoc/./src/utils/helpers.ts","webpack://Redoc/./src/services/Labels.ts","webpack://Redoc/./src/services/types.ts","webpack://Redoc/./src/services/RedocNormalizedOptions.ts","webpack://Redoc/external commonjs \"styled-components\"","webpack://Redoc/./src/styled-components.ts","webpack://Redoc/./src/components/ErrorBoundary.tsx","webpack://Redoc/./src/components/Loading/Spinner.svg.tsx","webpack://Redoc/./src/components/Loading/Loading.tsx","webpack://Redoc/external commonjs \"prop-types\"","webpack://Redoc/./src/components/OptionsProvider.ts","webpack://Redoc/external commonjs \"mobx\"","webpack://Redoc/external commonjs \"@redocly/openapi-core/lib/bundle\"","webpack://Redoc/external commonjs \"@redocly/openapi-core/lib/config/config\"","webpack://Redoc/./src/utils/loadAndBundleSpec.ts","webpack://Redoc/external commonjs \"decko\"","webpack://Redoc/external commonjs \"eventemitter3\"","webpack://Redoc/external commonjs \"json-pointer\"","webpack://Redoc/./src/utils/JsonPointer.ts","webpack://Redoc/external commonjs \"url-template\"","webpack://Redoc/./src/utils/openapi.ts","webpack://Redoc/external commonjs \"prismjs\"","webpack://Redoc/external commonjs \"prismjs/components/prism-bash.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-c.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-clike.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-coffeescript.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-cpp.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-csharp.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-go.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-http.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-java.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-lua.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-markup-templating.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-markup.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-objectivec.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-perl.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-php.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-python.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-q.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-ruby.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-scala.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-sql.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-swift.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-yaml.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-csv.js\"","webpack://Redoc/./src/utils/highlight.ts","webpack://Redoc/./src/utils/decorators.ts","webpack://Redoc/./src/utils/debug.ts","webpack://Redoc/./src/utils/memoize.ts","webpack://Redoc/./src/utils/sort.ts","webpack://Redoc/./src/services/HistoryService.ts","webpack://Redoc/external commonjs \"mark.js\"","webpack://Redoc/./src/services/MarkerService.ts","webpack://Redoc/./node_modules/marked/lib/marked.esm.js","webpack://Redoc/./src/services/MarkdownRenderer.ts","webpack://Redoc/./src/services/models/ApiInfo.ts","webpack://Redoc/./src/services/models/SecurityRequirement.ts","webpack://Redoc/./src/services/models/Callback.ts","webpack://Redoc/./src/services/OpenAPIParser.ts","webpack://Redoc/./src/services/models/Schema.ts","webpack://Redoc/./src/services/models/Example.ts","webpack://Redoc/./src/services/models/Field.ts","webpack://Redoc/external commonjs \"openapi-sampler\"","webpack://Redoc/./src/services/models/MediaType.ts","webpack://Redoc/./src/services/models/MediaContent.ts","webpack://Redoc/./src/services/models/RequestBody.ts","webpack://Redoc/./src/services/models/Response.ts","webpack://Redoc/./src/services/models/Operation.ts","webpack://Redoc/./src/services/models/Webhook.ts","webpack://Redoc/./src/services/models/SecuritySchemes.ts","webpack://Redoc/./src/services/SpecStore.ts","webpack://Redoc/./src/services/models/Group.model.ts","webpack://Redoc/./src/services/MenuBuilder.ts","webpack://Redoc/./src/services/MenuStore.ts","webpack://Redoc/./src/services/ScrollService.ts","webpack://Redoc/./src/services/SearchStore.ts","webpack://Redoc/./src/common-elements/panels.ts","webpack://Redoc/./src/common-elements/headers.ts","webpack://Redoc/./src/components/StoreBuilder.ts","webpack://Redoc/./src/common-elements/linkify.tsx","webpack://Redoc/./src/common-elements/shelfs.tsx","webpack://Redoc/./src/common-elements/mixins.ts","webpack://Redoc/./src/common-elements/fields-layout.ts","webpack://Redoc/./src/common-elements/schema.ts","webpack://Redoc/external commonjs \"react-tabs\"","webpack://Redoc/./src/common-elements/tabs.ts","webpack://Redoc/./src/common-elements/PrismDiv.tsx","webpack://Redoc/./src/common-elements/samples.tsx","webpack://Redoc/external commonjs \"perfect-scrollbar\"","webpack://Redoc/./src/common-elements/perfect-scrollbar.tsx","webpack://Redoc/./src/common-elements/Dropdown/Dropdown.tsx","webpack://Redoc/./src/common-elements/Dropdown/styled.ts","webpack://Redoc/./src/components/DropdownOrLabel/DropdownOrLabel.tsx","webpack://Redoc/external commonjs \"dompurify\"","webpack://Redoc/./src/components/Markdown/styled.elements.tsx","webpack://Redoc/./src/components/Markdown/SanitizedMdBlock.tsx","webpack://Redoc/./src/components/Markdown/Markdown.tsx","webpack://Redoc/./src/common-elements/Tooltip.tsx","webpack://Redoc/./src/services/ClipboardService.ts","webpack://Redoc/./src/common-elements/CopyButtonWrapper.tsx","webpack://Redoc/./src/utils/jsonToHtml.ts","webpack://Redoc/./src/components/JsonViewer/style.ts","webpack://Redoc/./src/components/JsonViewer/JsonViewer.tsx","webpack://Redoc/./src/components/SourceCode/SourceCode.tsx","webpack://Redoc/./src/components/PayloadSamples/ExampleValue.tsx","webpack://Redoc/./src/components/PayloadSamples/Example.tsx","webpack://Redoc/./src/components/PayloadSamples/exernalExampleHook.ts","webpack://Redoc/./src/components/PayloadSamples/styled.elements.ts","webpack://Redoc/./src/components/PayloadSamples/MediaTypeSamples.tsx","webpack://Redoc/external commonjs \"mobx-react\"","webpack://Redoc/./src/common-elements/fields.ts","webpack://Redoc/./src/components/ExternalDocumentation/ExternalDocumentation.tsx","webpack://Redoc/./src/components/Fields/EnumValues.tsx","webpack://Redoc/./src/components/Fields/Extensions.tsx","webpack://Redoc/./src/components/Fields/Examples.tsx","webpack://Redoc/./src/components/Fields/FieldConstraints.tsx","webpack://Redoc/./src/components/Fields/FieldDetail.tsx","webpack://Redoc/./src/components/Fields/Pattern.tsx","webpack://Redoc/./src/components/Fields/ArrayItemDetails.tsx","webpack://Redoc/./src/components/Fields/FieldDetails.tsx","webpack://Redoc/./src/components/Fields/Field.tsx","webpack://Redoc/./src/components/Schema/DiscriminatorDropdown.tsx","webpack://Redoc/./src/components/Schema/ObjectSchema.tsx","webpack://Redoc/./src/components/Schema/ArraySchema.tsx","webpack://Redoc/./src/components/Schema/OneOfSchema.tsx","webpack://Redoc/./src/components/Schema/RecursiveSchema.tsx","webpack://Redoc/./src/components/Schema/Schema.tsx","webpack://Redoc/./src/components/SchemaDefinition/SchemaDefinition.tsx","webpack://Redoc/./src/components/SecurityRequirement/styled.elements.ts","webpack://Redoc/./src/components/SeeMore/SeeMore.tsx","webpack://Redoc/./src/components/SecurityRequirement/OAuthFlow.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityDetails.tsx","webpack://Redoc/./src/components/SecuritySchemes/SecuritySchemes.tsx","webpack://Redoc/./src/services/AppStore.ts","webpack://Redoc/./src/components/ApiInfo/styled.elements.ts","webpack://Redoc/./src/components/ApiInfo/ApiInfo.tsx","webpack://Redoc/./src/components/ApiLogo/styled.elements.tsx","webpack://Redoc/./src/components/ApiLogo/ApiLogo.tsx","webpack://Redoc/./src/components/Markdown/AdvancedMarkdown.tsx","webpack://Redoc/external commonjs \"classnames\"","webpack://Redoc/./src/components/SideMenu/styled.elements.ts","webpack://Redoc/./src/components/Callbacks/CallbackTitle.tsx","webpack://Redoc/./src/components/Callbacks/styled.elements.ts","webpack://Redoc/./src/components/SelectOnClick/SelectOnClick.tsx","webpack://Redoc/./src/components/Endpoint/styled.elements.ts","webpack://Redoc/./src/components/Endpoint/Endpoint.tsx","webpack://Redoc/./src/components/Parameters/ParametersGroup.tsx","webpack://Redoc/./src/components/MediaTypeSwitch/MediaTypesSwitch.tsx","webpack://Redoc/./src/components/Parameters/Parameters.tsx","webpack://Redoc/./src/components/Responses/ResponseTitle.tsx","webpack://Redoc/./src/components/Responses/styled.elements.ts","webpack://Redoc/./src/components/Responses/ResponseHeaders.tsx","webpack://Redoc/./src/components/Responses/ResponseDetails.tsx","webpack://Redoc/./src/components/Responses/Response.tsx","webpack://Redoc/./src/components/Responses/ResponsesList.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityHeader.tsx","webpack://Redoc/./src/components/SecurityRequirement/RequiredScopesRow.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityRequirement.tsx","webpack://Redoc/./src/components/Callbacks/CallbackDetails.tsx","webpack://Redoc/./src/components/Callbacks/CallbackOperation.tsx","webpack://Redoc/./src/components/Callbacks/CallbacksList.tsx","webpack://Redoc/./src/components/GenericChildrenSwitcher/GenericChildrenSwitcher.tsx","webpack://Redoc/./src/components/PayloadSamples/PayloadSamples.tsx","webpack://Redoc/./src/components/CallbackSamples/CallbackReqSamples.tsx","webpack://Redoc/./src/components/CallbackSamples/CallbackSamples.tsx","webpack://Redoc/./src/components/RequestSamples/RequestSamples.tsx","webpack://Redoc/./src/components/ResponseSamples/ResponseSamples.tsx","webpack://Redoc/./src/components/Operation/Operation.tsx","webpack://Redoc/./src/components/ContentItems/ContentItems.tsx","webpack://Redoc/./src/components/SideMenu/MenuItem.tsx","webpack://Redoc/./src/components/SideMenu/MenuItems.tsx","webpack://Redoc/./src/components/SideMenu/Logo.tsx","webpack://Redoc/./src/components/SideMenu/SideMenu.tsx","webpack://Redoc/./src/components/StickySidebar/ChevronSvg.tsx","webpack://Redoc/./src/components/StickySidebar/StickyResponsiveSidebar.tsx","webpack://Redoc/./src/components/Redoc/styled.elements.tsx","webpack://Redoc/./src/components/SearchBox/styled.elements.tsx","webpack://Redoc/./src/components/SearchBox/SearchBox.tsx","webpack://Redoc/./src/components/Redoc/Redoc.tsx","webpack://Redoc/./src/components/RedocStandalone.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Redoc\"] = factory();\n\telse\n\t\troot[\"Redoc\"] = factory();\n})(this, function() {\nreturn ","\n\t\t\t\tvar addMethods = require(\"../../node_modules/@redocly/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"add\",\"done\",\"toJS\",\"fromExternalJS\",\"load\",\"dispose\",\"search\",\"Worker\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(URL.createObjectURL(new Blob([\"/*! For license information please see d87bcbdbea8f8f5aa26f.worker.js.LICENSE.txt */\\n!function(){var e={291:function(e,t,r){var n,i;!function(){var s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,P,b,T,O,I,R,F,C,N,j=function(e){var t=new j.Builder;return t.pipeline.add(j.trimmer,j.stopWordFilter,j.stemmer),t.searchPipeline.add(j.stemmer),e.call(t,t),t.build()};j.version=\\\"2.3.9\\\",j.utils={},j.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),j.utils.asString=function(e){return null==e?\\\"\\\":e.toString()},j.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),n=0;n<r.length;n++){var i=r[n],s=e[i];if(Array.isArray(s))t[i]=s.slice();else{if(\\\"string\\\"!=typeof s&&\\\"number\\\"!=typeof s&&\\\"boolean\\\"!=typeof s)throw new TypeError(\\\"clone is not deep and does not support nested objects\\\");t[i]=s}}return t},j.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},j.FieldRef.joiner=\\\"/\\\",j.FieldRef.fromString=function(e){var t=e.indexOf(j.FieldRef.joiner);if(-1===t)throw\\\"malformed field ref string\\\";var r=e.slice(0,t),n=e.slice(t+1);return new j.FieldRef(n,r,e)},j.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+j.FieldRef.joiner+this.docRef),this._stringValue},j.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},j.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},j.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},j.Set.prototype.contains=function(e){return!!this.elements[e]},j.Set.prototype.intersect=function(e){var t,r,n,i=[];if(e===j.Set.complete)return this;if(e===j.Set.empty)return e;this.length<e.length?(t=this,r=e):(t=e,r=this),n=Object.keys(t.elements);for(var s=0;s<n.length;s++){var o=n[s];o in r.elements&&i.push(o)}return new j.Set(i)},j.Set.prototype.union=function(e){return e===j.Set.complete?j.Set.complete:e===j.Set.empty?this:new j.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},j.idf=function(e,t){var r=0;for(var n in e)\\\"_index\\\"!=n&&(r+=Object.keys(e[n]).length);var i=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(i))},j.Token=function(e,t){this.str=e||\\\"\\\",this.metadata=t||{}},j.Token.prototype.toString=function(){return this.str},j.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},j.Token.prototype.clone=function(e){return e=e||function(e){return e},new j.Token(e(this.str,this.metadata),this.metadata)},j.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return new j.Token(j.utils.asString(e).toLowerCase(),j.utils.clone(t))});for(var r=e.toString().toLowerCase(),n=r.length,i=[],s=0,o=0;s<=n;s++){var a=s-o;if(r.charAt(s).match(j.tokenizer.separator)||s==n){if(a>0){var u=j.utils.clone(t)||{};u.position=[o,a],u.index=i.length,i.push(new j.Token(r.slice(o,s),u))}o=s+1}}return i},j.tokenizer.separator=/[\\\\s\\\\-]+/,j.Pipeline=function(){this._stack=[]},j.Pipeline.registeredFunctions=Object.create(null),j.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&j.utils.warn(\\\"Overwriting existing registered function: \\\"+t),e.label=t,j.Pipeline.registeredFunctions[e.label]=e},j.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||j.utils.warn(\\\"Function is not registered with pipeline. This may cause problems when serialising the index.\\\\n\\\",e)},j.Pipeline.load=function(e){var t=new j.Pipeline;return e.forEach(function(e){var r=j.Pipeline.registeredFunctions[e];if(!r)throw new Error(\\\"Cannot load unregistered function: \\\"+e);t.add(r)}),t},j.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(e){j.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},j.Pipeline.prototype.after=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");r+=1,this._stack.splice(r,0,t)},j.Pipeline.prototype.before=function(e,t){j.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");this._stack.splice(r,0,t)},j.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},j.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var n=this._stack[r],i=[],s=0;s<e.length;s++){var o=n(e[s],s,e);if(null!=o&&\\\"\\\"!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)i.push(o[a]);else i.push(o)}e=i}return e},j.Pipeline.prototype.runString=function(e,t){var r=new j.Token(e,t);return this.run([r]).map(function(e){return e.toString()})},j.Pipeline.prototype.reset=function(){this._stack=[]},j.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return j.Pipeline.warnIfFunctionNotRegistered(e),e.label})},j.Vector=function(e){this._magnitude=0,this.elements=e||[]},j.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,n=r-t,i=Math.floor(n/2),s=this.elements[2*i];n>1&&(s<e&&(t=i),s>e&&(r=i),s!=e);)n=r-t,i=t+Math.floor(n/2),s=this.elements[2*i];return s==e||s>e?2*i:s<e?2*(i+1):void 0},j.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw\\\"duplicate index\\\"})},j.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var n=this.positionForIndex(e);this.elements[n]==e?this.elements[n+1]=r(this.elements[n+1],t):this.elements.splice(n,0,e,t)},j.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var n=this.elements[r];e+=n*n}return this._magnitude=Math.sqrt(e)},j.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,n=e.elements,i=r.length,s=n.length,o=0,a=0,u=0,l=0;u<i&&l<s;)(o=r[u])<(a=n[l])?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*n[l+1],u+=2,l+=2);return t},j.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},j.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},j.Vector.prototype.toJSON=function(){return this.elements},j.stemmer=(o={ational:\\\"ate\\\",tional:\\\"tion\\\",enci:\\\"ence\\\",anci:\\\"ance\\\",izer:\\\"ize\\\",bli:\\\"ble\\\",alli:\\\"al\\\",entli:\\\"ent\\\",eli:\\\"e\\\",ousli:\\\"ous\\\",ization:\\\"ize\\\",ation:\\\"ate\\\",ator:\\\"ate\\\",alism:\\\"al\\\",iveness:\\\"ive\\\",fulness:\\\"ful\\\",ousness:\\\"ous\\\",aliti:\\\"al\\\",iviti:\\\"ive\\\",biliti:\\\"ble\\\",logi:\\\"log\\\"},a={icate:\\\"ic\\\",ative:\\\"\\\",alize:\\\"al\\\",iciti:\\\"ic\\\",ical:\\\"ic\\\",ful:\\\"\\\",ness:\\\"\\\"},h=\\\"^(\\\"+(l=\\\"[^aeiou][^aeiouy]*\\\")+\\\")?\\\"+(c=(u=\\\"[aeiouy]\\\")+\\\"[aeiou]*\\\")+l+\\\"(\\\"+c+\\\")?$\\\",d=\\\"^(\\\"+l+\\\")?\\\"+c+l+c+l,f=\\\"^(\\\"+l+\\\")?\\\"+u,p=new RegExp(\\\"^(\\\"+l+\\\")?\\\"+c+l),y=new RegExp(d),m=new RegExp(h),g=new RegExp(f),x=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,Q=/^(.+?)(ed|ing)$/,k=/.$/,S=/(at|bl|iz)$/,E=new RegExp(\\\"([^aeiouylsz])\\\\\\\\1$\\\"),L=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),P=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,T=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,O=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,I=/^(.+?)(s|t)(ion)$/,R=/^(.+?)e$/,F=/ll$/,C=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),N=function(e){var t,r,n,i,s,u,l;if(e.length<3)return e;if(\\\"y\\\"==(n=e.substr(0,1))&&(e=n.toUpperCase()+e.substr(1)),s=v,(i=x).test(e)?e=e.replace(i,\\\"$1$2\\\"):s.test(e)&&(e=e.replace(s,\\\"$1$2\\\")),s=Q,(i=w).test(e)){var c=i.exec(e);(i=p).test(c[1])&&(i=k,e=e.replace(i,\\\"\\\"))}else s.test(e)&&(t=(c=s.exec(e))[1],(s=g).test(t)&&(u=E,l=L,(s=S).test(e=t)?e+=\\\"e\\\":u.test(e)?(i=k,e=e.replace(i,\\\"\\\")):l.test(e)&&(e+=\\\"e\\\")));return(i=P).test(e)&&(e=(t=(c=i.exec(e))[1])+\\\"i\\\"),(i=b).test(e)&&(t=(c=i.exec(e))[1],r=c[2],(i=p).test(t)&&(e=t+o[r])),(i=T).test(e)&&(t=(c=i.exec(e))[1],r=c[2],(i=p).test(t)&&(e=t+a[r])),s=I,(i=O).test(e)?(t=(c=i.exec(e))[1],(i=y).test(t)&&(e=t)):s.test(e)&&(t=(c=s.exec(e))[1]+c[2],(s=y).test(t)&&(e=t)),(i=R).test(e)&&(t=(c=i.exec(e))[1],s=m,u=C,((i=y).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=y,(i=F).test(e)&&s.test(e)&&(i=k,e=e.replace(i,\\\"\\\")),\\\"y\\\"==n&&(e=n.toLowerCase()+e.substr(1)),e},function(e){return e.update(N)}),j.Pipeline.registerFunction(j.stemmer,\\\"stemmer\\\"),j.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},j.stopWordFilter=j.generateStopWordFilter([\\\"a\\\",\\\"able\\\",\\\"about\\\",\\\"across\\\",\\\"after\\\",\\\"all\\\",\\\"almost\\\",\\\"also\\\",\\\"am\\\",\\\"among\\\",\\\"an\\\",\\\"and\\\",\\\"any\\\",\\\"are\\\",\\\"as\\\",\\\"at\\\",\\\"be\\\",\\\"because\\\",\\\"been\\\",\\\"but\\\",\\\"by\\\",\\\"can\\\",\\\"cannot\\\",\\\"could\\\",\\\"dear\\\",\\\"did\\\",\\\"do\\\",\\\"does\\\",\\\"either\\\",\\\"else\\\",\\\"ever\\\",\\\"every\\\",\\\"for\\\",\\\"from\\\",\\\"get\\\",\\\"got\\\",\\\"had\\\",\\\"has\\\",\\\"have\\\",\\\"he\\\",\\\"her\\\",\\\"hers\\\",\\\"him\\\",\\\"his\\\",\\\"how\\\",\\\"however\\\",\\\"i\\\",\\\"if\\\",\\\"in\\\",\\\"into\\\",\\\"is\\\",\\\"it\\\",\\\"its\\\",\\\"just\\\",\\\"least\\\",\\\"let\\\",\\\"like\\\",\\\"likely\\\",\\\"may\\\",\\\"me\\\",\\\"might\\\",\\\"most\\\",\\\"must\\\",\\\"my\\\",\\\"neither\\\",\\\"no\\\",\\\"nor\\\",\\\"not\\\",\\\"of\\\",\\\"off\\\",\\\"often\\\",\\\"on\\\",\\\"only\\\",\\\"or\\\",\\\"other\\\",\\\"our\\\",\\\"own\\\",\\\"rather\\\",\\\"said\\\",\\\"say\\\",\\\"says\\\",\\\"she\\\",\\\"should\\\",\\\"since\\\",\\\"so\\\",\\\"some\\\",\\\"than\\\",\\\"that\\\",\\\"the\\\",\\\"their\\\",\\\"them\\\",\\\"then\\\",\\\"there\\\",\\\"these\\\",\\\"they\\\",\\\"this\\\",\\\"tis\\\",\\\"to\\\",\\\"too\\\",\\\"twas\\\",\\\"us\\\",\\\"wants\\\",\\\"was\\\",\\\"we\\\",\\\"were\\\",\\\"what\\\",\\\"when\\\",\\\"where\\\",\\\"which\\\",\\\"while\\\",\\\"who\\\",\\\"whom\\\",\\\"why\\\",\\\"will\\\",\\\"with\\\",\\\"would\\\",\\\"yet\\\",\\\"you\\\",\\\"your\\\"]),j.Pipeline.registerFunction(j.stopWordFilter,\\\"stopWordFilter\\\"),j.trimmer=function(e){return e.update(function(e){return e.replace(/^\\\\W+/,\\\"\\\").replace(/\\\\W+$/,\\\"\\\")})},j.Pipeline.registerFunction(j.trimmer,\\\"trimmer\\\"),j.TokenSet=function(){this.final=!1,this.edges={},this.id=j.TokenSet._nextId,j.TokenSet._nextId+=1},j.TokenSet._nextId=1,j.TokenSet.fromArray=function(e){for(var t=new j.TokenSet.Builder,r=0,n=e.length;r<n;r++)t.insert(e[r]);return t.finish(),t.root},j.TokenSet.fromClause=function(e){return\\\"editDistance\\\"in e?j.TokenSet.fromFuzzyString(e.term,e.editDistance):j.TokenSet.fromString(e.term)},j.TokenSet.fromFuzzyString=function(e,t){for(var r=new j.TokenSet,n=[{node:r,editsRemaining:t,str:e}];n.length;){var i=n.pop();if(i.str.length>0){var s,o=i.str.charAt(0);o in i.node.edges?s=i.node.edges[o]:(s=new j.TokenSet,i.node.edges[o]=s),1==i.str.length&&(s.final=!0),n.push({node:s,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if(\\\"*\\\"in i.node.edges)var a=i.node.edges[\\\"*\\\"];else a=new j.TokenSet,i.node.edges[\\\"*\\\"]=a;if(0==i.str.length&&(a.final=!0),n.push({node:a,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&n.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if(\\\"*\\\"in i.node.edges)var u=i.node.edges[\\\"*\\\"];else u=new j.TokenSet,i.node.edges[\\\"*\\\"]=u;1==i.str.length&&(u.final=!0),n.push({node:u,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var l,c=i.str.charAt(0),h=i.str.charAt(1);h in i.node.edges?l=i.node.edges[h]:(l=new j.TokenSet,i.node.edges[h]=l),1==i.str.length&&(l.final=!0),n.push({node:l,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return r},j.TokenSet.fromString=function(e){for(var t=new j.TokenSet,r=t,n=0,i=e.length;n<i;n++){var s=e[n],o=n==i-1;if(\\\"*\\\"==s)t.edges[s]=t,t.final=o;else{var a=new j.TokenSet;a.final=o,t.edges[s]=a,t=a}}return r},j.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:\\\"\\\",node:this}];t.length;){var r=t.pop(),n=Object.keys(r.node.edges),i=n.length;r.node.final&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<i;s++){var o=n[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},j.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?\\\"1\\\":\\\"0\\\",t=Object.keys(this.edges).sort(),r=t.length,n=0;n<r;n++){var i=t[n];e=e+i+this.edges[i].id}return e},j.TokenSet.prototype.intersect=function(e){for(var t=new j.TokenSet,r=void 0,n=[{qNode:e,output:t,node:this}];n.length;){r=n.pop();for(var i=Object.keys(r.qNode.edges),s=i.length,o=Object.keys(r.node.edges),a=o.length,u=0;u<s;u++)for(var l=i[u],c=0;c<a;c++){var h=o[c];if(h==l||\\\"*\\\"==l){var d=r.node.edges[h],f=r.qNode.edges[l],p=d.final&&f.final,y=void 0;h in r.output.edges?(y=r.output.edges[h]).final=y.final||p:((y=new j.TokenSet).final=p,r.output.edges[h]=y),n.push({qNode:f,output:y,node:d})}}}return t},j.TokenSet.Builder=function(){this.previousWord=\\\"\\\",this.root=new j.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},j.TokenSet.Builder.prototype.insert=function(e){var t,r=0;if(e<this.previousWord)throw new Error(\\\"Out of order word insertion\\\");for(var n=0;n<e.length&&n<this.previousWord.length&&e[n]==this.previousWord[n];n++)r++;for(this.minimize(r),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child,n=r;n<e.length;n++){var i=new j.TokenSet,s=e[n];t.edges[s]=i,this.uncheckedNodes.push({parent:t,char:s,child:i}),t=i}t.final=!0,this.previousWord=e},j.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},j.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],n=r.child.toString();n in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[n]:(r.child._str=n,this.minimizedNodes[n]=r.child),this.uncheckedNodes.pop()}},j.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},j.Index.prototype.search=function(e){return this.query(function(t){new j.QueryParser(e,t).parse()})},j.Index.prototype.query=function(e){for(var t=new j.Query(this.fields),r=Object.create(null),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)n[this.fields[a]]=new j.Vector;for(e.call(t,t),a=0;a<t.clauses.length;a++){var u,l=t.clauses[a],c=j.Set.empty;u=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var h=0;h<u.length;h++){var d=u[h];l.term=d;var f=j.TokenSet.fromClause(l),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&l.presence===j.Query.presence.REQUIRED){for(var y=0;y<l.fields.length;y++)s[R=l.fields[y]]=j.Set.empty;break}for(var m=0;m<p.length;m++){var g=p[m],x=this.invertedIndex[g],v=x._index;for(y=0;y<l.fields.length;y++){var w=x[R=l.fields[y]],Q=Object.keys(w),k=g+\\\"/\\\"+R,S=new j.Set(Q);if(l.presence==j.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[R]&&(s[R]=j.Set.complete)),l.presence!=j.Query.presence.PROHIBITED){if(n[R].upsert(v,l.boost,function(e,t){return e+t}),!i[k]){for(var E=0;E<Q.length;E++){var L,P=Q[E],b=new j.FieldRef(P,R),T=w[P];void 0===(L=r[b])?r[b]=new j.MatchData(g,R,T):L.add(g,R,T)}i[k]=!0}}else void 0===o[R]&&(o[R]=j.Set.empty),o[R]=o[R].union(S)}}}if(l.presence===j.Query.presence.REQUIRED)for(y=0;y<l.fields.length;y++)s[R=l.fields[y]]=s[R].intersect(c)}var O=j.Set.complete,I=j.Set.empty;for(a=0;a<this.fields.length;a++){var R;s[R=this.fields[a]]&&(O=O.intersect(s[R])),o[R]&&(I=I.union(o[R]))}var F=Object.keys(r),C=[],N=Object.create(null);if(t.isNegated())for(F=Object.keys(this.fieldVectors),a=0;a<F.length;a++){b=F[a];var _=j.FieldRef.fromString(b);r[b]=new j.MatchData}for(a=0;a<F.length;a++){var D=(_=j.FieldRef.fromString(F[a])).docRef;if(O.contains(D)&&!I.contains(D)){var A,B=this.fieldVectors[_],z=n[_.fieldName].similarity(B);if(void 0!==(A=N[D]))A.score+=z,A.matchData.combine(r[_]);else{var V={ref:D,score:z,matchData:r[_]};N[D]=V,C.push(V)}}}return C.sort(function(e,t){return t.score-e.score})},j.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:j.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},j.Index.load=function(e){var t={},r={},n=e.fieldVectors,i=Object.create(null),s=e.invertedIndex,o=new j.TokenSet.Builder,a=j.Pipeline.load(e.pipeline);e.version!=j.version&&j.utils.warn(\\\"Version mismatch when loading serialised index. Current version of lunr '\\\"+j.version+\\\"' does not match serialized index '\\\"+e.version+\\\"'\\\");for(var u=0;u<n.length;u++){var l=(h=n[u])[0],c=h[1];r[l]=new j.Vector(c)}for(u=0;u<s.length;u++){var h,d=(h=s[u])[0],f=h[1];o.insert(d),i[d]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=i,t.tokenSet=o.root,t.pipeline=a,new j.Index(t)},j.Builder=function(){this._ref=\\\"id\\\",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=j.tokenizer,this.pipeline=new j.Pipeline,this.searchPipeline=new j.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},j.Builder.prototype.ref=function(e){this._ref=e},j.Builder.prototype.field=function(e,t){if(/\\\\//.test(e))throw new RangeError(\\\"Field '\\\"+e+\\\"' contains illegal character '/'\\\");this._fields[e]=t||{}},j.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},j.Builder.prototype.k1=function(e){this._k1=e},j.Builder.prototype.add=function(e,t){var r=e[this._ref],n=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var i=0;i<n.length;i++){var s=n[i],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new j.FieldRef(r,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var d=0;d<l.length;d++){var f=l[d];if(null==h[f]&&(h[f]=0),h[f]+=1,null==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<n.length;y++)p[n[y]]=Object.create(null);this.invertedIndex[f]=p}null==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],x=f.metadata[g];null==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(x)}}}},j.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},n={},i=0;i<t;i++){var s=j.FieldRef.fromString(e[i]),o=s.fieldName;n[o]||(n[o]=0),n[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(i=0;i<a.length;i++){var u=a[i];r[u]=r[u]/n[u]}this.averageFieldLength=r},j.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,n=Object.create(null),i=0;i<r;i++){for(var s=j.FieldRef.fromString(t[i]),o=s.fieldName,a=this.fieldLengths[s],u=new j.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,d=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<h;p++){var y,m,g,x=c[p],v=l[x],w=this.invertedIndex[x]._index;void 0===n[x]?(y=j.idf(this.invertedIndex[x],this.documentCount),n[x]=y):y=n[x],m=y*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+v),m*=d,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},j.Builder.prototype.createTokenSet=function(){this.tokenSet=j.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},j.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new j.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},j.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},j.MatchData=function(e,t,r){for(var n=Object.create(null),i=Object.keys(r||{}),s=0;s<i.length;s++){var o=i[s];n[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=n)},j.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var n=t[r],i=Object.keys(e.metadata[n]);null==this.metadata[n]&&(this.metadata[n]=Object.create(null));for(var s=0;s<i.length;s++){var o=i[s],a=Object.keys(e.metadata[n][o]);null==this.metadata[n][o]&&(this.metadata[n][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[n][o][l]?this.metadata[n][o][l]=e.metadata[n][o][l]:this.metadata[n][o][l]=this.metadata[n][o][l].concat(e.metadata[n][o][l])}}}},j.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var n=Object.keys(r),i=0;i<n.length;i++){var s=n[i];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},j.Query=function(e){this.clauses=[],this.allFields=e},j.Query.wildcard=new String(\\\"*\\\"),j.Query.wildcard.NONE=0,j.Query.wildcard.LEADING=1,j.Query.wildcard.TRAILING=2,j.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},j.Query.prototype.clause=function(e){return\\\"fields\\\"in e||(e.fields=this.allFields),\\\"boost\\\"in e||(e.boost=1),\\\"usePipeline\\\"in e||(e.usePipeline=!0),\\\"wildcard\\\"in e||(e.wildcard=j.Query.wildcard.NONE),e.wildcard&j.Query.wildcard.LEADING&&e.term.charAt(0)!=j.Query.wildcard&&(e.term=\\\"*\\\"+e.term),e.wildcard&j.Query.wildcard.TRAILING&&e.term.slice(-1)!=j.Query.wildcard&&(e.term=e.term+\\\"*\\\"),\\\"presence\\\"in e||(e.presence=j.Query.presence.OPTIONAL),this.clauses.push(e),this},j.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=j.Query.presence.PROHIBITED)return!1;return!0},j.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,j.utils.clone(t))},this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},j.QueryParseError=function(e,t,r){this.name=\\\"QueryParseError\\\",this.message=e,this.start=t,this.end=r},j.QueryParseError.prototype=new Error,j.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},j.QueryLexer.prototype.run=function(){for(var e=j.QueryLexer.lexText;e;)e=e(this)},j.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,n=0;n<this.escapeCharPositions.length;n++)r=this.escapeCharPositions[n],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join(\\\"\\\")},j.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},j.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},j.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return j.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},j.QueryLexer.prototype.width=function(){return this.pos-this.start},j.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},j.QueryLexer.prototype.backup=function(){this.pos-=1},j.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=j.QueryLexer.EOS&&this.backup()},j.QueryLexer.prototype.more=function(){return this.pos<this.length},j.QueryLexer.EOS=\\\"EOS\\\",j.QueryLexer.FIELD=\\\"FIELD\\\",j.QueryLexer.TERM=\\\"TERM\\\",j.QueryLexer.EDIT_DISTANCE=\\\"EDIT_DISTANCE\\\",j.QueryLexer.BOOST=\\\"BOOST\\\",j.QueryLexer.PRESENCE=\\\"PRESENCE\\\",j.QueryLexer.lexField=function(e){return e.backup(),e.emit(j.QueryLexer.FIELD),e.ignore(),j.QueryLexer.lexText},j.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(j.QueryLexer.TERM)),e.ignore(),e.more())return j.QueryLexer.lexText},j.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.EDIT_DISTANCE),j.QueryLexer.lexText},j.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(j.QueryLexer.BOOST),j.QueryLexer.lexText},j.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(j.QueryLexer.TERM)},j.QueryLexer.termSeparator=j.tokenizer.separator,j.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==j.QueryLexer.EOS)return j.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(\\\":\\\"==t)return j.QueryLexer.lexField;if(\\\"~\\\"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexEditDistance;if(\\\"^\\\"==t)return e.backup(),e.width()>0&&e.emit(j.QueryLexer.TERM),j.QueryLexer.lexBoost;if(\\\"+\\\"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(\\\"-\\\"==t&&1===e.width())return e.emit(j.QueryLexer.PRESENCE),j.QueryLexer.lexText;if(t.match(j.QueryLexer.termSeparator))return j.QueryLexer.lexTerm}else e.escapeCharacter()}},j.QueryParser=function(e,t){this.lexer=new j.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},j.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=j.QueryParser.parseClause;e;)e=e(this);return this.query},j.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},j.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},j.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},j.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case j.QueryLexer.PRESENCE:return j.QueryParser.parsePresence;case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:var r=\\\"expected either a field or a term, found \\\"+t.type;throw t.str.length>=1&&(r+=\\\" with value '\\\"+t.str+\\\"'\\\"),new j.QueryParseError(r,t.start,t.end)}},j.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case\\\"-\\\":e.currentClause.presence=j.Query.presence.PROHIBITED;break;case\\\"+\\\":e.currentClause.presence=j.Query.presence.REQUIRED;break;default:var r=\\\"unrecognised presence operator'\\\"+t.str+\\\"'\\\";throw new j.QueryParseError(r,t.start,t.end)}var n=e.peekLexeme();if(null==n)throw r=\\\"expecting term or field, found nothing\\\",new j.QueryParseError(r,t.start,t.end);switch(n.type){case j.QueryLexer.FIELD:return j.QueryParser.parseField;case j.QueryLexer.TERM:return j.QueryParser.parseTerm;default:throw r=\\\"expecting term or field, found '\\\"+n.type+\\\"'\\\",new j.QueryParseError(r,n.start,n.end)}}},j.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map(function(e){return\\\"'\\\"+e+\\\"'\\\"}).join(\\\", \\\"),n=\\\"unrecognised field '\\\"+t.str+\\\"', possible fields: \\\"+r;throw new j.QueryParseError(n,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i)throw n=\\\"expecting term, found nothing\\\",new j.QueryParseError(n,t.start,t.end);if(i.type===j.QueryLexer.TERM)return j.QueryParser.parseTerm;throw n=\\\"expecting term, found '\\\"+i.type+\\\"'\\\",new j.QueryParseError(n,i.start,i.end)}},j.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf(\\\"*\\\")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:var n=\\\"Unexpected lexeme type '\\\"+r.type+\\\"'\\\";throw new j.QueryParseError(n,r.start,r.end)}else e.nextClause()}},j.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n=\\\"edit distance must be numeric\\\";throw new j.QueryParseError(n,t.start,t.end)}e.currentClause.editDistance=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new j.QueryParseError(n,i.start,i.end)}else e.nextClause()}},j.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n=\\\"boost must be numeric\\\";throw new j.QueryParseError(n,t.start,t.end)}e.currentClause.boost=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case j.QueryLexer.TERM:return e.nextClause(),j.QueryParser.parseTerm;case j.QueryLexer.FIELD:return e.nextClause(),j.QueryParser.parseField;case j.QueryLexer.EDIT_DISTANCE:return j.QueryParser.parseEditDistance;case j.QueryLexer.BOOST:return j.QueryParser.parseBoost;case j.QueryLexer.PRESENCE:return e.nextClause(),j.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new j.QueryParseError(n,i.start,i.end)}else e.nextClause()}},void 0===(i=\\\"function\\\"==typeof(n=function(){return j})?n.call(t,r,t,e):n)||(e.exports=i)}()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var n={};!function(){\\\"use strict\\\";r.d(n,{add:function(){return c},dispose:function(){return y},done:function(){return h},fromExternalJS:function(){return f},load:function(){return p},search:function(){return m},toJS:function(){return d}});var e=r(291),t=(e,t,r)=>new Promise((n,i)=>{var s=e=>{try{a(r.next(e))}catch(e){i(e)}},o=e=>{try{a(r.throw(e))}catch(e){i(e)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(s,o);a((r=r.apply(e,t)).next())});let i,s,o,a=[];function u(){i=new e.Builder,i.field(\\\"title\\\"),i.field(\\\"description\\\"),i.ref(\\\"ref\\\"),i.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),o=new Promise(e=>{s=e})}e.tokenizer.separator=/\\\\s+/,u();const l=t=>{const r=e.trimmer(new e.Token(t,{}));return\\\"*\\\"+e.stemmer(r)+\\\"*\\\"};function c(e,t,r){const n=a.push(r)-1,s={title:e.toLowerCase(),description:t.toLowerCase(),ref:n};i.add(s)}function h(){return t(this,null,function*(){s(i.build())})}function d(){return t(this,null,function*(){return{store:a,index:(yield o).toJSON()}})}function f(e,r){return t(this,null,function*(){try{if(importScripts(e),!self[r])throw new Error(\\\"Broken index file format\\\");p(self[r])}catch(e){console.error(\\\"Failed to load search index: \\\"+e.message)}})}function p(r){return t(this,null,function*(){a=r.store,s(e.Index.load(r.index))})}function y(){return t(this,null,function*(){a=[],u()})}function m(e,r=0){return t(this,null,function*(){if(0===e.trim().length)return[];let t=(yield o).query(t=>{e.trim().toLowerCase().split(/\\\\s+/).forEach(e=>{if(1===e.length)return;const r=l(e);t.term(r,{})})});return r>0&&(t=t.slice(0,r)),t.map(e=>({meta:a[e.ref],score:e.score}))})}addEventListener(\\\"message\\\",function(e){var t,r=e.data,i=r.type,s=r.method,o=r.id,a=r.params;\\\"RPC\\\"===i&&s&&((t=n[s])?Promise.resolve().then(function(){return t.apply(n,a)}):Promise.reject(\\\"No such method\\\")).then(function(e){postMessage({type:\\\"RPC\\\",id:o,result:e})}).catch(function(e){var t={message:e};e.stack&&(t.message=e.message,t.stack=e.stack,t.name=e.name),postMessage({type:\\\"RPC\\\",id:o,error:t})})}),postMessage({type:\\\"RPC\\\",method:\\\"ready\\\"})}()}();\\n//# sourceMappingURL=d87bcbdbea8f8f5aa26f.worker.js.map\"])), { name: \"[fullhash].worker.js\" })\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t","function addMethods(worker, methods) {\n var c = 0;\n var callbacks = {};\n worker.addEventListener('message', function (e) {\n var d = e.data;\n if (d.type !== 'RPC') return;\n if (d.id) {\n var f = callbacks[d.id];\n if (f) {\n delete callbacks[d.id];\n if (d.error) {\n f[1](Object.assign(Error(d.error.message), d.error));\n } else {\n f[0](d.result);\n }\n }\n } else {\n var evt = document.createEvent('Event');\n evt.initEvent(d.method, false, false);\n evt.data = d.params;\n worker.dispatchEvent(evt);\n }\n });\n methods.forEach(function (method) {\n worker[method] = function () {\n var _arguments = arguments;\n return new Promise(function (a, b) {\n var id = ++c;\n callbacks[id] = [a, b];\n worker.postMessage({\n type: 'RPC',\n id: id,\n method: method,\n params: [].slice.call(_arguments)\n });\n });\n };\n });\n}\n\nmodule.exports = addMethods;\n//# sourceMappingURL=rpc-wrapper.js.map\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y,.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y{opacity:.6}.ps .ps__rail-x:hover,.ps .ps__rail-y:hover,.ps .ps__rail-x:focus,.ps .ps__rail-y:focus,.ps .ps__rail-x.ps--clicking,.ps .ps__rail-y.ps--clicking{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x:hover>.ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x.ps--clicking .ps__thumb-x{background-color:#999;height:11px}.ps__rail-y:hover>.ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y.ps--clicking .ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ps{overflow:auto!important}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/perfect-scrollbar/css/perfect-scrollbar.css\"],\"names\":[],\"mappings\":\"AAGA,IACE,yBAAU,CACV,oBAAiB,CACjB,uBAAoB,CACpB,iBAAc,CACd,qBACF,CAKA,YACE,YAAS,CACT,SAAS,CACT,yDAAqD,CACrD,iEAA6D,CAC7D,WAAQ,CAER,QAAQ,CAER,iBACF,CAEA,YACE,YAAS,CACT,SAAS,CACT,yDAAqD,CACrD,iEAA6D,CAC7D,UAAO,CAEP,OAAO,CAEP,iBACF,CAEA,oDAEE,aAAS,CACT,4BACF,CAEA,oJAME,UACF,CAEA,kJAME,qBAAkB,CAClB,UACF,CAKA,aACE,qBAAkB,CAnEpB,iBAoEiB,CACf,6DAAoD,CACpD,qEAA4D,CAC5D,UAAQ,CAER,UAAQ,CAER,iBACF,CAEA,aACE,qBAAkB,CA/EpB,iBAgFiB,CACf,4DAAmD,CACnD,oEAA2D,CAC3D,SAAO,CAEP,SAAO,CAEP,iBACF,CAEA,oGAGE,qBAAkB,CAClB,WACF,CAEA,oGAGE,qBAAkB,CAClB,UACF,CAGA,qCACE,IACE,uBACF,CACF,CAEA,wEACE,IACE,uBACF,CACF\",\"sourcesContent\":[\"/*\\n * Container style\\n */\\n.ps {\\n overflow: hidden !important;\\n overflow-anchor: none;\\n -ms-overflow-style: none;\\n touch-action: auto;\\n -ms-touch-action: auto;\\n}\\n\\n/*\\n * Scrollbar rail styles\\n */\\n.ps__rail-x {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n height: 15px;\\n /* there must be 'bottom' or 'top' for ps__rail-x */\\n bottom: 0px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__rail-y {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n width: 15px;\\n /* there must be 'right' or 'left' for ps__rail-y */\\n right: 0;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps--active-x > .ps__rail-x,\\n.ps--active-y > .ps__rail-y {\\n display: block;\\n background-color: transparent;\\n}\\n\\n.ps:hover > .ps__rail-x,\\n.ps:hover > .ps__rail-y,\\n.ps--focus > .ps__rail-x,\\n.ps--focus > .ps__rail-y,\\n.ps--scrolling-x > .ps__rail-x,\\n.ps--scrolling-y > .ps__rail-y {\\n opacity: 0.6;\\n}\\n\\n.ps .ps__rail-x:hover,\\n.ps .ps__rail-y:hover,\\n.ps .ps__rail-x:focus,\\n.ps .ps__rail-y:focus,\\n.ps .ps__rail-x.ps--clicking,\\n.ps .ps__rail-y.ps--clicking {\\n background-color: #eee;\\n opacity: 0.9;\\n}\\n\\n/*\\n * Scrollbar thumb styles\\n */\\n.ps__thumb-x {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, height .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, height .2s ease-in-out;\\n height: 6px;\\n /* there must be 'bottom' for ps__thumb-x */\\n bottom: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__thumb-y {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, width .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, width .2s ease-in-out;\\n width: 6px;\\n /* there must be 'right' for ps__thumb-y */\\n right: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__rail-x:hover > .ps__thumb-x,\\n.ps__rail-x:focus > .ps__thumb-x,\\n.ps__rail-x.ps--clicking .ps__thumb-x {\\n background-color: #999;\\n height: 11px;\\n}\\n\\n.ps__rail-y:hover > .ps__thumb-y,\\n.ps__rail-y:focus > .ps__thumb-y,\\n.ps__rail-y.ps--clicking .ps__thumb-y {\\n background-color: #999;\\n width: 11px;\\n}\\n\\n/* MS supports */\\n@supports (-ms-overflow-style: none) {\\n .ps {\\n overflow: auto !important;\\n }\\n}\\n\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .ps {\\n overflow: auto !important;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"lunr\");","import * as lunr from 'lunr';\nimport type { SearchResult } from './types';\n\n/* just for better typings */\nexport default class Worker {\n add: typeof add = add;\n done = done;\n search: typeof search = search;\n toJS = toJS;\n load = load;\n dispose = dispose;\n fromExternalJS = fromExternalJS;\n}\n\nlet store: any[] = [];\n\nlunr.tokenizer.separator = /\\s+/;\n\nlet builder: lunr.Builder;\n\nlet resolveIndex: (v: lunr.Index) => void;\n\nlet index: Promise<lunr.Index>;\n\nfunction initEmpty() {\n builder = new lunr.Builder();\n builder.field('title');\n builder.field('description');\n builder.ref('ref');\n\n builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);\n\n index = new Promise(resolve => {\n resolveIndex = resolve;\n });\n}\n\ninitEmpty();\n\nconst expandTerm = term => {\n const token = lunr.trimmer(new lunr.Token(term, {}));\n return '*' + lunr.stemmer(token) + '*';\n};\n\nexport function add<T>(title: string, description: string, meta?: T) {\n const ref = store.push(meta) - 1;\n const item = { title: title.toLowerCase(), description: description.toLowerCase(), ref };\n builder.add(item);\n}\n\nexport async function done() {\n resolveIndex(builder.build());\n}\n\nexport async function toJS() {\n return {\n store,\n index: (await index).toJSON(),\n };\n}\n\nexport async function fromExternalJS(path: string, exportName: string) {\n try {\n importScripts(path);\n if (!self[exportName]) {\n throw new Error('Broken index file format');\n }\n\n load(self[exportName]);\n } catch (e) {\n console.error('Failed to load search index: ' + e.message);\n }\n}\n\nexport async function load(state: any) {\n store = state.store;\n resolveIndex(lunr.Index.load(state.index));\n}\n\nexport async function dispose() {\n store = [];\n initEmpty();\n}\n\nexport async function search<Meta = string>(\n q: string,\n limit = 0,\n): Promise<Array<SearchResult<Meta>>> {\n if (q.trim().length === 0) {\n return [];\n }\n\n let searchResults = (await index).query(t => {\n q.trim()\n .toLowerCase()\n .split(/\\s+/)\n .forEach(term => {\n if (term.length === 1) return;\n const exp = expandTerm(term);\n t.term(exp, {});\n });\n });\n\n if (limit > 0) {\n searchResults = searchResults.slice(0, limit);\n }\n\n return searchResults.map(res => ({ meta: store[res.ref], score: res.score }));\n}\n","'use strict';\n\nconst sjs = require('fast-safe-stringify');\n\nconst colour = process.env.NODE_DISABLE_COLORS ?\n { red: '', yellow: '', green: '', normal: '' } :\n { red: '\\x1b[31m', yellow: '\\x1b[33;1m', green: '\\x1b[32m', normal: '\\x1b[0m' };\n\nfunction uniqueOnly(value, index, self) {\n return self.indexOf(value) === index;\n}\n\nfunction hasDuplicates(array) {\n return (new Set(array)).size !== array.length;\n}\n\nfunction allSame(array) {\n return (new Set(array)).size <= 1;\n}\n\nfunction deepEquals(obj1, obj2) {\n function _equals(obj1, obj2) {\n return sjs.stringify(obj1) === sjs.stringify(Object.assign({}, obj1, obj2));\n }\n return _equals(obj1, obj2) && _equals(obj2, obj1);\n}\n\nfunction compressArray(arr) {\n let result = [];\n for (let candidate of arr) {\n let dupe = result.find(function(e,i,a){\n return deepEquals(e,candidate);\n });\n if (!dupe) result.push(candidate);\n }\n return result;\n}\n\nfunction distinctArray(arr) {\n return (arr.length === compressArray(arr).length);\n}\n\nfunction firstDupe(arr) {\n return arr.find(function(e,i,a){\n return arr.indexOf(e)<i;\n });\n}\n\n/**\n * simple hash implementation based on https://stackoverflow.com/a/7616484/1749888\n * @param {string} s - string to hash\n * @returns {number} numerical hash code\n */\nfunction hash(s) {\n let hash = 0;\n let chr;\n if (s.length === 0) return hash;\n for (let i = 0; i < s.length; i++) {\n chr = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nString.prototype.toCamelCase = function camelize() {\n return this.toLowerCase().replace(/[-_ \\/\\.](.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n}\n\nconst parameterTypeProperties = [\n 'format',\n 'minimum',\n 'maximum',\n 'exclusiveMinimum',\n 'exclusiveMaximum',\n 'minLength',\n 'maxLength',\n 'multipleOf',\n 'minItems',\n 'maxItems',\n 'uniqueItems',\n 'minProperties',\n 'maxProperties',\n 'additionalProperties',\n 'pattern',\n 'enum',\n 'default'\n];\n\nconst arrayProperties = [\n 'items',\n 'minItems',\n 'maxItems',\n 'uniqueItems'\n];\n\nconst httpMethods = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n 'trace'\n];\n\nfunction sanitise(s) {\n s = s.replace('[]','Array');\n let components = s.split('/');\n components[0] = components[0].replace(/[^A-Za-z0-9_\\-\\.]+|\\s+/gm, '_');\n return components.join('/');\n}\n\nfunction sanitiseAll(s) {\n return sanitise(s.split('/').join('_'));\n}\n\nmodule.exports = {\n\n colour: colour,\n uniqueOnly: uniqueOnly,\n hasDuplicates: hasDuplicates,\n allSame: allSame,\n distinctArray: distinctArray,\n firstDupe: firstDupe,\n hash: hash,\n parameterTypeProperties: parameterTypeProperties,\n arrayProperties: arrayProperties,\n httpMethods: httpMethods,\n sanitise: sanitise,\n sanitiseAll: sanitiseAll\n\n};\n\n","'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst url = require('url');\n\nconst fetch = require('node-fetch-h2');\nconst yaml = require('yaml');\n\nconst jptr = require('reftools/lib/jptr.js').jptr;\nconst recurse = require('reftools/lib/recurse.js').recurse;\nconst clone = require('reftools/lib/clone.js').clone;\nconst deRef = require('reftools/lib/dereference.js').dereference;\nconst isRef = require('reftools/lib/isref.js').isRef;\nconst common = require('oas-kit-common');\n\nfunction unique(arr) {\n return [... new Set(arr)];\n}\n\nfunction readFileAsync(filename, encoding, options, pointer, def) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filename, encoding, function (err, data) {\n if (err) {\n if (options.ignoreIOErrors && def) {\n if (options.verbose) console.warn('FAILED',pointer);\n options.externalRefs[pointer].failed = true;\n resolve(def);\n }\n else {\n reject(err);\n }\n }\n else {\n resolve(data);\n }\n });\n });\n}\n\nfunction resolveAllFragment(obj, context, src, parentPath, base, options) {\n\n let attachPoint = options.externalRefs[src+parentPath].paths[0];\n\n let baseUrl = url.parse(base);\n let seen = {}; // seen is indexed by the $ref value and contains path replacements\n let changes = 1;\n while (changes) {\n changes = 0;\n recurse(obj, {identityDetection:true}, function (obj, key, state) {\n if (isRef(obj, key)) {\n if (obj[key].startsWith('#')) {\n if (!seen[obj[key]] && !obj.$fixed) {\n let target = clone(jptr(context, obj[key]));\n if (options.verbose>1) console.warn((target === false ? common.colour.red : common.colour.green)+'Fragment resolution', obj[key], common.colour.normal);\n /*\n ResolutionCase:A is where there is a local reference in an externally\n referenced document, and we have not seen it before. The reference\n is replaced by a copy of the data pointed to, which may be outside this fragment\n but within the context of the external document\n */\n if (target === false) {\n state.parent[state.pkey] = {}; /* case:A(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('Fragment $ref resolution failed '+obj[key]);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n else {\n changes++;\n state.parent[state.pkey] = target;\n seen[obj[key]] = state.path.replace('/%24ref','');\n }\n }\n else {\n if (!obj.$fixed) {\n let newRef = (attachPoint+'/'+seen[obj[key]]).split('/#/').join('/');\n state.parent[state.pkey] = { $ref: newRef, 'x-miro': obj[key], $fixed: true };\n if (options.verbose>1) console.warn('Replacing with',newRef);\n changes++;\n }\n /*\n ResolutionCase:B is where there is a local reference in an externally\n referenced document, and we have seen this reference before and resolved it.\n We create a new object containing the (immutable) $ref string\n */\n }\n }\n else if (baseUrl.protocol) {\n let newRef = url.resolve(base,obj[key]).toString();\n if (options.verbose>1) console.warn(common.colour.yellow+'Rewriting external url ref',obj[key],'as',newRef,common.colour.normal);\n obj['x-miro'] = obj[key];\n if (options.externalRefs[obj[key]]) {\n if (!options.externalRefs[newRef]) {\n options.externalRefs[newRef] = options.externalRefs[obj[key]];\n }\n options.externalRefs[newRef].failed = options.externalRefs[obj[key]].failed;\n }\n obj[key] = newRef;\n }\n else if (!obj['x-miro']) {\n let newRef = url.resolve(base,obj[key]).toString();\n let failed = false;\n if (options.externalRefs[obj[key]]) {\n failed = options.externalRefs[obj[key]].failed;\n }\n if (!failed) {\n if (options.verbose>1) console.warn(common.colour.yellow+'Rewriting external ref',obj[key],'as',newRef,common.colour.normal);\n obj['x-miro'] = obj[key]; // we use x-miro as a flag so we don't do this > once\n obj[key] = newRef;\n }\n }\n }\n });\n }\n\n recurse(obj,{},function(obj,key,state){\n if (isRef(obj, key)) {\n if (typeof obj.$fixed !== 'undefined') delete obj.$fixed;\n }\n });\n\n if (options.verbose>1) console.warn('Finished fragment resolution');\n return obj;\n}\n\nfunction filterData(data, options) {\n if (!options.filters || !options.filters.length) return data;\n for (let filter of options.filters) {\n data = filter(data, options);\n }\n return data;\n}\n\nfunction testProtocol(input, backup) {\n if (input && input.length > 2) return input;\n if (backup && backup.length > 2) return backup;\n return 'file:';\n}\n\nfunction resolveExternal(root, pointer, options, callback) {\n var u = url.parse(options.source);\n var base = options.source.split('\\\\').join('/').split('/');\n let doc = base.pop(); // drop the actual filename\n if (!doc) base.pop(); // in case it ended with a /\n let fragment = '';\n let fnComponents = pointer.split('#');\n if (fnComponents.length > 1) {\n fragment = '#' + fnComponents[1];\n pointer = fnComponents[0];\n }\n base = base.join('/');\n\n let u2 = url.parse(pointer);\n let effectiveProtocol = testProtocol(u2.protocol, u.protocol);\n\n let target;\n if (effectiveProtocol === 'file:') {\n target = path.resolve(base ? base + '/' : '', pointer);\n }\n else {\n target = url.resolve(base ? base + '/' : '', pointer);\n }\n\n if (options.cache[target]) {\n if (options.verbose) console.warn('CACHED', target, fragment);\n /*\n resolutionSource:A this is where we have cached the externally-referenced document from a\n file, http or custom handler\n */\n let context = clone(options.cache[target]);\n let data = options.externalRef = context;\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; // case:A(2) where the resolution fails\n if (options.fatal) {\n let ex = new Error('Cached $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n callback(clone(data), target, options);\n return Promise.resolve(data);\n }\n\n if (options.verbose) console.warn('GET', target, fragment);\n\n if (options.handlers && options.handlers[effectiveProtocol]) {\n return options.handlers[effectiveProtocol](base, pointer, fragment, options)\n .then(function (data) {\n options.externalRef = data;\n data = filterData(data, options);\n options.cache[target] = data;\n callback(data, target, options);\n return data;\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n throw ex;\n });\n }\n else if (effectiveProtocol && effectiveProtocol.startsWith('http')) {\n const fetchOptions = Object.assign({}, options.fetchOptions, { agent: options.agent });\n return options.fetch(target, fetchOptions)\n .then(function (res) {\n if (res.status !== 200) {\n if (options.ignoreIOErrors) {\n if (options.verbose) console.warn('FAILED',pointer);\n options.externalRefs[pointer].failed = true;\n return '{\"$ref\":\"'+pointer+'\"}';\n }\n else {\n throw new Error(`Received status code ${res.status}: ${target}`);\n }\n }\n return res.text();\n })\n .then(function (data) {\n try {\n let context = yaml.parse(data, { schema:'core', prettyErrors: true });\n data = options.externalRef = context;\n options.cache[target] = clone(data);\n /* resolutionSource:B, from the network, data is fresh, but we clone it into the cache */\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; /* case:B(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('Remote $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n }\n catch (ex) {\n if (options.verbose) console.warn(ex);\n if (options.promise && options.fatal) options.promise.reject(ex)\n else throw ex;\n }\n callback(data, target, options);\n return data;\n })\n .catch(function (err) {\n if (options.verbose) console.warn(err);\n options.cache[target] = {};\n if (options.promise && options.fatal) options.promise.reject(err)\n else throw err;\n });\n }\n else {\n const def = '{\"$ref\":\"'+pointer+'\"}';\n return readFileAsync(target, options.encoding || 'utf8', options, pointer, def)\n .then(function (data) {\n try {\n let context = yaml.parse(data, { schema:'core', prettyErrors: true });\n data = options.externalRef = context;\n /*\n resolutionSource:C from a file, data is fresh but we clone it into the cache\n */\n options.cache[target] = clone(data);\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; /* case:C(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('File $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n }\n catch (ex) {\n if (options.verbose) console.warn(ex);\n if (options.promise && options.fatal) options.promise.reject(ex)\n else throw ex;\n }\n callback(data, target, options);\n return data;\n })\n .catch(function(err){\n if (options.verbose) console.warn(err);\n if (options.promise && options.fatal) options.promise.reject(err)\n else throw err;\n });\n }\n}\n\nfunction scanExternalRefs(options) {\n return new Promise(function (res, rej) {\n\n function inner(obj,key,state){\n if (obj[key] && isRef(obj[key],'$ref')) {\n let $ref = obj[key].$ref;\n if (!$ref.startsWith('#')) { // is external\n\n let $extra = '';\n\n if (!refs[$ref]) {\n let potential = Object.keys(refs).find(function(e,i,a){\n return $ref.startsWith(e+'/');\n });\n if (potential) {\n if (options.verbose) console.warn('Found potential subschema at',potential);\n $extra = '/'+($ref.split('#')[1]||'').replace(potential.split('#')[1]||'');\n $extra = $extra.split('/undefined').join(''); // FIXME\n $ref = potential;\n }\n }\n\n if (!refs[$ref]) {\n refs[$ref] = { resolved: false, paths: [], extras:{}, description: obj[key].description };\n }\n if (refs[$ref].resolved) {\n // we've already seen it\n if (refs[$ref].failed) {\n // do none\n }\n else if (options.rewriteRefs) {\n let newRef = refs[$ref].resolvedAt;\n if (options.verbose>1) console.warn('Rewriting ref', $ref, newRef);\n obj[key]['x-miro'] = $ref;\n obj[key].$ref = newRef+$extra; // resolutionCase:C (new string)\n }\n else {\n obj[key] = clone(refs[$ref].data); // resolutionCase:D (cloned:yes)\n }\n }\n else {\n refs[$ref].paths.push(state.path);\n refs[$ref].extras[state.path] = $extra;\n }\n }\n }\n }\n\n let refs = options.externalRefs;\n\n if ((options.resolver.depth>0) && (options.source === options.resolver.base)) {\n // we only need to do any of this when called directly on pass #1\n return res(refs);\n }\n\n recurse(options.openapi.definitions, {identityDetection: true, path: '#/definitions'}, inner);\n recurse(options.openapi.components, {identityDetection: true, path: '#/components'}, inner);\n recurse(options.openapi, {identityDetection: true}, inner);\n\n res(refs);\n });\n}\n\nfunction findExternalRefs(options) {\n return new Promise(function (res, rej) {\n\n scanExternalRefs(options)\n .then(function (refs) {\n for (let ref in refs) {\n\n if (!refs[ref].resolved) {\n let depth = options.resolver.depth;\n if (depth>0) depth++;\n options.resolver.actions[depth].push(function () {\n return resolveExternal(options.openapi, ref, options, function (data, source, options) {\n if (!refs[ref].resolved) {\n let external = {};\n external.context = refs[ref];\n external.$ref = ref;\n external.original = clone(data);\n external.updated = data;\n external.source = source;\n options.externals.push(external);\n refs[ref].resolved = true;\n }\n\n let localOptions = Object.assign({}, options, { source: '',\n resolver: {actions: options.resolver.actions,\n depth: options.resolver.actions.length-1, base: options.resolver.base } });\n if (options.patch && refs[ref].description && !data.description &&\n (typeof data === 'object')) {\n data.description = refs[ref].description;\n }\n refs[ref].data = data;\n\n // sorting $refs by length causes bugs (due to overlapping regions?)\n let pointers = unique(refs[ref].paths);\n pointers = pointers.sort(function(a,b){\n const aComp = (a.startsWith('#/components/') || a.startsWith('#/definitions/'));\n const bComp = (b.startsWith('#/components/') || b.startsWith('#/definitions/'));\n if (aComp && !bComp) return -1;\n if (bComp && !aComp) return +1;\n return 0;\n });\n\n for (let ptr of pointers) {\n // shared x-ms-examples $refs confuse the fixupRefs heuristic in index.js\n if (refs[ref].resolvedAt && (ptr !== refs[ref].resolvedAt) && (ptr.indexOf('x-ms-examples/')<0)) {\n if (options.verbose>1) console.warn('Creating pointer to data at', ptr);\n jptr(options.openapi, ptr, { $ref: refs[ref].resolvedAt+refs[ref].extras[ptr], 'x-miro': ref+refs[ref].extras[ptr] }); // resolutionCase:E (new object)\n }\n else {\n if (refs[ref].resolvedAt) {\n if (options.verbose>1) console.warn('Avoiding circular reference');\n }\n else {\n refs[ref].resolvedAt = ptr;\n if (options.verbose>1) console.warn('Creating initial clone of data at', ptr);\n }\n let cdata = clone(data);\n jptr(options.openapi, ptr, cdata); // resolutionCase:F (cloned:yes)\n }\n }\n if (options.resolver.actions[localOptions.resolver.depth].length === 0) {\n //options.resolver.actions[localOptions.resolver.depth].push(function () { return scanExternalRefs(localOptions) });\n options.resolver.actions[localOptions.resolver.depth].push(function () { return findExternalRefs(localOptions) }); // findExternalRefs calls scanExternalRefs\n }\n });\n });\n }\n }\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n\n let result = {options:options};\n result.actions = options.resolver.actions[options.resolver.depth];\n res(result);\n });\n}\n\nconst serial = funcs =>\n funcs.reduce((promise, func) =>\n promise.then(result => func().then(Array.prototype.concat.bind(result))), Promise.resolve([]));\n\nfunction loopReferences(options, res, rej) {\n options.resolver.actions.push([]);\n findExternalRefs(options)\n .then(function (data) {\n serial(data.actions)\n .then(function () {\n if (options.resolver.depth>=options.resolver.actions.length) {\n console.warn('Ran off the end of resolver actions');\n return res(true);\n } else {\n options.resolver.depth++;\n if (options.resolver.actions[options.resolver.depth].length) {\n setTimeout(function () {\n loopReferences(data.options, res, rej);\n }, 0);\n }\n else {\n if (options.verbose>1) console.warn(common.colour.yellow+'Finished external resolution!',common.colour.normal);\n if (options.resolveInternal) {\n if (options.verbose>1) console.warn(common.colour.yellow+'Starting internal resolution!',common.colour.normal);\n options.openapi = deRef(options.openapi,options.original,{verbose:options.verbose-1});\n if (options.verbose>1) console.warn(common.colour.yellow+'Finished internal resolution!',common.colour.normal);\n }\n recurse(options.openapi,{},function(obj,key,state){\n if (isRef(obj, key)) {\n if (!options.preserveMiro) delete obj['x-miro'];\n }\n });\n res(options);\n }\n }\n })\n .catch(function (ex) {\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n}\n\nfunction setupOptions(options) {\n if (!options.cache) options.cache = {};\n if (!options.fetch) options.fetch = fetch;\n\n if (options.source) {\n let srcUrl = url.parse(options.source);\n if (!srcUrl.protocol || srcUrl.protocol.length <= 2) { // windows drive-letters\n options.source = path.resolve(options.source);\n }\n }\n\n options.externals = [];\n options.externalRefs = {};\n options.rewriteRefs = true;\n options.resolver = {};\n options.resolver.depth = 0;\n options.resolver.base = options.source;\n options.resolver.actions = [[]];\n}\n\n/** compatibility function for swagger2openapi */\nfunction optionalResolve(options) {\n setupOptions(options);\n return new Promise(function (res, rej) {\n if (options.resolve)\n loopReferences(options, res, rej)\n else\n res(options);\n });\n}\n\nfunction resolve(openapi,source,options) {\n if (!options) options = {};\n options.openapi = openapi;\n options.source = source;\n options.resolve = true;\n setupOptions(options);\n return new Promise(function (res, rej) {\n loopReferences(options, res, rej)\n });\n}\n\nmodule.exports = {\n optionalResolve: optionalResolve,\n resolve: resolve\n};\n\n","'use strict';\n\n/**\n* functions to walk an OpenAPI schema object and traverse all subschemas\n* calling a callback function on each one\n*/\n\n/**\n* obtains the default starting state for the `state` object used\n* by walkSchema\n* @return the state object suitable for use in walkSchema\n*/\nfunction getDefaultState() {\n return { depth: 0, seen: new WeakMap(), top: true, combine: false, allowRefSiblings: false };\n}\n\n/**\n* begins the walk of a schema object\n* @param schema the schema object to walk\n* @param parent the parent schema, if any. Use empty object if none\n* @param state the initial starting state of the walker, usually obtained from `getDefaultState`. Use empty object to auto-initialise\n* @param callback a function taking a schema, parent and state to be called on this and all subschemas\n* @return the schema object\n*/\nfunction walkSchema(schema, parent, state, callback) {\n\n if (typeof state.depth === 'undefined') state = getDefaultState();\n if ((schema === null) || (typeof schema === 'undefined')) return schema;\n if (typeof schema.$ref !== 'undefined') {\n let temp = {$ref:schema.$ref};\n if (state.allowRefSiblings && schema.description) {\n temp.description = schema.description;\n }\n callback(temp,parent,state);\n return temp; // all other properties SHALL be ignored\n }\n\n if (state.combine) {\n if (schema.allOf && Array.isArray(schema.allOf) && schema.allOf.length === 1) {\n schema = Object.assign({},schema.allOf[0],schema);\n delete schema.allOf;\n }\n if (schema.anyOf && Array.isArray(schema.anyOf) && schema.anyOf.length === 1) {\n schema = Object.assign({},schema.anyOf[0],schema);\n delete schema.anyOf;\n }\n if (schema.oneOf && Array.isArray(schema.oneOf) && schema.oneOf.length === 1) {\n schema = Object.assign({},schema.oneOf[0],schema);\n delete schema.oneOf;\n }\n }\n\n callback(schema,parent,state);\n if (state.seen.has(schema)) {\n return schema;\n }\n //else\n if ((typeof schema === 'object') && (schema !== null)) state.seen.set(schema,true);\n state.top = false;\n state.depth++;\n\n if (typeof schema.items !== 'undefined') {\n state.property = 'items';\n walkSchema(schema.items,schema,state,callback);\n }\n if (schema.additionalItems) {\n if (typeof schema.additionalItems === 'object') {\n state.property = 'additionalItems';\n walkSchema(schema.additionalItems,schema,state,callback);\n }\n }\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n state.property = 'additionalProperties';\n walkSchema(schema.additionalProperties,schema,state,callback);\n }\n }\n if (schema.properties) {\n for (let prop in schema.properties) {\n let subSchema = schema.properties[prop];\n state.property = 'properties/'+prop;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.patternProperties) {\n for (let prop in schema.patternProperties) {\n let subSchema = schema.patternProperties[prop];\n state.property = 'patternProperties/'+prop;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.allOf) {\n for (let index in schema.allOf) {\n let subSchema = schema.allOf[index];\n state.property = 'allOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.anyOf) {\n for (let index in schema.anyOf) {\n let subSchema = schema.anyOf[index];\n state.property = 'anyOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.oneOf) {\n for (let index in schema.oneOf) {\n let subSchema = schema.oneOf[index];\n state.property = 'oneOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.not) {\n state.property = 'not';\n walkSchema(schema.not,schema,state,callback);\n }\n state.depth--;\n return schema;\n}\n\nmodule.exports = {\n getDefaultState: getDefaultState,\n walkSchema: walkSchema\n};\n\n","'use strict';\n\n/**\n* a collection of cloning functions\n*/\n\n/**\n* a no-op placeholder which returns the given object unchanged\n* useful for when a clone function needs to be passed but cloning is not\n* required\n* @param obj the input object\n* @return the input object, unchanged\n*/\nfunction nop(obj) {\n return obj;\n}\n\n/**\n* clones the given object using JSON.parse and JSON.stringify\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n* clones the given object's properties shallowly, ignores properties from prototype\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction shallowClone(obj) {\n let result = {};\n for (let p in obj) {\n if (obj.hasOwnProperty(p)) {\n result[p] = obj[p];\n }\n }\n return result;\n}\n\n/**\n* clones the given object's properties deeply, ignores properties from prototype\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction deepClone(obj) {\n let result = Array.isArray(obj) ? [] : {};\n for (let p in obj) {\n if (obj.hasOwnProperty(p) || Array.isArray(obj)) {\n result[p] = (typeof obj[p] === 'object') ? deepClone(obj[p]) : obj[p];\n }\n }\n return result;\n}\n\n/**\n* clones the given object's properties shallowly, using Object.assign\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction fastClone(obj) {\n return Object.assign({},obj);\n}\n\n/**\n* Source: stackoverflow http://bit.ly/2A1Kha6\n*/\n\nfunction circularClone(obj, hash) {\n if (!hash) hash = new WeakMap();\n // Do not try to clone primitives or functions\n if (Object(obj) !== obj || obj instanceof Function) return obj;\n if (hash.has(obj)) return hash.get(obj); // Cyclic reference\n try { // Try to run constructor (without arguments, as we don't know them)\n var result = new obj.constructor();\n } catch(e) { // Constructor failed, create object without running the constructor\n result = Object.create(Object.getPrototypeOf(obj));\n }\n // Optional: support for some standard constructors (extend as desired)\n /*if (obj instanceof Map)\n Array.from(obj, ([key, val]) => result.set(circularClone(key, hash),\n circularClone(val, hash)) );\n else if (obj instanceof Set)\n Array.from(obj, (key) => result.add(circularClone(key, hash)) );\n */\n // Register in hash\n hash.set(obj, result);\n // Clone and assign enumerable own properties recursively\n return Object.assign(result, ...Object.keys(obj).map (\n key => ({ [key]: circularClone(obj[key], hash) }) ));\n}\n\nmodule.exports = {\n nop : nop,\n clone : clone,\n shallowClone : shallowClone,\n deepClone : deepClone,\n fastClone : fastClone,\n circularClone : circularClone\n};\n\n","'use strict';\n\nconst recurse = require('./recurse.js').recurse;\nconst clone = require('./clone.js').shallowClone;\nconst jptr = require('./jptr.js').jptr;\nconst isRef = require('./isref.js').isRef;\n\nvar getLogger = function (options) {\n if (options && options.verbose) {\n return {\n warn: function() {\n var args = Array.prototype.slice.call(arguments);\n console.warn.apply(console, args);\n }\n }\n }\n else {\n return {\n warn: function() {\n //nop\n }\n }\n }\n}\n\n/**\n* dereferences the given object\n* @param o the object to dereference\n* @definitions a source of definitions to reference\n* @options optional settings (used recursively)\n* @return the dereferenced object\n*/\nfunction dereference(o,definitions,options) {\n if (!options) options = {};\n if (!options.cache) options.cache = {};\n if (!options.state) options.state = {};\n options.state.identityDetection = true;\n // options.depth allows us to limit cloning to the first invocation\n options.depth = (options.depth ? options.depth+1 : 1);\n let obj = (options.depth > 1 ? o : clone(o));\n let container = { data: obj };\n let defs = (options.depth > 1 ? definitions : clone(definitions));\n // options.master is the top level object, regardless of depth\n if (!options.master) options.master = obj;\n\n let logger = getLogger(options);\n\n let changes = 1;\n while (changes > 0) {\n changes = 0;\n recurse(container,options.state,function(obj,key,state){\n if (isRef(obj,key)) {\n let $ref = obj[key]; // immutable\n changes++;\n if (!options.cache[$ref]) {\n let entry = {};\n entry.path = state.path.split('/$ref')[0];\n entry.key = $ref;\n logger.warn('Dereffing %s at %s',$ref,entry.path);\n entry.source = defs;\n entry.data = jptr(entry.source,entry.key);\n if (entry.data === false) {\n entry.data = jptr(options.master,entry.key);\n entry.source = options.master;\n }\n if (entry.data === false) {\n logger.warn('Missing $ref target',entry.key);\n }\n options.cache[$ref] = entry;\n entry.data = state.parent[state.pkey] = dereference(jptr(entry.source,entry.key),entry.source,options);\n if (options.$ref && (typeof state.parent[state.pkey] === 'object') && (state.parent[state.pkey] !== null)) state.parent[state.pkey][options.$ref] = $ref;\n entry.resolved = true;\n }\n else {\n let entry = options.cache[$ref];\n if (entry.resolved) {\n // we have already seen and resolved this reference\n logger.warn('Patching %s for %s',$ref,entry.path);\n state.parent[state.pkey] = entry.data;\n if (options.$ref && (typeof state.parent[state.pkey] === 'object') && (state.parent[state.pkey] !== null)) state.parent[state.pkey][options.$ref] = $ref;\n }\n else if ($ref === entry.path) {\n // reference to itself, throw\n throw new Error(`Tight circle at ${entry.path}`);\n }\n else {\n // we're dealing with a circular reference here\n logger.warn('Unresolved ref');\n state.parent[state.pkey] = jptr(entry.source,entry.path);\n if (state.parent[state.pkey] === false) {\n state.parent[state.pkey] = jptr(entry.source,entry.key);\n }\n if (options.$ref && (typeof state.parent[state.pkey] === 'object') && (state.parent[state.pkey] !== null)) state.parent[options.$ref] = $ref;\n }\n }\n }\n });\n }\n return container.data;\n}\n\nmodule.exports = {\n dereference : dereference\n};\n\n","'use strict';\n\nfunction isRef(obj,key) {\n return ((key === '$ref') && (!!obj && typeof obj[key] === 'string'));\n}\n\nmodule.exports = {\n isRef: isRef\n};\n\n","'use strict';\n\n/**\n* escapes JSON Pointer using ~0 for ~ and ~1 for /\n* @param s the string to escape\n* @return the escaped string\n*/\nfunction jpescape(s) {\n return s.replace(/\\~/g, '~0').replace(/\\//g, '~1');\n}\n\n/**\n* unescapes JSON Pointer using ~0 for ~ and ~1 for /\n* @param s the string to unescape\n* @return the unescaped string\n*/\nfunction jpunescape(s) {\n return s.replace(/\\~1/g, '/').replace(/~0/g, '~');\n}\n\n// JSON Pointer specification: http://tools.ietf.org/html/rfc6901\n\n/**\n* from obj, return the property with a JSON Pointer prop, optionally setting it\n* to newValue\n* @param obj the object to point into\n* @param prop the JSON Pointer or JSON Reference\n* @param newValue optional value to set the property to\n* @return the found property, or false\n*/\nfunction jptr(obj, prop, newValue) {\n if (typeof obj === 'undefined') return false;\n if (!prop || typeof prop !== 'string' || (prop === '#')) return (typeof newValue !== 'undefined' ? newValue : obj);\n\n if (prop.indexOf('#')>=0) {\n let parts = prop.split('#');\n let uri = parts[0];\n if (uri) return false; // we do internal resolution only\n prop = parts[1];\n prop = decodeURIComponent(prop.slice(1).split('+').join(' '));\n }\n if (prop.startsWith('/')) prop = prop.slice(1);\n\n let components = prop.split('/');\n for (let i=0;i<components.length;i++) {\n components[i] = jpunescape(components[i]);\n\n let setAndLast = (typeof newValue !== 'undefined') && (i == components.length-1);\n\n let index = parseInt(components[i],10);\n if (!Array.isArray(obj) || isNaN(index) || (index.toString() !== components[i])) {\n index = (Array.isArray(obj) && components[i] === '-') ? -2 : -1;\n }\n else {\n components[i] = (i > 0) ? components[i-1] : ''; // backtrack to indexed property name\n }\n\n if ((index != -1) || (obj && obj.hasOwnProperty(components[i]))) {\n if (index >= 0) {\n if (setAndLast) {\n obj[index] = newValue;\n }\n obj = obj[index];\n }\n else if (index === -2) {\n if (setAndLast) {\n if (Array.isArray(obj)) {\n obj.push(newValue);\n }\n return newValue;\n }\n else return undefined;\n }\n else {\n if (setAndLast) {\n obj[components[i]] = newValue;\n }\n obj = obj[components[i]];\n }\n }\n else {\n if ((typeof newValue !== 'undefined') && (typeof obj === 'object') &&\n (!Array.isArray(obj))) {\n obj[components[i]] = (setAndLast ? newValue : ((components[i+1] === '0' || components[i+1] === '-') ? [] : {}));\n obj = obj[components[i]];\n }\n else return false;\n }\n }\n return obj;\n}\n\nmodule.exports = {\n jptr : jptr,\n jpescape : jpescape,\n jpunescape : jpunescape\n};\n","'use strict';\n\nconst jpescape = require('./jptr.js').jpescape;\n\nfunction defaultState() {\n return {\n path: '#',\n depth: 0,\n pkey: '',\n parent: {},\n payload: {},\n seen: new WeakMap(),\n identity: false,\n identityDetection: false\n };\n}\n\n/**\n* recurses through the properties of an object, given an optional starting state\n* anything you pass in state.payload is passed to the callback each time\n* @param object the object to recurse through\n* @param state optional starting state, can be set to null or {}\n* @param callback the function which receives object,key,state on each property\n*/\nfunction recurse(object, state, callback) {\n if (!state) state = {depth:0};\n if (!state.depth) {\n state = Object.assign({},defaultState(),state);\n }\n if (typeof object !== 'object') return;\n let oPath = state.path;\n for (let key in object) {\n state.key = key;\n state.path = state.path + '/' + encodeURIComponent(jpescape(key));\n state.identityPath = state.seen.get(object[key]);\n state.identity = (typeof state.identityPath !== 'undefined');\n if (object.hasOwnProperty(key)) {\n callback(object, key, state);\n }\n if ((typeof object[key] === 'object') && (!state.identity)) {\n if (state.identityDetection && !Array.isArray(object[key]) && object[key] !== null) {\n state.seen.set(object[key],state.path);\n }\n let newState = {};\n newState.parent = object;\n newState.path = state.path;\n newState.depth = state.depth ? state.depth+1 : 1;\n newState.pkey = key;\n newState.payload = state.payload;\n newState.seen = state.seen;\n newState.identity = false;\n newState.identityDetection = state.identityDetection;\n recurse(object[key], newState, callback);\n }\n state.path = oPath;\n }\n}\n\nmodule.exports = {\n recurse : recurse\n};\n\n","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!../../esbuild-loader/dist/index.cjs??ruleSet[1].rules[1].use[2]!./perfect-scrollbar.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!../../esbuild-loader/dist/index.cjs??ruleSet[1].rules[1].use[2]!./perfect-scrollbar.css\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","// @ts-check\n'use strict';\n\nconst fs = require('fs');\nconst url = require('url');\nconst pathlib = require('path');\n\nconst maybe = require('call-me-maybe');\nconst fetch = require('node-fetch-h2');\nconst yaml = require('yaml');\n\nconst jptr = require('reftools/lib/jptr.js');\nconst resolveInternal = jptr.jptr;\nconst isRef = require('reftools/lib/isref.js').isRef;\nconst clone = require('reftools/lib/clone.js').clone;\nconst cclone = require('reftools/lib/clone.js').circularClone;\nconst recurse = require('reftools/lib/recurse.js').recurse;\nconst resolver = require('oas-resolver');\nconst sw = require('oas-schema-walker');\nconst common = require('oas-kit-common');\n\nconst statusCodes = require('./lib/statusCodes.js').statusCodes;\n\nconst ourVersion = require('./package.json').version;\n\n// TODO handle specification-extensions with plugins?\n\nconst targetVersion = '3.0.0';\nlet componentNames; // initialised in main\n\nclass S2OError extends Error {\n constructor(message) {\n super(message);\n this.name = 'S2OError';\n }\n}\n\nfunction throwError(message, options) {\n let err = new S2OError(message);\n err.options = options;\n if (options.promise) {\n options.promise.reject(err);\n }\n else {\n throw err;\n }\n}\n\nfunction throwOrWarn(message, container, options) {\n if (options.warnOnly) {\n container[options.warnProperty||'x-s2o-warning'] = message;\n }\n else {\n throwError(message, options);\n }\n}\n\nfunction fixUpSubSchema(schema,parent,options) {\n if (schema.nullable) options.patches++;\n if (schema.discriminator && typeof schema.discriminator === 'string') {\n schema.discriminator = { propertyName: schema.discriminator };\n }\n if (schema.items && Array.isArray(schema.items)) {\n if (schema.items.length === 0) {\n schema.items = {};\n }\n else if (schema.items.length === 1) {\n schema.items = schema.items[0];\n }\n else schema.items = { anyOf: schema.items };\n }\n\n if (schema.type && Array.isArray(schema.type)) {\n if (options.patch) {\n options.patches++;\n if (schema.type.length === 0) {\n delete schema.type;\n }\n else {\n if (!schema.oneOf) schema.oneOf = [];\n for (let type of schema.type) {\n let newSchema = {};\n if (type === 'null') {\n schema.nullable = true;\n }\n else {\n newSchema.type = type;\n for (let prop of common.arrayProperties) {\n if (typeof schema.prop !== 'undefined') {\n newSchema[prop] = schema[prop];\n delete schema[prop];\n }\n }\n }\n if (newSchema.type) {\n schema.oneOf.push(newSchema);\n }\n }\n delete schema.type;\n if (schema.oneOf.length === 0) {\n delete schema.oneOf; // means was just null => nullable\n }\n else if (schema.oneOf.length < 2) {\n schema.type = schema.oneOf[0].type;\n if (Object.keys(schema.oneOf[0]).length > 1) {\n throwOrWarn('Lost properties from oneOf',schema,options);\n }\n delete schema.oneOf;\n }\n }\n // do not else this\n if (schema.type && Array.isArray(schema.type) && schema.type.length === 1) {\n schema.type = schema.type[0];\n }\n }\n else {\n throwError('(Patchable) schema type must not be an array', options);\n }\n }\n\n if (schema.type && schema.type === 'null') {\n delete schema.type;\n schema.nullable = true;\n }\n if ((schema.type === 'array') && (!schema.items)) {\n schema.items = {};\n }\n if (schema.type === 'file') {\n schema.type = 'string';\n schema.format = 'binary';\n }\n if (typeof schema.required === 'boolean') {\n if (schema.required && schema.name) {\n if (typeof parent.required === 'undefined') {\n parent.required = [];\n }\n if (Array.isArray(parent.required)) parent.required.push(schema.name);\n }\n delete schema.required;\n }\n\n // TODO if we have a nested properties (object inside an object) and the\n // *parent* type is not set, force it to object\n // TODO if default is set but type is not set, force type to typeof default\n\n if (schema.xml && typeof schema.xml.namespace === 'string') {\n if (!schema.xml.namespace) delete schema.xml.namespace;\n }\n if (typeof schema.allowEmptyValue !== 'undefined') {\n options.patches++;\n delete schema.allowEmptyValue;\n }\n}\n\nfunction fixUpSubSchemaExtensions(schema,parent) {\n if (schema[\"x-required\"] && Array.isArray(schema[\"x-required\"])) {\n if (!schema.required) schema.required = [];\n schema.required = schema.required.concat(schema[\"x-required\"]);\n delete schema[\"x-required\"];\n }\n if (schema[\"x-anyOf\"]) {\n schema.anyOf = schema[\"x-anyOf\"];\n delete schema[\"x-anyOf\"];\n }\n if (schema[\"x-oneOf\"]) {\n schema.oneOf = schema[\"x-oneOf\"];\n delete schema[\"x-oneOf\"];\n }\n if (schema[\"x-not\"]) {\n schema.not = schema[\"x-not\"];\n delete schema[\"x-not\"];\n }\n if (typeof schema[\"x-nullable\"] === 'boolean') {\n schema.nullable = schema[\"x-nullable\"];\n delete schema[\"x-nullable\"];\n }\n if ((typeof schema[\"x-discriminator\"] === 'object') && (typeof schema[\"x-discriminator\"].propertyName === 'string')) {\n schema.discriminator = schema[\"x-discriminator\"];\n delete schema[\"x-discriminator\"];\n for (let entry in schema.discriminator.mapping) {\n let schemaOrRef = schema.discriminator.mapping[entry];\n if (schemaOrRef.startsWith('#/definitions/')) {\n schema.discriminator.mapping[entry] = schemaOrRef.replace('#/definitions/','#/components/schemas/');\n }\n }\n }\n}\n\nfunction fixUpSchema(schema,options) {\n sw.walkSchema(schema,{},{},function(schema,parent,state){\n fixUpSubSchemaExtensions(schema,parent);\n fixUpSubSchema(schema,parent,options);\n });\n}\n\nfunction getMiroComponentName(ref) {\n if (ref.indexOf('#')>=0) {\n ref = ref.split('#')[1].split('/').pop();\n }\n else {\n ref = ref.split('/').pop().split('.')[0];\n }\n return encodeURIComponent(common.sanitise(ref));\n}\n\nfunction fixupRefs(obj, key, state) {\n let options = state.payload.options;\n if (isRef(obj,key)) {\n if (obj[key].startsWith('#/components/')) {\n // no-op\n }\n else if (obj[key] === '#/consumes') {\n // people are *so* creative\n delete obj[key];\n state.parent[state.pkey] = clone(options.openapi.consumes);\n }\n else if (obj[key] === '#/produces') {\n // and by creative, I mean devious\n delete obj[key];\n state.parent[state.pkey] = clone(options.openapi.produces);\n }\n else if (obj[key].startsWith('#/definitions/')) {\n //only the first part of a schema component name must be sanitised\n let keys = obj[key].replace('#/definitions/', '').split('/');\n const ref = jptr.jpunescape(keys[0]);\n\n let newKey = componentNames.schemas[decodeURIComponent(ref)]; // lookup, resolves a $ref\n if (newKey) {\n keys[0] = newKey;\n }\n else {\n throwOrWarn('Could not resolve reference '+obj[key],obj,options);\n }\n obj[key] = '#/components/schemas/' + keys.join('/');\n }\n else if (obj[key].startsWith('#/parameters/')) {\n // for extensions like Apigee's x-templates\n obj[key] = '#/components/parameters/' + common.sanitise(obj[key].replace('#/parameters/', ''));\n }\n else if (obj[key].startsWith('#/responses/')) {\n // for extensions like Apigee's x-templates\n obj[key] = '#/components/responses/' + common.sanitise(obj[key].replace('#/responses/', ''));\n }\n else if (obj[key].startsWith('#')) {\n // fixes up direct $refs or those created by resolvers\n let target = clone(jptr.jptr(options.openapi,obj[key]));\n if (target === false) throwOrWarn('direct $ref not found '+obj[key],obj,options)\n else if (options.refmap[obj[key]]) {\n obj[key] = options.refmap[obj[key]];\n }\n else {\n // we use a heuristic to determine what kind of thing is being referenced\n let oldRef = obj[key];\n oldRef = oldRef.replace('/properties/headers/','');\n oldRef = oldRef.replace('/properties/responses/','');\n oldRef = oldRef.replace('/properties/parameters/','');\n oldRef = oldRef.replace('/properties/schemas/','');\n let type = 'schemas';\n let schemaIndex = oldRef.lastIndexOf('/schema');\n type = (oldRef.indexOf('/headers/')>schemaIndex) ? 'headers' :\n ((oldRef.indexOf('/responses/')>schemaIndex) ? 'responses' :\n ((oldRef.indexOf('/example')>schemaIndex) ? 'examples' :\n ((oldRef.indexOf('/x-')>schemaIndex) ? 'extensions' :\n ((oldRef.indexOf('/parameters/')>schemaIndex) ? 'parameters' : 'schemas'))));\n\n // non-body/form parameters have not moved in the overall structure (like responses)\n // but extracting the requestBodies can cause the *number* of parameters to change\n\n if (type === 'schemas') {\n fixUpSchema(target,options);\n }\n\n if ((type !== 'responses') && (type !== 'extensions')) {\n let prefix = type.substr(0,type.length-1);\n if ((prefix === 'parameter') && target.name && (target.name === common.sanitise(target.name))) {\n prefix = encodeURIComponent(target.name);\n }\n\n let suffix = 1;\n if (obj['x-miro']) {\n prefix = getMiroComponentName(obj['x-miro']);\n suffix = '';\n }\n\n while (jptr.jptr(options.openapi,'#/components/'+type+'/'+prefix+suffix)) {\n suffix = (suffix === '' ? 2 : ++suffix);\n }\n\n let newRef = '#/components/'+type+'/'+prefix+suffix;\n let refSuffix = '';\n\n if (type === 'examples') {\n target = { value: target };\n refSuffix = '/value';\n }\n\n jptr.jptr(options.openapi,newRef,target);\n options.refmap[obj[key]] = newRef+refSuffix;\n obj[key] = newRef+refSuffix;\n }\n }\n }\n\n delete obj['x-miro'];\n // do this last - rework cases where $ref object has sibling properties\n if (Object.keys(obj).length > 1) {\n const tmpRef = obj[key];\n const inSchema = state.path.indexOf('/schema') >= 0; // not perfect, but in the absence of a reasonably-sized and complete OAS 2.0 parser...\n if (options.refSiblings === 'preserve') {\n // no-op\n }\n else if (inSchema && (options.refSiblings === 'allOf')) {\n delete obj.$ref;\n state.parent[state.pkey] = { allOf: [ { $ref: tmpRef }, obj ]};\n }\n else { // remove, or not 'preserve' and not in a schema\n state.parent[state.pkey] = { $ref: tmpRef };\n }\n }\n\n }\n if ((key === 'x-ms-odata') && (typeof obj[key] === 'string') && (obj[key].startsWith('#/'))) {\n let keys = obj[key].replace('#/definitions/', '').replace('#/components/schemas/','').split('/');\n let newKey = componentNames.schemas[decodeURIComponent(keys[0])]; // lookup, resolves a $ref\n if (newKey) {\n keys[0] = newKey;\n }\n else {\n throwOrWarn('Could not resolve reference '+obj[key],obj,options);\n }\n obj[key] = '#/components/schemas/' + keys.join('/');\n }\n}\n\n/*\n* This has to happen as a separate pass because multiple $refs may point\n* through elements of the same path\n*/\nfunction dedupeRefs(openapi, options) {\n for (let ref in options.refmap) {\n jptr.jptr(openapi,ref,{ $ref: options.refmap[ref] });\n }\n}\n\nfunction processSecurity(securityObject) {\n for (let s in securityObject) {\n for (let k in securityObject[s]) {\n let sname = common.sanitise(k);\n if (k !== sname) {\n securityObject[s][sname] = securityObject[s][k];\n delete securityObject[s][k];\n }\n }\n }\n}\n\nfunction processSecurityScheme(scheme, options) {\n if (scheme.type === 'basic') {\n scheme.type = 'http';\n scheme.scheme = 'basic';\n }\n if (scheme.type === 'oauth2') {\n let flow = {};\n let flowName = scheme.flow;\n if (scheme.flow === 'application') flowName = 'clientCredentials';\n if (scheme.flow === 'accessCode') flowName = 'authorizationCode';\n if (typeof scheme.authorizationUrl !== 'undefined') flow.authorizationUrl = scheme.authorizationUrl.split('?')[0].trim() || '/';\n if (typeof scheme.tokenUrl === 'string') flow.tokenUrl = scheme.tokenUrl.split('?')[0].trim() || '/';\n flow.scopes = scheme.scopes || {};\n scheme.flows = {};\n scheme.flows[flowName] = flow;\n delete scheme.flow;\n delete scheme.authorizationUrl;\n delete scheme.tokenUrl;\n delete scheme.scopes;\n if (typeof scheme.name !== 'undefined') {\n if (options.patch) {\n options.patches++;\n delete scheme.name;\n }\n else {\n throwError('(Patchable) oauth2 securitySchemes should not have name property', options);\n }\n }\n }\n}\n\nfunction keepParameters(value) {\n return (value && !value[\"x-s2o-delete\"]);\n}\n\nfunction processHeader(header, options) {\n if (header.$ref) {\n header.$ref = header.$ref.replace('#/responses/', '#/components/responses/');\n }\n else {\n if (header.type && !header.schema) {\n header.schema = {};\n }\n if (header.type) header.schema.type = header.type;\n if (header.items && header.items.type !== 'array') {\n if (header.items.collectionFormat !== header.collectionFormat) {\n throwOrWarn('Nested collectionFormats are not supported', header, options);\n }\n delete header.items.collectionFormat;\n }\n if (header.type === 'array') {\n if (header.collectionFormat === 'ssv') {\n throwOrWarn('collectionFormat:ssv is no longer supported for headers', header, options); // not lossless\n }\n else if (header.collectionFormat === 'pipes') {\n throwOrWarn('collectionFormat:pipes is no longer supported for headers', header, options); // not lossless\n }\n else if (header.collectionFormat === 'multi') {\n header.explode = true;\n }\n else if (header.collectionFormat === 'tsv') {\n throwOrWarn('collectionFormat:tsv is no longer supported', header, options); // not lossless\n header[\"x-collectionFormat\"] = 'tsv';\n }\n else { // 'csv'\n header.style = 'simple';\n }\n delete header.collectionFormat;\n }\n else if (header.collectionFormat) {\n if (options.patch) {\n options.patches++;\n delete header.collectionFormat;\n }\n else {\n throwError('(Patchable) collectionFormat is only applicable to header.type array', options);\n }\n }\n delete header.type;\n for (let prop of common.parameterTypeProperties) {\n if (typeof header[prop] !== 'undefined') {\n header.schema[prop] = header[prop];\n delete header[prop];\n }\n }\n for (let prop of common.arrayProperties) {\n if (typeof header[prop] !== 'undefined') {\n header.schema[prop] = header[prop];\n delete header[prop];\n }\n }\n }\n}\n\nfunction fixParamRef(param, options) {\n if (param.$ref.indexOf('#/parameters/') >= 0) {\n let refComponents = param.$ref.split('#/parameters/');\n param.$ref = refComponents[0] + '#/components/parameters/' + common.sanitise(refComponents[1]);\n }\n if (param.$ref.indexOf('#/definitions/') >= 0) {\n throwOrWarn('Definition used as parameter', param, options);\n }\n}\n\nfunction attachRequestBody(op,options) {\n let newOp = {};\n for (let key of Object.keys(op)) {\n newOp[key] = op[key];\n if (key === 'parameters') {\n newOp.requestBody = {};\n if (options.rbname) newOp[options.rbname] = '';\n }\n }\n newOp.requestBody = {}; // just in case there are no parameters\n return newOp;\n}\n\n/**\n * @returns op, as it may have changed\n */\nfunction processParameter(param, op, path, method, index, openapi, options) {\n let result = {};\n let singularRequestBody = true;\n let originalType;\n\n if (op && op.consumes && (typeof op.consumes === 'string')) {\n if (options.patch) {\n options.patches++;\n op.consumes = [op.consumes];\n }\n else {\n return throwError('(Patchable) operation.consumes must be an array', options);\n }\n }\n if (!Array.isArray(openapi.consumes)) delete openapi.consumes;\n let consumes = ((op ? op.consumes : null) || (openapi.consumes || [])).filter(common.uniqueOnly);\n\n if (param && param.$ref && (typeof param.$ref === 'string')) {\n // if we still have a ref here, it must be an internal one\n fixParamRef(param, options);\n let ptr = decodeURIComponent(param.$ref.replace('#/components/parameters/', ''));\n let rbody = false;\n let target = openapi.components.parameters[ptr]; // resolves a $ref, must have been sanitised already\n\n if (((!target) || (target[\"x-s2o-delete\"])) && param.$ref.startsWith('#/')) {\n // if it's gone, chances are it's a requestBody component now unless spec was broken\n param[\"x-s2o-delete\"] = true;\n rbody = true;\n }\n\n // shared formData parameters from swagger or path level could be used in any combination.\n // we dereference all op.requestBody's then hash them and pull out common ones later\n\n if (rbody) {\n let ref = param.$ref;\n let newParam = resolveInternal(openapi, param.$ref);\n if (!newParam && ref.startsWith('#/')) {\n throwOrWarn('Could not resolve reference ' + ref, param, options);\n }\n else {\n if (newParam) param = newParam; // preserve reference\n }\n }\n }\n\n if (param && (param.name || param.in)) { // if it's a real parameter OR we've dereferenced it\n\n if (typeof param['x-deprecated'] === 'boolean') {\n param.deprecated = param['x-deprecated'];\n delete param['x-deprecated'];\n }\n\n if (typeof param['x-example'] !== 'undefined') {\n param.example = param['x-example'];\n delete param['x-example'];\n }\n\n if ((param.in !== 'body') && (!param.type)) {\n if (options.patch) {\n options.patches++;\n param.type = 'string';\n }\n else {\n throwError('(Patchable) parameter.type is mandatory for non-body parameters', options);\n }\n }\n if (param.type && typeof param.type === 'object' && param.type.$ref) {\n // $ref anywhere sensibility\n param.type = resolveInternal(openapi, param.type.$ref);\n }\n if (param.type === 'file') {\n param['x-s2o-originalType'] = param.type;\n originalType = param.type;\n }\n if (param.description && typeof param.description === 'object' && param.description.$ref) {\n // $ref anywhere sensibility\n param.description = resolveInternal(openapi, param.description.$ref);\n }\n if (param.description === null) delete param.description;\n\n let oldCollectionFormat = param.collectionFormat;\n if ((param.type === 'array') && !oldCollectionFormat) {\n oldCollectionFormat = 'csv';\n }\n if (oldCollectionFormat) {\n if (param.type !== 'array') {\n if (options.patch) {\n options.patches++;\n delete param.collectionFormat;\n }\n else {\n throwError('(Patchable) collectionFormat is only applicable to param.type array', options);\n }\n }\n if ((oldCollectionFormat === 'csv') && ((param.in === 'query') || (param.in === 'cookie'))) {\n param.style = 'form';\n param.explode = false;\n }\n if ((oldCollectionFormat === 'csv') && ((param.in === 'path') || (param.in === 'header'))) {\n param.style = 'simple';\n }\n if (oldCollectionFormat === 'ssv') {\n if (param.in === 'query') {\n param.style = 'spaceDelimited';\n }\n else {\n throwOrWarn('collectionFormat:ssv is no longer supported except for in:query parameters', param, options); // not lossless\n }\n }\n if (oldCollectionFormat === 'pipes') {\n if (param.in === 'query') {\n param.style = 'pipeDelimited';\n }\n else {\n throwOrWarn('collectionFormat:pipes is no longer supported except for in:query parameters', param, options); // not lossless\n }\n }\n if (oldCollectionFormat === 'multi') {\n param.explode = true;\n }\n if (oldCollectionFormat === 'tsv') {\n throwOrWarn('collectionFormat:tsv is no longer supported', param, options); // not lossless\n param[\"x-collectionFormat\"] = 'tsv';\n }\n delete param.collectionFormat;\n }\n\n if (param.type && (param.type !== 'body') && (param.in !== 'formData')) {\n if (param.items && param.schema) {\n throwOrWarn('parameter has array,items and schema', param, options);\n }\n else {\n if (param.schema) options.patches++; // already present\n if ((!param.schema) || (typeof param.schema !== 'object')) param.schema = {};\n param.schema.type = param.type;\n if (param.items) {\n param.schema.items = param.items;\n delete param.items;\n recurse(param.schema.items, null, function (obj, key, state) {\n if ((key === 'collectionFormat') && (typeof obj[key] === 'string')) {\n if (oldCollectionFormat && obj[key] !== oldCollectionFormat) {\n throwOrWarn('Nested collectionFormats are not supported', param, options);\n }\n delete obj[key]; // not lossless\n }\n // items in 2.0 was a subset of the JSON-Schema items\n // object, it gets fixed up below\n });\n }\n for (let prop of common.parameterTypeProperties) {\n if (typeof param[prop] !== 'undefined') param.schema[prop] = param[prop];\n delete param[prop];\n }\n }\n }\n\n if (param.schema) {\n fixUpSchema(param.schema,options);\n }\n\n if (param[\"x-ms-skip-url-encoding\"]) {\n if (param.in === 'query') { // might be in:path, not allowed in OAS3\n param.allowReserved = true;\n delete param[\"x-ms-skip-url-encoding\"];\n }\n }\n }\n\n if (param && param.in === 'formData') {\n // convert to requestBody component\n singularRequestBody = false;\n result.content = {};\n let contentType = 'application/x-www-form-urlencoded';\n if ((consumes.length) && (consumes.indexOf('multipart/form-data') >= 0)) {\n contentType = 'multipart/form-data';\n }\n\n result.content[contentType] = {};\n if (param.schema) {\n result.content[contentType].schema = param.schema;\n if (param.schema.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));\n }\n }\n else {\n result.content[contentType].schema = {};\n result.content[contentType].schema.type = 'object';\n result.content[contentType].schema.properties = {};\n result.content[contentType].schema.properties[param.name] = {};\n let schema = result.content[contentType].schema;\n let target = result.content[contentType].schema.properties[param.name];\n if (param.description) target.description = param.description;\n if (param.example) target.example = param.example;\n if (param.type) target.type = param.type;\n\n for (let prop of common.parameterTypeProperties) {\n if (typeof param[prop] !== 'undefined') target[prop] = param[prop];\n }\n if (param.required === true) {\n if (!schema.required) schema.required = [];\n schema.required.push(param.name);\n result.required = true;\n }\n if (typeof param.default !== 'undefined') target.default = param.default;\n if (target.properties) target.properties = param.properties;\n if (param.allOf) target.allOf = param.allOf; // new are anyOf, oneOf, not\n if ((param.type === 'array') && (param.items)) {\n target.items = param.items;\n if (target.items.collectionFormat) delete target.items.collectionFormat;\n }\n if ((originalType === 'file') || (param['x-s2o-originalType'] === 'file')) {\n target.type = 'string';\n target.format = 'binary';\n }\n\n // Copy any extensions on the form param to the target schema property.\n copyExtensions(param, target);\n }\n }\n else if (param && (param.type === 'file')) {\n // convert to requestBody\n if (param.required) result.required = param.required;\n result.content = {};\n result.content[\"application/octet-stream\"] = {};\n result.content[\"application/octet-stream\"].schema = {};\n result.content[\"application/octet-stream\"].schema.type = 'string';\n result.content[\"application/octet-stream\"].schema.format = 'binary';\n copyExtensions(param, result);\n }\n if (param && param.in === 'body') {\n result.content = {};\n if (param.name) result['x-s2o-name'] = (op && op.operationId ? common.sanitiseAll(op.operationId) : '') + ('_' + param.name).toCamelCase();\n if (param.description) result.description = param.description;\n if (param.required) result.required = param.required;\n\n // Set the \"request body name\" extension on the operation if requested.\n if (op && options.rbname && param.name) {\n op[options.rbname] = param.name;\n }\n if (param.schema && param.schema.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));\n }\n else if (param.schema && (param.schema.type === 'array') && param.schema.items && param.schema.items.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.items.$ref.replace('#/components/schemas/', '')) + 'Array';\n }\n\n if (!consumes.length) {\n consumes.push('application/json'); // TODO verify default\n }\n\n for (let mimetype of consumes) {\n result.content[mimetype] = {};\n result.content[mimetype].schema = clone(param.schema || {});\n fixUpSchema(result.content[mimetype].schema,options);\n }\n\n // Copy any extensions from the original parameter to the new requestBody\n copyExtensions(param, result);\n }\n\n if (Object.keys(result).length > 0) {\n param[\"x-s2o-delete\"] = true;\n // work out where to attach the requestBody\n if (op) {\n if (op.requestBody && singularRequestBody) {\n op.requestBody[\"x-s2o-overloaded\"] = true;\n let opId = op.operationId || index;\n\n throwOrWarn('Operation ' + opId + ' has multiple requestBodies', op, options);\n }\n else {\n if (!op.requestBody) {\n op = path[method] = attachRequestBody(op,options); // make sure we have one\n }\n if ((op.requestBody.content && op.requestBody.content[\"multipart/form-data\"])\n && (op.requestBody.content[\"multipart/form-data\"].schema) && (op.requestBody.content[\"multipart/form-data\"].schema.properties) && (result.content[\"multipart/form-data\"]) && (result.content[\"multipart/form-data\"].schema) && (result.content[\"multipart/form-data\"].schema.properties)) {\n op.requestBody.content[\"multipart/form-data\"].schema.properties =\n Object.assign(op.requestBody.content[\"multipart/form-data\"].schema.properties, result.content[\"multipart/form-data\"].schema.properties);\n op.requestBody.content[\"multipart/form-data\"].schema.required = (op.requestBody.content[\"multipart/form-data\"].schema.required || []).concat(result.content[\"multipart/form-data\"].schema.required||[]);\n if (!op.requestBody.content[\"multipart/form-data\"].schema.required.length) {\n delete op.requestBody.content[\"multipart/form-data\"].schema.required;\n }\n }\n else if ((op.requestBody.content && op.requestBody.content[\"application/x-www-form-urlencoded\"] && op.requestBody.content[\"application/x-www-form-urlencoded\"].schema && op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties)\n && result.content[\"application/x-www-form-urlencoded\"] && result.content[\"application/x-www-form-urlencoded\"].schema && result.content[\"application/x-www-form-urlencoded\"].schema.properties) {\n op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties =\n Object.assign(op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties, result.content[\"application/x-www-form-urlencoded\"].schema.properties);\n op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required = (op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required || []).concat(result.content[\"application/x-www-form-urlencoded\"].schema.required||[]);\n if (!op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required.length) {\n delete op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required;\n }\n }\n else {\n op.requestBody = Object.assign(op.requestBody, result);\n if (!op.requestBody['x-s2o-name']) {\n if (op.requestBody.schema && op.requestBody.schema.$ref) {\n op.requestBody['x-s2o-name'] = decodeURIComponent(op.requestBody.schema.$ref.replace('#/components/schemas/', '')).split('/').join('');\n }\n else if (op.operationId) {\n op.requestBody['x-s2o-name'] = common.sanitiseAll(op.operationId);\n }\n }\n }\n }\n }\n }\n\n // tidy up\n if (param && !param['x-s2o-delete']) {\n delete param.type;\n for (let prop of common.parameterTypeProperties) {\n delete param[prop];\n }\n\n if ((param.in === 'path') && ((typeof param.required === 'undefined') || (param.required !== true))) {\n if (options.patch) {\n options.patches++;\n param.required = true;\n }\n else {\n throwError('(Patchable) path parameters must be required:true ['+param.name+' in '+index+']', options);\n }\n }\n }\n\n return op;\n}\n\nfunction copyExtensions(src, tgt) {\n for (let prop in src) {\n if (prop.startsWith('x-') && !prop.startsWith('x-s2o')) {\n tgt[prop] = src[prop];\n }\n }\n}\n\nfunction processResponse(response, name, op, openapi, options) {\n if (!response) return false;\n if (response.$ref && (typeof response.$ref === 'string')) {\n if (response.$ref.indexOf('#/definitions/') >= 0) {\n //response.$ref = '#/components/schemas/'+common.sanitise(response.$ref.replace('#/definitions/',''));\n throwOrWarn('definition used as response: ' + response.$ref, response, options);\n }\n else {\n if (response.$ref.startsWith('#/responses/')) {\n response.$ref = '#/components/responses/' + common.sanitise(decodeURIComponent(response.$ref.replace('#/responses/', '')));\n }\n }\n }\n else {\n if ((typeof response.description === 'undefined') || (response.description === null)\n || ((response.description === '') && options.patch)) {\n if (options.patch) {\n if ((typeof response === 'object') && (!Array.isArray(response))) {\n options.patches++;\n response.description = (statusCodes[response] || '');\n }\n }\n else {\n throwError('(Patchable) response.description is mandatory', options);\n }\n }\n if (typeof response.schema !== 'undefined') {\n\n fixUpSchema(response.schema,options);\n\n if (response.schema.$ref && (typeof response.schema.$ref === 'string') && response.schema.$ref.startsWith('#/responses/')) {\n response.schema.$ref = '#/components/responses/' + common.sanitise(decodeURIComponent(response.schema.$ref.replace('#/responses/', '')));\n }\n\n if (op && op.produces && (typeof op.produces === 'string')) {\n if (options.patch) {\n options.patches++;\n op.produces = [op.produces];\n }\n else {\n return throwError('(Patchable) operation.produces must be an array', options);\n }\n }\n if (openapi.produces && !Array.isArray(openapi.produces)) delete openapi.produces;\n\n let produces = ((op ? op.produces : null) || (openapi.produces || [])).filter(common.uniqueOnly);\n if (!produces.length) produces.push('*/*'); // TODO verify default\n\n response.content = {};\n for (let mimetype of produces) {\n response.content[mimetype] = {};\n response.content[mimetype].schema = clone(response.schema);\n if (response.examples && response.examples[mimetype]) {\n let example = {};\n example.value = response.examples[mimetype];\n response.content[mimetype].examples = {};\n response.content[mimetype].examples.response = example;\n delete response.examples[mimetype];\n }\n if (response.content[mimetype].schema.type === 'file') {\n response.content[mimetype].schema = { type: 'string', format: 'binary' };\n }\n }\n delete response.schema;\n }\n // examples for content-types not listed in produces\n for (let mimetype in response.examples) {\n if (!response.content) response.content = {};\n if (!response.content[mimetype]) response.content[mimetype] = {};\n response.content[mimetype].examples = {};\n response.content[mimetype].examples.response = {};\n response.content[mimetype].examples.response.value = response.examples[mimetype];\n }\n delete response.examples;\n\n if (response.headers) {\n for (let h in response.headers) {\n if (h.toLowerCase() === 'status code') {\n if (options.patch) {\n options.patches++;\n delete response.headers[h];\n }\n else {\n throwError('(Patchable) \"Status Code\" is not a valid header', options);\n }\n }\n else {\n processHeader(response.headers[h], options);\n }\n }\n }\n }\n}\n\nfunction processPaths(container, containerName, options, requestBodyCache, openapi) {\n for (let p in container) {\n let path = container[p];\n // path.$ref is external only\n if (path && (path['x-trace']) && (typeof path['x-trace'] === 'object')) {\n path.trace = path['x-trace'];\n delete path['x-trace'];\n }\n if (path && (path['x-summary']) && (typeof path['x-summary'] === 'string')) {\n path.summary = path['x-summary'];\n delete path['x-summary'];\n }\n if (path && (path['x-description']) && (typeof path['x-description'] === 'string')) {\n path.description = path['x-description'];\n delete path['x-description'];\n }\n if (path && (path['x-servers']) && (Array.isArray(path['x-servers']))) {\n path.servers = path['x-servers'];\n delete path['x-servers'];\n }\n for (let method in path) {\n if ((common.httpMethods.indexOf(method) >= 0) || (method === 'x-amazon-apigateway-any-method')) {\n let op = path[method];\n\n if (op && op.parameters && Array.isArray(op.parameters)) {\n if (path.parameters) {\n for (let param of path.parameters) {\n if (typeof param.$ref === 'string') {\n fixParamRef(param, options);\n param = resolveInternal(openapi, param.$ref);\n }\n let match = op.parameters.find(function (e, i, a) {\n return ((e.name === param.name) && (e.in === param.in));\n });\n\n if (!match && ((param.in === 'formData') || (param.in === 'body') || (param.type === 'file'))) {\n op = processParameter(param, op, path, method, p, openapi, options);\n if (options.rbname && op[options.rbname] === '') {\n delete op[options.rbname];\n }\n }\n }\n }\n for (let param of op.parameters) {\n op = processParameter(param, op, path, method, method + ':' + p, openapi, options);\n }\n if (options.rbname && op[options.rbname] === '') {\n delete op[options.rbname];\n }\n if (!options.debug) {\n if (op.parameters) op.parameters = op.parameters.filter(keepParameters);\n }\n }\n\n if (op && op.security) processSecurity(op.security);\n\n //don't need to remove requestBody for non-supported ops as they \"SHALL be ignored\"\n\n // responses\n if (typeof op === 'object') {\n if (!op.responses) {\n let defaultResp = {};\n defaultResp.description = 'Default response';\n op.responses = { default: defaultResp };\n }\n for (let r in op.responses) {\n let response = op.responses[r];\n processResponse(response, r, op, openapi, options);\n }\n }\n\n if (op && (op['x-servers']) && (Array.isArray(op['x-servers']))) {\n op.servers = op['x-servers'];\n delete op['x-servers'];\n } else if (op && op.schemes && op.schemes.length) {\n for (let scheme of op.schemes) {\n if ((!openapi.schemes) || (openapi.schemes.indexOf(scheme) < 0)) {\n if (!op.servers) {\n op.servers = [];\n }\n if (Array.isArray(openapi.servers)) {\n for (let server of openapi.servers) {\n let newServer = clone(server);\n let serverUrl = url.parse(newServer.url);\n serverUrl.protocol = scheme;\n newServer.url = serverUrl.format();\n op.servers.push(newServer);\n }\n }\n }\n }\n }\n\n if (options.debug) {\n op[\"x-s2o-consumes\"] = op.consumes || [];\n op[\"x-s2o-produces\"] = op.produces || [];\n }\n if (op) {\n delete op.consumes;\n delete op.produces;\n delete op.schemes;\n\n if (op[\"x-ms-examples\"]) {\n for (let e in op[\"x-ms-examples\"]) {\n let example = op[\"x-ms-examples\"][e];\n let se = common.sanitiseAll(e);\n if (example.parameters) {\n for (let p in example.parameters) {\n let value = example.parameters[p];\n for (let param of (op.parameters||[]).concat(path.parameters||[])) {\n if (param.$ref) {\n param = jptr.jptr(openapi,param.$ref);\n }\n if ((param.name === p) && (!param.example)) {\n if (!param.examples) {\n param.examples = {};\n }\n param.examples[e] = {value: value};\n }\n }\n }\n }\n if (example.responses) {\n for (let r in example.responses) {\n if (example.responses[r].headers) {\n for (let h in example.responses[r].headers) {\n let value = example.responses[r].headers[h];\n for (let rh in op.responses[r].headers) {\n if (rh === h) {\n let header = op.responses[r].headers[rh];\n header.example = value;\n }\n }\n }\n }\n if (example.responses[r].body) {\n openapi.components.examples[se] = { value: clone(example.responses[r].body) };\n if (op.responses[r] && op.responses[r].content) {\n for (let ct in op.responses[r].content) {\n let contentType = op.responses[r].content[ct];\n if (!contentType.examples) {\n contentType.examples = {};\n }\n contentType.examples[e] = { $ref: '#/components/examples/'+se };\n }\n }\n }\n\n }\n }\n }\n delete op[\"x-ms-examples\"];\n }\n\n if (op.parameters && op.parameters.length === 0) delete op.parameters;\n if (op.requestBody) {\n let effectiveOperationId = op.operationId ? common.sanitiseAll(op.operationId) : common.sanitiseAll(method + p).toCamelCase();\n let rbName = common.sanitise(op.requestBody['x-s2o-name'] || effectiveOperationId || '');\n delete op.requestBody['x-s2o-name'];\n let rbStr = JSON.stringify(op.requestBody);\n let rbHash = common.hash(rbStr);\n if (!requestBodyCache[rbHash]) {\n let entry = {};\n entry.name = rbName;\n entry.body = op.requestBody;\n entry.refs = [];\n requestBodyCache[rbHash] = entry;\n }\n let ptr = '#/'+containerName+'/'+encodeURIComponent(jptr.jpescape(p))+'/'+method+'/requestBody';\n requestBodyCache[rbHash].refs.push(ptr);\n }\n }\n\n }\n }\n if (path && path.parameters) {\n for (let p2 in path.parameters) {\n let param = path.parameters[p2];\n processParameter(param, null, path, null, p, openapi, options); // index here is the path string\n }\n if (!options.debug && Array.isArray(path.parameters)) {\n path.parameters = path.parameters.filter(keepParameters);\n }\n }\n }\n}\n\nfunction main(openapi, options) {\n\n let requestBodyCache = {};\n componentNames = { schemas: {} };\n\n if (openapi.security) processSecurity(openapi.security);\n\n for (let s in openapi.components.securitySchemes) {\n let sname = common.sanitise(s);\n if (s !== sname) {\n if (openapi.components.securitySchemes[sname]) {\n throwError('Duplicate sanitised securityScheme name ' + sname, options);\n }\n openapi.components.securitySchemes[sname] = openapi.components.securitySchemes[s];\n delete openapi.components.securitySchemes[s];\n }\n processSecurityScheme(openapi.components.securitySchemes[sname], options);\n }\n\n for (let s in openapi.components.schemas) {\n let sname = common.sanitiseAll(s);\n let suffix = '';\n if (s !== sname) {\n while (openapi.components.schemas[sname + suffix]) {\n // @ts-ignore\n suffix = (suffix ? ++suffix : 2);\n }\n openapi.components.schemas[sname + suffix] = openapi.components.schemas[s];\n delete openapi.components.schemas[s];\n }\n componentNames.schemas[s] = sname + suffix;\n fixUpSchema(openapi.components.schemas[sname+suffix],options)\n }\n\n // fix all $refs to their new locations (and potentially new names)\n options.refmap = {};\n recurse(openapi, { payload: { options: options } }, fixupRefs);\n dedupeRefs(openapi,options);\n\n for (let p in openapi.components.parameters) {\n let sname = common.sanitise(p);\n if (p !== sname) {\n if (openapi.components.parameters[sname]) {\n throwError('Duplicate sanitised parameter name ' + sname, options);\n }\n openapi.components.parameters[sname] = openapi.components.parameters[p];\n delete openapi.components.parameters[p];\n }\n let param = openapi.components.parameters[sname];\n processParameter(param, null, null, null, sname, openapi, options);\n }\n\n for (let r in openapi.components.responses) {\n let sname = common.sanitise(r);\n if (r !== sname) {\n if (openapi.components.responses[sname]) {\n throwError('Duplicate sanitised response name ' + sname, options);\n }\n openapi.components.responses[sname] = openapi.components.responses[r];\n delete openapi.components.responses[r];\n }\n let response = openapi.components.responses[sname];\n processResponse(response, sname, null, openapi, options);\n if (response.headers) {\n for (let h in response.headers) {\n if (h.toLowerCase() === 'status code') {\n if (options.patch) {\n options.patches++;\n delete response.headers[h];\n }\n else {\n throwError('(Patchable) \"Status Code\" is not a valid header', options);\n }\n }\n else {\n processHeader(response.headers[h], options);\n }\n }\n }\n }\n\n for (let r in openapi.components.requestBodies) { // converted ones\n let rb = openapi.components.requestBodies[r];\n let rbStr = JSON.stringify(rb);\n let rbHash = common.hash(rbStr);\n let entry = {};\n entry.name = r;\n entry.body = rb;\n entry.refs = [];\n requestBodyCache[rbHash] = entry;\n }\n\n processPaths(openapi.paths, 'paths', options, requestBodyCache, openapi);\n if (openapi[\"x-ms-paths\"]) {\n processPaths(openapi[\"x-ms-paths\"], 'x-ms-paths', options, requestBodyCache, openapi);\n }\n\n if (!options.debug) {\n for (let p in openapi.components.parameters) {\n let param = openapi.components.parameters[p];\n if (param[\"x-s2o-delete\"]) {\n delete openapi.components.parameters[p];\n }\n }\n }\n\n if (options.debug) {\n openapi[\"x-s2o-consumes\"] = openapi.consumes || [];\n openapi[\"x-s2o-produces\"] = openapi.produces || [];\n }\n delete openapi.consumes;\n delete openapi.produces;\n delete openapi.schemes;\n\n let rbNamesGenerated = [];\n\n openapi.components.requestBodies = {}; // for now as we've dereffed them\n\n if (!options.resolveInternal) {\n let counter = 1;\n for (let e in requestBodyCache) {\n let entry = requestBodyCache[e];\n if (entry.refs.length > 1) {\n // create a shared requestBody\n let suffix = '';\n if (!entry.name) {\n entry.name = 'requestBody';\n // @ts-ignore\n suffix = counter++;\n }\n while (rbNamesGenerated.indexOf(entry.name + suffix) >= 0) {\n // @ts-ignore - this can happen if descriptions are not exactly the same (e.g. bitbucket)\n suffix = (suffix ? ++suffix : 2);\n }\n entry.name = entry.name + suffix;\n rbNamesGenerated.push(entry.name);\n openapi.components.requestBodies[entry.name] = clone(entry.body);\n for (let r in entry.refs) {\n let ref = {};\n ref.$ref = '#/components/requestBodies/' + entry.name;\n jptr.jptr(openapi,entry.refs[r],ref);\n }\n }\n }\n }\n\n if (openapi.components.responses && Object.keys(openapi.components.responses).length === 0) {\n delete openapi.components.responses;\n }\n if (openapi.components.parameters && Object.keys(openapi.components.parameters).length === 0) {\n delete openapi.components.parameters;\n }\n if (openapi.components.examples && Object.keys(openapi.components.examples).length === 0) {\n delete openapi.components.examples;\n }\n if (openapi.components.requestBodies && Object.keys(openapi.components.requestBodies).length === 0) {\n delete openapi.components.requestBodies;\n }\n if (openapi.components.securitySchemes && Object.keys(openapi.components.securitySchemes).length === 0) {\n delete openapi.components.securitySchemes;\n }\n if (openapi.components.headers && Object.keys(openapi.components.headers).length === 0) {\n delete openapi.components.headers;\n }\n if (openapi.components.schemas && Object.keys(openapi.components.schemas).length === 0) {\n delete openapi.components.schemas;\n }\n if (openapi.components && Object.keys(openapi.components).length === 0) {\n delete openapi.components;\n }\n\n return openapi;\n}\n\nfunction extractServerParameters(server) {\n if (!server || !server.url || (typeof server.url !== 'string')) return server;\n server.url = server.url.split('{{').join('{');\n server.url = server.url.split('}}').join('}');\n server.url.replace(/\\{(.+?)\\}/g, function (match, group1) { // TODO extend to :parameters (not port)?\n if (!server.variables) {\n server.variables = {};\n }\n server.variables[group1] = { default: 'unknown' };\n });\n return server;\n}\n\nfunction fixInfo(openapi, options, reject) {\n if ((typeof openapi.info === 'undefined') || (openapi.info === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info = { version: '', title: '' };\n }\n else {\n return reject(new S2OError('(Patchable) info object is mandatory'));\n }\n }\n if ((typeof openapi.info !== 'object') || (Array.isArray(openapi.info))) {\n return reject(new S2OError('info must be an object'));\n }\n if ((typeof openapi.info.title === 'undefined') || (openapi.info.title === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info.title = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.title cannot be null'));\n }\n }\n if ((typeof openapi.info.version === 'undefined') || (openapi.info.version === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info.version = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.version cannot be null'));\n }\n }\n if (typeof openapi.info.version !== 'string') {\n if (options.patch) {\n options.patches++;\n openapi.info.version = openapi.info.version.toString();\n }\n else {\n return reject(new S2OError('(Patchable) info.version must be a string'));\n }\n }\n if (typeof openapi.info.logo !== 'undefined') {\n if (options.patch) {\n options.patches++;\n openapi.info['x-logo'] = openapi.info.logo;\n delete openapi.info.logo;\n }\n else return reject(new S2OError('(Patchable) info should not have logo property'));\n }\n if (typeof openapi.info.termsOfService !== 'undefined') {\n if (openapi.info.termsOfService === null) {\n if (options.patch) {\n options.patches++;\n openapi.info.termsOfService = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.termsOfService cannot be null'));\n }\n }\n try {\n let u = new URL(openapi.info.termsOfService);\n }\n catch (ex) {\n if (options.patch) {\n options.patches++;\n delete openapi.info.termsOfService;\n }\n else return reject(new S2OError('(Patchable) info.termsOfService must be a URL'));\n }\n }\n}\n\nfunction fixPaths(openapi, options, reject) {\n if (typeof openapi.paths === 'undefined') {\n if (options.patch) {\n options.patches++;\n openapi.paths = {};\n }\n else {\n return reject(new S2OError('(Patchable) paths object is mandatory'));\n }\n }\n}\n\nfunction detectObjectReferences(obj, options) {\n const seen = new WeakSet();\n recurse(obj, {identityDetection:true}, function (obj, key, state) {\n if ((typeof obj[key] === 'object') && (obj[key] !== null)) {\n if (seen.has(obj[key])) {\n if (options.anchors) {\n obj[key] = clone(obj[key]);\n }\n else {\n throwError('YAML anchor or merge key at '+state.path, options);\n }\n }\n else {\n seen.add(obj[key]);\n }\n }\n });\n}\n\nfunction convertObj(swagger, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n if (!swagger) swagger = {};\n options.original = swagger;\n if (!options.text) options.text = yaml.stringify(swagger);\n options.externals = [];\n options.externalRefs = {};\n options.rewriteRefs = true; // avoids stack explosions\n options.preserveMiro = true;\n options.promise = {};\n options.promise.resolve = resolve;\n options.promise.reject = reject;\n options.patches = 0;\n if (!options.cache) options.cache = {};\n if (options.source) options.cache[options.source] = options.original;\n\n detectObjectReferences(swagger, options);\n\n if (swagger.openapi && (typeof swagger.openapi === 'string') && swagger.openapi.startsWith('3.')) {\n options.openapi = cclone(swagger);\n fixInfo(options.openapi, options, reject);\n fixPaths(options.openapi, options, reject);\n\n resolver.optionalResolve(options) // is a no-op if options.resolve is not set\n .then(function(){\n if (options.direct) {\n return resolve(options.openapi);\n }\n else {\n return resolve(options);\n }\n })\n .catch(function(ex){\n console.warn(ex);\n reject(ex);\n });\n return; // we should have resolved or rejected by now\n }\n\n if ((!swagger.swagger) || (swagger.swagger != \"2.0\")) {\n return reject(new S2OError('Unsupported swagger/OpenAPI version: ' + (swagger.openapi ? swagger.openapi : swagger.swagger)));\n }\n\n let openapi = options.openapi = {};\n openapi.openapi = (typeof options.targetVersion === 'string' && options.targetVersion.startsWith('3.')) ? options.targetVersion : targetVersion; // semver\n\n if (options.origin) {\n if (!openapi[\"x-origin\"]) {\n openapi[\"x-origin\"] = [];\n }\n let origin = {};\n origin.url = options.source||options.origin;\n origin.format = 'swagger';\n origin.version = swagger.swagger;\n origin.converter = {};\n origin.converter.url = 'https://github.com/mermade/oas-kit';\n origin.converter.version = ourVersion;\n openapi[\"x-origin\"].push(origin);\n }\n\n // we want the new and existing properties to appear in a sensible order. Not guaranteed\n openapi = Object.assign(openapi, cclone(swagger));\n delete openapi.swagger;\n recurse(openapi, {}, function(obj, key, state){\n if ((obj[key] === null) && (!key.startsWith('x-')) && key !== 'default' && (state.path.indexOf('/example') < 0)) delete obj[key]; // this saves *so* much grief later\n });\n\n if (swagger.host) {\n for (let s of (Array.isArray(swagger.schemes) ? swagger.schemes : [''])) {\n let server = {};\n let basePath = (swagger.basePath || '').replace(/\\/$/, '') // Trailing slashes generally shouldn't be included\n server.url = (s ? s+':' : '') + '//' + swagger.host + basePath;\n extractServerParameters(server);\n if (!openapi.servers) openapi.servers = [];\n openapi.servers.push(server);\n }\n }\n else if (swagger.basePath) {\n let server = {};\n server.url = swagger.basePath;\n extractServerParameters(server);\n if (!openapi.servers) openapi.servers = [];\n openapi.servers.push(server);\n }\n delete openapi.host;\n delete openapi.basePath;\n\n if (openapi['x-servers'] && Array.isArray(openapi['x-servers'])) {\n openapi.servers = openapi['x-servers'];\n delete openapi['x-servers'];\n }\n\n // TODO APIMatic extensions (x-server-configuration) ?\n\n if (swagger['x-ms-parameterized-host']) {\n let xMsPHost = swagger['x-ms-parameterized-host'];\n let server = {};\n server.url = xMsPHost.hostTemplate + (swagger.basePath ? swagger.basePath : '');\n server.variables = {};\n const paramNames = server.url.match(/\\{\\w+\\}/g);\n for (let msp in xMsPHost.parameters) {\n let param = xMsPHost.parameters[msp];\n if (param.$ref) {\n param = clone(resolveInternal(openapi, param.$ref));\n }\n if (!msp.startsWith('x-')) {\n delete param.required; // all true\n delete param.type; // all strings\n delete param.in; // all 'host'\n if (typeof param.default === 'undefined') {\n if (param.enum) {\n param.default = param.enum[0];\n }\n else {\n param.default = 'none';\n }\n }\n if (!param.name) {\n param.name = paramNames[msp].replace('{','').replace('}','');\n }\n server.variables[param.name] = param;\n delete param.name;\n }\n }\n if (!openapi.servers) openapi.servers = [];\n if (xMsPHost.useSchemePrefix === false) {\n // The server URL already includes a protocol scheme\n openapi.servers.push(server);\n } else {\n // Define this server once for each given protocol scheme\n swagger.schemes.forEach((scheme) => {\n openapi.servers.push(\n Object.assign({}, server, { url: scheme + '://' + server.url })\n )\n });\n }\n delete openapi['x-ms-parameterized-host'];\n }\n\n fixInfo(openapi, options, reject);\n fixPaths(openapi, options, reject);\n\n if (typeof openapi.consumes === 'string') {\n openapi.consumes = [openapi.consumes];\n }\n if (typeof openapi.produces === 'string') {\n openapi.produces = [openapi.produces];\n }\n\n openapi.components = {};\n if (openapi['x-callbacks']) {\n openapi.components.callbacks = openapi['x-callbacks'];\n delete openapi['x-callbacks'];\n }\n openapi.components.examples = {};\n openapi.components.headers = {};\n if (openapi['x-links']) {\n openapi.components.links = openapi['x-links'];\n delete openapi['x-links'];\n }\n openapi.components.parameters = openapi.parameters || {};\n openapi.components.responses = openapi.responses || {};\n openapi.components.requestBodies = {};\n openapi.components.securitySchemes = openapi.securityDefinitions || {};\n openapi.components.schemas = openapi.definitions || {};\n delete openapi.definitions;\n delete openapi.responses;\n delete openapi.parameters;\n delete openapi.securityDefinitions;\n\n resolver.optionalResolve(options) // is a no-op if options.resolve is not set\n .then(function(){\n main(options.openapi, options);\n if (options.direct) {\n resolve(options.openapi);\n }\n else {\n resolve(options);\n }\n })\n .catch(function(ex){\n console.warn(ex);\n reject(ex);\n });\n\n }));\n}\n\nfunction convertStr(str, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n let obj = null;\n let error = null;\n try {\n obj = JSON.parse(str);\n options.text = JSON.stringify(obj,null,2);\n }\n catch (ex) {\n error = ex;\n try {\n obj = yaml.parse(str, { schema: 'core', prettyErrors: true });\n options.sourceYaml = true;\n options.text = str;\n }\n catch (ex) {\n error = ex;\n }\n }\n if (obj) {\n convertObj(obj, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }\n else {\n reject(new S2OError(error ? error.message : 'Could not parse string'));\n }\n }));\n}\n\nfunction convertUrl(url, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n options.origin = true;\n if (!options.source) {\n options.source = url;\n }\n if (options.verbose) {\n console.warn('GET ' + url);\n }\n if (!options.fetch) {\n options.fetch = fetch;\n }\n const fetchOptions = Object.assign({}, options.fetchOptions, {agent:options.agent});\n options.fetch(url, fetchOptions).then(function (res) {\n if (res.status !== 200) throw new S2OError(`Received status code ${res.status}: ${url}`);\n return res.text();\n }).then(function (body) {\n convertStr(body, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }).catch(function (err) {\n reject(err);\n });\n }));\n}\n\nfunction convertFile(filename, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n fs.readFile(filename, options.encoding || 'utf8', function (err, s) {\n if (err) {\n reject(err);\n }\n else {\n options.sourceFile = filename;\n convertStr(s, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }\n });\n }));\n}\n\nfunction convertStream(readable, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n let data = '';\n readable.on('data', function (chunk) {\n data += chunk;\n })\n .on('end', function () {\n convertStr(data, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n });\n }));\n}\n\nmodule.exports = {\n S2OError: S2OError,\n targetVersion: targetVersion,\n convert: convertObj,\n convertObj: convertObj,\n convertUrl: convertUrl,\n convertStr: convertStr,\n convertFile: convertFile,\n convertStream: convertStream\n};\n","'use strict';\n\nconst http = require('http');\n\nconst ours = {\n \"default\": \"Default response\",\n \"1XX\": \"Informational\",\n \"103\": \"Early hints\", // not in Node < 10\n \"2XX\": \"Successful\",\n \"3XX\": \"Redirection\",\n \"4XX\": \"Client Error\",\n \"5XX\": \"Server Error\",\n \"7XX\": \"Developer Error\" // April fools RFC\n};\n\nmodule.exports = {\n statusCodes: Object.assign({},ours,http.STATUS_CODES)\n};\n\n","module.exports = require(\"call-me-maybe\");","module.exports = require(\"fast-safe-stringify\");","module.exports = require(\"stickyfill\");","module.exports = require(\"yaml\");","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"path\");","module.exports = undefined;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"polished\");","import { darken, desaturate, lighten, readableColor, transparentize } from 'polished';\n\nconst defaultTheme: ThemeInterface = {\n spacing: {\n unit: 5,\n sectionHorizontal: ({ spacing }) => spacing.unit * 8,\n sectionVertical: ({ spacing }) => spacing.unit * 8,\n },\n breakpoints: {\n small: '50rem',\n medium: '75rem',\n large: '105rem',\n },\n colors: {\n tonalOffset: 0.2,\n primary: {\n main: '#32329f',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.primary.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.primary.main),\n contrastText: ({ colors }) => readableColor(colors.primary.main),\n },\n success: {\n main: '#1d8127',\n light: ({ colors }) => lighten(colors.tonalOffset * 2, colors.success.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.success.main),\n contrastText: ({ colors }) => readableColor(colors.success.main),\n },\n warning: {\n main: '#ffa500',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.warning.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.warning.main),\n contrastText: '#ffffff',\n },\n error: {\n main: '#d41f1c',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.error.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.error.main),\n contrastText: ({ colors }) => readableColor(colors.error.main),\n },\n gray: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n },\n text: {\n primary: '#333333',\n secondary: ({ colors }) => lighten(colors.tonalOffset, colors.text.primary),\n },\n border: {\n dark: 'rgba(0,0,0, 0.1)',\n light: '#ffffff',\n },\n responses: {\n success: {\n color: ({ colors }) => colors.success.main,\n backgroundColor: ({ colors }) => transparentize(0.93, colors.success.main),\n tabTextColor: ({ colors }) => colors.responses.success.color,\n },\n error: {\n color: ({ colors }) => colors.error.main,\n backgroundColor: ({ colors }) => transparentize(0.93, colors.error.main),\n tabTextColor: ({ colors }) => colors.responses.error.color,\n },\n redirect: {\n color: ({ colors }) => colors.warning.main,\n backgroundColor: ({ colors }) => transparentize(0.9, colors.responses.redirect.color),\n tabTextColor: ({ colors }) => colors.responses.redirect.color,\n },\n info: {\n color: '#87ceeb',\n backgroundColor: ({ colors }) => transparentize(0.9, colors.responses.info.color),\n tabTextColor: ({ colors }) => colors.responses.info.color,\n },\n },\n http: {\n get: '#2F8132',\n post: '#186FAF',\n put: '#95507c',\n options: '#947014',\n patch: '#bf581d',\n delete: '#cc3333',\n basic: '#707070',\n link: '#07818F',\n head: '#A23DAD',\n },\n },\n schema: {\n linesColor: theme =>\n lighten(\n theme.colors.tonalOffset,\n desaturate(theme.colors.tonalOffset, theme.colors.primary.main),\n ),\n defaultDetailsWidth: '75%',\n typeNameColor: theme => theme.colors.text.secondary,\n typeTitleColor: theme => theme.schema.typeNameColor,\n requireLabelColor: theme => theme.colors.error.main,\n labelsTextSize: '0.9em',\n nestingSpacing: '1em',\n nestedBackground: '#fafafa',\n arrow: {\n size: '1.1em',\n color: theme => theme.colors.text.secondary,\n },\n },\n typography: {\n fontSize: '14px',\n lineHeight: '1.5em',\n fontWeightRegular: '400',\n fontWeightBold: '600',\n fontWeightLight: '300',\n fontFamily: 'Roboto, sans-serif',\n smoothing: 'antialiased',\n optimizeSpeed: true,\n headings: {\n fontFamily: 'Montserrat, sans-serif',\n fontWeight: '400',\n lineHeight: '1.6em',\n },\n code: {\n fontSize: '13px',\n fontFamily: 'Courier, monospace',\n lineHeight: ({ typography }) => typography.lineHeight,\n fontWeight: ({ typography }) => typography.fontWeightRegular,\n color: '#e53935',\n backgroundColor: 'rgba(38, 50, 56, 0.05)',\n wrap: false,\n },\n links: {\n color: ({ colors }) => colors.primary.main,\n visited: ({ typography }) => typography.links.color,\n hover: ({ typography }) => lighten(0.2, typography.links.color),\n textDecoration: 'auto',\n hoverTextDecoration: 'auto',\n },\n },\n sidebar: {\n width: '260px',\n backgroundColor: '#fafafa',\n textColor: '#333333',\n activeTextColor: theme =>\n theme.sidebar.textColor !== defaultTheme.sidebar!.textColor\n ? theme.sidebar.textColor\n : theme.colors.primary.main,\n groupItems: {\n activeBackgroundColor: theme => darken(0.1, theme.sidebar.backgroundColor),\n activeTextColor: theme => theme.sidebar.activeTextColor,\n textTransform: 'uppercase',\n },\n level1Items: {\n activeBackgroundColor: theme => darken(0.05, theme.sidebar.backgroundColor),\n activeTextColor: theme => theme.sidebar.activeTextColor,\n textTransform: 'none',\n },\n arrow: {\n size: '1.5em',\n color: theme => theme.sidebar.textColor,\n },\n },\n logo: {\n maxHeight: ({ sidebar }) => sidebar.width,\n maxWidth: ({ sidebar }) => sidebar.width,\n gutter: '2px',\n },\n rightPanel: {\n backgroundColor: '#263238',\n width: '40%',\n textColor: '#ffffff',\n servers: {\n overlay: {\n backgroundColor: '#fafafa',\n textColor: '#263238',\n },\n url: {\n backgroundColor: '#fff',\n },\n },\n },\n codeBlock: {\n backgroundColor: ({ rightPanel }) => darken(0.1, rightPanel.backgroundColor),\n },\n fab: {\n backgroundColor: '#f2f2f2',\n color: '#0065FB',\n },\n};\n\nexport default defaultTheme;\n\nexport function resolveTheme(theme: ThemeInterface): ResolvedThemeInterface {\n const resolvedValues = {};\n let counter = 0;\n const setProxy = (obj, path: string) => {\n Object.keys(obj).forEach(k => {\n const currentPath = (path ? path + '.' : '') + k;\n const val = obj[k];\n if (typeof val === 'function') {\n Object.defineProperty(obj, k, {\n get() {\n if (!resolvedValues[currentPath]) {\n counter++;\n if (counter > 1000) {\n throw new Error(\n `Theme probably contains circular dependency at ${currentPath}: ${val.toString()}`,\n );\n }\n\n resolvedValues[currentPath] = val(theme);\n }\n return resolvedValues[currentPath];\n },\n enumerable: true,\n });\n } else if (typeof val === 'object') {\n setProxy(val, currentPath);\n }\n });\n };\n\n setProxy(theme, '');\n return JSON.parse(JSON.stringify(theme));\n}\n\nexport interface ColorSetting {\n main: string;\n light: string;\n dark: string;\n contrastText: string;\n}\n\nexport interface HTTPResponseColos {\n color: string;\n backgroundColor: string;\n tabTextColor: string;\n}\n\nexport interface FontSettings {\n fontSize: string;\n fontWeight: string;\n fontFamily: string;\n lineHeight: string;\n color: string;\n}\n\nexport interface Servers {\n overlay: {\n backgroundColor: string;\n textColor: string;\n };\n url: {\n backgroundColor: string;\n };\n}\n\nexport interface ResolvedThemeInterface {\n spacing: {\n unit: number;\n sectionHorizontal: number;\n sectionVertical: number;\n };\n breakpoints: {\n small: string;\n medium: string;\n large: string;\n };\n colors: {\n tonalOffset: number;\n primary: ColorSetting;\n success: ColorSetting;\n warning: ColorSetting;\n error: ColorSetting;\n gray: {\n 50: string;\n 100: string;\n };\n border: {\n light: string;\n dark: string;\n };\n text: {\n primary: string;\n secondary: string;\n };\n responses: {\n success: HTTPResponseColos;\n error: HTTPResponseColos;\n redirect: HTTPResponseColos;\n info: HTTPResponseColos;\n };\n http: {\n get: string;\n post: string;\n put: string;\n options: string;\n patch: string;\n delete: string;\n basic: string;\n link: string;\n head: string;\n };\n };\n schema: {\n linesColor: string;\n defaultDetailsWidth: string;\n typeNameColor: string;\n typeTitleColor: string;\n requireLabelColor: string;\n labelsTextSize: string;\n nestingSpacing: string;\n nestedBackground: string;\n arrow: {\n size: string;\n color: string;\n };\n };\n typography: {\n fontSize: string;\n lineHeight: string;\n fontWeightLight: string;\n fontWeightRegular: string;\n fontWeightBold: string;\n fontFamily: string;\n\n smoothing: string;\n optimizeSpeed: boolean;\n\n code: FontSettings & {\n backgroundColor: string;\n wrap: boolean;\n };\n headings: {\n fontFamily: string;\n fontWeight: string;\n lineHeight: string;\n };\n\n links: {\n color: string;\n visited: string;\n hover: string;\n textDecoration: string;\n hoverTextDecoration: string;\n };\n };\n sidebar: {\n width: string;\n backgroundColor: string;\n textColor: string;\n activeTextColor: string;\n groupItems: {\n activeBackgroundColor: string;\n activeTextColor: string;\n textTransform: string;\n };\n level1Items: {\n activeBackgroundColor: string;\n activeTextColor: string;\n textTransform: string;\n };\n arrow: {\n size: string;\n color: string;\n };\n };\n logo: {\n maxHeight: string;\n maxWidth: string;\n gutter: string;\n };\n rightPanel: {\n backgroundColor: string;\n textColor: string;\n width: string;\n servers: Servers;\n };\n codeBlock: {\n backgroundColor: string;\n };\n fab: {\n backgroundColor: string;\n color: string;\n };\n\n extensionsHook?: (name: string, props: any) => string;\n}\n\nexport type primitive = string | number | boolean | undefined | null;\nexport type AdvancedThemeDeep<T> = T extends primitive\n ? T | ((theme: ResolvedThemeInterface) => T)\n : AdvancedThemeObject<T>;\nexport type AdvancedThemeObject<T> = { [P in keyof T]?: AdvancedThemeDeep<T[P]> };\nexport type ThemeInterface = AdvancedThemeObject<ResolvedThemeInterface>;\n","export const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport function querySelector(selector: string): Element | null {\n if (typeof document !== 'undefined') {\n return document.querySelector(selector);\n }\n return null;\n}\n\n/**\n * Drop everything inside <...> (i.e., tags/elements), and keep the text.\n * Unlike browser innerText, this removes newlines; it also doesn't handle\n * un-encoded `<` or `>` characters very well, so don't feed it malformed HTML\n */\nexport function html2Str(html: string): string {\n return html\n .split(/<[^>]+>/)\n .map(chunk => {\n return chunk.trim();\n })\n .filter(trimmedChunk => {\n return trimmedChunk.length > 0;\n })\n .join(' ');\n}\n\n// Alternate scrollIntoViewIfNeeded implementation.\n// Used in all cases, since it seems Chrome's implementation is buggy\n// when \"Experimental Web Platform Features\" is enabled (at least of version 96).\n// See #1714, #1742\n\nexport function scrollIntoViewIfNeeded(el: HTMLElement, centerIfNeeded = true) {\n const parent = el.parentNode as HTMLElement | null;\n if (!parent) {\n return;\n }\n const parentComputedStyle = window.getComputedStyle(parent, undefined);\n const parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width'),\n 10,\n );\n const parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width'),\n 10,\n );\n const overTop = el.offsetTop - parent.offsetTop < parent.scrollTop;\n const overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight;\n const overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft;\n const overRight =\n el.offsetLeft - parent.offsetLeft + el.clientWidth - parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth;\n const alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"slugify\");","import slugify from 'slugify';\n\n/**\n * Maps over array passing `isLast` bool to iterator as the second argument\n */\nexport function mapWithLast<T, P>(array: T[], iteratee: (item: T, isLast: boolean) => P) {\n const res: P[] = [];\n for (let i = 0; i < array.length - 1; i++) {\n res.push(iteratee(array[i], false));\n }\n if (array.length !== 0) {\n res.push(iteratee(array[array.length - 1], true));\n }\n return res;\n}\n\n/**\n * Creates an object with the same keys as object and values generated by running each\n * own enumerable string keyed property of object thru iteratee.\n * The iteratee is invoked with three arguments: (value, key, object).\n *\n * @param object the object to iterate over\n * @param iteratee the function invoked per iteration.\n */\nexport function mapValues<T, P>(\n object: Record<string, T>,\n iteratee: (val: T, key: string, obj: Record<string, T>) => P,\n): Record<string, P> {\n const res: { [key: string]: P } = {};\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n res[key] = iteratee(object[key], key, object);\n }\n }\n return res;\n}\n\n/**\n * flattens collection using `prop` field as a children\n * @param collectionItems collection items\n * @param prop item property with child elements\n */\nexport function flattenByProp<T extends object, P extends keyof T>(\n collectionItems: T[],\n prop: P,\n): T[] {\n const res: T[] = [];\n const iterate = (items: T[]) => {\n for (const item of items) {\n res.push(item);\n if (item[prop]) {\n iterate(item[prop] as any as T[]);\n }\n }\n };\n iterate(collectionItems);\n return res;\n}\n\nexport function stripTrailingSlash(path: string): string {\n if (path.endsWith('/')) {\n return path.substring(0, path.length - 1);\n }\n return path;\n}\n\nexport function isNumeric(n: any): n is number {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nexport function appendToMdHeading(md: string, heading: string, content: string) {\n // if heading is already in md and append to the end of it\n const testRegex = new RegExp(`(^|\\\\n)#\\\\s?${heading}\\\\s*\\\\n`, 'i');\n const replaceRegex = new RegExp(`((\\\\n|^)#\\\\s*${heading}\\\\s*(\\\\n|$)(?:.|\\\\n)*?)(\\\\n#|$)`, 'i');\n if (testRegex.test(md)) {\n return md.replace(replaceRegex, `$1\\n\\n${content}\\n$4`);\n } else {\n // else append heading itself\n const br = md === '' || md.endsWith('\\n\\n') ? '' : md.endsWith('\\n') ? '\\n' : '\\n\\n';\n return `${md}${br}# ${heading}\\n\\n${content}`;\n }\n}\n\nexport const mergeObjects = (target: any, ...sources: any[]): any => {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (source === undefined) {\n return target;\n }\n\n if (isMergebleObject(target) && isMergebleObject(source)) {\n Object.keys(source).forEach((key: string) => {\n if (Object.prototype.hasOwnProperty.call(source, key) && key !== '__proto__') {\n if (isMergebleObject(source[key])) {\n if (!target[key]) {\n target[key] = {};\n }\n mergeObjects(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n });\n }\n\n return mergeObjects(target, ...sources);\n};\n\nexport const isObject = (item: unknown): item is Record<string, unknown> => {\n return item !== null && typeof item === 'object';\n};\n\nconst isMergebleObject = (item): boolean => {\n return isObject(item) && !isArray(item);\n};\n\n/**\n * slugify() returns empty string when failed to slugify.\n * so try to return minimum slugified-string with failed one which keeps original value\n * the regex codes are referenced with https://gist.github.com/mathewbyrne/1280286\n */\nexport function safeSlugify(value: string): string {\n return (\n slugify(value) ||\n value\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/&/g, '-and-') // Replace & with 'and'\n .replace(/\\--+/g, '-') // Replace multiple - with single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, '')\n ); // Trim - from end of text\n}\n\nexport function isAbsoluteUrl(url: string) {\n return /(?:^[a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url);\n}\n\n/**\n * simple resolve URL which doesn't break on strings with url fragments\n * e.g. resolveUrl('http://test.com:{port}', 'path') results in http://test.com:{port}/path\n */\nexport function resolveUrl(url: string, to: string) {\n let res;\n if (to.startsWith('//')) {\n try {\n res = `${new URL(url).protocol || 'https:'}${to}`;\n } catch {\n res = `https:${to}`;\n }\n } else if (isAbsoluteUrl(to)) {\n res = to;\n } else if (!to.startsWith('/')) {\n res = stripTrailingSlash(url) + '/' + to;\n } else {\n try {\n const urlObj = new URL(url);\n urlObj.pathname = to;\n res = urlObj.href;\n } catch {\n res = to;\n }\n }\n return stripTrailingSlash(res);\n}\n\nexport function getBasePath(serverUrl: string): string {\n try {\n return parseURL(serverUrl).pathname;\n } catch (e) {\n // when using with redoc-cli serverUrl can be empty resulting in crash\n return serverUrl;\n }\n}\n\nexport function titleize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function removeQueryStringAndHash(serverUrl: string): string {\n try {\n const url = parseURL(serverUrl);\n url.search = '';\n url.hash = '';\n return url.toString();\n } catch (e) {\n // when using with redoc-cli serverUrl can be empty resulting in crash\n return serverUrl;\n }\n}\n\nfunction parseURL(url: string) {\n if (typeof URL === 'undefined') {\n // node\n return new (require('url').URL)(url);\n } else {\n return new URL(url);\n }\n}\n\nexport function escapeHTMLAttrChars(str: string): string {\n return str.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\nexport function unescapeHTMLChars(str: string): string {\n return str\n .replace(/&#(\\d+);/g, (_m, code) => String.fromCharCode(parseInt(code, 10)))\n .replace(/&amp;/g, '&')\n .replace(/&quot;/g, '\"');\n}\n\nexport function isArray(value: unknown): value is any[] {\n return Array.isArray(value);\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n","import type { LabelsConfig, LabelsConfigRaw } from './types';\n\nconst labels: LabelsConfig = {\n enum: 'Enum',\n enumSingleValue: 'Value',\n enumArray: 'Items',\n default: 'Default',\n deprecated: 'Deprecated',\n example: 'Example',\n examples: 'Examples',\n recursive: 'Recursive',\n arrayOf: 'Array of ',\n webhook: 'Event',\n const: 'Value',\n noResultsFound: 'No results found',\n download: 'Download',\n downloadSpecification: 'Download OpenAPI specification',\n responses: 'Responses',\n callbackResponses: 'Callback responses',\n requestSamples: 'Request samples',\n responseSamples: 'Response samples',\n};\n\nexport function setRedocLabels(_labels?: LabelsConfigRaw) {\n Object.assign(labels, _labels);\n}\n\nexport function l(key: keyof LabelsConfig, idx?: number): string {\n const label = labels[key];\n if (idx !== undefined) {\n return label[idx];\n }\n return label;\n}\n","import {\n OpenAPIOperation,\n OpenAPIParameter,\n OpenAPISchema,\n OpenAPIServer,\n OpenAPITag,\n Referenced,\n} from '../types';\nimport { AppStore } from './AppStore';\nimport { GroupModel } from './models';\nimport { OperationModel } from './models/Operation';\nimport { RedocRawOptions } from './RedocNormalizedOptions';\n\nexport interface StoreState {\n menu: {\n activeItemIdx: number;\n };\n spec: {\n url?: string;\n data: any;\n };\n searchIndex: any;\n options: RedocRawOptions;\n}\n\nexport interface LabelsConfig {\n enum: string;\n enumSingleValue: string;\n enumArray: string;\n default: string;\n deprecated: string;\n example: string;\n examples: string;\n recursive: string;\n arrayOf: string;\n webhook: string;\n const: string;\n noResultsFound: string;\n download: string;\n downloadSpecification: string;\n responses: string;\n callbackResponses: string;\n requestSamples: string;\n responseSamples: string;\n}\n\nexport type LabelsConfigRaw = Partial<LabelsConfig>;\n\nexport interface MDXComponentMeta {\n component: React.ComponentType;\n propsSelector: (store?: AppStore) => any;\n props?: object;\n}\n\nexport interface MarkdownHeading {\n id: string;\n name: string;\n level: number;\n items?: MarkdownHeading[];\n description?: string;\n}\n\nexport type ContentItemModel = GroupModel | OperationModel;\n\nexport type TagInfo = OpenAPITag & {\n operations: ExtendedOpenAPIOperation[];\n used?: boolean;\n};\n\nexport type ExtendedOpenAPIOperation = {\n pointer: string;\n pathName: string;\n httpVerb: string;\n pathParameters: Array<Referenced<OpenAPIParameter>>;\n pathServers: Array<OpenAPIServer> | undefined;\n isWebhook: boolean;\n} & OpenAPIOperation;\n\nexport type TagsInfoMap = Record<string, TagInfo>;\n\nexport interface TagGroup {\n name: string;\n tags: string[];\n}\n\nexport type MenuItemGroupType = 'group' | 'tag' | 'section' | 'schema';\nexport type MenuItemType = MenuItemGroupType | 'operation';\n\nexport interface IMenuItem {\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n depth: number;\n active: boolean;\n expanded: boolean;\n items: IMenuItem[];\n parent?: IMenuItem;\n deprecated?: boolean;\n type: MenuItemType;\n\n deactivate(): void;\n activate(): void;\n\n collapse(): void;\n expand(): void;\n}\n\nexport interface SearchDocument {\n title: string;\n description: string;\n id: string;\n}\n\nexport interface SearchResult<T = string> {\n meta: T;\n score: number;\n}\n\nexport enum SideNavStyleEnum {\n SummaryOnly = 'summary-only',\n PathOnly = 'path-only',\n IdOnly = 'id-only',\n}\n\nexport type MergedOpenAPISchema = OpenAPISchema & {\n 'x-refsStack'?: string[];\n 'x-parentRefs'?: string[];\n 'x-circular-ref'?: boolean;\n};\n","import defaultTheme, { ResolvedThemeInterface, resolveTheme, ThemeInterface } from '../theme';\nimport { querySelector } from '../utils/dom';\nimport { isArray, isNumeric, mergeObjects } from '../utils/helpers';\n\nimport { setRedocLabels } from './Labels';\nimport { SideNavStyleEnum } from './types';\nimport type { LabelsConfigRaw, MDXComponentMeta } from './types';\n\nexport type DownloadUrlsConfig = {\n title?: string;\n url: string;\n}[];\n\nexport interface RedocRawOptions {\n theme?: ThemeInterface;\n scrollYOffset?: number | string | (() => number);\n hideHostname?: boolean | string;\n expandResponses?: string | 'all';\n requiredPropsFirst?: boolean | string; // remove in next major release\n sortRequiredPropsFirst?: boolean | string;\n sortPropsAlphabetically?: boolean | string;\n sortEnumValuesAlphabetically?: boolean | string;\n sortOperationsAlphabetically?: boolean | string;\n sortTagsAlphabetically?: boolean | string;\n nativeScrollbars?: boolean | string;\n pathInMiddlePanel?: boolean | string;\n untrustedSpec?: boolean | string; // remove in next major release\n sanitize?: boolean | string;\n hideLoading?: boolean | string;\n hideDownloadButton?: boolean | string; // remove in next major release\n hideDownloadButtons?: boolean | string;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n downloadUrls?: DownloadUrlsConfig;\n disableSearch?: boolean | string;\n onlyRequiredInSamples?: boolean | string;\n showExtensions?: boolean | string | string[];\n sideNavStyle?: SideNavStyleEnum;\n hideSingleRequestSampleTab?: boolean | string;\n hideRequestPayloadSample?: boolean;\n menuToggle?: boolean | string;\n jsonSampleExpandLevel?: number | string | 'all'; // remove in next major release\n jsonSamplesExpandLevel?: number | string | 'all';\n hideSchemaTitles?: boolean | string;\n simpleOneOfTypeLabel?: boolean | string;\n payloadSampleIdx?: number;\n expandSingleSchemaField?: boolean | string;\n schemaExpansionLevel?: number | string | 'all'; // remove in next major release\n schemasExpansionLevel?: number | string | 'all';\n schemaDefinitionsTagName?: string;\n showObjectSchemaExamples?: boolean | string;\n showSecuritySchemeType?: boolean;\n hideSecuritySection?: boolean;\n\n unstable_ignoreMimeParameters?: boolean;\n\n allowedMdComponents?: Record<string, MDXComponentMeta>;\n\n labels?: LabelsConfigRaw;\n\n enumSkipQuotes?: boolean | string;\n\n expandDefaultServerVariables?: boolean;\n maxDisplayedEnumValues?: number;\n ignoreNamedSchemas?: string[] | string;\n hideSchemaPattern?: boolean;\n generatedPayloadSamplesMaxDepth?: number; // remove in next major release\n generatedSamplesMaxDepth?: number;\n nonce?: string;\n hideFab?: boolean;\n minCharacterLengthToInitSearch?: number;\n showWebhookVerb?: boolean;\n hidePropertiesPrefix?: boolean;\n}\n\nexport function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean {\n if (val === undefined) {\n return defaultValue || false;\n }\n if (typeof val === 'string') {\n return val !== 'false';\n }\n return val;\n}\n\nfunction argValueToNumber(value: number | string | undefined): number | undefined {\n if (typeof value === 'string') {\n return parseInt(value, 10);\n }\n\n if (typeof value === 'number') {\n return value;\n }\n}\n\nfunction argValueToExpandLevel(value?: number | string | undefined, defaultValue = 0): number {\n if (value === 'all') return Infinity;\n\n return argValueToNumber(value) || defaultValue;\n}\n\nexport class RedocNormalizedOptions {\n static normalizeExpandResponses(value: RedocRawOptions['expandResponses']) {\n if (value === 'all') {\n return 'all';\n }\n if (typeof value === 'string') {\n const res = {};\n value.split(',').forEach(code => {\n res[code.trim()] = true;\n });\n return res;\n } else if (value !== undefined) {\n console.warn(\n `expandResponses must be a string but received value \"${value}\" of type ${typeof value}`,\n );\n }\n return {};\n }\n\n static normalizeHideHostname(value: RedocRawOptions['hideHostname']): boolean {\n return !!value;\n }\n\n static normalizeScrollYOffset(value: RedocRawOptions['scrollYOffset']): () => number {\n // just number is not valid selector and leads to crash so checking if isNumeric here\n if (typeof value === 'string' && !isNumeric(value)) {\n const el = querySelector(value);\n if (!el) {\n console.warn(\n 'scrollYOffset value is a selector to non-existing element. Using offset 0 by default',\n );\n }\n const bottom = (el && el.getBoundingClientRect().bottom) || 0;\n return () => bottom;\n } else if (typeof value === 'number' || isNumeric(value)) {\n return () => (typeof value === 'number' ? value : parseFloat(value));\n } else if (typeof value === 'function') {\n return () => {\n const res = value();\n if (typeof res !== 'number') {\n console.warn(\n `scrollYOffset should return number but returned value \"${res}\" of type ${typeof res}`,\n );\n }\n return res;\n };\n } else if (value !== undefined) {\n console.warn(\n 'Wrong value for scrollYOffset ReDoc option: should be string, number or function',\n );\n }\n\n return () => 0;\n }\n\n static normalizeShowExtensions(value: RedocRawOptions['showExtensions']): string[] | boolean {\n if (typeof value === 'undefined') {\n return false;\n }\n if (value === '') {\n return true;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n switch (value) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return value.split(',').map(ext => ext.trim());\n }\n }\n\n static normalizeSideNavStyle(value: RedocRawOptions['sideNavStyle']): SideNavStyleEnum {\n const defaultValue = SideNavStyleEnum.SummaryOnly;\n if (typeof value !== 'string') {\n return defaultValue;\n }\n\n switch (value) {\n case defaultValue:\n return value;\n case SideNavStyleEnum.PathOnly:\n return SideNavStyleEnum.PathOnly;\n case SideNavStyleEnum.IdOnly:\n return SideNavStyleEnum.IdOnly;\n default:\n return defaultValue;\n }\n }\n\n static normalizePayloadSampleIdx(value: RedocRawOptions['payloadSampleIdx']): number {\n if (typeof value === 'number') {\n return Math.max(0, value); // always greater or equal than 0\n }\n\n if (typeof value === 'string') {\n return isFinite(value) ? parseInt(value, 10) : 0;\n }\n\n return 0;\n }\n\n private static normalizeJsonSampleExpandLevel(level?: number | string | 'all'): number {\n if (level === 'all') {\n return +Infinity;\n }\n if (!isNaN(Number(level))) {\n return Math.ceil(Number(level));\n }\n return 2;\n }\n\n private static normalizeGeneratedPayloadSamplesMaxDepth(\n value?: number | string | undefined,\n ): number {\n if (!isNaN(Number(value))) {\n return Math.max(0, Number(value));\n }\n\n return 10;\n }\n\n theme: ResolvedThemeInterface;\n scrollYOffset: () => number;\n hideHostname: boolean;\n expandResponses: { [code: string]: boolean } | 'all';\n sortRequiredPropsFirst: boolean;\n sortPropsAlphabetically: boolean;\n sortEnumValuesAlphabetically: boolean;\n sortOperationsAlphabetically: boolean;\n sortTagsAlphabetically: boolean;\n nativeScrollbars: boolean;\n pathInMiddlePanel: boolean;\n sanitize: boolean;\n hideDownloadButtons: boolean;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n downloadUrls?: DownloadUrlsConfig;\n disableSearch: boolean;\n onlyRequiredInSamples: boolean;\n showExtensions: boolean | string[];\n sideNavStyle: SideNavStyleEnum;\n hideSingleRequestSampleTab: boolean;\n hideRequestPayloadSample: boolean;\n menuToggle: boolean;\n jsonSamplesExpandLevel: number;\n enumSkipQuotes: boolean;\n hideSchemaTitles: boolean;\n simpleOneOfTypeLabel: boolean;\n payloadSampleIdx: number;\n expandSingleSchemaField: boolean;\n schemasExpansionLevel: number;\n schemaDefinitionsTagName?: string;\n showObjectSchemaExamples: boolean;\n showSecuritySchemeType?: boolean;\n hideSecuritySection?: boolean;\n\n /* tslint:disable-next-line */\n unstable_ignoreMimeParameters: boolean;\n allowedMdComponents: Record<string, MDXComponentMeta>;\n\n expandDefaultServerVariables: boolean;\n maxDisplayedEnumValues?: number;\n\n ignoreNamedSchemas: Set<string>;\n hideSchemaPattern: boolean;\n generatedSamplesMaxDepth: number;\n hideFab: boolean;\n minCharacterLengthToInitSearch: number;\n showWebhookVerb: boolean;\n hidePropertiesPrefix?: boolean;\n\n nonce?: string;\n\n constructor(raw: RedocRawOptions, defaults: RedocRawOptions = {}) {\n raw = { ...defaults, ...raw };\n const hook = raw.theme && raw.theme.extensionsHook;\n\n // migrate from old theme\n if ((raw.theme as any)?.menu && !raw.theme?.sidebar) {\n console.warn('Theme setting \"menu\" is deprecated. Rename to \"sidebar\"');\n raw.theme!.sidebar = (raw.theme as any).menu;\n }\n\n if ((raw.theme as any)?.codeSample && !raw.theme?.codeBlock) {\n console.warn('Theme setting \"codeSample\" is deprecated. Rename to \"codeBlock\"');\n raw.theme!.codeBlock = (raw.theme as any).codeSample;\n }\n\n this.theme = resolveTheme(\n mergeObjects({} as any, defaultTheme, { ...raw.theme, extensionsHook: undefined }),\n );\n\n this.theme.extensionsHook = hook as any;\n\n // do not support dynamic labels changes. Labels should be configured before\n setRedocLabels(raw.labels);\n\n this.scrollYOffset = RedocNormalizedOptions.normalizeScrollYOffset(raw.scrollYOffset);\n this.hideHostname = RedocNormalizedOptions.normalizeHideHostname(raw.hideHostname);\n this.expandResponses = RedocNormalizedOptions.normalizeExpandResponses(raw.expandResponses);\n this.sortRequiredPropsFirst = argValueToBoolean(\n raw.sortRequiredPropsFirst || raw.requiredPropsFirst,\n );\n this.sortPropsAlphabetically = argValueToBoolean(raw.sortPropsAlphabetically);\n this.sortEnumValuesAlphabetically = argValueToBoolean(raw.sortEnumValuesAlphabetically);\n this.sortOperationsAlphabetically = argValueToBoolean(raw.sortOperationsAlphabetically);\n this.sortTagsAlphabetically = argValueToBoolean(raw.sortTagsAlphabetically);\n this.nativeScrollbars = argValueToBoolean(raw.nativeScrollbars);\n this.pathInMiddlePanel = argValueToBoolean(raw.pathInMiddlePanel);\n this.sanitize = argValueToBoolean(raw.sanitize || raw.untrustedSpec);\n this.hideDownloadButtons = argValueToBoolean(raw.hideDownloadButtons || raw.hideDownloadButton);\n this.downloadFileName = raw.downloadFileName;\n this.downloadDefinitionUrl = raw.downloadDefinitionUrl;\n this.downloadUrls = raw.downloadUrls;\n this.disableSearch = argValueToBoolean(raw.disableSearch);\n this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples);\n this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions);\n this.sideNavStyle = RedocNormalizedOptions.normalizeSideNavStyle(raw.sideNavStyle);\n this.hideSingleRequestSampleTab = argValueToBoolean(raw.hideSingleRequestSampleTab);\n this.hideRequestPayloadSample = argValueToBoolean(raw.hideRequestPayloadSample);\n this.menuToggle = argValueToBoolean(raw.menuToggle, true);\n this.jsonSamplesExpandLevel = RedocNormalizedOptions.normalizeJsonSampleExpandLevel(\n raw.jsonSamplesExpandLevel || raw.jsonSampleExpandLevel,\n );\n this.enumSkipQuotes = argValueToBoolean(raw.enumSkipQuotes);\n this.hideSchemaTitles = argValueToBoolean(raw.hideSchemaTitles);\n this.simpleOneOfTypeLabel = argValueToBoolean(raw.simpleOneOfTypeLabel);\n this.payloadSampleIdx = RedocNormalizedOptions.normalizePayloadSampleIdx(raw.payloadSampleIdx);\n this.expandSingleSchemaField = argValueToBoolean(raw.expandSingleSchemaField);\n this.schemasExpansionLevel = argValueToExpandLevel(\n raw.schemasExpansionLevel || raw.schemaExpansionLevel,\n );\n this.schemaDefinitionsTagName = raw.schemaDefinitionsTagName;\n this.showObjectSchemaExamples = argValueToBoolean(raw.showObjectSchemaExamples);\n this.showSecuritySchemeType = argValueToBoolean(raw.showSecuritySchemeType);\n this.hideSecuritySection = argValueToBoolean(raw.hideSecuritySection);\n\n this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters);\n\n this.allowedMdComponents = raw.allowedMdComponents || {};\n\n this.expandDefaultServerVariables = argValueToBoolean(raw.expandDefaultServerVariables);\n this.maxDisplayedEnumValues = argValueToNumber(raw.maxDisplayedEnumValues);\n const ignoreNamedSchemas = isArray(raw.ignoreNamedSchemas)\n ? raw.ignoreNamedSchemas\n : raw.ignoreNamedSchemas?.split(',').map(s => s.trim());\n this.ignoreNamedSchemas = new Set(ignoreNamedSchemas);\n this.hideSchemaPattern = argValueToBoolean(raw.hideSchemaPattern);\n this.generatedSamplesMaxDepth = RedocNormalizedOptions.normalizeGeneratedPayloadSamplesMaxDepth(\n raw.generatedSamplesMaxDepth || raw.generatedPayloadSamplesMaxDepth,\n );\n this.nonce = raw.nonce;\n this.hideFab = argValueToBoolean(raw.hideFab);\n this.minCharacterLengthToInitSearch = argValueToNumber(raw.minCharacterLengthToInitSearch) || 3;\n this.showWebhookVerb = argValueToBoolean(raw.showWebhookVerb);\n this.hidePropertiesPrefix = argValueToBoolean(raw.hidePropertiesPrefix, true);\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"styled-components\");","import * as styledComponents from 'styled-components';\n\nimport type { ResolvedThemeInterface } from './theme';\n\nexport type { ResolvedThemeInterface };\n\nconst {\n default: styled,\n css,\n createGlobalStyle,\n keyframes,\n ThemeProvider,\n} = styledComponents as unknown as styledComponents.ThemedStyledComponentsModule<ResolvedThemeInterface>;\n\nexport const media = {\n lessThan(breakpoint, print?: boolean, extra?: string) {\n return (...args) => css`\n @media ${print ? 'print, ' : ''} screen and (max-width: ${props =>\n props.theme.breakpoints[breakpoint]}) ${extra || ''} {\n ${(css as any)(...args)};\n }\n `;\n },\n\n greaterThan(breakpoint) {\n return (...args) => css`\n @media (min-width: ${props => props.theme.breakpoints[breakpoint]}) {\n ${(css as any)(...args)};\n }\n `;\n },\n\n between(firstBreakpoint, secondBreakpoint) {\n return (...args) => css`\n @media (min-width: ${props =>\n props.theme.breakpoints[firstBreakpoint]}) and (max-width: ${props =>\n props.theme.breakpoints[secondBreakpoint]}) {\n ${(css as any)(...args)};\n }\n `;\n },\n};\n\nexport { css, createGlobalStyle, keyframes, ThemeProvider };\nexport default styled;\n\nexport function extensionsHook(styledName: string) {\n return props => {\n if (!props.theme.extensionsHook) {\n return;\n }\n return props.theme.extensionsHook(styledName, props);\n };\n}\n","import * as React from 'react';\nimport styled from '../styled-components';\n\nconst ErrorWrapper = styled.div`\n padding: 20px;\n color: red;\n`;\n\nexport class ErrorBoundary extends React.Component<\n React.PropsWithChildren<unknown>,\n { error?: Error }\n> {\n constructor(props) {\n super(props);\n this.state = { error: undefined };\n }\n\n componentDidCatch(error) {\n this.setState({ error });\n return false;\n }\n\n render() {\n if (this.state.error) {\n return (\n <ErrorWrapper>\n <h1>Something went wrong...</h1>\n <small> {this.state.error.message} </small>\n <p>\n <details>\n <summary>Stack trace</summary>\n <pre>{this.state.error.stack}</pre>\n </details>\n </p>\n <small> ReDoc Version: {__REDOC_VERSION__}</small> <br />\n <small> Commit: {__REDOC_REVISION__}</small>\n </ErrorWrapper>\n );\n }\n return <React.Fragment>{React.Children.only(this.props.children)}</React.Fragment>;\n }\n}\n","import * as React from 'react';\nimport styled, { keyframes } from '../../styled-components';\n\nconst _Spinner = (props: { className?: string; color: string }) => (\n <svg className={props.className} version=\"1.1\" width=\"512\" height=\"512\" viewBox=\"0 0 512 512\">\n <path d=\"M275.682 147.999c0 10.864-8.837 19.661-19.682 19.661v0c-10.875 0-19.681-8.796-19.681-19.661v-96.635c0-10.885 8.806-19.661 19.681-19.661v0c10.844 0 19.682 8.776 19.682 19.661v96.635z\" />\n <path d=\"M275.682 460.615c0 10.865-8.837 19.682-19.682 19.682v0c-10.875 0-19.681-8.817-19.681-19.682v-96.604c0-10.885 8.806-19.681 19.681-19.681v0c10.844 0 19.682 8.796 19.682 19.682v96.604z\" />\n <path d=\"M147.978 236.339c10.885 0 19.681 8.755 19.681 19.641v0c0 10.885-8.796 19.702-19.681 19.702h-96.624c-10.864 0-19.661-8.817-19.661-19.702v0c0-10.885 8.796-19.641 19.661-19.641h96.624z\" />\n <path d=\"M460.615 236.339c10.865 0 19.682 8.755 19.682 19.641v0c0 10.885-8.817 19.702-19.682 19.702h-96.584c-10.885 0-19.722-8.817-19.722-19.702v0c0-10.885 8.837-19.641 19.722-19.641h96.584z\" />\n <path d=\"M193.546 165.703c7.69 7.66 7.68 20.142 0 27.822v0c-7.701 7.701-20.162 7.701-27.853 0.020l-68.311-68.322c-7.68-7.701-7.68-20.142 0-27.863v0c7.68-7.68 20.121-7.68 27.822 0l68.342 68.342z\" />\n <path d=\"M414.597 386.775c7.7 7.68 7.7 20.163 0.021 27.863v0c-7.7 7.659-20.142 7.659-27.843-0.062l-68.311-68.26c-7.68-7.7-7.68-20.204 0-27.863v0c7.68-7.7 20.163-7.7 27.842 0l68.291 68.322z\" />\n <path d=\"M165.694 318.464c7.69-7.7 20.153-7.7 27.853 0v0c7.68 7.659 7.69 20.163 0 27.863l-68.342 68.322c-7.67 7.659-20.142 7.659-27.822-0.062v0c-7.68-7.68-7.68-20.122 0-27.801l68.311-68.322z\" />\n <path d=\"M386.775 97.362c7.7-7.68 20.142-7.68 27.822 0v0c7.7 7.68 7.7 20.183 0.021 27.863l-68.322 68.311c-7.68 7.68-20.163 7.68-27.843-0.020v0c-7.68-7.68-7.68-20.162 0-27.822l68.322-68.332z\" />\n </svg>\n);\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0deg); }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const Spinner = styled(_Spinner)`\n animation: 2s ${rotate} linear infinite;\n width: 50px;\n height: 50px;\n content: '';\n display: inline-block;\n margin-left: -25px;\n\n path {\n fill: ${props => props.color};\n }\n`;\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { Spinner } from './Spinner.svg';\n\nconst LoadingMessage = styled.div<{ color: string }>`\n font-family: helvetica, sans;\n width: 100%;\n text-align: center;\n font-size: 25px;\n margin: 30px 0 20px 0;\n color: ${props => props.color};\n`;\n\nexport interface LoadingProps {\n color: string;\n}\n\nexport class Loading extends React.PureComponent<LoadingProps> {\n render() {\n return (\n <div style={{ textAlign: 'center' }}>\n <LoadingMessage color={this.props.color}>Loading ...</LoadingMessage>\n <Spinner color={this.props.color} />\n </div>\n );\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import * as React from 'react';\n\nimport { RedocNormalizedOptions } from '../services/RedocNormalizedOptions';\n\nexport const OptionsContext = React.createContext(new RedocNormalizedOptions({}));\nexport const OptionsProvider = OptionsContext.Provider;\nexport const OptionsConsumer = OptionsContext.Consumer;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@redocly/openapi-core/lib/bundle\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@redocly/openapi-core/lib/config/config\");","import type { Source, Document } from '@redocly/openapi-core';\n// eslint-disable-next-line import/no-internal-modules\nimport type { ResolvedConfig } from '@redocly/openapi-core/lib/config';\n\n// eslint-disable-next-line import/no-internal-modules\nimport { bundle } from '@redocly/openapi-core/lib/bundle';\n// eslint-disable-next-line import/no-internal-modules\nimport { Config } from '@redocly/openapi-core/lib/config/config';\n\n/* tslint:disable-next-line:no-implicit-dependencies */\nimport { convertObj } from 'swagger2openapi';\nimport { OpenAPISpec } from '../types';\nimport { IS_BROWSER } from './dom';\n\nexport async function loadAndBundleSpec(specUrlOrObject: object | string): Promise<OpenAPISpec> {\n const config = new Config({} as ResolvedConfig);\n const bundleOpts = {\n config,\n base: IS_BROWSER ? window.location.href : process.cwd(),\n };\n\n if (IS_BROWSER) {\n config.resolve.http.customFetch = global.fetch;\n }\n\n if (typeof specUrlOrObject === 'object' && specUrlOrObject !== null) {\n bundleOpts['doc'] = {\n source: { absoluteRef: '' } as Source,\n parsed: specUrlOrObject,\n } as Document;\n } else {\n bundleOpts['ref'] = specUrlOrObject;\n }\n\n const {\n bundle: { parsed },\n } = await bundle(bundleOpts);\n return parsed.swagger !== undefined ? convertSwagger2OpenAPI(parsed) : parsed;\n}\n\nexport function convertSwagger2OpenAPI(spec: any): Promise<OpenAPISpec> {\n console.warn('[ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0');\n return new Promise<OpenAPISpec>((resolve, reject) =>\n convertObj(spec, { patch: true, warnOnly: true, text: '{}', anchors: true }, (err, res) => {\n // TODO: log any warnings\n if (err) {\n return reject(err);\n }\n resolve(res && (res.openapi as any));\n }),\n );\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"decko\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"eventemitter3\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"json-pointer\");","'use strict';\nimport * as JsonPointerLib from 'json-pointer';\n\nconst origParse = JsonPointerLib.parse;\n/**\n * Wrapper for JsonPointer. Provides common operations\n */\n\nexport class JsonPointer {\n /**\n * returns last JsonPointer token\n * if level > 1 returns levels last (second last/third last)\n * @example\n * // returns subpath\n * JsonPointerHelper.baseName('/path/0/subpath')\n * // returns foo\n * JsonPointerHelper.baseName('/path/foo/subpath', 2)\n */\n static baseName(pointer, level = 1) {\n const tokens = JsonPointer.parse(pointer);\n return tokens[tokens.length - level];\n }\n\n /**\n * returns dirname of pointer\n * if level > 1 returns corresponding dirname in the hierarchy\n * @example\n * // returns /path/0\n * JsonPointerHelper.dirName('/path/0/subpath')\n * // returns /path\n * JsonPointerHelper.dirName('/path/foo/subpath', 2)\n */\n static dirName(pointer, level = 1) {\n const tokens = JsonPointer.parse(pointer);\n return JsonPointerLib.compile(tokens.slice(0, tokens.length - level));\n }\n\n /**\n * returns relative path tokens\n * @example\n * // returns ['subpath']\n * JsonPointerHelper.relative('/path/0', '/path/0/subpath')\n * // returns ['foo', 'subpath']\n * JsonPointerHelper.relative('/path', '/path/foo/subpath')\n */\n static relative(from, to): string[] {\n const fromTokens = JsonPointer.parse(from);\n const toTokens = JsonPointer.parse(to);\n return toTokens.slice(fromTokens.length);\n }\n\n /**\n * overridden JsonPointer original parse to take care of prefixing '#' symbol\n * that is not valid JsonPointer\n */\n static parse(pointer) {\n let ptr = pointer;\n if (ptr.charAt(0) === '#') {\n ptr = ptr.substring(1);\n }\n return origParse(ptr);\n }\n\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param {string} base - The base path\n * @param {string|string[]} tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns {string}\n */\n static join(base, tokens) {\n // TODO: optimize\n const baseTokens = JsonPointer.parse(base);\n const resTokens = baseTokens.concat(tokens);\n return JsonPointerLib.compile(resTokens);\n }\n\n static get(object: object, pointer: string) {\n return JsonPointerLib.get(object, pointer);\n }\n\n static compile(tokens: string[]) {\n return JsonPointerLib.compile(tokens);\n }\n\n static escape(pointer: string) {\n return JsonPointerLib.escape(pointer);\n }\n}\n(JsonPointerLib as any).parse = JsonPointer.parse;\nObject.assign(JsonPointer, JsonPointerLib);\nexport default JsonPointer;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"url-template\");","import { dirname } from 'path';\nimport * as URLtemplate from 'url-template';\n\nimport { ExtendedOpenAPIOperation } from '../services';\nimport { FieldModel } from '../services/models';\nimport { OpenAPIParser } from '../services/OpenAPIParser';\nimport {\n OpenAPIEncoding,\n OpenAPIMediaType,\n OpenAPIParameter,\n OpenAPIParameterStyle,\n OpenAPIRequestBody,\n OpenAPIResponse,\n OpenAPISchema,\n OpenAPIServer,\n Referenced,\n} from '../types';\nimport { IS_BROWSER } from './dom';\nimport { isNumeric, removeQueryStringAndHash, resolveUrl, isArray, isBoolean } from './helpers';\n\nfunction isWildcardStatusCode(statusCode: string | number): statusCode is string {\n return typeof statusCode === 'string' && /\\dxx/i.test(statusCode);\n}\n\nexport function isStatusCode(statusCode: string) {\n return statusCode === 'default' || isNumeric(statusCode) || isWildcardStatusCode(statusCode);\n}\n\nexport function getStatusCodeType(statusCode: string | number, defaultAsError = false): string {\n if (statusCode === 'default') {\n return defaultAsError ? 'error' : 'success';\n }\n\n let code = typeof statusCode === 'string' ? parseInt(statusCode, 10) : statusCode;\n if (isWildcardStatusCode(statusCode)) {\n code *= 100; // parseInt('2xx') parses to 2\n }\n\n if (code < 100 || code > 599) {\n throw new Error('invalid HTTP code');\n }\n let res = 'success';\n if (code >= 300 && code < 400) {\n res = 'redirect';\n } else if (code >= 400) {\n res = 'error';\n } else if (code < 200) {\n res = 'info';\n }\n return res;\n}\n\nconst operationNames = {\n get: true,\n post: true,\n put: true,\n head: true,\n patch: true,\n delete: true,\n options: true,\n $ref: true,\n};\n\nexport function isOperationName(key: string): boolean {\n return key in operationNames;\n}\n\nexport function getOperationSummary(operation: ExtendedOpenAPIOperation): string {\n return (\n operation.summary ||\n operation.operationId ||\n (operation.description && operation.description.substring(0, 50)) ||\n operation.pathName ||\n '<no summary>'\n );\n}\n\nconst schemaKeywordTypes = {\n multipleOf: 'number',\n maximum: 'number',\n exclusiveMaximum: 'number',\n minimum: 'number',\n exclusiveMinimum: 'number',\n\n maxLength: 'string',\n minLength: 'string',\n pattern: 'string',\n contentEncoding: 'string',\n contentMediaType: 'string',\n\n items: 'array',\n maxItems: 'array',\n minItems: 'array',\n uniqueItems: 'array',\n\n maxProperties: 'object',\n minProperties: 'object',\n required: 'object',\n additionalProperties: 'object',\n unevaluatedProperties: 'object',\n properties: 'object',\n patternProperties: 'object',\n};\n\nexport function detectType(schema: OpenAPISchema): string {\n if (schema.type !== undefined && !isArray(schema.type)) {\n return schema.type;\n }\n const keywords = Object.keys(schemaKeywordTypes);\n for (const keyword of keywords) {\n const type = schemaKeywordTypes[keyword];\n if (schema[keyword] !== undefined) {\n return type;\n }\n }\n\n return 'any';\n}\n\nexport function isPrimitiveType(\n schema: OpenAPISchema,\n type: string | string[] | undefined = schema.type,\n) {\n if (schema['x-circular-ref']) {\n return true;\n }\n\n if (schema.oneOf !== undefined || schema.anyOf !== undefined) {\n return false;\n }\n\n if ((schema.if && schema.then) || (schema.if && schema.else)) {\n return false;\n }\n\n let isPrimitive = true;\n const isArrayType = isArray(type);\n\n if (type === 'object' || (isArrayType && type?.includes('object'))) {\n isPrimitive =\n schema.properties !== undefined\n ? Object.keys(schema.properties).length === 0\n : schema.additionalProperties === undefined &&\n schema.unevaluatedProperties === undefined &&\n schema.patternProperties === undefined;\n }\n\n if (isArray(schema.items) || isArray(schema.prefixItems)) {\n return false;\n }\n\n if (\n schema.items !== undefined &&\n !isBoolean(schema.items) &&\n (type === 'array' || (isArrayType && type?.includes('array')))\n ) {\n isPrimitive = isPrimitiveType(schema.items, schema.items.type);\n }\n\n return isPrimitive;\n}\n\nexport function isJsonLike(contentType: string): boolean {\n return contentType.search(/json/i) !== -1;\n}\n\nexport function isFormUrlEncoded(contentType: string): boolean {\n return contentType === 'application/x-www-form-urlencoded';\n}\n\nfunction delimitedEncodeField(fieldVal: any, fieldName: string, delimiter: string): string {\n if (isArray(fieldVal)) {\n return fieldVal.map(v => v.toString()).join(delimiter);\n } else if (typeof fieldVal === 'object') {\n return Object.keys(fieldVal)\n .map(k => `${k}${delimiter}${fieldVal[k]}`)\n .join(delimiter);\n } else {\n return fieldName + '=' + fieldVal.toString();\n }\n}\n\nfunction deepObjectEncodeField(fieldVal: any, fieldName: string): string {\n if (isArray(fieldVal)) {\n console.warn('deepObject style cannot be used with array value:' + fieldVal.toString());\n return '';\n } else if (typeof fieldVal === 'object') {\n return Object.keys(fieldVal)\n .map(k => `${fieldName}[${k}]=${fieldVal[k]}`)\n .join('&');\n } else {\n console.warn('deepObject style cannot be used with non-object value:' + fieldVal.toString());\n return '';\n }\n}\n\nfunction serializeFormValue(name: string, explode: boolean, value: any) {\n // Use RFC6570 safe name ([a-zA-Z0-9_]) and replace with our name later\n // e.g. URI.template doesn't parse names with hyphen (-) which are valid query param names\n const safeName = '__redoc_param_name__';\n const suffix = explode ? '*' : '';\n const template = URLtemplate.parse(`{?${safeName}${suffix}}`);\n return template\n .expand({ [safeName]: value })\n .substring(1)\n .replace(/__redoc_param_name__/g, name);\n}\n\n/*\n * Should be used only for url-form-encoded body payloads\n * To be used for parameters should be extended with other style values\n */\nexport function urlFormEncodePayload(\n payload: object,\n encoding: { [field: string]: OpenAPIEncoding } = {},\n) {\n if (isArray(payload)) {\n throw new Error('Payload must have fields: ' + payload.toString());\n } else {\n return Object.keys(payload)\n .map(fieldName => {\n const fieldVal = payload[fieldName];\n const { style = 'form', explode = true } = encoding[fieldName] || {};\n switch (style) {\n case 'form':\n return serializeFormValue(fieldName, explode, fieldVal);\n case 'spaceDelimited':\n return delimitedEncodeField(fieldVal, fieldName, '%20');\n case 'pipeDelimited':\n return delimitedEncodeField(fieldVal, fieldName, '|');\n case 'deepObject':\n return deepObjectEncodeField(fieldVal, fieldName);\n default:\n // TODO implement rest of styles for path parameters\n console.warn('Incorrect or unsupported encoding style: ' + style);\n return '';\n }\n })\n .join('&');\n }\n}\n\nfunction serializePathParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n const suffix = explode ? '*' : '';\n let prefix = '';\n\n if (style === 'label') {\n prefix = '.';\n } else if (style === 'matrix') {\n prefix = ';';\n }\n\n // Use RFC6570 safe name ([a-zA-Z0-9_]) and replace with our name later\n // e.g. URI.template doesn't parse names with hyphen (-) which are valid query param names\n const safeName = '__redoc_param_name__';\n const template = URLtemplate.parse(`{${prefix}${safeName}${suffix}}`);\n\n return template.expand({ [safeName]: value }).replace(/__redoc_param_name__/g, name);\n}\n\nfunction serializeQueryParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'form':\n return serializeFormValue(name, explode, value);\n case 'spaceDelimited':\n if (!isArray(value)) {\n console.warn('The style spaceDelimited is only applicable to arrays');\n return '';\n }\n if (explode) {\n return serializeFormValue(name, explode, value);\n }\n\n return `${name}=${value.join('%20')}`;\n case 'pipeDelimited':\n if (!isArray(value)) {\n console.warn('The style pipeDelimited is only applicable to arrays');\n return '';\n }\n if (explode) {\n return serializeFormValue(name, explode, value);\n }\n\n return `${name}=${value.join('|')}`;\n case 'deepObject':\n if (!explode || isArray(value) || typeof value !== 'object') {\n console.warn('The style deepObject is only applicable for objects with explode=true');\n return '';\n }\n\n return deepObjectEncodeField(value, name);\n default:\n console.warn('Unexpected style for query: ' + style);\n return '';\n }\n}\n\nfunction serializeHeaderParameter(\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'simple':\n const suffix = explode ? '*' : '';\n\n // name is not important here, so use RFC6570 safe name ([a-zA-Z0-9_])\n const name = '__redoc_param_name__';\n const template = URLtemplate.parse(`{${name}${suffix}}`);\n return decodeURIComponent(template.expand({ [name]: value }));\n default:\n console.warn('Unexpected style for header: ' + style);\n return '';\n }\n}\n\nfunction serializeCookieParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'form':\n return serializeFormValue(name, explode, value);\n default:\n console.warn('Unexpected style for cookie: ' + style);\n return '';\n }\n}\n\nexport function serializeParameterValueWithMime(value: any, mime: string): string {\n if (isJsonLike(mime)) {\n return JSON.stringify(value);\n } else {\n console.warn(`Parameter serialization as ${mime} is not supported`);\n return '';\n }\n}\n\nexport function serializeParameterValue(\n parameter: (OpenAPIParameter & { serializationMime?: string }) | FieldModel,\n value: any,\n): string {\n const { name, style, explode = false, serializationMime } = parameter;\n\n if (serializationMime) {\n switch (parameter.in) {\n case 'path':\n case 'header':\n return serializeParameterValueWithMime(value, serializationMime);\n case 'cookie':\n case 'query':\n return `${name}=${serializeParameterValueWithMime(value, serializationMime)}`;\n default:\n console.warn('Unexpected parameter location: ' + parameter.in);\n return '';\n }\n }\n\n if (!style) {\n console.warn(`Missing style attribute or content for parameter ${name}`);\n return '';\n }\n\n switch (parameter.in) {\n case 'path':\n return serializePathParameter(name, style, explode, value);\n case 'query':\n return serializeQueryParameter(name, style, explode, value);\n case 'header':\n return serializeHeaderParameter(style, explode, value);\n case 'cookie':\n return serializeCookieParameter(name, style, explode, value);\n default:\n console.warn('Unexpected parameter location: ' + parameter.in);\n return '';\n }\n}\n\nexport function getSerializedValue(field: FieldModel, example: any) {\n if (field.in) {\n // decode for better readability in examples: see https://github.com/Redocly/redoc/issues/1138\n return decodeURIComponent(serializeParameterValue(field, example));\n } else {\n return typeof example === 'object' ? example : String(example);\n }\n}\n\nexport function langFromMime(contentType: string): string {\n if (contentType.search(/xml/i) !== -1) {\n return 'xml';\n }\n\n if (contentType.search(/csv/i) !== -1) {\n return 'csv';\n }\n\n if (contentType.search(/plain/i) !== -1) {\n return 'tex';\n }\n\n return 'clike';\n}\n\nconst DEFINITION_NAME_REGEX = /^#\\/components\\/(schemas|pathItems)\\/([^/]+)$/;\n\nexport function isNamedDefinition(pointer?: string): boolean {\n return DEFINITION_NAME_REGEX.test(pointer || '');\n}\n\nexport function getDefinitionName(pointer?: string): string | undefined {\n const [name] = pointer?.match(DEFINITION_NAME_REGEX)?.reverse() || [];\n return name;\n}\n\nfunction humanizeMultipleOfConstraint(multipleOf: number | undefined): string | undefined {\n if (multipleOf === undefined) {\n return;\n }\n const strigifiedMultipleOf = multipleOf.toString(10);\n if (!/^0\\.0*1$/.test(strigifiedMultipleOf)) {\n return `multiple of ${strigifiedMultipleOf}`;\n }\n return `decimal places <= ${strigifiedMultipleOf.split('.')[1].length}`;\n}\n\nfunction humanizeRangeConstraint(\n description: string,\n min: number | undefined,\n max: number | undefined,\n): string | undefined {\n let stringRange;\n if (min !== undefined && max !== undefined) {\n if (min === max) {\n stringRange = `= ${min} ${description}`;\n } else {\n stringRange = `[ ${min} .. ${max} ] ${description}`;\n }\n } else if (max !== undefined) {\n stringRange = `<= ${max} ${description}`;\n } else if (min !== undefined) {\n if (min === 1) {\n stringRange = 'non-empty';\n } else {\n stringRange = `>= ${min} ${description}`;\n }\n }\n\n return stringRange;\n}\n\nexport function humanizeNumberRange(schema: OpenAPISchema): string | undefined {\n const minimum =\n typeof schema.exclusiveMinimum === 'number'\n ? Math.min(schema.exclusiveMinimum, schema.minimum ?? Infinity)\n : schema.minimum;\n const maximum =\n typeof schema.exclusiveMaximum === 'number'\n ? Math.max(schema.exclusiveMaximum, schema.maximum ?? -Infinity)\n : schema.maximum;\n const exclusiveMinimum = typeof schema.exclusiveMinimum === 'number' || schema.exclusiveMinimum;\n const exclusiveMaximum = typeof schema.exclusiveMaximum === 'number' || schema.exclusiveMaximum;\n\n if (minimum !== undefined && maximum !== undefined) {\n return `${exclusiveMinimum ? '( ' : '[ '}${minimum} .. ${maximum}${\n exclusiveMaximum ? ' )' : ' ]'\n }`;\n } else if (maximum !== undefined) {\n return `${exclusiveMaximum ? '< ' : '<= '}${maximum}`;\n } else if (minimum !== undefined) {\n return `${exclusiveMinimum ? '> ' : '>= '}${minimum}`;\n }\n}\n\nexport function humanizeConstraints(schema: OpenAPISchema): string[] {\n const res: string[] = [];\n\n const stringRange = humanizeRangeConstraint('characters', schema.minLength, schema.maxLength);\n if (stringRange !== undefined) {\n res.push(stringRange);\n }\n\n const arrayRange = humanizeRangeConstraint('items', schema.minItems, schema.maxItems);\n if (arrayRange !== undefined) {\n res.push(arrayRange);\n }\n\n const propertiesRange = humanizeRangeConstraint(\n 'properties',\n schema.minProperties,\n schema.maxProperties,\n );\n if (propertiesRange !== undefined) {\n res.push(propertiesRange);\n }\n\n const multipleOfConstraint = humanizeMultipleOfConstraint(schema.multipleOf);\n if (multipleOfConstraint !== undefined) {\n res.push(multipleOfConstraint);\n }\n\n const numberRange = humanizeNumberRange(schema);\n if (numberRange !== undefined) {\n res.push(numberRange);\n }\n\n if (schema.uniqueItems) {\n res.push('unique');\n }\n\n return res;\n}\n\nexport function sortByRequired(fields: FieldModel[], order: string[] = []) {\n const unrequiredFields: FieldModel[] = [];\n const orderedFields: FieldModel[] = [];\n const unorderedFields: FieldModel[] = [];\n\n fields.forEach(field => {\n if (field.required) {\n order.includes(field.name) ? orderedFields.push(field) : unorderedFields.push(field);\n } else {\n unrequiredFields.push(field);\n }\n });\n\n orderedFields.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));\n\n return [...orderedFields, ...unorderedFields, ...unrequiredFields];\n}\n\nexport function sortByField(\n fields: FieldModel[],\n param: keyof Pick<FieldModel, 'name' | 'description' | 'kind'>,\n) {\n return [...fields].sort((a, b) => {\n return a[param].localeCompare(b[param]);\n });\n}\n\nexport function mergeParams(\n parser: OpenAPIParser,\n pathParams: Array<Referenced<OpenAPIParameter>> = [],\n operationParams: Array<Referenced<OpenAPIParameter>> = [],\n): Array<Referenced<OpenAPIParameter>> {\n const operationParamNames = {};\n operationParams.forEach(param => {\n ({ resolved: param } = parser.deref(param));\n operationParamNames[param.name + '_' + param.in] = true;\n });\n\n // filter out path params overridden by operation ones with the same name\n pathParams = pathParams.filter(param => {\n ({ resolved: param } = parser.deref(param));\n return !operationParamNames[param.name + '_' + param.in];\n });\n\n return pathParams.concat(operationParams);\n}\n\nexport function mergeSimilarMediaTypes(\n types: Record<string, OpenAPIMediaType>,\n): Record<string, OpenAPIMediaType> {\n const mergedTypes = {};\n Object.keys(types).forEach(name => {\n const mime = types[name];\n // ignore content type parameters (e.g. charset) and merge\n const normalizedMimeName = name.split(';')[0].trim();\n if (!mergedTypes[normalizedMimeName]) {\n mergedTypes[normalizedMimeName] = mime;\n return;\n }\n mergedTypes[normalizedMimeName] = { ...mergedTypes[normalizedMimeName], ...mime };\n });\n\n return mergedTypes;\n}\n\nexport function expandDefaultServerVariables(url: string, variables: object = {}) {\n return url.replace(\n /(?:{)([\\w-.]+)(?:})/g,\n (match, name) => (variables[name] && variables[name].default) || match,\n );\n}\n\nexport function normalizeServers(\n specUrl: string | undefined,\n servers: OpenAPIServer[],\n): OpenAPIServer[] {\n const getHref = () => {\n if (!IS_BROWSER) {\n return '';\n }\n const href = window.location.href;\n return href.endsWith('.html') ? dirname(href) : href;\n };\n\n const baseUrl = specUrl === undefined ? removeQueryStringAndHash(getHref()) : dirname(specUrl);\n\n if (servers.length === 0) {\n // Behaviour defined in OpenAPI spec: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object\n servers = [\n {\n url: '/',\n },\n ];\n }\n\n function normalizeUrl(url: string): string {\n return resolveUrl(baseUrl, url);\n }\n\n return servers.map(server => {\n return {\n ...server,\n url: normalizeUrl(server.url),\n description: server.description || '',\n };\n });\n}\n\nexport const SECURITY_DEFINITIONS_JSX_NAME = 'SecurityDefinitions';\nexport const OLD_SECURITY_DEFINITIONS_JSX_NAME = 'security-definitions';\nexport const SCHEMA_DEFINITION_JSX_NAME = 'SchemaDefinition';\n\nexport let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/';\nexport function setSecuritySchemePrefix(prefix: string) {\n SECURITY_SCHEMES_SECTION_PREFIX = prefix;\n}\n\nexport const shortenHTTPVerb = verb =>\n ({\n delete: 'del',\n options: 'opts',\n }[verb] || verb);\n\nexport function isRedocExtension(key: string): boolean {\n const redocExtensions = {\n 'x-circular-ref': true,\n 'x-parentRefs': true,\n 'x-refsStack': true,\n 'x-code-samples': true, // deprecated\n 'x-codeSamples': true,\n 'x-displayName': true,\n 'x-examples': true,\n 'x-enumDescriptions': true,\n 'x-logo': true,\n 'x-nullable': true,\n 'x-servers': true,\n 'x-tagGroups': true,\n 'x-traitTag': true,\n 'x-badges': true,\n 'x-additionalPropertiesName': true,\n 'x-explicitMappingOnly': true,\n };\n\n return key in redocExtensions;\n}\n\nexport function extractExtensions(\n obj: object,\n showExtensions: string[] | true,\n): Record<string, any> {\n return Object.keys(obj)\n .filter(key => {\n if (showExtensions === true) {\n return key.startsWith('x-') && !isRedocExtension(key);\n }\n return key.startsWith('x-') && showExtensions.indexOf(key) > -1;\n })\n .reduce((acc, key) => {\n acc[key] = obj[key];\n return acc;\n }, {});\n}\n\nexport function pluralizeType(displayType: string): string {\n return displayType\n .split(' or ')\n .map(type => type.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/, '$1s$2'))\n .join(' or ');\n}\n\nexport function getContentWithLegacyExamples(\n info: OpenAPIRequestBody | OpenAPIResponse,\n): { [mime: string]: OpenAPIMediaType } | undefined {\n let mediaContent = info.content;\n const xExamples = info['x-examples']; // converted from OAS2 body param\n const xExample = info['x-example']; // converted from OAS2 body param\n\n if (xExamples) {\n mediaContent = { ...mediaContent };\n for (const mime of Object.keys(xExamples)) {\n const examples = xExamples[mime];\n mediaContent[mime] = {\n ...mediaContent[mime],\n examples,\n };\n }\n } else if (xExample) {\n mediaContent = { ...mediaContent };\n for (const mime of Object.keys(xExample)) {\n const example = xExample[mime];\n mediaContent[mime] = {\n ...mediaContent[mime],\n example,\n };\n }\n }\n\n return mediaContent;\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-bash.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-c.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-clike.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-coffeescript.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-cpp.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-csharp.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-go.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-http.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-java.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-lua.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-markup-templating.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-markup.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-objectivec.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-perl.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-php.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-python.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-q.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-ruby.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-scala.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-sql.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-swift.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-yaml.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-csv.js\");","import * as Prism from 'prismjs';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-c.js';\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-coffeescript.js';\nimport 'prismjs/components/prism-cpp.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-go.js';\nimport 'prismjs/components/prism-http.js';\nimport 'prismjs/components/prism-java.js';\nimport 'prismjs/components/prism-lua.js';\nimport 'prismjs/components/prism-markup-templating.js'; // dep of php\nimport 'prismjs/components/prism-markup.js'; // xml\nimport 'prismjs/components/prism-objectivec.js';\nimport 'prismjs/components/prism-perl.js';\nimport 'prismjs/components/prism-php.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-q.js';\nimport 'prismjs/components/prism-ruby.js';\nimport 'prismjs/components/prism-scala.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-yaml.js';\nimport 'prismjs/components/prism-csv.js';\n\nconst DEFAULT_LANG = 'clike';\n\nPrism.languages.insertBefore(\n 'javascript',\n 'string',\n {\n 'property string': {\n pattern: /([{,]\\s*)\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/i,\n lookbehind: true,\n },\n } as any,\n undefined as any,\n);\n\nPrism.languages.insertBefore(\n 'javascript',\n 'punctuation',\n {\n property: {\n pattern: /([{,]\\s*)[a-z]\\w*(?=\\s*:)/i,\n lookbehind: true,\n },\n },\n undefined as any,\n);\n\n/**\n * map language names to Prism.js names\n */\nexport function mapLang(lang: string): string {\n return (\n {\n json: 'js',\n 'c++': 'cpp',\n 'c#': 'csharp',\n 'objective-c': 'objectivec',\n shell: 'bash',\n viml: 'vim',\n }[lang] || DEFAULT_LANG\n );\n}\n\n/**\n * Highlight source code string using Prism.js\n * @param source source code to highlight\n * @param lang highlight language\n * @return highlighted source code as **html string**\n */\nexport function highlight(source: string | number | boolean, lang: string = DEFAULT_LANG): string {\n lang = lang.toLowerCase();\n let grammar = Prism.languages[lang];\n if (!grammar) {\n grammar = Prism.languages[mapLang(lang)];\n }\n return Prism.highlight(source.toString(), grammar, lang);\n}\n","function throttle(func, wait) {\n let context;\n let args;\n let result;\n let timeout: any = null;\n let previous = 0;\n const later = () => {\n previous = new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n return function () {\n const now = new Date().getTime();\n const remaining = wait - (now - previous);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nexport function Throttle(delay: number) {\n return (_, _2, desc: PropertyDescriptor) => {\n desc.value = throttle(desc.value, delay);\n };\n}\n","export function debugTime(label: string) {\n if (process.env.NODE_ENV !== 'production') {\n console.time(label);\n }\n}\n\nexport function debugTimeEnd(label: string) {\n if (process.env.NODE_ENV !== 'production') {\n console.timeEnd(label);\n }\n}\n","// source: https://github.com/andreypopp/memoize-decorator\nconst SENTINEL = {};\n\nexport function memoize<T>(target: any, name: string, descriptor: TypedPropertyDescriptor<T>) {\n if (typeof descriptor.value === 'function') {\n return _memoizeMethod(target, name, descriptor) as any as TypedPropertyDescriptor<T>;\n } else if (typeof descriptor.get === 'function') {\n return _memoizeGetter(target, name, descriptor) as TypedPropertyDescriptor<T>;\n } else {\n throw new Error(\n '@memoize decorator can be applied to methods or getters, got ' +\n String(descriptor.value) +\n ' instead',\n );\n }\n}\n\nfunction _memoizeGetter(target: any, name: string, descriptor: PropertyDescriptor) {\n const memoizedName = `_memoized_${name}`;\n const get = descriptor.get!;\n target[memoizedName] = SENTINEL;\n return {\n ...descriptor,\n get() {\n if (this[memoizedName] === SENTINEL) {\n this[memoizedName] = get.call(this);\n }\n return this[memoizedName];\n },\n };\n}\n\nfunction _memoizeMethod<T>(target: any, name: string, descriptor: TypedPropertyDescriptor<T>) {\n if (!descriptor.value || (descriptor.value as any).length > 0) {\n throw new Error('@memoize decorator can only be applied to methods of zero arguments');\n }\n const memoizedName = `_memoized_${name}`;\n const value = descriptor.value;\n target[memoizedName] = SENTINEL;\n return {\n ...descriptor,\n value() {\n if (this[memoizedName] === SENTINEL) {\n this[memoizedName] = (value as any).call(this);\n }\n return this[memoizedName] as any;\n },\n };\n}\n","/**\n * Function that returns a comparator for sorting objects by some specific key alphabetically.\n *\n * @param {String} property key of the object to sort, if starts from `-` - reverse\n */\nexport function alphabeticallyByProp<T>(property: string): (a: T, b: T) => number {\n let sortOrder = 1;\n\n if (property[0] === '-') {\n sortOrder = -1;\n property = property.substr(1);\n }\n\n return (a: T, b: T) => {\n if (sortOrder == -1) {\n return b[property].localeCompare(a[property]);\n } else {\n return a[property].localeCompare(b[property]);\n }\n };\n}\n","import { bind, debounce } from 'decko';\nimport { EventEmitter } from 'eventemitter3';\nimport { IS_BROWSER } from '../utils/';\n\nconst EVENT = 'hashchange';\n\nexport class HistoryService {\n private _emiter;\n\n constructor() {\n this._emiter = new EventEmitter();\n this.bind();\n }\n\n get currentId(): string {\n return IS_BROWSER ? decodeURIComponent(window.location.hash.substring(1)) : '';\n }\n\n linkForId(id: string) {\n if (!id) {\n return '';\n }\n return '#' + id;\n }\n\n subscribe(cb): () => void {\n const emmiter = this._emiter.addListener(EVENT, cb);\n return () => emmiter.removeListener(EVENT, cb);\n }\n\n emit = () => {\n this._emiter.emit(EVENT, this.currentId);\n };\n\n bind() {\n if (IS_BROWSER) {\n window.addEventListener('hashchange', this.emit, false);\n }\n }\n\n dispose() {\n if (IS_BROWSER) {\n window.removeEventListener('hashchange', this.emit);\n }\n }\n\n @bind\n @debounce\n replace(id: string | null, rewriteHistory: boolean = false) {\n if (!IS_BROWSER) {\n return;\n }\n\n if (id == null || id === this.currentId) {\n return;\n }\n if (rewriteHistory) {\n window.history.replaceState(\n null,\n '',\n window.location.href.split('#')[0] + this.linkForId(id),\n );\n\n return;\n }\n window.history.pushState(null, '', window.location.href.split('#')[0] + this.linkForId(id));\n this.emit();\n }\n}\n\nexport const history = new HistoryService();\n\nif (module.hot) {\n module.hot.dispose(() => {\n history.dispose();\n });\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mark.js\");","import * as Mark from 'mark.js';\n\nexport class MarkerService {\n map: Map<Element, Mark> = new Map();\n\n private prevTerm: string = '';\n\n add(el: HTMLElement) {\n this.map.set(el, new Mark(el));\n }\n\n delete(el: Element) {\n this.map.delete(el);\n }\n\n addOnly(elements: Element[]) {\n this.map.forEach((inst, elem) => {\n if (elements.indexOf(elem) === -1) {\n inst.unmark();\n this.map.delete(elem);\n }\n });\n\n for (const el of elements) {\n if (!this.map.has(el)) {\n this.map.set(el, new Mark(el as HTMLElement));\n }\n }\n }\n\n clearAll() {\n this.unmark();\n this.map.clear();\n }\n\n mark(term?: string) {\n if (!term && !this.prevTerm) {\n return;\n }\n this.map.forEach(val => {\n val.unmark();\n val.mark(term || this.prevTerm);\n });\n this.prevTerm = term || this.prevTerm;\n }\n\n unmark() {\n this.map.forEach(val => val.unmark());\n this.prevTerm = '';\n }\n}\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n ...block.normal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n * @param {string} text\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n * @param {string} text\n */\nfunction mangle(text) {\n let out = '',\n i,\n ch;\n\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n /**\n * @param {string} quote\n */\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n\n html(html) {\n return html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n\n /**\n * @param {string} text\n */\n listitem(text) {\n return `<li>${text}</li>\\n`;\n }\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n\n /**\n * @param {string} text\n */\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */\n table(header, body) {\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n\n /**\n * @param {string} content\n */\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n\n /**\n * span level renderer\n * @param {string} text\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n\n /**\n * @param {string} text\n */\n em(text) {\n return `<em>${text}</em>`;\n }\n\n /**\n * @param {string} text\n */\n codespan(text) {\n return `<code>${text}</code>`;\n }\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n\n /**\n * @param {string} text\n */\n del(text) {\n return `<del>${text}</del>`;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass Hooks {\n constructor(options) {\n this.options = options || defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nfunction onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n}\n\nfunction parseMarkdown(lexer, parser) {\n return (src, opt, callback) => {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n const origOpt = { ...opt };\n opt = { ...marked.defaults, ...origOpt };\n const throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n checkSanitizeDeprecation(opt);\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? throwError(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n marked.defaults = { ...marked.defaults, ...opt };\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = marked.defaults.hooks || new Hooks();\n for (const prop in pack.hooks) {\n const prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = (arg) => {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n\n const ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = (...args) => {\n let ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import { marked } from 'marked';\n\nimport { highlight, safeSlugify, unescapeHTMLChars } from '../utils';\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { MarkdownHeading, MDXComponentMeta } from './types';\n\nconst renderer = new marked.Renderer();\n\nmarked.setOptions({\n renderer,\n highlight: (str, lang) => {\n return highlight(str, lang);\n },\n});\n\nexport const LEGACY_REGEXP = '^ {0,3}<!-- ReDoc-Inject:\\\\s+?<({component}).*?/?>\\\\s+?-->\\\\s*$';\n\n// prettier-ignore\nexport const MDX_COMPONENT_REGEXP = '(?:^ {0,3}<({component})([\\\\s\\\\S]*?)>([\\\\s\\\\S]*?)</\\\\2>' // with children\n + '|^ {0,3}<({component})([\\\\s\\\\S]*?)(?:/>|\\\\n{2,}))'; // self-closing\n\nexport const COMPONENT_REGEXP = '(?:' + LEGACY_REGEXP + '|' + MDX_COMPONENT_REGEXP + ')';\n\nexport function buildComponentComment(name: string) {\n return `<!-- ReDoc-Inject: <${name}> -->`;\n}\n\nexport class MarkdownRenderer {\n static containsComponent(rawText: string, componentName: string) {\n const compRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, componentName), 'gmi');\n return compRegexp.test(rawText);\n }\n\n static getTextBeforeHading(md: string, heading: string): string {\n const headingLinePos = md.search(new RegExp(`^##?\\\\s+${heading}`, 'm'));\n if (headingLinePos > -1) {\n return md.substring(0, headingLinePos);\n }\n return md;\n }\n\n headings: MarkdownHeading[] = [];\n currentTopHeading: MarkdownHeading;\n\n public parser: marked.Parser; // required initialization, `parser` is used by `marked.Renderer` instance under the hood\n private headingEnhanceRenderer: marked.Renderer;\n private originalHeadingRule: typeof marked.Renderer.prototype.heading;\n\n constructor(public options?: RedocNormalizedOptions, public parentId?: string) {\n this.parentId = parentId;\n this.parser = new marked.Parser();\n this.headingEnhanceRenderer = new marked.Renderer();\n this.originalHeadingRule = this.headingEnhanceRenderer.heading.bind(\n this.headingEnhanceRenderer,\n );\n this.headingEnhanceRenderer.heading = this.headingRule;\n }\n\n saveHeading(\n name: string,\n level: number,\n container: MarkdownHeading[] = this.headings,\n parentId?: string,\n ): MarkdownHeading {\n name = unescapeHTMLChars(name);\n const item: MarkdownHeading = {\n id: parentId\n ? `${parentId}/${safeSlugify(name)}`\n : `${this.parentId || 'section'}/${safeSlugify(name)}`,\n name,\n level,\n items: [],\n };\n container.push(item);\n return item;\n }\n\n flattenHeadings(container?: MarkdownHeading[]): MarkdownHeading[] {\n if (container === undefined) {\n return [];\n }\n const res: MarkdownHeading[] = [];\n for (const heading of container) {\n res.push(heading);\n res.push(...this.flattenHeadings(heading.items));\n }\n return res;\n }\n\n attachHeadingsDescriptions(rawText: string) {\n const buildRegexp = (heading: MarkdownHeading) => {\n return new RegExp(\n `##?\\\\s+${heading.name.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}\\s*(\\n|\\r\\n|$|\\s*)`,\n );\n };\n\n const flatHeadings = this.flattenHeadings(this.headings);\n if (flatHeadings.length < 1) {\n return;\n }\n let prevHeading = flatHeadings[0];\n let prevRegexp = buildRegexp(prevHeading);\n let prevPos = rawText.search(prevRegexp);\n for (let i = 1; i < flatHeadings.length; i++) {\n const heading = flatHeadings[i];\n const regexp = buildRegexp(heading);\n const currentPos = rawText.substr(prevPos + 1).search(regexp) + prevPos + 1;\n prevHeading.description = rawText\n .substring(prevPos, currentPos)\n .replace(prevRegexp, '')\n .trim();\n\n prevHeading = heading;\n prevRegexp = regexp;\n prevPos = currentPos;\n }\n prevHeading.description = rawText.substring(prevPos).replace(prevRegexp, '').trim();\n }\n\n headingRule = (\n text: string,\n level: 1 | 2 | 3 | 4 | 5 | 6,\n raw: string,\n slugger: marked.Slugger,\n ): string => {\n if (level === 1) {\n this.currentTopHeading = this.saveHeading(text, level);\n } else if (level === 2) {\n this.saveHeading(\n text,\n level,\n this.currentTopHeading && this.currentTopHeading.items,\n this.currentTopHeading && this.currentTopHeading.id,\n );\n }\n return this.originalHeadingRule(text, level, raw, slugger);\n };\n\n renderMd(rawText: string, extractHeadings: boolean = false): string {\n const opts = extractHeadings ? { renderer: this.headingEnhanceRenderer } : undefined;\n\n const res = marked(rawText.toString(), opts);\n\n return res;\n }\n\n extractHeadings(rawText: string): MarkdownHeading[] {\n this.renderMd(rawText, true);\n this.attachHeadingsDescriptions(rawText);\n const res = this.headings;\n this.headings = [];\n return res;\n }\n\n // regexp-based 👎: remark is slow and too big so for now using marked + regexps soup\n renderMdWithComponents(rawText: string): Array<string | MDXComponentMeta> {\n const components = this.options && this.options.allowedMdComponents;\n if (!components || Object.keys(components).length === 0) {\n return [this.renderMd(rawText)];\n }\n\n const names = Object.keys(components).join('|');\n const componentsRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, names), 'mig');\n\n const htmlParts: string[] = [];\n const componentDefs: MDXComponentMeta[] = [];\n\n let match = componentsRegexp.exec(rawText);\n let lasxtIdx = 0;\n while (match) {\n htmlParts.push(rawText.substring(lasxtIdx, match.index));\n lasxtIdx = componentsRegexp.lastIndex;\n const compName = match[1] || match[2] || match[5];\n const componentMeta = components[compName];\n\n const props = match[3] || match[6];\n const children = match[4];\n\n if (componentMeta) {\n componentDefs.push({\n component: componentMeta.component,\n propsSelector: componentMeta.propsSelector,\n props: { ...parseProps(props), ...componentMeta.props, children },\n });\n }\n match = componentsRegexp.exec(rawText);\n }\n htmlParts.push(rawText.substring(lasxtIdx));\n\n const res: any[] = [];\n for (let i = 0; i < htmlParts.length; i++) {\n const htmlPart = htmlParts[i];\n if (htmlPart) {\n res.push(this.renderMd(htmlPart));\n }\n if (componentDefs[i]) {\n res.push(componentDefs[i]);\n }\n }\n return res;\n }\n}\n\nfunction parseProps(props: string): object {\n if (!props) {\n return {};\n }\n\n const regex = /([\\w-]+)\\s*=\\s*(?:{([^}]+?)}|\"([^\"]+?)\")/gim;\n const parsed = {};\n let match;\n // tslint:disable-next-line\n while ((match = regex.exec(props)) !== null) {\n if (match[3]) {\n // string prop match (in double quotes)\n parsed[match[1]] = match[3];\n } else if (match[2]) {\n // jsx prop match (in curly braces)\n let val;\n try {\n val = JSON.parse(match[2]);\n } catch (e) {\n /* noop */\n }\n parsed[match[1]] = val;\n }\n }\n\n return parsed;\n}\n","import type { OpenAPIContact, OpenAPIInfo, OpenAPILicense } from '../../types';\nimport { IS_BROWSER } from '../../utils/';\nimport { l } from '../Labels';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nexport class ApiInfoModel implements OpenAPIInfo {\n title: string;\n version: string;\n\n description: string;\n summary: string;\n termsOfService?: string;\n contact?: OpenAPIContact;\n license?: OpenAPILicense;\n\n downloadUrls: {\n title?: string;\n url?: string;\n }[];\n downloadFileName?: string;\n\n constructor(\n private parser: OpenAPIParser,\n private options: RedocNormalizedOptions = new RedocNormalizedOptions({}),\n ) {\n Object.assign(this, parser.spec.info);\n this.description = parser.spec.info.description || '';\n this.summary = parser.spec.info.summary || '';\n\n const firstHeadingLinePos = this.description.search(/^\\s*##?\\s+/m);\n if (firstHeadingLinePos > -1) {\n this.description = this.description.substring(0, firstHeadingLinePos);\n }\n\n this.downloadUrls = this.getDownloadUrls();\n this.downloadFileName = this.getDownloadFileName();\n }\n private getDownloadUrls() {\n return (\n !this.options.downloadUrls\n ? [\n {\n title: l('download'),\n url: this.getDownloadLink(this.options.downloadDefinitionUrl),\n },\n ]\n : this.options.downloadUrls.map(({ title, url }) => ({\n title: title || l('download'),\n url: this.getDownloadLink(url),\n }))\n ).filter(({ title, url }) => title && url);\n }\n\n private getDownloadLink(url?: string): string | undefined {\n if (url) {\n return url;\n }\n\n if (this.parser.specUrl) {\n return this.parser.specUrl;\n }\n\n if (IS_BROWSER && window.Blob && window.URL && window.URL.createObjectURL) {\n const blob = new Blob([JSON.stringify(this.parser.spec, null, 2)], {\n type: 'application/json',\n });\n return window.URL.createObjectURL(blob);\n }\n }\n\n private getDownloadFileName(): string | undefined {\n if (!this.parser.specUrl && !this.options.downloadDefinitionUrl) {\n return this.options.downloadFileName || 'openapi.json';\n }\n return this.options.downloadFileName;\n }\n}\n","import type { OpenAPISecurityRequirement, OpenAPISecurityScheme } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nexport interface SecurityScheme extends OpenAPISecurityScheme {\n id: string;\n sectionId: string;\n displayName: string;\n scopes: string[];\n}\n\nexport class SecurityRequirementModel {\n schemes: SecurityScheme[];\n\n constructor(requirement: OpenAPISecurityRequirement, parser: OpenAPIParser) {\n const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};\n\n this.schemes = Object.keys(requirement || {})\n .map(id => {\n const { resolved: scheme } = parser.deref(schemes[id]);\n const scopes = requirement[id] || [];\n\n if (!scheme) {\n console.warn(`Non existing security scheme referenced: ${id}. Skipping`);\n return undefined;\n }\n const displayName = scheme['x-displayName'] || id;\n\n return {\n ...scheme,\n id,\n sectionId: id,\n displayName,\n scopes,\n };\n })\n .filter(scheme => scheme !== undefined) as SecurityScheme[];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport { isOperationName, JsonPointer } from '../../utils';\nimport { OperationModel } from './Operation';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { OpenAPICallback, Referenced } from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nexport class CallbackModel {\n @observable\n expanded: boolean = false;\n\n name: string;\n operations: OperationModel[] = [];\n\n constructor(\n parser: OpenAPIParser,\n name: string,\n infoOrRef: Referenced<OpenAPICallback>,\n pointer: string,\n options: RedocNormalizedOptions,\n ) {\n makeObservable(this);\n\n this.name = name;\n const { resolved: paths } = parser.deref<OpenAPICallback>(infoOrRef);\n\n for (const pathName of Object.keys(paths)) {\n const path = paths[pathName];\n const operations = Object.keys(path).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = path[operationName];\n\n const operation = new OperationModel(\n parser,\n {\n ...operationInfo,\n pathName,\n pointer: JsonPointer.compile([pointer, name, pathName, operationName]),\n httpVerb: operationName,\n pathParameters: path.parameters || [],\n pathServers: path.servers,\n },\n undefined,\n options,\n true,\n );\n\n this.operations.push(operation);\n }\n }\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n}\n","import type { OpenAPIRef, OpenAPISchema, OpenAPISpec } from '../types';\nimport { IS_BROWSER, getDefinitionName } from '../utils/';\nimport { JsonPointer } from '../utils/JsonPointer';\n\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { MergedOpenAPISchema } from './types';\n\nconst MAX_DEREF_DEPTH = 999; // prevent circular detection crashes by adding hard limit on deref depth\n\n/**\n * Loads and keeps spec. Provides raw spec operations\n */\n\nexport function pushRef(stack: string[], ref?: string): string[] {\n return ref && stack[stack.length - 1] !== ref ? [...stack, ref] : stack;\n}\n\nexport function concatRefStacks(base: string[], stack?: string[]): string[] {\n return stack ? base.concat(stack) : base;\n}\n\nexport class OpenAPIParser {\n specUrl?: string;\n spec: OpenAPISpec;\n\n private readonly allowMergeRefs: boolean = false;\n\n constructor(\n spec: OpenAPISpec,\n specUrl?: string,\n private options: RedocNormalizedOptions = new RedocNormalizedOptions({}),\n ) {\n this.validate(spec);\n\n this.spec = spec;\n this.allowMergeRefs = spec.openapi.startsWith('3.1');\n\n const href = IS_BROWSER ? window.location.href : '';\n if (typeof specUrl === 'string') {\n this.specUrl = href ? new URL(specUrl, href).href : specUrl;\n }\n }\n\n validate(spec: Record<string, any>): void {\n if (spec.openapi === undefined) {\n throw new Error('Document must be valid OpenAPI 3.0.0 definition');\n }\n }\n\n /**\n * get spec part by JsonPointer ($ref)\n */\n byRef = <T = any>(ref: string): T | undefined => {\n let res;\n if (!this.spec) {\n return;\n }\n if (ref.charAt(0) !== '#') {\n ref = '#' + ref;\n }\n ref = decodeURIComponent(ref);\n try {\n res = JsonPointer.get(this.spec, ref);\n } catch (e) {\n // do nothing\n }\n return res || {};\n };\n\n /**\n * checks if the object is OpenAPI reference (contains $ref property)\n */\n isRef<T>(obj: OpenAPIRef | T): obj is OpenAPIRef {\n if (!obj) {\n return false;\n }\n obj = <OpenAPIRef>obj;\n return obj.$ref !== undefined && obj.$ref !== null;\n }\n\n /**\n * Resolve given reference object or return as is if it is not a reference\n * @param obj object to dereference\n * @param forceCircular whether to dereference even if it is circular ref\n * @param mergeAsAllOf\n */\n deref<T>(\n obj: OpenAPIRef | T,\n baseRefsStack: string[] = [],\n mergeAsAllOf = false,\n ): { resolved: T; refsStack: string[] } {\n // this can be set by all of when it mergers props from different sources\n const objRefsStack = obj?.['x-refsStack'];\n baseRefsStack = concatRefStacks(baseRefsStack, objRefsStack);\n\n if (this.isRef(obj)) {\n const schemaName = getDefinitionName(obj.$ref);\n if (schemaName && this.options.ignoreNamedSchemas.has(schemaName)) {\n return { resolved: { type: 'object', title: schemaName } as T, refsStack: baseRefsStack };\n }\n\n let resolved = this.byRef<T>(obj.$ref);\n if (!resolved) {\n throw new Error(`Failed to resolve $ref \"${obj.$ref}\"`);\n }\n\n let refsStack = baseRefsStack;\n if (baseRefsStack.includes(obj.$ref) || baseRefsStack.length > MAX_DEREF_DEPTH) {\n resolved = Object.assign({}, resolved, { 'x-circular-ref': true });\n } else if (this.isRef(resolved)) {\n const res = this.deref(resolved, baseRefsStack, mergeAsAllOf);\n refsStack = res.refsStack;\n resolved = res.resolved;\n }\n\n refsStack = pushRef(baseRefsStack, obj.$ref);\n resolved = this.allowMergeRefs ? this.mergeRefs(obj, resolved, mergeAsAllOf) : resolved;\n\n return { resolved, refsStack };\n }\n return {\n resolved: obj,\n refsStack: concatRefStacks(baseRefsStack, objRefsStack),\n };\n }\n\n mergeRefs<T>(ref: OpenAPIRef, resolved: T, mergeAsAllOf: boolean): T {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { $ref, ...rest } = ref;\n const keys = Object.keys(rest);\n if (keys.length === 0) {\n return resolved;\n }\n if (\n mergeAsAllOf &&\n keys.some(\n k =>\n ![\n 'description',\n 'title',\n 'externalDocs',\n 'x-refsStack',\n 'x-parentRefs',\n 'readOnly',\n 'writeOnly',\n ].includes(k),\n )\n ) {\n const { description, title, readOnly, writeOnly, ...restSchema } = rest as OpenAPISchema;\n return {\n allOf: [{ description, title, readOnly, writeOnly }, resolved, restSchema],\n } as T;\n } else {\n // small optimization\n return {\n ...(resolved as object),\n ...rest,\n } as T;\n }\n }\n\n /**\n * Merge allOf constraints.\n * @param schema schema with allOF\n * @param $ref pointer of the schema\n * @param forceCircular whether to dereference children even if it is a circular ref\n * @param used$Refs\n */\n mergeAllOf(\n schema: MergedOpenAPISchema,\n $ref: string | undefined,\n refsStack: string[],\n ): MergedOpenAPISchema {\n if (schema['x-circular-ref']) {\n return schema;\n }\n\n schema = this.hoistOneOfs(schema, refsStack);\n\n if (schema.allOf === undefined) {\n return schema;\n }\n\n let receiver: MergedOpenAPISchema = {\n ...schema,\n 'x-parentRefs': [],\n allOf: undefined,\n title: schema.title || getDefinitionName($ref),\n };\n\n // avoid mutating inner objects\n if (receiver.properties !== undefined && typeof receiver.properties === 'object') {\n receiver.properties = { ...receiver.properties };\n }\n if (receiver.items !== undefined && typeof receiver.items === 'object') {\n receiver.items = { ...receiver.items };\n }\n\n const allOfSchemas = uniqByPropIncludeMissing(\n schema.allOf\n .map((subSchema: OpenAPISchema) => {\n const { resolved, refsStack: subRefsStack } = this.deref(subSchema, refsStack, true);\n\n const subRef = subSchema.$ref || undefined;\n const subMerged = this.mergeAllOf(resolved, subRef, subRefsStack);\n if (subMerged['x-circular-ref'] && subMerged.allOf) {\n // if mergeAllOf is circular and still contains allOf, we should ignore it\n return undefined;\n }\n if (subRef) {\n // collect information for implicit descriminator lookup\n receiver['x-parentRefs']?.push(...(subMerged['x-parentRefs'] || []), subRef);\n }\n return {\n $ref: subRef,\n refsStack: pushRef(subRefsStack, subRef),\n schema: subMerged,\n };\n })\n .filter(child => child !== undefined) as Array<{\n schema: MergedOpenAPISchema;\n refsStack: string[];\n $ref?: string;\n }>,\n '$ref',\n );\n\n for (const { schema: subSchema, refsStack: subRefsStack } of allOfSchemas) {\n const {\n type,\n enum: enumProperty,\n properties,\n items,\n required,\n title,\n description,\n readOnly,\n writeOnly,\n oneOf,\n anyOf,\n 'x-circular-ref': isCircular,\n ...otherConstraints\n } = subSchema;\n\n if (receiver.type !== type && receiver.type !== undefined && type !== undefined) {\n console.warn(`Incompatible types in allOf at \"${$ref}\": \"${receiver.type}\" and \"${type}\"`);\n }\n\n if (type !== undefined) {\n if (Array.isArray(type) && Array.isArray(receiver.type)) {\n receiver.type = [...type, ...receiver.type];\n } else {\n receiver.type = type;\n }\n }\n\n if (enumProperty !== undefined) {\n if (Array.isArray(enumProperty) && Array.isArray(receiver.enum)) {\n receiver.enum = Array.from(new Set([...enumProperty, ...receiver.enum]));\n } else {\n receiver.enum = enumProperty;\n }\n }\n\n if (properties !== undefined && typeof properties === 'object') {\n receiver.properties = receiver.properties || {};\n for (const prop in properties) {\n const propRefsStack = concatRefStacks(subRefsStack, properties[prop]?.['x-refsStack']);\n if (!receiver.properties[prop]) {\n receiver.properties[prop] = {\n ...properties[prop],\n 'x-refsStack': propRefsStack,\n } as MergedOpenAPISchema;\n } else if (!isCircular) {\n // merge inner properties\n const mergedProp = this.mergeAllOf(\n {\n allOf: [\n receiver.properties[prop],\n { ...properties[prop], 'x-refsStack': propRefsStack } as any,\n ],\n 'x-refsStack': propRefsStack,\n },\n $ref + '/properties/' + prop,\n propRefsStack,\n );\n receiver.properties[prop] = mergedProp;\n }\n }\n }\n\n if (items !== undefined && !isCircular) {\n const receiverItems =\n typeof receiver.items === 'boolean'\n ? {}\n : (Object.assign({}, receiver.items) as OpenAPISchema);\n const subSchemaItems =\n typeof subSchema.items === 'boolean'\n ? {}\n : (Object.assign({}, subSchema.items) as OpenAPISchema);\n // merge inner properties\n receiver.items = this.mergeAllOf(\n {\n allOf: [receiverItems, subSchemaItems],\n },\n $ref + '/items',\n subRefsStack,\n );\n }\n if (oneOf !== undefined) {\n receiver.oneOf = oneOf;\n }\n\n if (anyOf !== undefined) {\n receiver.anyOf = anyOf;\n }\n\n if (required !== undefined) {\n receiver.required = [...(receiver.required || []), ...required];\n }\n\n // merge rest of constraints\n // TODO: do more intelligent merge\n receiver = {\n ...receiver,\n title: receiver.title || title,\n description: receiver.description || description,\n readOnly: receiver.readOnly !== undefined ? receiver.readOnly : readOnly,\n writeOnly: receiver.writeOnly !== undefined ? receiver.writeOnly : writeOnly,\n 'x-circular-ref': receiver['x-circular-ref'] || isCircular,\n ...otherConstraints,\n };\n }\n\n return receiver;\n }\n\n /**\n * Find all derived definitions among #/components/schemas from any of $refs\n * returns map of definition pointer to definition name\n * @param $refs array of references to find derived from\n */\n findDerived($refs: string[]): Record<string, string[] | string> {\n const res: Record<string, string[]> = {};\n const schemas = (this.spec.components && this.spec.components.schemas) || {};\n for (const defName in schemas) {\n const { resolved: def } = this.deref(schemas[defName]);\n if (\n def.allOf !== undefined &&\n def.allOf.find(\n (obj: OpenAPISchema) => obj.$ref !== undefined && $refs.indexOf(obj.$ref) > -1,\n )\n ) {\n res['#/components/schemas/' + defName] = [def['x-discriminator-value'] || defName];\n }\n }\n return res;\n }\n\n private hoistOneOfs(schema: OpenAPISchema, refsStack: string[]) {\n if (schema.allOf === undefined) {\n return schema;\n }\n\n const allOf = schema.allOf;\n for (let i = 0; i < allOf.length; i++) {\n const { oneOf, ...sub } = allOf[i];\n if (!oneOf) {\n continue;\n }\n if (Array.isArray(oneOf)) {\n const beforeAllOf = allOf.slice(0, i);\n const afterAllOf = allOf.slice(i + 1);\n const siblingValues = Object.keys(sub).length > 0 ? [sub] : [];\n return {\n oneOf: oneOf.map((part: OpenAPISchema) => {\n return {\n allOf: [...beforeAllOf, ...siblingValues, part, ...afterAllOf],\n 'x-refsStack': refsStack,\n };\n }),\n };\n }\n }\n\n return schema;\n }\n}\n\n/**\n * Unique array by property, missing properties are included\n */\nfunction uniqByPropIncludeMissing<T extends object>(arr: T[], prop: keyof T): T[] {\n const seen = new Set();\n return arr.filter(item => {\n const k = item[prop];\n if (!k) return true;\n return k && !seen.has(k) && seen.add(k);\n });\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIExternalDocumentation, OpenAPISchema, Referenced } from '../../types';\n\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { pushRef } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { FieldModel } from './Field';\n\nimport { MergedOpenAPISchema } from '../types';\nimport {\n detectType,\n extractExtensions,\n humanizeConstraints,\n isArray,\n isBoolean,\n isNamedDefinition,\n isObject,\n isPrimitiveType,\n JsonPointer,\n pluralizeType,\n sortByField,\n sortByRequired,\n} from '../../utils/';\n\nimport { l } from '../Labels';\n\n// TODO: refactor this model, maybe use getters instead of copying all the values\nexport class SchemaModel {\n pointer: string;\n\n type: string | string[];\n displayType: string;\n typePrefix: string = '';\n title: string;\n description: string;\n externalDocs?: OpenAPIExternalDocumentation;\n\n isPrimitive: boolean;\n isCircular: boolean = false;\n\n format?: string;\n displayFormat?: string;\n nullable: boolean;\n deprecated: boolean;\n pattern?: string;\n example?: any;\n examples?: any[];\n enum: any[];\n default?: any;\n readOnly: boolean;\n writeOnly: boolean;\n\n constraints: string[];\n\n fields?: FieldModel[];\n items?: SchemaModel;\n\n oneOf?: SchemaModel[];\n oneOfType: string;\n discriminatorProp: string;\n @observable\n activeOneOf: number = 0;\n\n rawSchema: OpenAPISchema;\n schema: MergedOpenAPISchema;\n extensions?: Record<string, any>;\n 'x-enumDescriptions': { [name: string]: string };\n const: any;\n contentEncoding?: string;\n contentMediaType?: string;\n minItems?: number;\n maxItems?: number;\n\n /**\n * @param isChild if schema discriminator Child\n * When true forces dereferencing in allOfs even if circular\n */\n constructor(\n parser: OpenAPIParser,\n schemaOrRef: Referenced<OpenAPISchema>,\n pointer: string,\n private options: RedocNormalizedOptions,\n isChild: boolean = false,\n private refsStack: string[] = [],\n ) {\n makeObservable(this);\n\n this.pointer = schemaOrRef.$ref || pointer || '';\n\n const { resolved, refsStack: newRefsStack } = parser.deref(schemaOrRef, refsStack, true);\n this.refsStack = pushRef(newRefsStack, this.pointer);\n this.rawSchema = resolved;\n\n this.schema = parser.mergeAllOf(this.rawSchema, this.pointer, this.refsStack);\n this.init(parser, isChild);\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(this.schema, options.showExtensions);\n }\n }\n\n /**\n * Set specified alternative schema as active\n * @param idx oneOf index\n */\n @action\n activateOneOf(idx: number) {\n this.activeOneOf = idx;\n }\n\n hasType(type: string) {\n return this.type === type || (isArray(this.type) && this.type.includes(type));\n }\n\n init(parser: OpenAPIParser, isChild: boolean) {\n const schema = this.schema;\n this.isCircular = !!schema['x-circular-ref'];\n\n this.title =\n schema.title || (isNamedDefinition(this.pointer) && JsonPointer.baseName(this.pointer)) || '';\n this.description = schema.description || '';\n this.type = schema.type || detectType(schema);\n this.format = schema.format;\n this.enum = schema.enum || [];\n this['x-enumDescriptions'] = schema['x-enumDescriptions'];\n this.example = schema.example;\n this.examples = schema.examples;\n this.deprecated = !!schema.deprecated;\n this.pattern = schema.pattern;\n this.externalDocs = schema.externalDocs;\n\n this.constraints = humanizeConstraints(schema);\n this.displayFormat = this.format;\n this.isPrimitive = isPrimitiveType(schema, this.type);\n this.default = schema.default;\n this.readOnly = !!schema.readOnly;\n this.writeOnly = !!schema.writeOnly;\n this.const = schema.const || '';\n this.contentEncoding = schema.contentEncoding;\n this.contentMediaType = schema.contentMediaType;\n this.minItems = schema.minItems;\n this.maxItems = schema.maxItems;\n\n if (!!schema.nullable || schema['x-nullable']) {\n if (isArray(this.type) && !this.type.some(value => value === null || value === 'null')) {\n this.type = [...this.type, 'null'];\n } else if (!isArray(this.type) && (this.type !== null || this.type !== 'null')) {\n this.type = [this.type, 'null'];\n }\n }\n\n this.displayType = isArray(this.type)\n ? this.type.map(item => (item === null ? 'null' : item)).join(' or ')\n : this.type;\n\n if (this.isCircular) {\n return;\n }\n\n if ((schema.if && schema.then) || (schema.if && schema.else)) {\n this.initConditionalOperators(schema, parser);\n return;\n }\n\n if (!isChild && getDiscriminator(schema) !== undefined) {\n this.initDiscriminator(schema, parser);\n return;\n } else if (\n isChild &&\n isArray(schema.oneOf) &&\n schema.oneOf.find(s => s.$ref === this.pointer)\n ) {\n // we hit allOf of the schema with the parent discriminator\n delete schema.oneOf;\n }\n\n if (schema.oneOf !== undefined) {\n this.initOneOf(schema.oneOf, parser);\n this.oneOfType = 'One of';\n if (schema.anyOf !== undefined) {\n console.warn(\n `oneOf and anyOf are not supported on the same level. Skipping anyOf at ${this.pointer}`,\n );\n }\n return;\n }\n\n if (schema.anyOf !== undefined) {\n this.initOneOf(schema.anyOf, parser);\n this.oneOfType = 'Any of';\n return;\n }\n\n if (this.hasType('object')) {\n this.fields = buildFields(parser, schema, this.pointer, this.options, this.refsStack);\n } else if (this.hasType('array')) {\n if (isArray(schema.items) || isArray(schema.prefixItems)) {\n this.fields = buildFields(parser, schema, this.pointer, this.options, this.refsStack);\n } else if (schema.items) {\n this.items = new SchemaModel(\n parser,\n schema.items as OpenAPISchema,\n this.pointer + '/items',\n this.options,\n false,\n this.refsStack,\n );\n }\n\n this.displayType =\n schema.prefixItems || isArray(schema.items)\n ? 'items'\n : pluralizeType(this.items?.displayType || this.displayType);\n this.displayFormat = this.items?.format || '';\n this.typePrefix = this.items?.typePrefix || '' + l('arrayOf');\n this.title = this.title || this.items?.title || '';\n this.isPrimitive =\n this.items?.isPrimitive !== undefined ? this.items?.isPrimitive : this.isPrimitive;\n\n if (this.example === undefined && this.items?.example !== undefined) {\n this.example = [this.items.example];\n }\n if (this.items?.isPrimitive) {\n this.enum = this.items.enum;\n this['x-enumDescriptions'] = this.items['x-enumDescriptions'];\n }\n if (isArray(this.type)) {\n const filteredType = this.type.filter(item => item !== 'array');\n if (filteredType.length) this.displayType += ` or ${filteredType.join(' or ')}`;\n }\n }\n\n if (this.enum.length && this.options.sortEnumValuesAlphabetically) {\n this.enum.sort();\n }\n }\n\n private initOneOf(oneOf: OpenAPISchema[], parser: OpenAPIParser) {\n this.oneOf = oneOf!.map((variant, idx) => {\n const { resolved: derefVariant, refsStack } = parser.deref(variant, this.refsStack, true);\n\n const merged = parser.mergeAllOf(derefVariant, this.pointer + '/oneOf/' + idx, refsStack);\n\n // try to infer title\n const title =\n isNamedDefinition(variant.$ref) && !merged.title\n ? JsonPointer.baseName(variant.$ref)\n : `${merged.title || ''}${\n (typeof merged.const !== 'undefined' && JSON.stringify(merged.const)) || ''\n }`;\n const schema = new SchemaModel(\n parser,\n // merge base schema into each of oneOf's subschemas\n {\n // variant may already have allOf so merge it to not get overwritten\n ...merged,\n title,\n allOf: [{ ...this.schema, oneOf: undefined, anyOf: undefined }],\n // if specific child schemas are listed in oneOf/anyOf, they are not supposed to be discriminated\n discriminator: derefVariant.allOf ? undefined : merged.discriminator,\n } as OpenAPISchema,\n variant.$ref || this.pointer + '/oneOf/' + idx,\n this.options,\n false,\n refsStack,\n );\n\n return schema;\n });\n\n if (this.options.simpleOneOfTypeLabel) {\n const types = collectUniqueOneOfTypesDeep(this);\n this.displayType = types.join(' or ');\n } else {\n this.displayType = this.oneOf\n .map(schema => {\n let name =\n schema.typePrefix +\n (schema.title ? `${schema.title} (${schema.displayType})` : schema.displayType);\n if (name.indexOf(' or ') > -1) {\n name = `(${name})`;\n }\n return name;\n })\n .join(' or ');\n }\n }\n\n private initDiscriminator(schema: OpenAPISchema, parser: OpenAPIParser) {\n const discriminator = getDiscriminator(schema)!;\n this.discriminatorProp = discriminator.propertyName;\n const implicitInversedMapping = parser.findDerived([\n ...(this.schema['x-parentRefs'] || []),\n this.pointer,\n ]);\n\n if (schema.oneOf) {\n for (const variant of schema.oneOf) {\n if (variant.$ref === undefined) {\n continue;\n }\n const name = JsonPointer.baseName(variant.$ref);\n implicitInversedMapping[variant.$ref] = name;\n }\n }\n\n const mapping = discriminator.mapping || {};\n\n // Defines if the mapping is exhaustive. This avoids having references\n // that overlap with the mapping entries\n let isLimitedToMapping = discriminator['x-explicitMappingOnly'] || false;\n // if there are no mappings, assume non-exhaustive\n if (Object.keys(mapping).length === 0) {\n isLimitedToMapping = false;\n }\n\n const explicitInversedMapping = {};\n for (const name in mapping) {\n const $ref = mapping[name];\n\n if (isArray(explicitInversedMapping[$ref])) {\n explicitInversedMapping[$ref].push(name);\n } else {\n // overrides implicit mapping here\n explicitInversedMapping[$ref] = [name];\n }\n }\n\n const inversedMapping = isLimitedToMapping\n ? { ...explicitInversedMapping }\n : { ...implicitInversedMapping, ...explicitInversedMapping };\n\n let refs: Array<{ $ref; name }> = [];\n\n for (const $ref of Object.keys(inversedMapping)) {\n const names = inversedMapping[$ref];\n if (isArray(names)) {\n for (const name of names) {\n refs.push({ $ref, name });\n }\n } else {\n refs.push({ $ref, name: names });\n }\n }\n\n // Make the listing respects the mapping\n // in case a mapping is defined, the user usually wants to have the order shown\n // as it was defined in the yaml. This will sort the names given the provided\n // mapping (if provided).\n // The logic is:\n // - If a name is among the mapping, promote it to first\n // - Names among the mapping are sorted by their order in the mapping\n // - Names outside the mapping are sorted alphabetically\n const names = Object.keys(mapping);\n if (names.length !== 0) {\n refs = refs.sort((left, right) => {\n const indexLeft = names.indexOf(left.name);\n const indexRight = names.indexOf(right.name);\n\n if (indexLeft < 0 && indexRight < 0) {\n // out of mapping, order by name\n return left.name.localeCompare(right.name);\n } else if (indexLeft < 0) {\n // the right is found, so mapping wins\n return 1;\n } else if (indexRight < 0) {\n // left wins as it's in mapping\n return -1;\n } else {\n return indexLeft - indexRight;\n }\n });\n }\n\n this.oneOf = refs.map(({ $ref, name }) => {\n const innerSchema = new SchemaModel(\n parser,\n { $ref },\n $ref,\n this.options,\n true,\n this.refsStack.slice(0, -1),\n );\n innerSchema.title = name;\n return innerSchema;\n });\n }\n\n private initConditionalOperators(schema: OpenAPISchema, parser: OpenAPIParser) {\n const {\n if: ifOperator,\n else: elseOperator = {},\n then: thenOperator = {},\n ...restSchema\n } = schema;\n const groupedOperators = [\n {\n allOf: [restSchema, thenOperator, ifOperator],\n title: (ifOperator && ifOperator['x-displayName']) || ifOperator?.title || 'case 1',\n },\n {\n allOf: [restSchema, elseOperator],\n title: (elseOperator && elseOperator['x-displayName']) || elseOperator?.title || 'case 2',\n },\n ];\n\n this.oneOf = groupedOperators.map(\n (variant, idx) =>\n new SchemaModel(\n parser,\n {\n ...variant,\n } as OpenAPISchema,\n this.pointer + '/oneOf/' + idx,\n this.options,\n false,\n this.refsStack,\n ),\n );\n this.oneOfType = 'One of';\n }\n}\n\nfunction buildFields(\n parser: OpenAPIParser,\n schema: OpenAPISchema,\n $ref: string,\n options: RedocNormalizedOptions,\n refsStack: string[],\n): FieldModel[] {\n const props = schema.properties || schema.prefixItems || schema.items || {};\n const patternProps = schema.patternProperties || {};\n const additionalProps = schema.additionalProperties || schema.unevaluatedProperties;\n const itemsProps = schema.prefixItems ? schema.items : schema.additionalItems;\n const defaults = schema.default;\n let fields = Object.keys(props || []).map(fieldName => {\n let field = props[fieldName];\n\n if (!field) {\n console.warn(\n `Field \"${fieldName}\" is invalid, skipping.\\n Field must be an object but got ${typeof field} at \"${$ref}\"`,\n );\n field = {};\n }\n\n const required =\n schema.required === undefined ? false : schema.required.indexOf(fieldName) > -1;\n\n return new FieldModel(\n parser,\n {\n name: schema.properties ? fieldName : `[${fieldName}]`,\n required,\n schema: {\n ...field,\n default: field.default === undefined && defaults ? defaults[fieldName] : field.default,\n },\n },\n $ref + '/properties/' + fieldName,\n options,\n refsStack,\n );\n });\n\n if (options.sortPropsAlphabetically) {\n fields = sortByField(fields, 'name');\n }\n if (options.sortRequiredPropsFirst) {\n // if not sort alphabetically sort in the order from required keyword\n fields = sortByRequired(fields, !options.sortPropsAlphabetically ? schema.required : undefined);\n }\n\n fields.push(\n ...Object.keys(patternProps).map(fieldName => {\n let field = patternProps[fieldName];\n\n if (!field) {\n console.warn(\n `Field \"${fieldName}\" is invalid, skipping.\\n Field must be an object but got ${typeof field} at \"${$ref}\"`,\n );\n field = {};\n }\n\n return new FieldModel(\n parser,\n {\n name: fieldName,\n required: false,\n schema: field,\n kind: 'patternProperties',\n },\n `${$ref}/patternProperties/${fieldName}`,\n options,\n refsStack,\n );\n }),\n );\n\n if (typeof additionalProps === 'object' || additionalProps === true) {\n fields.push(\n new FieldModel(\n parser,\n {\n name: (typeof additionalProps === 'object'\n ? additionalProps['x-additionalPropertiesName'] || 'property name'\n : 'property name'\n ).concat('*'),\n required: false,\n schema: additionalProps === true ? {} : additionalProps,\n kind: 'additionalProperties',\n },\n $ref + '/additionalProperties',\n options,\n refsStack,\n ),\n );\n }\n\n fields.push(\n ...buildAdditionalItems({\n parser,\n schema: itemsProps,\n fieldsCount: fields.length,\n $ref,\n options,\n refsStack,\n }),\n );\n\n return fields;\n}\n\nfunction buildAdditionalItems({\n parser,\n schema = false,\n fieldsCount,\n $ref,\n options,\n refsStack,\n}: {\n parser: OpenAPIParser;\n schema?: OpenAPISchema | OpenAPISchema[] | boolean;\n fieldsCount: number;\n $ref: string;\n options: RedocNormalizedOptions;\n refsStack: string[];\n}) {\n if (isBoolean(schema)) {\n return schema\n ? [\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount}...]`,\n schema: {},\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ]\n : [];\n }\n\n if (isArray(schema)) {\n return [\n ...schema.map(\n (field, idx) =>\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount + idx}]`,\n schema: field,\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ),\n ];\n }\n\n if (isObject(schema)) {\n return [\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount}...]`,\n schema: schema,\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ];\n }\n\n return [];\n}\n\nfunction getDiscriminator(schema: OpenAPISchema): OpenAPISchema['discriminator'] {\n return schema.discriminator || schema['x-discriminator'];\n}\n\nfunction collectUniqueOneOfTypesDeep(schema: SchemaModel) {\n const uniqueTypes = new Set();\n\n function crawl(schema: SchemaModel) {\n for (const oneOfType of schema.oneOf || []) {\n if (oneOfType.oneOf) {\n crawl(oneOfType);\n continue;\n }\n\n if (oneOfType.type) {\n uniqueTypes.add(oneOfType.type);\n }\n }\n }\n\n crawl(schema);\n return Array.from(uniqueTypes.values());\n}\n","import type { OpenAPIEncoding, OpenAPIExample, Referenced } from '../../types';\nimport { isFormUrlEncoded, isJsonLike, urlFormEncodePayload } from '../../utils/openapi';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nconst externalExamplesCache: { [url: string]: Promise<any> } = {};\n\nexport class ExampleModel {\n value: any;\n summary?: string;\n description?: string;\n externalValueUrl?: string;\n\n constructor(\n parser: OpenAPIParser,\n infoOrRef: Referenced<OpenAPIExample>,\n public mime: string,\n encoding?: { [field: string]: OpenAPIEncoding },\n ) {\n const { resolved: example } = parser.deref(infoOrRef);\n this.value = example.value;\n this.summary = example.summary;\n this.description = example.description;\n if (example.externalValue) {\n this.externalValueUrl = new URL(example.externalValue, parser.specUrl).href;\n }\n\n if (isFormUrlEncoded(mime) && this.value && typeof this.value === 'object') {\n this.value = urlFormEncodePayload(this.value, encoding);\n }\n }\n\n getExternalValue(mimeType: string): Promise<any> {\n if (!this.externalValueUrl) {\n return Promise.resolve(undefined);\n }\n\n if (this.externalValueUrl in externalExamplesCache) {\n return externalExamplesCache[this.externalValueUrl];\n }\n\n externalExamplesCache[this.externalValueUrl] = fetch(this.externalValueUrl).then(res => {\n return res.text().then(txt => {\n if (!res.ok) {\n return Promise.reject(new Error(txt));\n }\n\n if (isJsonLike(mimeType)) {\n try {\n return JSON.parse(txt);\n } catch (e) {\n return txt;\n }\n } else {\n return txt;\n }\n });\n });\n\n return externalExamplesCache[this.externalValueUrl];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type {\n OpenAPIParameter,\n OpenAPIParameterLocation,\n OpenAPIParameterStyle,\n Referenced,\n} from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nimport { extractExtensions } from '../../utils/openapi';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { SchemaModel } from './Schema';\nimport { ExampleModel } from './Example';\nimport { isArray, mapValues } from '../../utils/helpers';\n\nconst DEFAULT_SERIALIZATION: Record<\n OpenAPIParameterLocation,\n { explode: boolean; style: OpenAPIParameterStyle }\n> = {\n path: {\n style: 'simple',\n explode: false,\n },\n query: {\n style: 'form',\n explode: true,\n },\n header: {\n style: 'simple',\n explode: false,\n },\n cookie: {\n style: 'form',\n explode: true,\n },\n};\n\n/**\n * Field or Parameter model ready to be used by components\n */\nexport class FieldModel {\n @observable\n expanded: boolean | undefined = undefined;\n\n schema: SchemaModel;\n name: string;\n required: boolean;\n description: string;\n example?: string;\n examples?: Record<string, ExampleModel> | any[];\n deprecated: boolean;\n in?: OpenAPIParameterLocation;\n kind: string;\n extensions?: Record<string, any>;\n explode: boolean;\n style?: OpenAPIParameterStyle;\n const?: any;\n\n serializationMime?: string;\n\n constructor(\n parser: OpenAPIParser,\n infoOrRef: Referenced<OpenAPIParameter> & { name?: string; kind?: string },\n pointer: string,\n options: RedocNormalizedOptions,\n refsStack?: string[],\n ) {\n makeObservable(this);\n\n const { resolved: info } = parser.deref<OpenAPIParameter>(infoOrRef);\n this.kind = infoOrRef.kind || 'field';\n this.name = infoOrRef.name || info.name;\n this.in = info.in;\n this.required = !!info.required;\n\n let fieldSchema = info.schema;\n let serializationMime = '';\n if (!fieldSchema && info.in && info.content) {\n serializationMime = Object.keys(info.content)[0];\n fieldSchema = info.content[serializationMime] && info.content[serializationMime].schema;\n }\n\n this.schema = new SchemaModel(parser, fieldSchema || {}, pointer, options, false, refsStack);\n this.description =\n info.description === undefined ? this.schema.description || '' : info.description;\n this.example = info.example || this.schema.example;\n\n if (info.examples !== undefined || this.schema.examples !== undefined) {\n const exampleValue = info.examples || this.schema.examples;\n this.examples = isArray(exampleValue)\n ? exampleValue\n : mapValues(\n exampleValue!,\n (example, name) => new ExampleModel(parser, example, name, info.encoding),\n );\n }\n\n if (serializationMime) {\n this.serializationMime = serializationMime;\n } else if (info.style) {\n this.style = info.style;\n } else if (this.in) {\n this.style = DEFAULT_SERIALIZATION[this.in]?.style ?? 'form'; // fallback to from in case \"in\" is invalid\n }\n\n if (info.explode === undefined && this.in) {\n this.explode = DEFAULT_SERIALIZATION[this.in]?.explode ?? true;\n } else {\n this.explode = !!info.explode;\n }\n\n this.deprecated = info.deprecated === undefined ? !!this.schema.deprecated : info.deprecated;\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(info, options.showExtensions);\n }\n\n this.const = this.schema?.const || info?.const || '';\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n\n @action\n collapse(): void {\n this.expanded = false;\n }\n\n @action\n expand(): void {\n this.expanded = true;\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"openapi-sampler\");","import * as Sampler from 'openapi-sampler';\n\nimport type { OpenAPIMediaType } from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { SchemaModel } from './Schema';\n\nimport { isJsonLike, mapValues } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { ExampleModel } from './Example';\n\nexport class MediaTypeModel {\n examples?: { [name: string]: ExampleModel };\n schema?: SchemaModel;\n name: string;\n isRequestType: boolean;\n onlyRequiredInSamples: boolean;\n generatedSamplesMaxDepth: number;\n\n /**\n * @param isRequestType needed to know if skipe RO/RW fields in objects\n */\n constructor(\n parser: OpenAPIParser,\n name: string,\n isRequestType: boolean,\n info: OpenAPIMediaType,\n options: RedocNormalizedOptions,\n ) {\n this.name = name;\n this.isRequestType = isRequestType;\n this.schema = info.schema && new SchemaModel(parser, info.schema, '', options);\n this.onlyRequiredInSamples = options.onlyRequiredInSamples;\n this.generatedSamplesMaxDepth = options.generatedSamplesMaxDepth;\n if (info.examples !== undefined) {\n this.examples = mapValues(\n info.examples,\n example => new ExampleModel(parser, example, name, info.encoding),\n );\n } else if (info.example !== undefined) {\n this.examples = {\n default: new ExampleModel(\n parser,\n { value: parser.deref(info.example).resolved },\n name,\n info.encoding,\n ),\n };\n } else if (isJsonLike(name)) {\n this.generateExample(parser, info);\n }\n }\n\n generateExample(parser: OpenAPIParser, info: OpenAPIMediaType) {\n const samplerOptions = {\n skipReadOnly: this.isRequestType,\n skipWriteOnly: !this.isRequestType,\n skipNonRequired: this.isRequestType && this.onlyRequiredInSamples,\n maxSampleDepth: this.generatedSamplesMaxDepth,\n };\n if (this.schema && this.schema.oneOf) {\n this.examples = {};\n for (const subSchema of this.schema.oneOf) {\n const sample = Sampler.sample(subSchema.rawSchema as any, samplerOptions, parser.spec);\n\n if (this.schema.discriminatorProp && typeof sample === 'object' && sample) {\n sample[this.schema.discriminatorProp] = subSchema.title;\n }\n\n this.examples[subSchema.title] = new ExampleModel(\n parser,\n {\n value: sample,\n },\n this.name,\n info.encoding,\n );\n }\n } else if (this.schema) {\n this.examples = {\n default: new ExampleModel(\n parser,\n {\n value: Sampler.sample(info.schema as any, samplerOptions, parser.spec),\n },\n this.name,\n info.encoding,\n ),\n };\n }\n }\n}\n","import { action, computed, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIMediaType } from '../../types';\nimport { MediaTypeModel } from './MediaType';\n\nimport { mergeSimilarMediaTypes } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\n/**\n * MediaContent model ready to be sued by React components\n * Contains multiple MediaTypes and keeps track of the currently active one\n */\nexport class MediaContentModel {\n mediaTypes: MediaTypeModel[];\n\n @observable\n activeMimeIdx = 0;\n\n /**\n * @param isRequestType needed to know if skipe RO/RW fields in objects\n */\n constructor(\n parser: OpenAPIParser,\n info: Record<string, OpenAPIMediaType>,\n public isRequestType: boolean,\n options: RedocNormalizedOptions,\n ) {\n makeObservable(this);\n\n if (options.unstable_ignoreMimeParameters) {\n info = mergeSimilarMediaTypes(info);\n }\n this.mediaTypes = Object.keys(info).map(name => {\n const mime = info[name];\n // reset deref cache just in case something is left there\n return new MediaTypeModel(parser, name, isRequestType, mime, options);\n });\n }\n\n /**\n * Set active media type by index\n * @param idx media type index\n */\n @action\n activate(idx: number) {\n this.activeMimeIdx = idx;\n }\n\n @computed\n get active() {\n return this.mediaTypes[this.activeMimeIdx];\n }\n\n get hasSample(): boolean {\n return this.mediaTypes.filter(mime => !!mime.examples).length > 0;\n }\n}\n","import type { OpenAPIRequestBody, Referenced } from '../../types';\n\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { MediaContentModel } from './MediaContent';\nimport { getContentWithLegacyExamples } from '../../utils';\n\ntype RequestBodyProps = {\n parser: OpenAPIParser;\n infoOrRef: Referenced<OpenAPIRequestBody>;\n options: RedocNormalizedOptions;\n isEvent: boolean;\n};\n\nexport class RequestBodyModel {\n description: string;\n required?: boolean;\n content?: MediaContentModel;\n\n constructor({ parser, infoOrRef, options, isEvent }: RequestBodyProps) {\n const isRequest = !isEvent;\n const { resolved: info } = parser.deref(infoOrRef);\n this.description = info.description || '';\n this.required = info.required;\n\n const mediaContent = getContentWithLegacyExamples(info);\n if (mediaContent !== undefined) {\n this.content = new MediaContentModel(parser, mediaContent, isRequest, options);\n }\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIResponse, Referenced } from '../../types';\n\nimport { getStatusCodeType, extractExtensions } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { FieldModel } from './Field';\nimport { MediaContentModel } from './MediaContent';\n\ntype ResponseProps = {\n parser: OpenAPIParser;\n code: string;\n defaultAsError: boolean;\n infoOrRef: Referenced<OpenAPIResponse>;\n options: RedocNormalizedOptions;\n isEvent: boolean;\n};\n\nexport class ResponseModel {\n @observable\n expanded: boolean = false;\n\n content?: MediaContentModel;\n code: string;\n summary: string;\n description: string;\n type: string;\n headers: FieldModel[] = [];\n extensions: Record<string, any>;\n\n constructor({\n parser,\n code,\n defaultAsError,\n infoOrRef,\n options,\n isEvent: isRequest,\n }: ResponseProps) {\n makeObservable(this);\n\n this.expanded = options.expandResponses === 'all' || options.expandResponses[code];\n\n const { resolved: info } = parser.deref(infoOrRef);\n this.code = code;\n if (info.content !== undefined) {\n this.content = new MediaContentModel(parser, info.content, isRequest, options);\n }\n\n if (info['x-summary'] !== undefined) {\n this.summary = info['x-summary'];\n this.description = info.description || '';\n } else {\n this.summary = info.description || '';\n this.description = '';\n }\n\n this.type = getStatusCodeType(code, defaultAsError);\n\n const headers = info.headers;\n if (headers !== undefined) {\n this.headers = Object.keys(headers).map(name => {\n const header = headers[name];\n return new FieldModel(parser, { ...header, name }, '', options);\n });\n }\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(info, options.showExtensions);\n }\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport {\n extractExtensions,\n getOperationSummary,\n getStatusCodeType,\n isStatusCode,\n memoize,\n mergeParams,\n normalizeServers,\n sortByField,\n sortByRequired,\n} from '../../utils';\n\nimport { GroupModel } from './Group.model';\nimport { SecurityRequirementModel } from './SecurityRequirement';\nimport { CallbackModel } from './Callback';\nimport { FieldModel } from './Field';\nimport { RequestBodyModel } from './RequestBody';\nimport { ResponseModel } from './Response';\nimport { SideNavStyleEnum } from '../types';\n\nimport type {\n OpenAPIExternalDocumentation,\n OpenAPIServer,\n OpenAPIXBadges,\n OpenAPIXCodeSample,\n} from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport type { MediaContentModel } from './MediaContent';\nimport type { ContentItemModel, ExtendedOpenAPIOperation, IMenuItem } from '../types';\n\nexport interface XPayloadSample {\n lang: 'payload';\n label: string;\n requestBodyContent: MediaContentModel;\n source: string;\n}\n\nexport function isPayloadSample(\n sample: XPayloadSample | OpenAPIXCodeSample,\n): sample is XPayloadSample {\n return sample.lang === 'payload' && (sample as any).requestBodyContent;\n}\n\nlet isCodeSamplesWarningPrinted = false;\n\n/**\n * Operation model ready to be used by components\n */\nexport class OperationModel implements IMenuItem {\n //#region IMenuItem fields\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n type = 'operation' as const;\n\n parent?: GroupModel;\n externalDocs?: OpenAPIExternalDocumentation;\n items: ContentItemModel[] = [];\n\n depth: number;\n\n @observable\n ready?: boolean = true;\n @observable\n active: boolean = false;\n @observable\n expanded: boolean = false;\n //#endregion\n\n pointer: string;\n operationId?: string;\n operationHash?: string;\n httpVerb: string;\n badges: OpenAPIXBadges[];\n deprecated: boolean;\n path: string;\n servers: OpenAPIServer[];\n security: SecurityRequirementModel[];\n extensions: Record<string, any>;\n isCallback: boolean;\n isWebhook: boolean;\n isEvent: boolean;\n\n constructor(\n private parser: OpenAPIParser,\n private operationSpec: ExtendedOpenAPIOperation,\n parent: GroupModel | undefined,\n private options: RedocNormalizedOptions,\n isCallback: boolean = false,\n ) {\n makeObservable(this);\n\n this.pointer = operationSpec.pointer;\n\n this.description = operationSpec.description;\n this.parent = parent;\n this.externalDocs = operationSpec.externalDocs;\n\n this.deprecated = !!operationSpec.deprecated;\n this.httpVerb = operationSpec.httpVerb;\n this.deprecated = !!operationSpec.deprecated;\n this.operationId = operationSpec.operationId;\n this.path = operationSpec.pathName;\n this.isCallback = isCallback;\n this.isWebhook = operationSpec.isWebhook;\n this.isEvent = this.isCallback || this.isWebhook;\n\n this.name = getOperationSummary(operationSpec);\n\n this.sidebarLabel =\n options.sideNavStyle === SideNavStyleEnum.IdOnly\n ? this.operationId || this.path\n : options.sideNavStyle === SideNavStyleEnum.PathOnly\n ? this.path\n : this.name;\n this.badges =\n operationSpec['x-badges']?.map(({ name, color, position }) => ({\n name,\n color: color,\n position: position || 'after',\n })) || [];\n\n if (this.isCallback) {\n // NOTE: Callbacks by default should not inherit the specification's global `security` definition.\n // Can be defined individually per-callback in the specification. Defaults to none.\n this.security = (operationSpec.security || []).map(\n security => new SecurityRequirementModel(security, parser),\n );\n\n // TODO: update getting pathInfo for overriding servers on path level\n this.servers = normalizeServers('', operationSpec.servers || operationSpec.pathServers || []);\n } else {\n this.operationHash = operationSpec.operationId && 'operation/' + operationSpec.operationId;\n this.id =\n operationSpec.operationId !== undefined\n ? (parent ? parent.id + '/' : '') + this.operationHash\n : parent !== undefined\n ? parent.id + this.pointer\n : this.pointer;\n\n this.security = (operationSpec.security || parser.spec.security || []).map(\n security => new SecurityRequirementModel(security, parser),\n );\n\n this.servers = normalizeServers(\n parser.specUrl,\n operationSpec.servers || operationSpec.pathServers || parser.spec.servers || [],\n );\n }\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(operationSpec, options.showExtensions);\n }\n }\n\n /**\n * set operation as active (used by side menu)\n */\n @action\n activate() {\n this.active = true;\n }\n\n /**\n * set operation as inactive (used by side menu)\n */\n @action\n deactivate() {\n this.active = false;\n }\n\n /**\n * Toggle expansion in middle panel (for callbacks, which are operations)\n */\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n\n expand() {\n if (this.parent) {\n this.parent.expand();\n }\n }\n\n collapse() {\n /* do nothing */\n }\n\n @memoize\n get requestBody() {\n return (\n this.operationSpec.requestBody &&\n new RequestBodyModel({\n parser: this.parser,\n infoOrRef: this.operationSpec.requestBody,\n options: this.options,\n isEvent: this.isEvent,\n })\n );\n }\n\n @memoize\n get codeSamples() {\n const { payloadSampleIdx, hideRequestPayloadSample } = this.options;\n let samples: Array<OpenAPIXCodeSample | XPayloadSample> =\n this.operationSpec['x-codeSamples'] || this.operationSpec['x-code-samples'] || [];\n\n if (this.operationSpec['x-code-samples'] && !isCodeSamplesWarningPrinted) {\n isCodeSamplesWarningPrinted = true;\n console.warn('\"x-code-samples\" is deprecated. Use \"x-codeSamples\" instead');\n }\n\n const requestBodyContent = this.requestBody && this.requestBody.content;\n if (requestBodyContent && requestBodyContent.hasSample && !hideRequestPayloadSample) {\n const insertInx = Math.min(samples.length, payloadSampleIdx);\n\n samples = [\n ...samples.slice(0, insertInx),\n {\n lang: 'payload',\n label: 'Payload',\n source: '',\n requestBodyContent,\n },\n ...samples.slice(insertInx),\n ];\n }\n\n return samples;\n }\n\n @memoize\n get parameters() {\n const _parameters = mergeParams(\n this.parser,\n this.operationSpec.pathParameters,\n this.operationSpec.parameters,\n // TODO: fix pointer\n ).map(paramOrRef => new FieldModel(this.parser, paramOrRef, this.pointer, this.options));\n\n if (this.options.sortPropsAlphabetically) {\n return sortByField(_parameters, 'name');\n }\n if (this.options.sortRequiredPropsFirst) {\n return sortByRequired(_parameters);\n }\n\n return _parameters;\n }\n\n @memoize\n get responses() {\n let hasSuccessResponses = false;\n return Object.keys(this.operationSpec.responses || [])\n .filter(code => {\n if (code === 'default') {\n return true;\n }\n\n if (getStatusCodeType(code) === 'success') {\n hasSuccessResponses = true;\n }\n\n return isStatusCode(code);\n }) // filter out other props (e.g. x-props)\n .map(code => {\n return new ResponseModel({\n parser: this.parser,\n code,\n defaultAsError: hasSuccessResponses,\n infoOrRef: this.operationSpec.responses[code],\n options: this.options,\n isEvent: this.isEvent,\n });\n });\n }\n\n @memoize\n get callbacks() {\n return Object.keys(this.operationSpec.callbacks || []).map(callbackEventName => {\n return new CallbackModel(\n this.parser,\n callbackEventName,\n this.operationSpec.callbacks![callbackEventName],\n this.pointer,\n this.options,\n );\n });\n }\n}\n","import type { OpenAPIPath, Referenced } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { OperationModel } from './Operation';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { isOperationName } from '../..';\n\nexport class WebhookModel {\n operations: OperationModel[] = [];\n\n constructor(\n parser: OpenAPIParser,\n options: RedocNormalizedOptions,\n infoOrRef?: Referenced<OpenAPIPath>,\n ) {\n const { resolved: webhooks } = parser.deref<OpenAPIPath>(infoOrRef || {});\n this.initWebhooks(parser, webhooks, options);\n }\n\n initWebhooks(parser: OpenAPIParser, webhooks: OpenAPIPath, options: RedocNormalizedOptions) {\n for (const webhookName of Object.keys(webhooks)) {\n const webhook = webhooks[webhookName];\n const operations = Object.keys(webhook).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = webhook[operationName];\n if (webhook.$ref) {\n const resolvedWebhook = parser.deref<OpenAPIPath>(webhook || {});\n this.initWebhooks(parser, { [operationName]: resolvedWebhook }, options);\n }\n\n if (!operationInfo) continue;\n const operation = new OperationModel(\n parser,\n {\n ...operationInfo,\n httpVerb: operationName,\n },\n undefined,\n options,\n false,\n );\n\n this.operations.push(operation);\n }\n }\n }\n}\n","import type { OpenAPISecurityScheme, Referenced } from '../../types';\nimport { SECURITY_SCHEMES_SECTION_PREFIX } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nexport class SecuritySchemeModel {\n id: string;\n sectionId: string;\n type: OpenAPISecurityScheme['type'];\n description: string;\n displayName: string;\n apiKey?: {\n name: string;\n in: OpenAPISecurityScheme['in'];\n };\n\n http?: {\n scheme: string;\n bearerFormat?: string;\n };\n\n flows: OpenAPISecurityScheme['flows'];\n openId?: {\n connectUrl: string;\n };\n\n constructor(parser: OpenAPIParser, id: string, scheme: Referenced<OpenAPISecurityScheme>) {\n const { resolved: info } = parser.deref(scheme);\n this.id = id;\n this.sectionId = SECURITY_SCHEMES_SECTION_PREFIX + id;\n this.type = info.type;\n this.displayName = info['x-displayName'] || id;\n this.description = info.description || '';\n if (info.type === 'apiKey') {\n this.apiKey = {\n name: info.name!,\n in: info.in,\n };\n }\n\n if (info.type === 'http') {\n this.http = {\n scheme: info.scheme!,\n bearerFormat: info.bearerFormat,\n };\n }\n\n if (info.type === 'openIdConnect') {\n this.openId = {\n connectUrl: info.openIdConnectUrl!,\n };\n }\n\n if (info.type === 'oauth2' && info.flows) {\n this.flows = info.flows;\n }\n }\n}\n\nexport class SecuritySchemesModel {\n schemes: SecuritySchemeModel[];\n\n constructor(parser: OpenAPIParser) {\n const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};\n this.schemes = Object.keys(schemes).map(\n name => new SecuritySchemeModel(parser, name, schemes[name]),\n );\n }\n}\n","import type { OpenAPIExternalDocumentation, OpenAPIPath, OpenAPISpec, Referenced } from '../types';\n\nimport { MenuBuilder } from './MenuBuilder';\nimport { ApiInfoModel } from './models/ApiInfo';\nimport { WebhookModel } from './models/Webhook';\nimport { SecuritySchemesModel } from './models/SecuritySchemes';\nimport { OpenAPIParser } from './OpenAPIParser';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { ContentItemModel } from './types';\n/**\n * Store that contains all the specification related information in the form of tree\n */\nexport class SpecStore {\n parser: OpenAPIParser;\n\n info: ApiInfoModel;\n externalDocs?: OpenAPIExternalDocumentation;\n contentItems: ContentItemModel[];\n securitySchemes: SecuritySchemesModel;\n webhooks?: WebhookModel;\n\n constructor(\n spec: OpenAPISpec,\n specUrl: string | undefined,\n private options: RedocNormalizedOptions,\n ) {\n this.parser = new OpenAPIParser(spec, specUrl, options);\n this.info = new ApiInfoModel(this.parser, this.options);\n this.externalDocs = this.parser.spec.externalDocs;\n this.contentItems = MenuBuilder.buildStructure(this.parser, this.options);\n this.securitySchemes = new SecuritySchemesModel(this.parser);\n const webhookPath: Referenced<OpenAPIPath> = {\n ...this.parser?.spec?.['x-webhooks'],\n ...this.parser?.spec.webhooks,\n };\n this.webhooks = new WebhookModel(this.parser, options, webhookPath);\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIExternalDocumentation, OpenAPITag } from '../../types';\nimport { safeSlugify } from '../../utils';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport type { ContentItemModel, IMenuItem, MarkdownHeading, MenuItemGroupType } from '../types';\n\n/**\n * Operations Group model ready to be used by components\n */\nexport class GroupModel implements IMenuItem {\n //#region IMenuItem fields\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n type: MenuItemGroupType;\n\n items: ContentItemModel[] = [];\n parent?: GroupModel;\n externalDocs?: OpenAPIExternalDocumentation;\n\n @observable\n active: boolean = false;\n @observable\n expanded: boolean = false;\n\n depth: number;\n level: number;\n //#endregion\n\n constructor(\n type: MenuItemGroupType,\n tagOrGroup: OpenAPITag | MarkdownHeading,\n parent?: GroupModel,\n ) {\n makeObservable(this);\n\n // markdown headings already have ids calculated as they are needed for heading anchors\n this.id = (tagOrGroup as MarkdownHeading).id || type + '/' + safeSlugify(tagOrGroup.name);\n this.type = type;\n this.name = tagOrGroup['x-displayName'] || tagOrGroup.name;\n this.level = (tagOrGroup as MarkdownHeading).level || 1;\n\n this.sidebarLabel = this.name;\n\n // remove sections from markdown, same as in ApiInfo\n this.description = tagOrGroup.description || '';\n\n const items = (tagOrGroup as MarkdownHeading).items;\n if (items && items.length) {\n this.description = MarkdownRenderer.getTextBeforeHading(this.description, items[0].name);\n }\n\n this.parent = parent;\n this.externalDocs = (tagOrGroup as OpenAPITag).externalDocs;\n\n // groups are active (expanded) by default\n if (this.type === 'group') {\n this.expanded = true;\n }\n }\n\n @action\n activate() {\n this.active = true;\n }\n\n @action\n expand() {\n if (this.parent) {\n this.parent.expand();\n }\n this.expanded = true;\n }\n\n @action\n collapse() {\n // disallow collapsing groups\n if (this.type === 'group') {\n return;\n }\n this.expanded = false;\n }\n\n @action\n deactivate() {\n this.active = false;\n }\n}\n","import type { OpenAPIPaths, OpenAPITag, OpenAPISchema } from '../types';\nimport { isOperationName, JsonPointer, alphabeticallyByProp } from '../utils';\nimport { MarkdownRenderer } from './MarkdownRenderer';\nimport { GroupModel, OperationModel } from './models';\nimport type { OpenAPIParser } from './OpenAPIParser';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { ContentItemModel, TagGroup, TagInfo, TagsInfoMap } from './types';\n\nexport const GROUP_DEPTH = 0;\n\nexport class MenuBuilder {\n /**\n * Builds page content structure based on tags\n */\n static buildStructure(\n parser: OpenAPIParser,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n const spec = parser.spec;\n const { schemaDefinitionsTagName } = options;\n\n const items: ContentItemModel[] = [];\n const tags = [...(spec.tags || [])];\n const hasAutogenerated = tags.find(tag => tag?.name === schemaDefinitionsTagName);\n\n if (!hasAutogenerated && schemaDefinitionsTagName) {\n tags.push({ name: schemaDefinitionsTagName });\n }\n const tagsMap = MenuBuilder.getTagsWithOperations(parser, tags);\n\n items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', undefined, 1, options));\n if (spec['x-tagGroups'] && spec['x-tagGroups'].length > 0) {\n items.push(\n ...MenuBuilder.getTagGroupsItems(parser, undefined, spec['x-tagGroups'], tagsMap, options),\n );\n } else {\n items.push(...MenuBuilder.getTagsItems(parser, tagsMap, undefined, undefined, options));\n }\n\n return items;\n }\n\n /**\n * extracts items from markdown description\n * @param description - markdown source\n */\n static addMarkdownItems(\n description: string,\n parent: GroupModel | undefined,\n initialDepth: number,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n const renderer = new MarkdownRenderer(options, parent?.id);\n const headings = renderer.extractHeadings(description || '');\n\n if (headings.length && parent && parent.description) {\n parent.description = MarkdownRenderer.getTextBeforeHading(\n parent.description,\n headings[0].name,\n );\n }\n\n const mapHeadingsDeep = (_parent, items, depth = 1) =>\n items.map(heading => {\n const group = new GroupModel('section', heading, _parent);\n group.depth = depth;\n if (heading.items) {\n group.items = mapHeadingsDeep(group, heading.items, depth + 1);\n }\n\n return group;\n });\n\n return mapHeadingsDeep(parent, headings, initialDepth);\n }\n\n /**\n * Returns array of OperationsGroup items for the tag groups (x-tagGroups vendor extension)\n * @param tags value of `x-tagGroups` vendor extension\n */\n static getTagGroupsItems(\n parser: OpenAPIParser,\n parent: GroupModel | undefined,\n groups: TagGroup[],\n tags: TagsInfoMap,\n options: RedocNormalizedOptions,\n ): GroupModel[] {\n const res: GroupModel[] = [];\n for (const group of groups) {\n const item = new GroupModel('group', group, parent);\n item.depth = GROUP_DEPTH;\n item.items = MenuBuilder.getTagsItems(parser, tags, item, group, options);\n res.push(item);\n }\n // TODO checkAllTagsUsedInGroups\n return res;\n }\n\n /**\n * Returns array of OperationsGroup items for the tags of the group or for all tags\n * @param parser\n * @param tagsMap tags info returned from `getTagsWithOperations`\n * @param parent parent item\n * @param group group which this tag belongs to. if not provided gets all tags\n * @param options normalized options\n */\n static getTagsItems(\n parser: OpenAPIParser,\n tagsMap: TagsInfoMap,\n parent: GroupModel | undefined,\n group: TagGroup | undefined,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n let tagNames;\n\n if (group === undefined) {\n tagNames = Object.keys(tagsMap); // all tags\n } else {\n tagNames = group.tags;\n }\n\n const tags = tagNames.map(tagName => {\n if (!tagsMap[tagName]) {\n console.warn(`Non-existing tag \"${tagName}\" is added to the group \"${group!.name}\"`);\n return null;\n }\n tagsMap[tagName].used = true;\n return tagsMap[tagName];\n });\n\n const res: Array<GroupModel | OperationModel> = [];\n for (const tag of tags) {\n if (!tag) {\n continue;\n }\n const item = new GroupModel('tag', tag, parent);\n item.depth = GROUP_DEPTH + 1;\n\n // don't put empty tag into content, instead put its operations\n if (tag.name === '') {\n const items = [\n ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options),\n ...this.getOperationsItems(parser, undefined, tag, item.depth + 1, options),\n ];\n res.push(...items);\n continue;\n }\n\n const relatedSchemas = this.getTagRelatedSchema({\n parser,\n tag,\n parent: item,\n schemaDefinitionsTagName: options.schemaDefinitionsTagName,\n });\n\n item.items = [\n ...relatedSchemas,\n ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options),\n ...this.getOperationsItems(parser, item, tag, item.depth + 1, options),\n ];\n\n res.push(item);\n }\n\n if (options.sortTagsAlphabetically) {\n res.sort(alphabeticallyByProp<GroupModel | OperationModel>('name'));\n }\n\n return res;\n }\n\n /**\n * Returns array of Operation items for the tag\n * @param parser\n * @param parent parent OperationsGroup\n * @param tag tag info returned from `getTagsWithOperations`\n * @param depth items depth\n * @param options - normalized options\n */\n static getOperationsItems(\n parser: OpenAPIParser,\n parent: GroupModel | undefined,\n tag: TagInfo,\n depth: number,\n options: RedocNormalizedOptions,\n ): OperationModel[] {\n if (tag.operations.length === 0) {\n return [];\n }\n\n const res: OperationModel[] = [];\n for (const operationInfo of tag.operations) {\n const operation = new OperationModel(parser, operationInfo, parent, options);\n operation.depth = depth;\n res.push(operation);\n }\n\n if (options.sortOperationsAlphabetically) {\n res.sort(alphabeticallyByProp<OperationModel>('name'));\n }\n\n return res;\n }\n\n /**\n * collects tags and maps each tag to list of operations belonging to this tag\n */\n static getTagsWithOperations(parser: OpenAPIParser, explicitTags: OpenAPITag[]): TagsInfoMap {\n const { spec } = parser;\n const tags: TagsInfoMap = {};\n const webhooks = spec['x-webhooks'] || spec.webhooks;\n for (const tag of explicitTags || []) {\n tags[tag.name] = { ...tag, operations: [] };\n }\n\n if (webhooks) {\n getTags(parser, webhooks, true);\n }\n\n if (spec.paths) {\n getTags(parser, spec.paths);\n }\n\n function getTags(parser: OpenAPIParser, paths: OpenAPIPaths, isWebhook?: boolean) {\n for (const pathName of Object.keys(paths)) {\n const path = paths[pathName];\n const operations = Object.keys(path).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = path[operationName];\n if (path.$ref) {\n const { resolved: resolvedPaths } = parser.deref<OpenAPIPaths>(path as OpenAPIPaths);\n getTags(parser, { [pathName]: resolvedPaths }, isWebhook);\n continue;\n }\n let operationTags = operationInfo?.tags;\n\n if (!operationTags || !operationTags.length) {\n // empty tag\n operationTags = [''];\n }\n\n for (const tagName of operationTags) {\n let tag = tags[tagName];\n if (tag === undefined) {\n tag = {\n name: tagName,\n operations: [],\n };\n tags[tagName] = tag;\n }\n if (tag['x-traitTag']) {\n continue;\n }\n tag.operations.push({\n ...operationInfo,\n pathName,\n pointer: JsonPointer.compile(['paths', pathName, operationName]),\n httpVerb: operationName,\n pathParameters: path.parameters || [],\n pathServers: path.servers,\n isWebhook: !!isWebhook,\n });\n }\n }\n }\n }\n return tags;\n }\n\n static getTagRelatedSchema({\n parser,\n tag,\n parent,\n schemaDefinitionsTagName,\n }: {\n parser: OpenAPIParser;\n tag: TagInfo;\n parent: GroupModel;\n schemaDefinitionsTagName?: string;\n }): GroupModel[] {\n const defaultTags = schemaDefinitionsTagName ? [schemaDefinitionsTagName] : [];\n\n return Object.entries(parser.spec.components?.schemas || {})\n .map(([schemaName, schema]) => {\n const schemaTags = schema['x-tags'] || defaultTags;\n if (!schemaTags?.includes(tag.name)) return null;\n\n const item = new GroupModel(\n 'schema',\n {\n name: schemaName,\n 'x-displayName': `${(schema as OpenAPISchema).title || schemaName}`,\n description: `<SchemaDefinition showWriteOnly={true} schemaRef=\"#/components/schemas/${schemaName}\" />`,\n } as OpenAPITag,\n parent,\n );\n item.depth = parent.depth + 1;\n return item;\n })\n .filter(Boolean) as GroupModel[];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\nimport { querySelector } from '../utils/dom';\nimport { escapeHTMLAttrChars, flattenByProp, SECURITY_SCHEMES_SECTION_PREFIX } from '../utils';\n\nimport { history as historyInst, HistoryService } from './HistoryService';\nimport { GROUP_DEPTH } from './MenuBuilder';\n\nimport type { SpecStore } from './models';\nimport type { ScrollService } from './ScrollService';\nimport type { IMenuItem } from './types';\n\n/** Generic interface for MenuItems */\n\nexport const SECTION_ATTR = 'data-section-id';\n\n/**\n * Stores all side-menu related information\n */\nexport class MenuStore {\n /**\n * Statically try update scroll position\n * Used before hydrating from server-side rendered html to scroll page faster\n */\n static updateOnHistory(id: string = historyInst.currentId, scroll: ScrollService) {\n if (!id) {\n return;\n }\n scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(id)}\"]`);\n }\n\n /**\n * active item absolute index (when flattened). -1 means nothing is selected\n */\n @observable\n activeItemIdx: number = -1;\n\n /**\n * whether sidebar with menu is opened or not\n */\n @observable\n sideBarOpened: boolean = false;\n\n items: IMenuItem[];\n flatItems: IMenuItem[];\n\n /**\n * cached flattened menu items to support absolute indexing\n */\n private _unsubscribe: () => void;\n private _hashUnsubscribe: () => void;\n\n /**\n *\n * @param spec [SpecStore](#SpecStore) which contains page content structure\n * @param scroll scroll service instance used by this menu\n */\n constructor(spec: SpecStore, public scroll: ScrollService, public history: HistoryService) {\n makeObservable(this);\n\n this.items = spec.contentItems;\n\n this.flatItems = flattenByProp(this.items || [], 'items');\n this.flatItems.forEach((item, idx) => (item.absoluteIdx = idx));\n\n this.subscribe();\n }\n\n subscribe() {\n this._unsubscribe = this.scroll.subscribe(this.updateOnScroll);\n this._hashUnsubscribe = this.history.subscribe(this.updateOnHistory);\n }\n\n @action\n toggleSidebar() {\n this.sideBarOpened = this.sideBarOpened ? false : true;\n }\n\n @action\n closeSidebar() {\n this.sideBarOpened = false;\n }\n\n /**\n * update active items on scroll\n * @param isScrolledDown whether last scroll was downside\n */\n updateOnScroll = (isScrolledDown: boolean): void => {\n const step = isScrolledDown ? 1 : -1;\n let itemIdx = this.activeItemIdx;\n while (true) {\n if (itemIdx === -1 && !isScrolledDown) {\n break;\n }\n\n if (itemIdx >= this.flatItems.length - 1 && isScrolledDown) {\n break;\n }\n\n if (isScrolledDown) {\n const el = this.getElementAtOrFirstChild(itemIdx + 1);\n if (this.scroll.isElementBellow(el)) {\n break;\n }\n } else {\n const el = this.getElementAt(itemIdx);\n if (this.scroll.isElementAbove(el)) {\n break;\n }\n }\n itemIdx += step;\n }\n\n this.activate(this.flatItems[itemIdx], true, true);\n };\n\n /**\n * update active items on hash change\n * @param id current hash\n */\n updateOnHistory = (id: string = this.history.currentId) => {\n if (!id) {\n return;\n }\n let item: IMenuItem | undefined;\n\n item = this.flatItems.find(i => i.id === id);\n\n if (item) {\n this.activateAndScroll(item, false);\n } else {\n if (id.startsWith(SECURITY_SCHEMES_SECTION_PREFIX)) {\n item = this.flatItems.find(i => SECURITY_SCHEMES_SECTION_PREFIX.startsWith(i.id));\n this.activateAndScroll(item, false);\n }\n this.scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(id)}\"]`);\n }\n };\n\n /**\n * get section/operation DOM Node related to the item or null if it doesn't exist\n * @param idx item absolute index\n */\n getElementAt(idx: number): Element | null {\n const item = this.flatItems[idx];\n return (item && querySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(item.id)}\"]`)) || null;\n }\n\n /**\n * get section/operation DOM Node related to the item or if it is group item, returns first item of the group\n * @param idx item absolute index\n */\n getElementAtOrFirstChild(idx: number): Element | null {\n let item = this.flatItems[idx];\n if (item && item.type === 'group') {\n item = item.items[0];\n }\n return (item && querySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(item.id)}\"]`)) || null;\n }\n\n /**\n * current active item\n */\n get activeItem(): IMenuItem {\n return this.flatItems[this.activeItemIdx] || undefined;\n }\n\n getItemById = (id: string) => {\n return this.flatItems.find(item => item.id === id);\n };\n\n /**\n * activate menu item\n * @param item item to activate\n * @param updateLocation [true] whether to update location\n * @param rewriteHistory [false] whether to rewrite browser history (do not create new entry)\n */\n @action\n activate(\n item: IMenuItem | undefined,\n updateLocation: boolean = true,\n rewriteHistory: boolean = false,\n ) {\n if ((this.activeItem && this.activeItem.id) === (item && item.id)) {\n return;\n }\n\n if (item && item.type === 'group') {\n return;\n }\n\n this.deactivate(this.activeItem);\n if (!item) {\n this.activeItemIdx = -1;\n this.history.replace('', rewriteHistory);\n return;\n }\n\n // do not allow activating group items\n // TODO: control over options\n if (item.depth <= GROUP_DEPTH) {\n return;\n }\n\n this.activeItemIdx = item.absoluteIdx!;\n if (updateLocation) {\n this.history.replace(encodeURI(item.id), rewriteHistory);\n }\n\n item.activate();\n item.expand();\n }\n\n /**\n * makes item and all the parents not active\n * @param item item to deactivate\n */\n deactivate(item: IMenuItem | undefined) {\n if (item === undefined) {\n return;\n }\n item.deactivate();\n while (item !== undefined) {\n item.collapse();\n item = item.parent;\n }\n }\n\n /**\n * activate menu item and scroll to it\n * @see MenuStore.activate\n */\n @action.bound\n activateAndScroll(\n item: IMenuItem | undefined,\n updateLocation?: boolean,\n rewriteHistory?: boolean,\n ) {\n // item here can be a copy from search results so find corresponding item from menu\n const menuItem = (item && this.getItemById(item.id)) || item;\n this.activate(menuItem, updateLocation, rewriteHistory);\n this.scrollToActive();\n if (!menuItem || !menuItem.items.length) {\n this.closeSidebar();\n }\n }\n\n /**\n * scrolls to active section\n */\n scrollToActive(): void {\n this.scroll.scrollIntoView(this.getElementAt(this.activeItemIdx));\n }\n\n dispose() {\n this._unsubscribe();\n this._hashUnsubscribe();\n }\n}\n","import { bind } from 'decko';\nimport { EventEmitter } from 'eventemitter3';\n\nimport { IS_BROWSER, querySelector, Throttle } from '../utils';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\n\nconst EVENT = 'scroll';\n\nexport class ScrollService {\n private _scrollParent: Window | HTMLElement | undefined;\n private _emiter: EventEmitter;\n private _prevOffsetY = 0;\n constructor(private options: RedocNormalizedOptions) {\n this._scrollParent = IS_BROWSER ? window : undefined;\n this._emiter = new EventEmitter();\n this.bind();\n }\n\n bind() {\n this._prevOffsetY = this.scrollY();\n if (this._scrollParent) {\n this._scrollParent.addEventListener('scroll', this.handleScroll);\n }\n }\n\n dispose() {\n if (this._scrollParent) {\n this._scrollParent.removeEventListener('scroll', this.handleScroll);\n }\n this._emiter.removeAllListeners(EVENT);\n }\n\n scrollY(): number {\n if (typeof HTMLElement !== 'undefined' && this._scrollParent instanceof HTMLElement) {\n return this._scrollParent.scrollTop;\n } else if (this._scrollParent !== undefined) {\n return (this._scrollParent as Window).pageYOffset;\n } else {\n return 0;\n }\n }\n\n isElementBellow(el: Element | null) {\n if (el === null) {\n return;\n }\n return el.getBoundingClientRect().top > this.options.scrollYOffset();\n }\n\n isElementAbove(el: Element | null) {\n if (el === null) {\n return;\n }\n const top = el.getBoundingClientRect().top;\n return (top > 0 ? Math.floor(top) : Math.ceil(top)) <= this.options.scrollYOffset();\n }\n\n subscribe(cb): () => void {\n const emmiter = this._emiter.addListener(EVENT, cb);\n return () => emmiter.removeListener(EVENT, cb);\n }\n\n scrollIntoView(element: Element | null) {\n if (element === null) {\n return;\n }\n element.scrollIntoView();\n if (this._scrollParent && this._scrollParent.scrollBy) {\n // adding 1 account rounding errors in case scrollYOffset is float-number\n (this._scrollParent.scrollBy as any)(0, -this.options.scrollYOffset() + 1);\n }\n }\n\n scrollIntoViewBySelector(selector: string) {\n const element = querySelector(selector);\n this.scrollIntoView(element);\n }\n\n @bind\n @Throttle(100)\n handleScroll() {\n const scrollY = this.scrollY();\n const isScrolledDown = scrollY - this._prevOffsetY > 0;\n this._prevOffsetY = this.scrollY();\n this._emiter.emit(EVENT, isScrolledDown);\n }\n}\n","import { IS_BROWSER } from '../utils/';\nimport type { IMenuItem } from './types';\nimport type { OperationModel } from './models';\n\nimport Worker from './SearchWorker.worker';\n\nfunction getWorker() {\n let worker: new () => Worker;\n if (IS_BROWSER) {\n try {\n // tslint:disable-next-line\n worker = require('@redocly/workerize-loader?inline&fallback=false!./SearchWorker.worker');\n } catch (e) {\n worker = require('./SearchWorker.worker').default;\n }\n } else {\n worker = require('./SearchWorker.worker').default;\n }\n return new worker();\n}\n\nexport class SearchStore<T> {\n searchWorker = getWorker();\n\n indexItems(groups: Array<IMenuItem | OperationModel>) {\n const recurse = items => {\n items.forEach(group => {\n if (group.type !== 'group') {\n this.add(group.name, (group.description || '').concat(' ', group.path || ''), group.id);\n }\n recurse(group.items);\n });\n };\n\n recurse(groups);\n this.searchWorker.done();\n }\n\n add(title: string, body: string, meta?: T) {\n this.searchWorker.add(title, body, meta);\n }\n\n dispose() {\n (this.searchWorker as any).terminate();\n (this.searchWorker as any).dispose();\n }\n\n search(q: string) {\n return this.searchWorker.search<T>(q);\n }\n\n async toJS() {\n return this.searchWorker.toJS();\n }\n\n load(state: any) {\n this.searchWorker.load(state);\n }\n\n fromExternalJS(path?: string, exportName?: string) {\n if (path && exportName) {\n this.searchWorker.fromExternalJS(path, exportName);\n }\n }\n}\n","import { SECTION_ATTR } from '../services/MenuStore';\nimport styled, { media } from '../styled-components';\n\nexport const MiddlePanel = styled.div<{ $compact?: boolean }>`\n width: calc(100% - ${props => props.theme.rightPanel.width});\n padding: 0 ${props => props.theme.spacing.sectionHorizontal}px;\n\n ${({ $compact, theme }) =>\n media.lessThan('medium', true)`\n width: 100%;\n padding: ${`${$compact ? 0 : theme.spacing.sectionVertical}px ${\n theme.spacing.sectionHorizontal\n }px`};\n `};\n`;\n\nexport const Section = styled.div.attrs(props => ({\n [SECTION_ATTR]: props.id,\n}))<{ $underlined?: boolean }>`\n padding: ${props => props.theme.spacing.sectionVertical}px 0;\n\n &:last-child {\n min-height: calc(100vh + 1px);\n }\n\n & > &:last-child {\n min-height: initial;\n }\n\n ${media.lessThan('medium', true)`\n padding: 0;\n `}\n ${({ $underlined }) =>\n ($underlined &&\n `\n position: relative;\n\n &:not(:last-of-type):after {\n position: absolute;\n bottom: 0;\n width: 100%;\n display: block;\n content: '';\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n }\n `) ||\n ''}\n`;\n\nexport const RightPanel = styled.div`\n width: ${props => props.theme.rightPanel.width};\n color: ${({ theme }) => theme.rightPanel.textColor};\n background-color: ${props => props.theme.rightPanel.backgroundColor};\n padding: 0 ${props => props.theme.spacing.sectionHorizontal}px;\n\n ${media.lessThan('medium', true)`\n width: 100%;\n padding: ${props =>\n `${props.theme.spacing.sectionVertical}px ${props.theme.spacing.sectionHorizontal}px`};\n `};\n`;\n\nexport const DarkRightPanel = styled(RightPanel)`\n background-color: ${props => props.theme.rightPanel.backgroundColor};\n`;\n\nexport const Row = styled.div`\n display: flex;\n width: 100%;\n padding: 0;\n\n ${media.lessThan('medium', true)`\n flex-direction: column;\n `};\n`;\n","import styled, { css, extensionsHook } from '../styled-components';\n\nconst headerFontSize = {\n 1: '1.85714em',\n 2: '1.57143em',\n 3: '1.27em',\n};\n\nexport const headerCommonMixin = level => css`\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-weight: ${({ theme }) => theme.typography.headings.fontWeight};\n font-size: ${headerFontSize[level]};\n line-height: ${({ theme }) => theme.typography.headings.lineHeight};\n`;\n\nexport const H1 = styled.h1`\n ${headerCommonMixin(1)};\n color: ${({ theme }) => theme.colors.text.primary};\n\n ${extensionsHook('H1')};\n`;\n\nexport const H2 = styled.h2`\n ${headerCommonMixin(2)};\n color: ${({ theme }) => theme.colors.text.primary};\n margin: 0 0 20px;\n\n ${extensionsHook('H2')};\n`;\n\nexport const H3 = styled.h2`\n ${headerCommonMixin(3)};\n color: ${({ theme }) => theme.colors.text.primary};\n\n ${extensionsHook('H3')};\n`;\n\nexport const RightPanelHeader = styled.h3`\n color: ${({ theme }) => theme.rightPanel.textColor};\n\n ${extensionsHook('RightPanelHeader')};\n`;\n\nexport const UnderlinedHeader = styled.h5`\n border-bottom: 1px solid rgba(38, 50, 56, 0.3);\n margin: 1em 0 1em 0;\n color: rgba(38, 50, 56, 0.5);\n font-weight: normal;\n text-transform: uppercase;\n font-size: 0.929em;\n line-height: 20px;\n\n ${extensionsHook('UnderlinedHeader')};\n`;\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\nimport { AppStore } from '../services/';\nimport { RedocRawOptions } from '../services/RedocNormalizedOptions';\nimport { loadAndBundleSpec } from '../utils';\n\nexport interface StoreBuilderProps {\n specUrl?: string;\n spec?: object;\n store?: AppStore;\n\n options?: RedocRawOptions;\n\n onLoaded?: (e?: Error) => void;\n\n children: (props: { loading: boolean; store: AppStore | null }) => any;\n}\n\nexport interface StoreBuilderState {\n error?: Error;\n loading: boolean;\n resolvedSpec?: any;\n prevSpec?: any;\n prevSpecUrl?: string;\n}\n\nconst StoreContext = createContext<AppStore | undefined>(undefined);\nconst { Provider, Consumer } = StoreContext;\nexport { Provider as StoreProvider, Consumer as StoreConsumer, StoreContext };\n\nexport function StoreBuilder(props: StoreBuilderProps) {\n const { spec, specUrl, options, onLoaded, children } = props;\n\n const [resolvedSpec, setResolvedSpec] = React.useState<any>(null);\n const [error, setError] = React.useState<Error | null>(null);\n if (error) {\n throw error;\n }\n\n React.useEffect(() => {\n async function load() {\n if (!spec && !specUrl) {\n return undefined;\n }\n setResolvedSpec(null);\n try {\n const resolved = await loadAndBundleSpec(spec || specUrl!);\n setResolvedSpec(resolved);\n } catch (e) {\n if (onLoaded) {\n onLoaded(e);\n }\n setError(e);\n throw e;\n }\n }\n load();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [spec, specUrl]);\n\n const store = React.useMemo(() => {\n if (!resolvedSpec) return null;\n try {\n return new AppStore(resolvedSpec, specUrl, options);\n } catch (e) {\n if (onLoaded) {\n onLoaded(e);\n }\n throw e;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolvedSpec, specUrl, options]);\n\n React.useEffect(() => {\n if (store && onLoaded) {\n onLoaded();\n }\n }, [store, onLoaded]);\n\n return children({\n loading: !store,\n store,\n });\n}\n\nexport function useStore(): AppStore | undefined {\n return useContext(StoreContext);\n}\n","import * as React from 'react';\n\nimport { StoreContext } from '../components/StoreBuilder';\nimport styled, { css } from '../styled-components';\n\nimport { HistoryService } from '../services';\n\n// tslint:disable-next-line\nexport const linkifyMixin = className => css`\n ${className} {\n cursor: pointer;\n margin-left: -20px;\n padding: 0;\n line-height: 1;\n width: 20px;\n display: inline-block;\n outline: 0;\n }\n ${className}:before {\n content: '';\n width: 15px;\n height: 15px;\n background-size: contain;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==');\n opacity: 0.5;\n visibility: hidden;\n display: inline-block;\n vertical-align: middle;\n }\n\n h1:hover > ${className}::before, h2:hover > ${className}::before, ${className}:hover::before {\n visibility: visible;\n }\n`;\n\nconst isModifiedEvent = event =>\n !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n\nexport function Link(props: { to: string; className?: string; children?: any }) {\n const store = React.useContext(StoreContext);\n const clickHandler = React.useCallback(\n (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (!store) return;\n navigate(store.menu.history, event, props.to);\n },\n [store, props.to],\n );\n\n if (!store) return null;\n\n return (\n <a\n className={props.className}\n href={store!.menu.history.linkForId(props.to)}\n onClick={clickHandler}\n aria-label={props.to}\n >\n {props.children}\n </a>\n );\n}\n\nfunction navigate(history: HistoryService, event: React.MouseEvent<HTMLAnchorElement>, to: string) {\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n history.replace(encodeURI(to));\n }\n}\n\nconst StyledShareLink = styled(Link)`\n ${linkifyMixin('&')};\n`;\n\nexport function ShareLink(props: { to: string }) {\n return <StyledShareLink to={props.to} />;\n}\n","import * as React from 'react';\nimport styled from '../styled-components';\n\nconst directionMap = {\n left: '90deg',\n right: '-90deg',\n up: '-180deg',\n down: '0',\n};\n\nconst IntShelfIcon = (props: {\n className?: string;\n float?: 'left' | 'right';\n size?: string;\n color?: string;\n direction: 'left' | 'right' | 'up' | 'down';\n style?: React.CSSProperties;\n}): JSX.Element => {\n return (\n <svg\n className={props.className}\n style={props.style}\n version=\"1.1\"\n viewBox=\"0 0 24 24\"\n x=\"0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0\"\n aria-hidden=\"true\"\n >\n <polygon points=\"17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 \" />\n </svg>\n );\n};\n\nexport const ShelfIcon = styled(IntShelfIcon)`\n height: ${props => props.size || '18px'};\n width: ${props => props.size || '18px'};\n min-width: ${props => props.size || '18px'};\n vertical-align: middle;\n float: ${props => props.float || ''};\n transition: transform 0.2s ease-out;\n transform: rotateZ(${props => directionMap[props.direction || 'down']});\n\n polygon {\n fill: ${({ color, theme }) =>\n (color && theme.colors.responses[color] && theme.colors.responses[color].color) || color};\n }\n`;\n\nexport const Badge = styled.span<{ type: string; color?: string }>`\n display: inline-block;\n padding: 2px 8px;\n margin: 0;\n background-color: ${props => props.color || props.theme.colors[props.type].main};\n color: ${props => props.theme.colors[props.type].contrastText};\n font-size: ${props => props.theme.typography.code.fontSize};\n vertical-align: middle;\n line-height: 1.6;\n border-radius: 4px;\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n font-size: 12px;\n + span[type] {\n margin-left: 4px;\n }\n`;\n","import { css } from '../styled-components';\n\nexport const deprecatedCss = css`\n text-decoration: line-through;\n color: #707070;\n`;\n","import styled, { extensionsHook, media, css } from '../styled-components';\nimport { deprecatedCss } from './mixins';\n\nexport const PropertiesTableCaption = styled.caption`\n text-align: right;\n font-size: 0.9em;\n font-weight: normal;\n color: ${props => props.theme.colors.text.secondary};\n`;\n\nexport const PropertyCell = styled.td<{ kind?: string }>`\n border-left: 1px solid ${props => props.theme.schema.linesColor};\n box-sizing: border-box;\n position: relative;\n padding: 10px 10px 10px 0;\n\n ${media.lessThan('small')`\n display: block;\n overflow: hidden;\n `}\n\n tr:first-of-type > &,\n tr.last > & {\n border-left-width: 0;\n background-position: top left;\n background-repeat: no-repeat;\n background-size: 1px 100%;\n }\n\n tr:first-of-type > & {\n background-image: linear-gradient(\n to bottom,\n transparent 0%,\n transparent 22px,\n ${props => props.theme.schema.linesColor} 22px,\n ${props => props.theme.schema.linesColor} 100%\n );\n }\n\n tr.last > & {\n background-image: linear-gradient(\n to bottom,\n ${props => props.theme.schema.linesColor} 0%,\n ${props => props.theme.schema.linesColor} 22px,\n transparent 22px,\n transparent 100%\n );\n }\n\n tr.last + tr > & {\n border-left-color: transparent;\n }\n\n tr.last:first-child > & {\n background: none;\n border-left-color: transparent;\n }\n`;\n\nexport const PropertyCellWithInner = styled(PropertyCell)`\n padding: 0;\n`;\n\nexport const PropertyNameCell = styled(PropertyCell)`\n vertical-align: top;\n line-height: 20px;\n white-space: nowrap;\n font-size: 13px;\n font-family: ${props => props.theme.typography.code.fontFamily};\n\n &.deprecated {\n ${deprecatedCss};\n }\n\n ${({ kind }) =>\n kind === 'patternProperties' &&\n css`\n > span.property-name {\n display: inline-table;\n white-space: break-spaces;\n margin-right: 20px;\n\n ::before,\n ::after {\n content: '/';\n filter: opacity(0.2);\n }\n }\n `}\n\n ${({ kind = '' }) =>\n ['field', 'additionalProperties', 'patternProperties'].includes(kind)\n ? ''\n : 'font-style: italic'};\n\n ${extensionsHook('PropertyNameCell')};\n`;\n\nexport const PropertyDetailsCell = styled.td`\n border-bottom: 1px solid #9fb4be;\n padding: 10px 0;\n width: ${props => props.theme.schema.defaultDetailsWidth};\n box-sizing: border-box;\n\n tr.expanded & {\n border-bottom: none;\n }\n\n ${media.lessThan('small')`\n padding: 0 20px;\n border-bottom: none;\n border-left: 1px solid ${props => props.theme.schema.linesColor};\n\n tr.last > & {\n border-left: none;\n }\n `}\n\n ${extensionsHook('PropertyDetailsCell')};\n`;\n\nexport const PropertyBullet = styled.span`\n color: ${props => props.theme.schema.linesColor};\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin-right: 10px;\n\n &::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n width: 10px;\n height: 1px;\n background: ${props => props.theme.schema.linesColor};\n }\n\n &::after {\n content: '';\n display: inline-block;\n vertical-align: middle;\n width: 1px;\n background: ${props => props.theme.schema.linesColor};\n height: 7px;\n }\n`;\n\nexport const InnerPropertiesWrap = styled.div`\n padding: ${({ theme }) => theme.schema.nestingSpacing};\n`;\n\nexport const PropertiesTable = styled.table`\n border-collapse: separate;\n border-radius: 3px;\n font-size: ${props => props.theme.typography.fontSize};\n\n border-spacing: 0;\n width: 100%;\n\n > tr {\n vertical-align: middle;\n }\n\n ${media.lessThan('small')`\n display: block;\n > tr, > tbody > tr {\n display: block;\n }\n `}\n\n ${media.lessThan('small', false, ' and (-ms-high-contrast:none)')`\n td {\n float: left;\n width: 100%;\n }\n `}\n\n &\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap} {\n margin: ${({ theme }) => theme.schema.nestingSpacing};\n margin-right: 0;\n background: ${({ theme }) => theme.schema.nestedBackground};\n }\n\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap} {\n background: #ffffff;\n }\n`;\n","import styled from '../styled-components';\nimport { darken } from 'polished';\nimport { deprecatedCss } from './mixins';\n\nexport const OneOfList = styled.div`\n margin: 0 0 3px 0;\n display: inline-block;\n`;\n\nexport const OneOfLabel = styled.span`\n font-size: 0.9em;\n margin-right: 10px;\n color: ${props => props.theme.colors.primary.main};\n font-family: ${props => props.theme.typography.headings.fontFamily};\n}\n`;\n\nexport const OneOfButton = styled.button<{ $active: boolean; $deprecated: boolean }>`\n display: inline-block;\n margin-right: 10px;\n margin-bottom: 5px;\n font-size: 0.8em;\n cursor: pointer;\n border: 1px solid ${props => props.theme.colors.primary.main};\n padding: 2px 10px;\n line-height: 1.5em;\n outline: none;\n &:focus {\n box-shadow: 0 0 0 1px ${props => props.theme.colors.primary.main};\n }\n\n ${({ $deprecated }) => ($deprecated && deprecatedCss) || ''};\n\n ${props => {\n if (props.$active) {\n return `\n color: white;\n background-color: ${props.theme.colors.primary.main};\n &:focus {\n box-shadow: none;\n background-color: ${darken(0.15, props.theme.colors.primary.main)};\n }\n `;\n } else {\n return `\n color: ${props.theme.colors.primary.main};\n background-color: white;\n `;\n }\n }}\n`;\n\nexport const ArrayOpenningLabel = styled.div`\n font-size: 0.9em;\n font-family: ${props => props.theme.typography.code.fontFamily};\n &::after {\n content: ' [';\n }\n`;\n\nexport const ArrayClosingLabel = styled.div`\n font-size: 0.9em;\n font-family: ${props => props.theme.typography.code.fontFamily};\n &::after {\n content: ']';\n }\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-tabs\");","import { darken } from 'polished';\nimport { Tabs as ReactTabs } from 'react-tabs';\n\nimport styled from '../styled-components';\n\nexport { Tab, TabList, TabPanel } from 'react-tabs';\n\nexport const Tabs = styled(ReactTabs)`\n > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n margin: 0 -5px;\n\n > li {\n padding: 5px 10px;\n display: inline-block;\n\n background-color: ${({ theme }) => theme.codeBlock.backgroundColor};\n border-bottom: 1px solid rgba(0, 0, 0, 0.5);\n cursor: pointer;\n text-align: center;\n outline: none;\n color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.rightPanel.textColor)};\n margin: 0\n ${({ theme }) => `${theme.spacing.unit}px ${theme.spacing.unit}px ${theme.spacing.unit}px`};\n border: 1px solid ${({ theme }) => darken(0.05, theme.codeBlock.backgroundColor)};\n border-radius: 5px;\n min-width: 60px;\n font-size: 0.9em;\n font-weight: bold;\n\n &.react-tabs__tab--selected {\n color: ${props => props.theme.colors.text.primary};\n background: ${({ theme }) => theme.rightPanel.textColor};\n &:focus {\n outline: auto;\n }\n }\n\n &:only-child {\n flex: none;\n min-width: 100px;\n }\n\n &.tab-success {\n color: ${props => props.theme.colors.responses.success.tabTextColor};\n }\n\n &.tab-redirect {\n color: ${props => props.theme.colors.responses.redirect.tabTextColor};\n }\n\n &.tab-info {\n color: ${props => props.theme.colors.responses.info.tabTextColor};\n }\n\n &.tab-error {\n color: ${props => props.theme.colors.responses.error.tabTextColor};\n }\n }\n }\n > .react-tabs__tab-panel {\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 4}px;\n margin: 0;\n }\n\n & > div > pre {\n padding: 0;\n }\n }\n`;\n\nexport const SmallTabs = styled(Tabs)`\n > ul {\n display: block;\n > li {\n padding: 2px 5px;\n min-width: auto;\n margin: 0 15px 0 0;\n font-size: 13px;\n font-weight: normal;\n border-bottom: 1px dashed;\n color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.rightPanel.textColor)};\n border-radius: 0;\n background: none;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.react-tabs__tab--selected {\n color: ${({ theme }) => theme.rightPanel.textColor};\n background: none;\n }\n }\n }\n > .react-tabs__tab-panel {\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 2}px 0;\n }\n }\n`;\n","import styled, { extensionsHook } from '../styled-components';\n\nexport const PrismDiv = styled.div`\n /**\n * Based on prism-dark.css\n */\n\n code[class*='language-'],\n pre[class*='language-'] {\n /* color: white;\n background: none; */\n text-shadow: 0 -0.1em 0.2em black;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n }\n\n @media print {\n code[class*='language-'],\n pre[class*='language-'] {\n text-shadow: none;\n }\n }\n\n /* Code blocks */\n pre[class*='language-'] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n }\n\n .token.comment,\n .token.prolog,\n .token.doctype,\n .token.cdata {\n color: hsl(30, 20%, 50%);\n }\n\n .token.punctuation {\n opacity: 0.7;\n }\n\n .namespace {\n opacity: 0.7;\n }\n\n .token.property,\n .token.tag,\n .token.number,\n .token.constant,\n .token.symbol {\n color: #4a8bb3;\n }\n\n .token.boolean {\n color: #e64441;\n }\n\n .token.selector,\n .token.attr-name,\n .token.string,\n .token.char,\n .token.builtin,\n .token.inserted {\n color: #a0fbaa;\n & + a,\n & + a:visited {\n color: #4ed2ba;\n text-decoration: underline;\n }\n }\n\n .token.property.string {\n color: white;\n }\n\n .token.operator,\n .token.entity,\n .token.url,\n .token.variable {\n color: hsl(40, 90%, 60%);\n }\n\n .token.atrule,\n .token.attr-value,\n .token.keyword {\n color: hsl(350, 40%, 70%);\n }\n\n .token.regex,\n .token.important {\n color: #e90;\n }\n\n .token.important,\n .token.bold {\n font-weight: bold;\n }\n .token.italic {\n font-style: italic;\n }\n\n .token.entity {\n cursor: help;\n }\n\n .token.deleted {\n color: red;\n }\n\n ${extensionsHook('Prism')};\n`;\n","import styled from '../styled-components';\nimport { PrismDiv } from './PrismDiv';\n\nexport const SampleControls = styled.div`\n opacity: 0.7;\n transition: opacity 0.3s ease;\n text-align: right;\n &:focus-within {\n opacity: 1;\n }\n > button {\n background-color: transparent;\n border: 0;\n color: inherit;\n padding: 2px 10px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n font-size: ${({ theme }) => theme.typography.fontSize};\n line-height: ${({ theme }) => theme.typography.lineHeight};\n cursor: pointer;\n outline: 0;\n\n :hover,\n :focus {\n background: rgba(255, 255, 255, 0.1);\n }\n }\n`;\n\nexport const SampleControlsWrap = styled.div`\n &:hover ${SampleControls} {\n opacity: 1;\n }\n`;\n\nexport const StyledPre = styled(PrismDiv).attrs({\n as: 'pre',\n})`\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n overflow-x: auto;\n margin: 0;\n\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"perfect-scrollbar\");","import * as React from 'react';\n\nimport PerfectScrollbarType, * as PerfectScrollbarNamespace from 'perfect-scrollbar';\n\nimport { OptionsContext } from '../components/OptionsProvider';\nimport styled, { createGlobalStyle } from '../styled-components';\nimport { IS_BROWSER } from '../utils';\n\n/*\n * perfect scrollbar umd bundle uses exports assignment while module uses default export\n * so when bundled with webpack default export works but with jest it crashes\n * That's why the following ugly fix is required\n */\nconst PerfectScrollbarConstructor =\n PerfectScrollbarNamespace.default || (PerfectScrollbarNamespace as any as PerfectScrollbarType);\n\nlet psStyles = '';\nif (IS_BROWSER) {\n psStyles = require('perfect-scrollbar/css/perfect-scrollbar.css');\n psStyles = (typeof psStyles.toString === 'function' && psStyles.toString()) || '';\n psStyles = psStyles === '[object Object]' ? '' : psStyles;\n}\n\nconst PSStyling = createGlobalStyle`${psStyles}`;\n\nconst StyledScrollWrapper = styled.div`\n position: relative;\n`;\n\nexport interface PerfectScrollbarProps {\n options?: PerfectScrollbarType.Options;\n className?: string;\n updateFn?: (fn) => void;\n}\n\nexport class PerfectScrollbar extends React.Component<\n React.PropsWithChildren<PerfectScrollbarProps>\n> {\n private _container: HTMLElement;\n private inst: PerfectScrollbarType;\n\n componentDidMount() {\n const offset = (this._container.parentElement && this._container.parentElement.scrollTop) || 0;\n this.inst = new PerfectScrollbarConstructor(this._container, this.props.options || {});\n if (this._container.scrollTo) {\n this._container.scrollTo(0, offset);\n }\n }\n\n componentDidUpdate() {\n this.inst.update();\n }\n\n componentWillUnmount() {\n this.inst.destroy();\n }\n\n handleRef = ref => {\n this._container = ref;\n };\n\n render() {\n const { children, className, updateFn } = this.props;\n\n if (updateFn) {\n updateFn(this.componentDidUpdate.bind(this));\n }\n\n return (\n <>\n {psStyles && <PSStyling />}\n <StyledScrollWrapper className={`scrollbar-container ${className}`} ref={this.handleRef}>\n {children}\n </StyledScrollWrapper>\n </>\n );\n }\n}\n\nexport function PerfectScrollbarWrap(\n props: PerfectScrollbarProps & { children: JSX.Element[] | JSX.Element },\n) {\n return (\n <OptionsContext.Consumer>\n {options =>\n !options.nativeScrollbars ? (\n <PerfectScrollbar {...props}>{props.children}</PerfectScrollbar>\n ) : (\n <div\n style={{\n overflow: 'auto',\n overscrollBehavior: 'contain',\n msOverflowStyle: '-ms-autohiding-scrollbar',\n }}\n >\n {props.children}\n </div>\n )\n }\n </OptionsContext.Consumer>\n );\n}\n","import * as React from 'react';\nimport styled from '../../styled-components';\nimport { ArrowIconProps, DropdownProps, DropdownOption } from './types';\n\nconst ArrowSvg = ({ className, style }: ArrowIconProps): JSX.Element => (\n <svg\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n);\n\nconst ArrowIcon = styled(ArrowSvg)`\n position: absolute;\n pointer-events: none;\n z-index: 1;\n top: 50%;\n -webkit-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n transform: translateY(-50%);\n right: 8px;\n margin: auto;\n text-align: center;\n polyline {\n color: ${props => props.variant === 'dark' && 'white'};\n }\n`;\n\nconst DropdownComponent = (props: DropdownProps): JSX.Element => {\n const { options, onChange, placeholder, value = '', variant, className } = props;\n\n const handleOnChange = event => {\n const { selectedIndex } = event.target;\n const index = placeholder ? selectedIndex - 1 : selectedIndex;\n onChange(options[index]);\n };\n\n return (\n <div className={className}>\n <ArrowIcon variant={variant} />\n <select onChange={handleOnChange} value={value} className=\"dropdown-select\">\n {placeholder && (\n <option disabled hidden value={placeholder}>\n {placeholder}\n </option>\n )}\n {options.map(({ idx, value, title }: DropdownOption, index) => (\n <option key={idx || value + index} value={value}>\n {title || value}\n </option>\n ))}\n </select>\n <label>{value}</label>\n </div>\n );\n};\n\nexport const Dropdown = React.memo<DropdownProps>(DropdownComponent);\n","import styled from 'styled-components';\n\nimport { Dropdown as DropdownComponent } from './Dropdown';\n\nexport const Dropdown = styled(DropdownComponent)<{\n fullWidth?: boolean;\n}>`\n label {\n box-sizing: border-box;\n min-width: 100px;\n outline: none;\n display: inline-block;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n color: ${({ theme }) => theme.colors.text.primary};\n vertical-align: bottom;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')};\n text-transform: none;\n padding: 0 22px 0 4px;\n\n font-size: 0.929em;\n line-height: 1.5em;\n font-family: inherit;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n .dropdown-select {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n border: none;\n appearance: none;\n cursor: pointer;\n\n color: ${({ theme }) => theme.colors.text.primary};\n line-height: inherit;\n font-family: inherit;\n }\n box-sizing: border-box;\n min-width: 100px;\n outline: none;\n display: inline-block;\n border-radius: 2px;\n border: 1px solid rgba(38, 50, 56, 0.5);\n vertical-align: bottom;\n padding: 2px 0px 2px 6px;\n position: relative;\n width: auto;\n background: white;\n color: #263238;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n font-size: 0.929em;\n line-height: 1.5em;\n cursor: pointer;\n transition: border 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;\n\n &:hover,\n &:focus-within {\n border: 1px solid ${props => props.theme.colors.primary.main};\n color: ${props => props.theme.colors.primary.main};\n box-shadow: 0px 0px 0px 1px ${props => props.theme.colors.primary.main};\n }\n`;\n\nexport const SimpleDropdown = styled(Dropdown)`\n margin-left: 10px;\n text-transform: none;\n font-size: 0.969em;\n\n font-size: 1em;\n border: none;\n padding: 0 1.2em 0 0;\n background: transparent;\n\n &:hover,\n &:focus-within {\n border: none;\n box-shadow: none;\n label {\n color: ${props => props.theme.colors.primary.main};\n text-shadow: 0px 0px 0px ${props => props.theme.colors.primary.main};\n }\n }\n`;\n\nexport const MimeLabel = styled.span`\n margin-left: 10px;\n text-transform: none;\n font-size: 0.929em;\n color: black;\n`;\n","import * as React from 'react';\nimport { StyledComponent } from 'styled-components';\n\nimport { DropdownProps, MimeLabel, SimpleDropdown } from '../../common-elements/Dropdown';\n\nexport interface DropdownOrLabelProps extends DropdownProps {\n Label?: StyledComponent<any, any, Record<string, any>, never>;\n Dropdown?: StyledComponent<\n React.NamedExoticComponent<DropdownProps>,\n any,\n {\n fullWidth?: boolean | undefined;\n },\n never\n >;\n}\n\nexport function DropdownOrLabel(props: DropdownOrLabelProps): JSX.Element {\n const { Label = MimeLabel, Dropdown = SimpleDropdown } = props;\n if (props.options.length === 1) {\n return <Label>{props.options[0].value}</Label>;\n }\n return <Dropdown {...props} />;\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"dompurify\");","import { headerCommonMixin, linkifyMixin } from '../../common-elements';\nimport { PrismDiv } from '../../common-elements/PrismDiv';\nimport styled, { css, extensionsHook, ResolvedThemeInterface } from '../../styled-components';\n\nimport { StyledComponent } from 'styled-components';\n\nexport const linksCss = css`\n a {\n text-decoration: ${props => props.theme.typography.links.textDecoration};\n color: ${props => props.theme.typography.links.color};\n\n &:visited {\n color: ${props => props.theme.typography.links.visited};\n }\n\n &:hover {\n color: ${props => props.theme.typography.links.hover};\n text-decoration: ${props => props.theme.typography.links.hoverTextDecoration};\n }\n }\n`;\n\nexport const StyledMarkdownBlock = styled(\n PrismDiv as StyledComponent<\n 'div',\n ResolvedThemeInterface,\n { $compact?: boolean; $inline?: boolean }\n >,\n)`\n font-family: ${props => props.theme.typography.fontFamily};\n font-weight: ${props => props.theme.typography.fontWeightRegular};\n line-height: ${props => props.theme.typography.lineHeight};\n\n p {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n ${({ $compact }) =>\n $compact &&\n `\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n `}\n\n ${({ $inline }) =>\n $inline &&\n ` p {\n display: inline-block;\n }`}\n\n h1 {\n ${headerCommonMixin(1)};\n color: ${props => props.theme.colors.primary.main};\n margin-top: 0;\n }\n\n h2 {\n ${headerCommonMixin(2)};\n color: ${props => props.theme.colors.text.primary};\n }\n\n code {\n color: ${({ theme }) => theme.typography.code.color};\n background-color: ${({ theme }) => theme.typography.code.backgroundColor};\n\n font-family: ${props => props.theme.typography.code.fontFamily};\n border-radius: 2px;\n border: 1px solid rgba(38, 50, 56, 0.1);\n padding: 0 ${({ theme }) => theme.spacing.unit}px;\n font-size: ${props => props.theme.typography.code.fontSize};\n font-weight: ${({ theme }) => theme.typography.code.fontWeight};\n\n word-break: break-word;\n }\n\n pre {\n font-family: ${props => props.theme.typography.code.fontFamily};\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n background-color: ${({ theme }) => theme.codeBlock.backgroundColor};\n color: white;\n padding: ${props => props.theme.spacing.unit * 4}px;\n overflow-x: auto;\n line-height: normal;\n border-radius: 0;\n border: 1px solid rgba(38, 50, 56, 0.1);\n\n code {\n background-color: transparent;\n color: white;\n padding: 0;\n\n &:before,\n &:after {\n content: none;\n }\n }\n }\n\n blockquote {\n margin: 0;\n margin-bottom: 1em;\n padding: 0 15px;\n color: #777;\n border-left: 4px solid #ddd;\n }\n\n img {\n max-width: 100%;\n box-sizing: content-box;\n }\n\n ul,\n ol {\n padding-left: 2em;\n margin: 0;\n margin-bottom: 1em;\n\n ul,\n ol {\n margin-bottom: 0;\n margin-top: 0;\n }\n }\n\n table {\n display: block;\n width: 100%;\n overflow: auto;\n word-break: normal;\n word-break: keep-all;\n border-collapse: collapse;\n border-spacing: 0;\n margin-top: 1.5em;\n margin-bottom: 1.5em;\n }\n\n table tr {\n background-color: #fff;\n border-top: 1px solid #ccc;\n\n &:nth-child(2n) {\n background-color: ${({ theme }) => theme.schema.nestedBackground};\n }\n }\n\n table th,\n table td {\n padding: 6px 13px;\n border: 1px solid #ddd;\n }\n\n table th {\n text-align: left;\n font-weight: bold;\n }\n\n ${linkifyMixin('.share-link')};\n\n ${linksCss}\n\n ${extensionsHook('Markdown')};\n`;\n","import * as DOMPurify from 'dompurify';\nimport * as React from 'react';\n\nimport { OptionsConsumer } from '../OptionsProvider';\nimport { StylingMarkdownProps } from './Markdown';\nimport { StyledMarkdownBlock } from './styled.elements';\nimport styled from 'styled-components';\n\n// Workaround for DOMPurify type issues (https://github.com/cure53/DOMPurify/issues/1034)\nconst dompurify = DOMPurify['default'] as DOMPurify.DOMPurify;\n\nconst StyledMarkdownSpan = styled(StyledMarkdownBlock)`\n display: inline;\n`;\n\nconst sanitize = (sanitize, html) => (sanitize ? dompurify.sanitize(html) : html);\n\nexport function SanitizedMarkdownHTML({\n inline,\n compact,\n ...rest\n}: StylingMarkdownProps & { html: string; className?: string; 'data-role'?: string }) {\n const Wrap = inline ? StyledMarkdownSpan : StyledMarkdownBlock;\n\n return (\n <OptionsConsumer>\n {options => (\n <Wrap\n className={'redoc-markdown ' + (rest.className || '')}\n dangerouslySetInnerHTML={{\n __html: sanitize(options.sanitize, rest.html),\n }}\n data-role={rest['data-role']}\n {...rest}\n $inline={inline}\n $compact={compact}\n />\n )}\n </OptionsConsumer>\n );\n}\n","import * as React from 'react';\n\nimport { MarkdownRenderer } from '../../services';\nimport { SanitizedMarkdownHTML } from './SanitizedMdBlock';\n\nexport interface StylingMarkdownProps {\n compact?: boolean;\n inline?: boolean;\n}\n\nexport interface BaseMarkdownProps {\n sanitize?: boolean;\n source: string;\n}\n\nexport type MarkdownProps = BaseMarkdownProps &\n StylingMarkdownProps & {\n source: string;\n className?: string;\n 'data-role'?: string;\n };\n\nexport class Markdown extends React.Component<MarkdownProps> {\n render() {\n const { source, inline, compact, className, 'data-role': dataRole } = this.props;\n const renderer = new MarkdownRenderer();\n return (\n <SanitizedMarkdownHTML\n html={renderer.renderMd(source)}\n inline={inline}\n compact={compact}\n className={className}\n data-role={dataRole}\n />\n );\n }\n}\n","import * as React from 'react';\n\nimport styled from '../styled-components';\n\nconst Wrapper = styled.div`\n position: relative;\n`;\n\nconst Tip = styled.div`\n position: absolute;\n min-width: 80px;\n max-width: 500px;\n background: #fff;\n bottom: 100%;\n left: 50%;\n margin-bottom: 10px;\n transform: translateX(-50%);\n\n border-radius: 4px;\n padding: 0.3em 0.6em;\n text-align: center;\n box-shadow: 0px 0px 5px 0px rgba(204, 204, 204, 1);\n`;\n\nconst Content = styled.div`\n background: #fff;\n color: #000;\n display: inline;\n font-size: 0.85em;\n white-space: nowrap;\n`;\n\nconst Arrow = styled.div`\n position: absolute;\n width: 0;\n height: 0;\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n border-left: solid transparent 5px;\n border-right: solid transparent 5px;\n border-top: solid #fff 5px;\n`;\n\nconst Gap = styled.div`\n position: absolute;\n width: 100%;\n height: 20px;\n bottom: -20px;\n`;\n\nexport interface TooltipProps extends React.PropsWithChildren<any> {\n open: boolean;\n title: string;\n}\n\nexport class Tooltip extends React.Component<TooltipProps> {\n render() {\n const { open, title, children } = this.props;\n return (\n <Wrapper>\n {children}\n {open && (\n <Tip>\n <Content>{title}</Content>\n <Arrow />\n <Gap />\n </Tip>\n )}\n </Wrapper>\n );\n }\n}\n","const isSupported =\n typeof document !== 'undefined' &&\n document.queryCommandSupported &&\n document.queryCommandSupported('copy');\n\nexport class ClipboardService {\n static isSupported(): boolean {\n return isSupported;\n }\n\n static selectElement(element: any): void {\n let range;\n let selection;\n if ((document.body as any).createTextRange) {\n range = (document.body as any).createTextRange();\n range.moveToElementText(element);\n range.select();\n } else if (document.createRange && window.getSelection) {\n selection = window.getSelection();\n range = document.createRange();\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n static deselect(): void {\n if ((document as any).selection) {\n (document as any).selection.empty();\n } else if (window.getSelection) {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n }\n }\n\n static copySelected(): boolean {\n let result;\n try {\n result = document.execCommand('copy');\n } catch (err) {\n result = false;\n }\n return result;\n }\n\n static copyElement(element: any): boolean {\n ClipboardService.selectElement(element);\n const res = ClipboardService.copySelected();\n if (res) {\n ClipboardService.deselect();\n }\n return res;\n }\n\n static copyCustom(text: string): boolean {\n const textArea = document.createElement('textarea');\n textArea.style.position = 'fixed';\n textArea.style.top = '0';\n textArea.style.left = '0';\n\n // Ensure it has a small width and height. Setting to 1px / 1em\n // doesn't work as this gives a negative w/h on some browsers.\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n\n // We don't need padding, reducing the size if it does flash render.\n textArea.style.padding = '0';\n\n // Clean up any borders.\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n\n // Avoid flash of white box if rendered for any reason.\n textArea.style.background = 'transparent';\n\n textArea.value = text;\n\n document.body.appendChild(textArea);\n\n textArea.select();\n\n const res = ClipboardService.copySelected();\n\n document.body.removeChild(textArea);\n return res;\n }\n}\n","import * as React from 'react';\nimport { Tooltip } from '../common-elements/Tooltip';\n\nimport { ClipboardService } from '../services/ClipboardService';\n\nexport interface CopyButtonWrapperProps {\n data: any;\n children: (props: { renderCopyButton: () => React.ReactNode }) => React.ReactNode;\n}\n\nexport const CopyButtonWrapper = (\n props: CopyButtonWrapperProps & { tooltipShown?: boolean },\n): JSX.Element => {\n const [tooltipShown, setTooltipShown] = React.useState(false);\n\n const copy = () => {\n const content =\n typeof props.data === 'string' ? props.data : JSON.stringify(props.data, null, 2);\n ClipboardService.copyCustom(content);\n showTooltip();\n };\n\n const renderCopyButton = () => {\n return (\n <button onClick={copy}>\n <Tooltip\n title={ClipboardService.isSupported() ? 'Copied' : 'Not supported in your browser'}\n open={tooltipShown}\n >\n Copy\n </Tooltip>\n </button>\n );\n };\n\n const showTooltip = () => {\n setTooltipShown(true);\n\n setTimeout(() => {\n setTooltipShown(false);\n }, 1500);\n };\n return props.children({ renderCopyButton: renderCopyButton }) as JSX.Element;\n};\n","let level = 1;\n\nexport function jsonToHTML(json, maxExpandLevel) {\n level = 1;\n let output = '';\n output += '<div class=\"redoc-json\">';\n output += '<code>';\n output += valueToHTML(json, maxExpandLevel);\n output += '</code>';\n output += '</div>';\n return output;\n}\n\nfunction htmlEncode(t) {\n return t !== undefined\n ? t\n .toString()\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n : '';\n}\n\nfunction stringifyStringLiteral(str: string) {\n return JSON.stringify(str).slice(1, -1);\n}\n\nfunction decorateWithSpan(value, className) {\n return '<span class=\"' + className + '\">' + htmlEncode(value) + '</span>';\n}\n\nfunction punctuation(val) {\n return '<span class=\"token punctuation\">' + val + '</span>';\n}\n\nfunction valueToHTML(value, maxExpandLevel: number) {\n const valueType = typeof value;\n let output = '';\n if (value === undefined || value === null) {\n output += decorateWithSpan('null', 'token keyword');\n } else if (value && value.constructor === Array) {\n level++;\n output += arrayToHTML(value, maxExpandLevel);\n level--;\n } else if (value && value.constructor === Date) {\n output += decorateWithSpan('\"' + value.toISOString() + '\"', 'token string');\n } else if (valueType === 'object') {\n level++;\n output += objectToHTML(value, maxExpandLevel);\n level--;\n } else if (valueType === 'number') {\n output += decorateWithSpan(value, 'token number');\n } else if (valueType === 'string') {\n if (/^(http|https):\\/\\/[^\\s]+$/.test(value)) {\n output +=\n decorateWithSpan('\"', 'token string') +\n '<a href=\"' +\n encodeURI(value) +\n '\">' +\n htmlEncode(stringifyStringLiteral(value)) +\n '</a>' +\n decorateWithSpan('\"', 'token string');\n } else {\n output += decorateWithSpan('\"' + stringifyStringLiteral(value) + '\"', 'token string');\n }\n } else if (valueType === 'boolean') {\n output += decorateWithSpan(value, 'token boolean');\n }\n\n return output;\n}\n\nfunction arrayToHTML(json, maxExpandLevel: number) {\n const collapsed = level > maxExpandLevel ? 'collapsed' : '';\n let output = `<button class=\"collapser\" aria-label=\"${\n level > maxExpandLevel + 1 ? 'expand' : 'collapse'\n }\"></button>${punctuation('[')}<span class=\"ellipsis\"></span><ul class=\"array collapsible\">`;\n let hasContents = false;\n const length = json.length;\n for (let i = 0; i < length; i++) {\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += valueToHTML(json[i], maxExpandLevel);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += `</ul>${punctuation(']')}`;\n if (!hasContents) {\n output = punctuation('[ ]');\n }\n return output;\n}\n\nfunction objectToHTML(json, maxExpandLevel: number) {\n const collapsed = level > maxExpandLevel ? 'collapsed' : '';\n const keys = Object.keys(json);\n const length = keys.length;\n let output = `<button class=\"collapser\" aria-label=\"${\n level > maxExpandLevel + 1 ? 'expand' : 'collapse'\n }\"></button>${punctuation('{')}<span class=\"ellipsis\"></span><ul class=\"obj collapsible\">`;\n let hasContents = false;\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += '<span class=\"property token string\">\"' + htmlEncode(key) + '\"</span>: ';\n output += valueToHTML(json[key], maxExpandLevel);\n if (i < length - 1) {\n output += punctuation(',');\n }\n output += '</div></li>';\n }\n output += `</ul>${punctuation('}')}`;\n if (!hasContents) {\n output = punctuation('{ }');\n }\n return output;\n}\n","import { css } from '../../styled-components';\n\nexport const jsonStyles = css`\n .redoc-json code > .collapser {\n display: none;\n pointer-events: none;\n }\n\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n contain: content;\n overflow-x: auto;\n\n .callback-function {\n color: gray;\n }\n\n .collapser:after {\n content: '-';\n cursor: pointer;\n }\n\n .collapsed > .collapser:after {\n content: '+';\n cursor: pointer;\n }\n\n .ellipsis:after {\n content: ' … ';\n }\n\n .collapsible {\n margin-left: 2em;\n }\n\n .hoverable {\n padding-top: 1px;\n padding-bottom: 1px;\n padding-left: 2px;\n padding-right: 2px;\n border-radius: 2px;\n }\n\n .hovered {\n background-color: rgba(235, 238, 249, 1);\n }\n\n .collapser {\n background-color: transparent;\n border: 0;\n color: #fff;\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n padding-right: 6px;\n padding-left: 6px;\n padding-top: 0;\n padding-bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15px;\n height: 15px;\n position: absolute;\n top: 4px;\n left: -1.5em;\n cursor: default;\n user-select: none;\n -webkit-user-select: none;\n padding: 2px;\n &:focus {\n outline-color: #fff;\n outline-style: dotted;\n outline-width: 1px;\n }\n }\n\n ul {\n list-style-type: none;\n padding: 0px;\n margin: 0px 0px 0px 26px;\n }\n\n li {\n position: relative;\n display: block;\n }\n\n .hoverable {\n display: inline-block;\n }\n\n .selected {\n outline-style: solid;\n outline-width: 1px;\n outline-style: dotted;\n }\n\n .collapsed > .collapsible {\n display: none;\n }\n\n .ellipsis {\n display: none;\n }\n\n .collapsed > .ellipsis {\n display: inherit;\n }\n`;\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { SampleControls } from '../../common-elements';\nimport { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper';\nimport { PrismDiv } from '../../common-elements/PrismDiv';\nimport { jsonToHTML } from '../../utils/jsonToHtml';\nimport { OptionsContext } from '../OptionsProvider';\nimport { jsonStyles } from './style';\n\nexport interface JsonProps {\n data: any;\n className?: string;\n}\n\nconst JsonViewerWrap = styled.div`\n &:hover > ${SampleControls} {\n opacity: 1;\n }\n`;\n\nconst Json = (props: JsonProps) => {\n const [node, setNode] = React.useState<HTMLDivElement>();\n\n const renderInner = ({ renderCopyButton }) => {\n const showFoldingButtons =\n props.data &&\n Object.values(props.data).some(value => typeof value === 'object' && value !== null);\n\n return (\n <JsonViewerWrap>\n <SampleControls>\n {renderCopyButton()}\n {showFoldingButtons && (\n <>\n <button onClick={expandAll}> Expand all </button>\n <button onClick={collapseAll}> Collapse all </button>\n </>\n )}\n </SampleControls>\n <OptionsContext.Consumer>\n {options => (\n <PrismDiv\n tabIndex={0}\n className={props.className}\n // tslint:disable-next-line\n ref={node => setNode(node!)}\n dangerouslySetInnerHTML={{\n __html: jsonToHTML(props.data, options.jsonSamplesExpandLevel),\n }}\n />\n )}\n </OptionsContext.Consumer>\n </JsonViewerWrap>\n );\n };\n\n const expandAll = () => {\n const elements = node?.getElementsByClassName('collapsible');\n for (const collapsed of Array.prototype.slice.call(elements)) {\n const parentNode = collapsed.parentNode as Element;\n parentNode.classList.remove('collapsed');\n parentNode.querySelector('.collapser')!.setAttribute('aria-label', 'collapse');\n }\n };\n\n const collapseAll = () => {\n const elements = node?.getElementsByClassName('collapsible');\n // skip first item to avoid collapsing whole object/array\n const elementsArr = Array.prototype.slice.call(elements, 1);\n\n for (const expanded of elementsArr) {\n const parentNode = expanded.parentNode as Element;\n parentNode.classList.add('collapsed');\n parentNode.querySelector('.collapser')!.setAttribute('aria-label', 'expand');\n }\n };\n\n const collapseElement = (target: HTMLElement) => {\n let collapsed;\n if (target.className === 'collapser') {\n collapsed = target.parentElement!.getElementsByClassName('collapsible')[0];\n if (collapsed.parentElement.classList.contains('collapsed')) {\n collapsed.parentElement.classList.remove('collapsed');\n target.setAttribute('aria-label', 'collapse');\n } else {\n collapsed.parentElement.classList.add('collapsed');\n target.setAttribute('aria-label', 'expand');\n }\n }\n };\n\n const clickListener = React.useCallback((event: MouseEvent) => {\n collapseElement(event.target as HTMLElement);\n }, []);\n\n const focusListener = React.useCallback((event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n collapseElement(event.target as HTMLElement);\n }\n }, []);\n\n React.useEffect(() => {\n node?.addEventListener('click', clickListener);\n node?.addEventListener('focus', focusListener);\n return () => {\n node?.removeEventListener('click', clickListener);\n node?.removeEventListener('focus', focusListener);\n };\n }, [clickListener, focusListener, node]);\n\n return <CopyButtonWrapper data={props.data}>{renderInner}</CopyButtonWrapper>;\n};\n\nexport const JsonViewer = styled(Json)`\n ${jsonStyles};\n`;\n","import * as React from 'react';\nimport { highlight } from '../../utils';\n\nimport { SampleControls, SampleControlsWrap, StyledPre } from '../../common-elements';\nimport { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper';\n\nexport interface SourceCodeProps {\n source: string;\n lang: string;\n}\n\nexport const SourceCode = (props: SourceCodeProps) => {\n const { source, lang } = props;\n return <StyledPre dangerouslySetInnerHTML={{ __html: highlight(source, lang) }} />;\n};\n\nexport const SourceCodeWithCopy = (props: SourceCodeProps) => {\n const { source, lang } = props;\n return (\n <CopyButtonWrapper data={source}>\n {({ renderCopyButton }) => (\n <SampleControlsWrap>\n <SampleControls>{renderCopyButton()}</SampleControls>\n <SourceCode lang={lang} source={source} />\n </SampleControlsWrap>\n )}\n </CopyButtonWrapper>\n );\n};\n","import * as React from 'react';\n\nimport { isJsonLike, langFromMime } from '../../utils/openapi';\nimport { JsonViewer } from '../JsonViewer/JsonViewer';\nimport { SourceCodeWithCopy } from '../SourceCode/SourceCode';\n\nexport interface ExampleValueProps {\n value: any;\n mimeType: string;\n}\n\nexport function ExampleValue({ value, mimeType }: ExampleValueProps) {\n if (isJsonLike(mimeType)) {\n return <JsonViewer data={value} />;\n } else {\n if (typeof value === 'object') {\n // just in case example was cached as json but used as non-json\n value = JSON.stringify(value, null, 2);\n }\n return <SourceCodeWithCopy lang={langFromMime(mimeType)} source={value} />;\n }\n}\n","import * as React from 'react';\n\nimport { StyledPre } from '../../common-elements/samples';\nimport { ExampleModel } from '../../services/models';\nimport { ExampleValue } from './ExampleValue';\nimport { useExternalExample } from './exernalExampleHook';\n\nexport interface ExampleProps {\n example: ExampleModel;\n mimeType: string;\n}\n\nexport function Example({ example, mimeType }: ExampleProps) {\n if (example.value === undefined && example.externalValueUrl) {\n return <ExternalExample example={example} mimeType={mimeType} />;\n } else {\n return <ExampleValue value={example.value} mimeType={mimeType} />;\n }\n}\n\nexport function ExternalExample({ example, mimeType }: ExampleProps) {\n const value = useExternalExample(example, mimeType);\n\n if (value === undefined) {\n return <span>Loading...</span>;\n }\n\n if (value instanceof Error) {\n return (\n <StyledPre>\n Error loading external example: <br />\n <a\n className={'token string'}\n href={example.externalValueUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {example.externalValueUrl}\n </a>\n </StyledPre>\n );\n }\n\n return <ExampleValue value={value} mimeType={mimeType} />;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { ExampleModel } from '../../services/models/Example';\n\nexport function useExternalExample(example: ExampleModel, mimeType: string) {\n const [, setIsLoading] = useState(true); // to trigger component reload\n\n const value = useRef<any>(undefined);\n const prevRef = useRef<ExampleModel | undefined>(undefined);\n\n if (prevRef.current !== example) {\n value.current = undefined;\n }\n\n prevRef.current = example;\n\n useEffect(() => {\n const load = async () => {\n setIsLoading(true);\n try {\n value.current = await example.getExternalValue(mimeType);\n } catch (e) {\n value.current = e;\n }\n setIsLoading(false);\n };\n\n load();\n }, [example, mimeType]);\n\n return value.current;\n}\n","import { transparentize } from 'polished';\nimport styled from '../../styled-components';\nimport { Dropdown } from '../../common-elements/Dropdown';\n\nexport const MimeLabel = styled.div`\n padding: 0.9em;\n background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)};\n margin: 0 0 10px 0;\n display: block;\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-size: 0.929em;\n line-height: 1.5em;\n`;\n\nexport const DropdownLabel = styled.span`\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-size: 12px;\n position: absolute;\n z-index: 1;\n top: -11px;\n left: 12px;\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n color: ${({ theme }) => transparentize(0.3, theme.rightPanel.textColor)};\n`;\n\nexport const DropdownWrapper = styled.div`\n position: relative;\n`;\n\nexport const InvertedSimpleDropdown = styled(Dropdown)`\n label {\n color: ${({ theme }) => theme.rightPanel.textColor};\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n font-size: 1em;\n text-transform: none;\n border: none;\n }\n margin: 0 0 10px 0;\n display: block;\n background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)};\n border: none;\n padding: 0.9em 1.6em 0.9em 0.9em;\n box-shadow: none;\n &:hover,\n &:focus-within {\n border: none;\n box-shadow: none;\n background-color: ${({ theme }) => transparentize(0.3, theme.rightPanel.backgroundColor)};\n }\n`;\n\nexport const NoSampleLabel = styled.div`\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: 12px;\n color: #ee807f;\n`;\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nimport { DropdownOption, DropdownProps } from '../../common-elements';\nimport { MediaTypeModel } from '../../services/models';\nimport { Markdown } from '../Markdown/Markdown';\nimport { Example } from './Example';\nimport { DropdownLabel, DropdownWrapper, NoSampleLabel } from './styled.elements';\n\nexport interface PayloadSamplesProps {\n mediaType: MediaTypeModel;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n}\n\ninterface MediaTypeSamplesState {\n activeIdx: number;\n}\n\nexport class MediaTypeSamples extends React.Component<PayloadSamplesProps, MediaTypeSamplesState> {\n state = {\n activeIdx: 0,\n };\n switchMedia = ({ idx }: DropdownOption) => {\n if (idx !== undefined) {\n this.setState({\n activeIdx: idx,\n });\n }\n };\n render() {\n const { activeIdx } = this.state;\n const examples = this.props.mediaType.examples || {};\n const mimeType = this.props.mediaType.name;\n\n const noSample = <NoSampleLabel>No sample</NoSampleLabel>;\n\n const examplesNames = Object.keys(examples);\n if (examplesNames.length === 0) {\n return noSample;\n }\n\n if (examplesNames.length > 1) {\n const options = examplesNames.map((name, idx) => {\n return {\n value: examples[name].summary || name,\n idx,\n };\n });\n\n const example = examples[examplesNames[activeIdx]];\n const description = example.description;\n\n return (\n <SamplesWrapper>\n <DropdownWrapper>\n <DropdownLabel>Example</DropdownLabel>\n {this.props.renderDropdown({\n value: options[activeIdx].value,\n options,\n onChange: this.switchMedia,\n ariaLabel: 'Example',\n })}\n </DropdownWrapper>\n <div>\n {description && <Markdown source={description} />}\n <Example example={example} mimeType={mimeType} />\n </div>\n </SamplesWrapper>\n );\n } else {\n const example = examples[examplesNames[0]];\n return (\n <SamplesWrapper>\n {example.description && <Markdown source={example.description} />}\n <Example example={example} mimeType={mimeType} />\n </SamplesWrapper>\n );\n }\n }\n}\n\nconst SamplesWrapper = styled.div`\n margin-top: 15px;\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-react\");","import { transparentize } from 'polished';\n\nimport styled, { css, extensionsHook } from '../styled-components';\nimport { PropertyNameCell } from './fields-layout';\nimport { deprecatedCss } from './mixins';\nimport { ShelfIcon } from './shelfs';\n\nexport const ClickablePropertyNameCell = styled(PropertyNameCell)`\n &.deprecated {\n span.property-name {\n ${deprecatedCss}\n }\n }\n\n button {\n background-color: transparent;\n border: 0;\n outline: 0;\n font-size: 13px;\n font-family: ${props => props.theme.typography.code.fontFamily};\n cursor: pointer;\n padding: 0;\n color: ${props => props.theme.colors.text.primary};\n &:focus {\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n }\n ${({ kind }) =>\n kind === 'patternProperties' &&\n css`\n display: inline-flex;\n margin-right: 20px;\n\n > span.property-name {\n white-space: break-spaces;\n text-align: left;\n\n ::before,\n ::after {\n content: '/';\n filter: opacity(0.2);\n }\n }\n\n > svg {\n align-self: center;\n }\n `}\n }\n ${ShelfIcon} {\n height: ${({ theme }) => theme.schema.arrow.size};\n width: ${({ theme }) => theme.schema.arrow.size};\n polygon {\n fill: ${({ theme }) => theme.schema.arrow.color};\n }\n }\n`;\n\nexport const FieldLabel = styled.span`\n vertical-align: middle;\n font-size: ${({ theme }) => theme.typography.code.fontSize};\n line-height: 20px;\n`;\n\nexport const TypePrefix = styled(FieldLabel)`\n color: ${props => transparentize(0.1, props.theme.schema.typeNameColor)};\n`;\n\nexport const TypeName = styled(FieldLabel)`\n color: ${props => props.theme.schema.typeNameColor};\n`;\n\nexport const TypeTitle = styled(FieldLabel)`\n color: ${props => props.theme.schema.typeTitleColor};\n word-break: break-word;\n`;\n\nexport const TypeFormat = TypeName;\n\nexport const RequiredLabel = styled(FieldLabel).attrs({\n as: 'div',\n})`\n color: ${props => props.theme.schema.requireLabelColor};\n font-size: ${props => props.theme.schema.labelsTextSize};\n font-weight: normal;\n margin-left: 20px;\n line-height: 1;\n`;\n\nexport const PropertyLabel = styled(RequiredLabel)`\n color: ${props => props.theme.colors.primary.light};\n`;\n\nexport const RecursiveLabel = styled(FieldLabel)`\n color: ${({ theme }) => theme.colors.warning.main};\n font-size: 13px;\n`;\n\nexport const PatternLabel = styled(FieldLabel)`\n color: #0e7c86;\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: 12px;\n &::before,\n &::after {\n content: ' ';\n }\n`;\n\nexport const ExampleValue = styled(FieldLabel)`\n border-radius: 2px;\n word-break: break-word;\n ${({ theme }) => `\n background-color: ${transparentize(0.95, theme.colors.text.primary)};\n color: ${transparentize(0.1, theme.colors.text.primary)};\n\n padding: 0 ${theme.spacing.unit}px;\n border: 1px solid ${transparentize(0.9, theme.colors.text.primary)};\n font-family: ${theme.typography.code.fontFamily};\n}`};\n & + & {\n margin-left: 0;\n }\n ${extensionsHook('ExampleValue')};\n`;\n\nexport const ExtensionValue = styled(ExampleValue)``;\n\nexport const ConstraintItem = styled(FieldLabel)`\n border-radius: 2px;\n ${({ theme }) => `\n background-color: ${transparentize(0.95, theme.colors.primary.light)};\n color: ${transparentize(0.1, theme.colors.primary.main)};\n\n margin: 0 ${theme.spacing.unit}px;\n padding: 0 ${theme.spacing.unit}px;\n border: 1px solid ${transparentize(0.9, theme.colors.primary.main)};\n}`};\n & + & {\n margin-left: 0;\n }\n ${extensionsHook('ConstraintItem')};\n`;\n\nexport const ToggleButton = styled.button`\n background-color: transparent;\n border: 0;\n color: ${({ theme }) => theme.colors.text.secondary};\n margin-left: ${({ theme }) => theme.spacing.unit}px;\n border-radius: 2px;\n cursor: pointer;\n outline-color: ${({ theme }) => theme.colors.text.secondary};\n font-size: 12px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport styled from '../../styled-components';\nimport { OpenAPIExternalDocumentation } from '../../types';\nimport { linksCss } from '../Markdown/styled.elements';\n\nconst LinkWrap = styled.div<{ $compact?: boolean }>`\n ${linksCss};\n ${({ $compact }) => (!$compact ? 'margin: 1em 0' : '')}\n`;\n\n@observer\nexport class ExternalDocumentation extends React.Component<{\n externalDocs: OpenAPIExternalDocumentation;\n compact?: boolean;\n}> {\n render() {\n const { externalDocs } = this.props;\n if (!externalDocs || !externalDocs.url) {\n return null;\n }\n\n return (\n <LinkWrap $compact={this.props.compact}>\n <a href={externalDocs.url}>{externalDocs.description || externalDocs.url}</a>\n </LinkWrap>\n );\n }\n}\n","import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nimport { l } from '../../services/Labels';\nimport { OptionsContext } from '../OptionsProvider';\nimport styled from '../../styled-components';\nimport { RedocRawOptions } from '../../services/RedocNormalizedOptions';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface EnumValuesProps {\n values?: string[] | { [name: string]: string };\n type: string | string[];\n}\n\nexport interface EnumValuesState {\n collapsed: boolean;\n}\n\nconst DescriptionEnumsBlock = styled(StyledMarkdownBlock)`\n table {\n margin-bottom: 0.2em;\n }\n`;\n\nexport class EnumValues extends React.PureComponent<EnumValuesProps, EnumValuesState> {\n constructor(props: EnumValuesProps) {\n super(props);\n this.toggle = this.toggle.bind(this);\n }\n state: EnumValuesState = {\n collapsed: true,\n };\n\n static contextType = OptionsContext;\n\n private toggle() {\n this.setState({ collapsed: !this.state.collapsed });\n }\n\n render() {\n const { values, type } = this.props;\n const { collapsed } = this.state;\n const isDescriptionEnum = !Array.isArray(values);\n const enums =\n (Array.isArray(values) && values) ||\n Object.entries(values || {}).map(([value, description]) => ({\n value,\n description,\n }));\n\n // TODO: provide context interface in more elegant way\n const { enumSkipQuotes, maxDisplayedEnumValues } = this.context as RedocRawOptions;\n\n if (!enums.length) {\n return null;\n }\n\n const displayedItems =\n this.state.collapsed && maxDisplayedEnumValues\n ? enums.slice(0, maxDisplayedEnumValues)\n : enums;\n\n const showToggleButton = maxDisplayedEnumValues ? enums.length > maxDisplayedEnumValues : false;\n\n const toggleButtonText = maxDisplayedEnumValues\n ? collapsed\n ? `… ${enums.length - maxDisplayedEnumValues} more`\n : 'Hide'\n : '';\n\n return (\n <div>\n {isDescriptionEnum ? (\n <>\n <DescriptionEnumsBlock>\n <table>\n <thead>\n <tr>\n <th>\n <FieldLabel>\n {type === 'array' ? l('enumArray') : ''}{' '}\n {enums.length === 1 ? l('enumSingleValue') : l('enum')}\n </FieldLabel>{' '}\n </th>\n <th>\n <strong>Description</strong>\n </th>\n </tr>\n </thead>\n <tbody>\n {(displayedItems as { value: string; description: string }[]).map(\n ({ description, value }) => {\n return (\n <tr key={value}>\n <td>{value}</td>\n <td>\n <Markdown source={description} compact inline />\n </td>\n </tr>\n );\n },\n )}\n </tbody>\n </table>\n </DescriptionEnumsBlock>\n {showToggleButton ? (\n <ToggleButton onClick={this.toggle}>{toggleButtonText}</ToggleButton>\n ) : null}\n </>\n ) : (\n <>\n <FieldLabel>\n {type === 'array' ? l('enumArray') : ''}{' '}\n {values.length === 1 ? l('enumSingleValue') : l('enum')}:\n </FieldLabel>{' '}\n {displayedItems.map((value, idx) => {\n const exampleValue = enumSkipQuotes ? String(value) : JSON.stringify(value);\n return (\n <React.Fragment key={idx}>\n <ExampleValue>{exampleValue}</ExampleValue>{' '}\n </React.Fragment>\n );\n })}\n {showToggleButton ? (\n <ToggleButton onClick={this.toggle}>{toggleButtonText}</ToggleButton>\n ) : null}\n </>\n )}\n </div>\n );\n }\n}\n\nconst ToggleButton = styled.span`\n color: ${props => props.theme.colors.primary.main};\n vertical-align: middle;\n font-size: 13px;\n line-height: 20px;\n padding: 0 5px;\n cursor: pointer;\n`;\n","import * as React from 'react';\n\nimport { ExtensionValue, FieldLabel } from '../../common-elements/fields';\n\nimport styled from '../../styled-components';\n\nimport { OptionsContext } from '../OptionsProvider';\n\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\n\nconst Extension = styled(StyledMarkdownBlock)`\n margin: 2px 0;\n`;\n\nexport interface ExtensionsProps {\n extensions: {\n [k: string]: any;\n };\n}\n\nexport class Extensions extends React.PureComponent<ExtensionsProps> {\n render() {\n const exts = this.props.extensions;\n return (\n <OptionsContext.Consumer>\n {options => (\n <>\n {options.showExtensions &&\n Object.keys(exts).map(key => (\n <Extension key={key}>\n <FieldLabel> {key.substring(2)}: </FieldLabel>{' '}\n <ExtensionValue>\n {typeof exts[key] === 'string' ? exts[key] : JSON.stringify(exts[key])}\n </ExtensionValue>\n </Extension>\n ))}\n </>\n )}\n </OptionsContext.Consumer>\n );\n }\n}\n","import * as React from 'react';\n\nimport { FieldLabel, ExampleValue } from '../../common-elements/fields';\nimport { getSerializedValue, isArray } from '../../utils';\n\nimport { l } from '../../services/Labels';\nimport { FieldModel } from '../../services';\nimport styled from '../../styled-components';\n\nexport function Examples({ field }: { field: FieldModel }) {\n if (!field.examples) {\n return null;\n }\n\n return (\n <>\n <FieldLabel> {l('examples')}: </FieldLabel>\n {isArray(field.examples) ? (\n field.examples.map((example, idx) => {\n const value = getSerializedValue(field, example);\n const stringifyValue = field.in ? String(value) : JSON.stringify(value);\n return (\n <React.Fragment key={idx}>\n <ExampleValue>{stringifyValue}</ExampleValue>{' '}\n </React.Fragment>\n );\n })\n ) : (\n <ExamplesList>\n {Object.values(field.examples).map((example, idx) => (\n <li key={idx + example.value}>\n <ExampleValue>{getSerializedValue(field, example.value)}</ExampleValue> -{' '}\n {example.summary || example.description}\n </li>\n ))}\n </ExamplesList>\n )}\n </>\n );\n}\n\nconst ExamplesList = styled.ul`\n margin-top: 1em;\n list-style-position: outside;\n`;\n","import * as React from 'react';\nimport { ConstraintItem } from '../../common-elements/fields';\n\nexport interface ConstraintsViewProps {\n constraints: string[];\n}\n\nexport class ConstraintsView extends React.PureComponent<ConstraintsViewProps> {\n render() {\n if (this.props.constraints.length === 0) {\n return null;\n }\n return (\n <span>\n {' '}\n {this.props.constraints.map(constraint => (\n <ConstraintItem key={constraint}> {constraint} </ConstraintItem>\n ))}\n </span>\n );\n }\n}\n","import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nexport interface FieldDetailProps {\n value?: any;\n label: string;\n raw?: boolean;\n}\n\nfunction FieldDetailComponent({ value, label, raw }: FieldDetailProps) {\n if (value === undefined) {\n return null;\n }\n\n const stringifyValue = raw ? String(value) : JSON.stringify(value);\n\n return (\n <div>\n <FieldLabel> {label} </FieldLabel> <ExampleValue>{stringifyValue}</ExampleValue>\n </div>\n );\n}\n\nexport const FieldDetail = React.memo<FieldDetailProps>(FieldDetailComponent);\n","import * as React from 'react';\nimport { PatternLabel, ToggleButton } from '../../common-elements/fields';\nimport { OptionsContext } from '../OptionsProvider';\nimport { SchemaModel } from '../../services';\n\nconst MAX_PATTERN_LENGTH = 45;\n\nexport function Pattern(props: { schema: SchemaModel }) {\n const pattern = props.schema.pattern;\n const { hideSchemaPattern } = React.useContext(OptionsContext);\n const [isPatternShown, setIsPatternShown] = React.useState(false);\n const togglePattern = React.useCallback(\n () => setIsPatternShown(!isPatternShown),\n [isPatternShown],\n );\n\n if (!pattern || hideSchemaPattern) return null;\n\n return (\n <>\n <PatternLabel>\n {isPatternShown || pattern.length < MAX_PATTERN_LENGTH\n ? pattern\n : `${pattern.substr(0, MAX_PATTERN_LENGTH)}...`}\n </PatternLabel>\n {pattern.length > MAX_PATTERN_LENGTH && (\n <ToggleButton onClick={togglePattern}>\n {isPatternShown ? 'Hide pattern' : 'Show pattern'}\n </ToggleButton>\n )}\n </>\n );\n}\n","import * as React from 'react';\nimport { TypeFormat, TypePrefix } from '../../common-elements/fields';\nimport { ConstraintsView } from './FieldConstraints';\nimport { Pattern } from './Pattern';\nimport { SchemaModel } from '../../services';\nimport styled from '../../styled-components';\nimport { OptionsContext } from '../OptionsProvider';\n\nexport function ArrayItemDetails({ schema }: { schema: SchemaModel }) {\n const { hideSchemaPattern } = React.useContext(OptionsContext);\n if (\n !schema ||\n ((!schema?.pattern || hideSchemaPattern) &&\n !schema.items &&\n !schema.displayFormat &&\n !schema.constraints?.length) // return null for cases where all constraints are empty\n ) {\n return null;\n }\n\n return (\n <Wrapper>\n [ items\n {schema.displayFormat && <TypeFormat> &lt;{schema.displayFormat} &gt;</TypeFormat>}\n <ConstraintsView constraints={schema.constraints} />\n <Pattern schema={schema} />\n {schema.items && <ArrayItemDetails schema={schema.items} />} ]\n </Wrapper>\n );\n}\n\nconst Wrapper = styled(TypePrefix)`\n margin: 0 5px;\n vertical-align: text-top;\n`;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport {\n RecursiveLabel,\n TypeFormat,\n TypeName,\n TypePrefix,\n TypeTitle,\n} from '../../common-elements/fields';\nimport { getSerializedValue, isArray, isObject } from '../../utils';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Markdown } from '../Markdown/Markdown';\nimport { EnumValues } from './EnumValues';\nimport { Extensions } from './Extensions';\nimport { FieldProps } from './Field';\nimport { Examples } from './Examples';\nimport { ConstraintsView } from './FieldConstraints';\nimport { FieldDetail } from './FieldDetail';\n\nimport { Badge } from '../../common-elements/';\n\nimport { l } from '../../services/Labels';\nimport { OptionsContext } from '../OptionsProvider';\nimport { Pattern } from './Pattern';\nimport { ArrayItemDetails } from './ArrayItemDetails';\n\nexport const FieldDetailsComponent = observer((props: FieldProps) => {\n const { enumSkipQuotes, hideSchemaTitles } = React.useContext(OptionsContext);\n\n const { showExamples, field, renderDiscriminatorSwitch } = props;\n const { schema, description, deprecated, extensions, in: _in, const: _const } = field;\n const isArrayType =\n schema.type === 'array' || (isArray(schema.type) && schema.type.includes('array'));\n\n const rawDefault = enumSkipQuotes || _in === 'header'; // having quotes around header field default values is confusing and inappropriate\n\n const renderedExamples = React.useMemo<JSX.Element | null>(() => {\n if (showExamples && (field.example !== undefined || field.examples !== undefined)) {\n if (field.examples !== undefined) {\n return <Examples field={field} />;\n } else {\n return (\n <FieldDetail\n label={l('example') + ':'}\n value={getSerializedValue(field, field.example)}\n raw={Boolean(field.in)}\n />\n );\n }\n }\n\n return null;\n }, [field, showExamples]);\n const defaultValue =\n isObject(schema.default) && field.in\n ? getSerializedValue(field, schema.default).replace(`${field.name}=`, '')\n : schema.default;\n\n return (\n <div>\n <div>\n <TypePrefix>{schema.typePrefix}</TypePrefix>\n <TypeName>{schema.displayType}</TypeName>\n {schema.displayFormat && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.displayFormat}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.contentEncoding && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.contentEncoding}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.contentMediaType && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.contentMediaType}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.title && !hideSchemaTitles && <TypeTitle> ({schema.title}) </TypeTitle>}\n <ConstraintsView constraints={schema.constraints} />\n <Pattern schema={schema} />\n {schema.isCircular && <RecursiveLabel> {l('recursive')} </RecursiveLabel>}\n {isArrayType && schema.items && <ArrayItemDetails schema={schema.items} />}\n </div>\n {deprecated && (\n <div>\n <Badge type=\"warning\"> {l('deprecated')} </Badge>\n </div>\n )}\n <FieldDetail raw={rawDefault} label={l('default') + ':'} value={defaultValue} />\n {!renderDiscriminatorSwitch && (\n <EnumValues type={schema.type} values={schema['x-enumDescriptions'] || schema.enum} />\n )}{' '}\n {renderedExamples}\n <Extensions extensions={{ ...extensions, ...schema.extensions }} />\n <div>\n <Markdown compact={true} source={description} />\n </div>\n {schema.externalDocs && (\n <ExternalDocumentation externalDocs={schema.externalDocs} compact={true} />\n )}\n {(renderDiscriminatorSwitch && renderDiscriminatorSwitch(props)) || null}\n {(_const && <FieldDetail label={l('const') + ':'} value={_const} />) || null}\n </div>\n );\n});\n\nexport const FieldDetails = React.memo<FieldProps>(FieldDetailsComponent);\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ClickablePropertyNameCell,\n PropertyLabel,\n RequiredLabel,\n} from '../../common-elements/fields';\nimport { FieldDetails } from './FieldDetails';\nimport {\n InnerPropertiesWrap,\n PropertyBullet,\n PropertyCellWithInner,\n PropertyDetailsCell,\n PropertyNameCell,\n} from '../../common-elements/fields-layout';\nimport { ShelfIcon } from '../../common-elements/';\nimport { Schema } from '../Schema/Schema';\n\nimport type { SchemaOptions } from '../Schema/Schema';\nimport type { FieldModel } from '../../services/models';\nimport { OptionsContext } from '../OptionsProvider';\nimport { RedocNormalizedOptions } from '../../services/RedocNormalizedOptions';\n\nexport interface FieldProps extends SchemaOptions {\n className?: string;\n isLast?: boolean;\n showExamples?: boolean;\n\n field: FieldModel;\n expandByDefault?: boolean;\n fieldParentsName?: string[];\n renderDiscriminatorSwitch?: (opts: FieldProps) => JSX.Element;\n}\n\n@observer\nexport class Field extends React.Component<FieldProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n\n toggle = () => {\n if (this.props.field.expanded === undefined && this.props.expandByDefault) {\n this.props.field.collapse();\n } else {\n this.props.field.toggle();\n }\n };\n\n handleKeyPress = e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n this.toggle();\n }\n };\n\n render() {\n const { hidePropertiesPrefix } = this.context;\n const { className = '', field, isLast, expandByDefault, fieldParentsName = [] } = this.props;\n const { name, deprecated, required, kind } = field;\n const withSubSchema = !field.schema.isPrimitive && !field.schema.isCircular;\n\n const expanded = field.expanded === undefined ? expandByDefault : field.expanded;\n const labels = (\n <>\n {kind === 'additionalProperties' && <PropertyLabel>additional property</PropertyLabel>}\n {kind === 'patternProperties' && <PropertyLabel>pattern property</PropertyLabel>}\n {required && <RequiredLabel>required</RequiredLabel>}\n </>\n );\n\n const paramName = withSubSchema ? (\n <ClickablePropertyNameCell\n className={deprecated ? 'deprecated' : ''}\n kind={kind}\n title={name}\n >\n <PropertyBullet />\n <button\n onClick={this.toggle}\n onKeyPress={this.handleKeyPress}\n aria-label={`expand ${name}`}\n >\n {!hidePropertiesPrefix &&\n fieldParentsName.map(\n name => name + '.\\u200B', // zero-width space, a special character is used for correct line breaking\n )}\n <span className=\"property-name\">{name}</span>\n <ShelfIcon direction={expanded ? 'down' : 'right'} />\n </button>\n {labels}\n </ClickablePropertyNameCell>\n ) : (\n <PropertyNameCell className={deprecated ? 'deprecated' : undefined} kind={kind} title={name}>\n <PropertyBullet />\n {!hidePropertiesPrefix &&\n fieldParentsName.map(\n name => name + '.\\u200B', // zero-width space, a special character is used for correct line breaking\n )}\n <span className=\"property-name\">{name}</span>\n {labels}\n </PropertyNameCell>\n );\n\n return (\n <>\n <tr className={isLast ? 'last ' + className : className}>\n {paramName}\n <PropertyDetailsCell>\n <FieldDetails {...this.props} />\n </PropertyDetailsCell>\n </tr>\n {expanded && withSubSchema && (\n <tr key={field.name + 'inner'}>\n <PropertyCellWithInner colSpan={2}>\n <InnerPropertiesWrap>\n <Schema\n schema={field.schema}\n fieldParentsName={[...(fieldParentsName || []), field.name]}\n skipReadOnly={this.props.skipReadOnly}\n skipWriteOnly={this.props.skipWriteOnly}\n showTitle={this.props.showTitle}\n level={this.props.level}\n />\n </InnerPropertiesWrap>\n </PropertyCellWithInner>\n </tr>\n )}\n </>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, Dropdown } from '../../common-elements/Dropdown';\nimport { SchemaModel } from '../../services/models';\n\n@observer\nexport class DiscriminatorDropdown extends React.Component<{\n parent: SchemaModel;\n enumValues: string[];\n}> {\n sortOptions(options: DropdownOption[], enumValues: string[]): void {\n if (enumValues.length === 0) {\n return;\n }\n\n const enumOrder = {};\n\n enumValues.forEach((enumItem, idx) => {\n enumOrder[enumItem] = idx;\n });\n\n options.sort((a, b) => {\n return enumOrder[a.value] > enumOrder[b.value] ? 1 : -1;\n });\n }\n\n render() {\n const { parent, enumValues } = this.props;\n if (parent.oneOf === undefined) {\n return null;\n }\n\n const options = parent.oneOf.map((subSchema, idx) => {\n return {\n value: subSchema.title,\n idx,\n };\n });\n\n const activeValue = options[parent.activeOneOf].value;\n\n this.sortOptions(options, enumValues);\n\n return (\n <Dropdown\n value={activeValue}\n options={options}\n onChange={this.changeActiveChild}\n ariaLabel=\"Example\"\n />\n );\n }\n\n changeActiveChild = (option: DropdownOption) => {\n if (option.idx !== undefined) {\n this.props.parent.activateOneOf(option.idx);\n }\n };\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SchemaModel } from '../../services/models';\n\nimport { PropertiesTable, PropertiesTableCaption } from '../../common-elements/fields-layout';\nimport { Field } from '../Fields/Field';\nimport { DiscriminatorDropdown } from './DiscriminatorDropdown';\nimport { SchemaProps } from './Schema';\n\nimport { mapWithLast } from '../../utils';\nimport { OptionsContext } from '../OptionsProvider';\n\nexport interface ObjectSchemaProps extends SchemaProps {\n discriminator?: {\n fieldName: string;\n parentSchema: SchemaModel;\n };\n fieldParentsName?: string[];\n}\n\nexport const ObjectSchema = observer(\n ({\n schema: { fields = [], title },\n showTitle,\n discriminator,\n skipReadOnly,\n skipWriteOnly,\n level,\n fieldParentsName,\n }: ObjectSchemaProps) => {\n const { expandSingleSchemaField, showObjectSchemaExamples, schemasExpansionLevel } =\n React.useContext(OptionsContext);\n\n const filteredFields = React.useMemo(\n () =>\n skipReadOnly || skipWriteOnly\n ? fields.filter(\n item =>\n !(\n (skipReadOnly && item.schema.readOnly) ||\n (skipWriteOnly && item.schema.writeOnly)\n ),\n )\n : fields,\n [skipReadOnly, skipWriteOnly, fields],\n );\n\n const expandByDefault =\n (expandSingleSchemaField && filteredFields.length === 1) || schemasExpansionLevel >= level!;\n\n return (\n <PropertiesTable>\n {showTitle && <PropertiesTableCaption>{title}</PropertiesTableCaption>}\n <tbody>\n {mapWithLast(filteredFields, (field, isLast) => {\n return (\n <Field\n key={field.name}\n isLast={isLast}\n field={field}\n expandByDefault={expandByDefault}\n fieldParentsName={Number(level) > 1 ? fieldParentsName : []}\n renderDiscriminatorSwitch={\n discriminator?.fieldName === field.name\n ? () => (\n <DiscriminatorDropdown\n parent={discriminator!.parentSchema}\n enumValues={field.schema.enum}\n />\n )\n : undefined\n }\n className={field.expanded ? 'expanded' : undefined}\n showExamples={showObjectSchemaExamples}\n skipReadOnly={skipReadOnly}\n skipWriteOnly={skipWriteOnly}\n showTitle={showTitle}\n level={level}\n />\n );\n })}\n </tbody>\n </PropertiesTable>\n );\n },\n);\n","import * as React from 'react';\n\nimport { Schema, SchemaProps } from './Schema';\n\nimport { ArrayClosingLabel, ArrayOpenningLabel } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { humanizeConstraints } from '../../utils';\nimport { TypeName } from '../../common-elements/fields';\nimport { ObjectSchema } from './ObjectSchema';\n\nconst PaddedSchema = styled.div`\n padding-left: ${({ theme }) => theme.spacing.unit * 2}px;\n`;\n\nexport class ArraySchema extends React.PureComponent<SchemaProps> {\n render() {\n const schema = this.props.schema;\n const itemsSchema = schema.items;\n const fieldParentsName = this.props.fieldParentsName;\n\n const minMaxItems =\n schema.minItems === undefined && schema.maxItems === undefined\n ? ''\n : `(${humanizeConstraints(schema)})`;\n\n const updatedParentsArray = fieldParentsName\n ? [...fieldParentsName.slice(0, -1), fieldParentsName[fieldParentsName.length - 1] + '[]']\n : fieldParentsName;\n if (schema.fields) {\n return (\n <ObjectSchema\n {...(this.props as any)}\n level={this.props.level}\n fieldParentsName={updatedParentsArray}\n />\n );\n }\n if (schema.displayType && !itemsSchema && !minMaxItems.length) {\n return (\n <div>\n <TypeName>{schema.displayType}</TypeName>\n </div>\n );\n }\n\n return (\n <div>\n <ArrayOpenningLabel> Array {minMaxItems}</ArrayOpenningLabel>\n <PaddedSchema>\n <Schema {...this.props} schema={itemsSchema} fieldParentsName={updatedParentsArray} />\n </PaddedSchema>\n <ArrayClosingLabel />\n </div>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n OneOfButton as StyledOneOfButton,\n OneOfLabel,\n OneOfList,\n} from '../../common-elements/schema';\nimport { Badge } from '../../common-elements/shelfs';\nimport { SchemaModel } from '../../services/models';\nimport { ConstraintsView } from '../Fields/FieldConstraints';\nimport { Schema, SchemaProps } from './Schema';\n\nexport interface OneOfButtonProps {\n subSchema: SchemaModel;\n idx: number;\n schema: SchemaModel;\n}\n\n@observer\nexport class OneOfButton extends React.Component<OneOfButtonProps> {\n render() {\n const { idx, schema, subSchema } = this.props;\n return (\n <StyledOneOfButton\n $deprecated={subSchema.deprecated}\n $active={idx === schema.activeOneOf}\n onClick={this.activateOneOf}\n >\n {subSchema.title || subSchema.typePrefix + subSchema.displayType}\n </StyledOneOfButton>\n );\n }\n\n activateOneOf = () => {\n this.props.schema.activateOneOf(this.props.idx);\n };\n}\n\n@observer\nexport class OneOfSchema extends React.Component<SchemaProps> {\n render() {\n const {\n schema: { oneOf },\n schema,\n } = this.props;\n\n if (oneOf === undefined) {\n return null;\n }\n const activeSchema = oneOf[schema.activeOneOf];\n\n return (\n <div>\n <OneOfLabel> {schema.oneOfType} </OneOfLabel>\n <OneOfList>\n {oneOf.map((subSchema, idx) => (\n <OneOfButton key={subSchema.pointer} schema={schema} subSchema={subSchema} idx={idx} />\n ))}\n </OneOfList>\n <div>\n {oneOf[schema.activeOneOf].deprecated && <Badge type=\"warning\">Deprecated</Badge>}\n </div>\n <ConstraintsView constraints={activeSchema.constraints} />\n <Schema {...this.props} schema={activeSchema} />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { RecursiveLabel, TypeName, TypeTitle } from '../../common-elements/fields';\nimport { l } from '../../services/Labels';\nimport type { SchemaProps } from '.';\n\nexport const RecursiveSchema = observer(({ schema }: SchemaProps) => {\n return (\n <div>\n <TypeName>{schema.displayType}</TypeName>\n {schema.title && <TypeTitle> {schema.title} </TypeTitle>}\n <RecursiveLabel> {l('recursive')} </RecursiveLabel>\n </div>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { FieldDetails } from '../Fields/FieldDetails';\n\nimport { FieldModel, SchemaModel } from '../../services/models';\n\nimport { ArraySchema } from './ArraySchema';\nimport { ObjectSchema } from './ObjectSchema';\nimport { OneOfSchema } from './OneOfSchema';\nimport { RecursiveSchema } from './RecursiveSchema';\n\nimport { isArray } from '../../utils/helpers';\n\nexport interface SchemaOptions {\n showTitle?: boolean;\n skipReadOnly?: boolean;\n skipWriteOnly?: boolean;\n level?: number;\n}\n\nexport interface SchemaProps extends SchemaOptions {\n schema: SchemaModel;\n fieldParentsName?: string[];\n}\n\n@observer\nexport class Schema extends React.Component<Partial<SchemaProps>> {\n render() {\n const { schema, ...rest } = this.props;\n const level = (rest.level || 0) + 1;\n\n if (!schema) {\n return <em> Schema not provided </em>;\n }\n const { type, oneOf, discriminatorProp, isCircular } = schema;\n\n if (isCircular) {\n return <RecursiveSchema schema={schema} />;\n }\n\n if (discriminatorProp !== undefined) {\n if (!oneOf || !oneOf.length) {\n console.warn(\n `Looks like you are using discriminator wrong: you don't have any definition inherited from the ${schema.title}`,\n );\n return null;\n }\n const activeSchema = oneOf[schema.activeOneOf];\n return activeSchema.isCircular ? (\n <RecursiveSchema schema={activeSchema} />\n ) : (\n <ObjectSchema\n {...rest}\n level={level}\n schema={activeSchema}\n discriminator={{\n fieldName: discriminatorProp,\n parentSchema: schema,\n }}\n />\n );\n }\n\n if (oneOf !== undefined) {\n return <OneOfSchema schema={schema} {...rest} />;\n }\n\n const types = isArray(type) ? type : [type];\n if (types.includes('object')) {\n if (schema.fields?.length) {\n return <ObjectSchema {...(this.props as any)} level={level} />;\n }\n } else if (types.includes('array')) {\n return <ArraySchema {...(this.props as any)} level={level} />;\n }\n\n // TODO: maybe adjust FieldDetails to accept schema\n const field = {\n schema,\n name: '',\n required: false,\n description: schema.description,\n externalDocs: schema.externalDocs,\n deprecated: false,\n toggle: () => null,\n expanded: false,\n } as any as FieldModel; // cast needed for hot-loader to not fail\n\n return (\n <div>\n <FieldDetails field={field} />\n </div>\n );\n }\n}\n","import * as React from 'react';\n\nimport { DarkRightPanel, MiddlePanel, MimeLabel, Row, Section } from '../../common-elements';\nimport { MediaTypeModel, OpenAPIParser, RedocNormalizedOptions } from '../../services';\nimport styled from '../../styled-components';\nimport { OpenAPIMediaType } from '../../types';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples';\nimport { InvertedSimpleDropdown } from '../PayloadSamples/styled.elements';\nimport { Schema } from '../Schema';\n\nexport interface ObjectDescriptionProps {\n schemaRef: string;\n exampleRef?: string;\n showReadOnly?: boolean;\n showWriteOnly?: boolean;\n showExample?: boolean;\n parser: OpenAPIParser;\n options: RedocNormalizedOptions;\n}\n\nexport class SchemaDefinition extends React.PureComponent<ObjectDescriptionProps> {\n private static getMediaType(schemaRef: string, exampleRef?: string): OpenAPIMediaType {\n if (!schemaRef) {\n return {};\n }\n\n const info: OpenAPIMediaType = {\n schema: { $ref: schemaRef },\n };\n\n if (exampleRef) {\n info.examples = { example: { $ref: exampleRef } };\n }\n\n return info;\n }\n\n private _mediaModel: MediaTypeModel;\n\n private get mediaModel() {\n const { parser, schemaRef, exampleRef, options } = this.props;\n if (!this._mediaModel) {\n this._mediaModel = new MediaTypeModel(\n parser,\n 'json',\n false,\n SchemaDefinition.getMediaType(schemaRef, exampleRef),\n options,\n );\n }\n\n return this._mediaModel;\n }\n\n render() {\n const { showReadOnly = true, showWriteOnly = false, showExample = true } = this.props;\n return (\n <Section>\n <Row>\n <MiddlePanel>\n <Schema\n skipWriteOnly={!showWriteOnly}\n skipReadOnly={!showReadOnly}\n schema={this.mediaModel.schema}\n />\n </MiddlePanel>\n {showExample && (\n <DarkRightPanel>\n <MediaSamplesWrap>\n <MediaTypeSamples\n renderDropdown={this.renderDropdown}\n mediaType={this.mediaModel}\n />\n </MediaSamplesWrap>\n </DarkRightPanel>\n )}\n </Row>\n </Section>\n );\n }\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n}\n\nconst MediaSamplesWrap = styled.div`\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 4}px;\n margin: 0;\n }\n\n & > div > pre {\n padding: 0;\n }\n`;\n","import styled from 'styled-components';\nimport { linksCss } from '../Markdown/styled.elements';\nimport { media } from '../../styled-components';\nimport { UnderlinedHeader } from '../../common-elements';\n\nexport const Header = styled.div`\n background-color: #e4e7eb;\n`;\n\nexport const ScopeNameList = styled.ul`\n display: inline;\n list-style: none;\n padding: 0;\n\n li {\n display: inherit;\n\n &:after {\n content: ',';\n }\n &:last-child:after {\n content: none;\n }\n }\n`;\n\nexport const ScopeName = styled.code`\n font-size: ${props => props.theme.typography.code.fontSize};\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin: 0 3px;\n padding: 0.2em;\n display: inline-block;\n line-height: 1;\n\n &:after {\n content: ',';\n font-weight: normal;\n }\n\n &:last-child:after {\n content: none;\n }\n`;\n\nexport const SecurityRequirementAndWrap = styled.span`\n &:after {\n content: ' and ';\n font-weight: normal;\n }\n\n &:last-child:after {\n content: none;\n }\n\n ${linksCss};\n`;\n\nexport const SecurityRequirementOrWrap = styled.span<{ $expanded?: boolean }>`\n ${p => !p.$expanded && `white-space: nowrap;`}\n &:after {\n content: ' or ';\n ${p => p.$expanded && `content: ' or \\\\a';`}\n white-space: pre;\n }\n\n &:last-child:after,\n &:only-child:after {\n content: none;\n }\n\n ${linksCss};\n`;\n\nexport const AuthHeaderColumn = styled.div`\n flex: 1 1 auto;\n cursor: pointer;\n`;\n\nexport const SecuritiesColumn = styled.div<{ $expanded?: boolean }>`\n width: ${props => props.theme.schema.defaultDetailsWidth};\n text-overflow: ellipsis;\n border-radius: 4px;\n overflow: hidden;\n ${p =>\n p.$expanded &&\n `background: ${p.theme.colors.gray['100']};\n padding: 8px 9.6px;\n margin: 20px 0;\n width: 100%;\n `};\n ${media.lessThan('small')`\n margin-top: 10px;\n `}\n`;\n\nexport const AuthHeader = styled(UnderlinedHeader)`\n display: inline-block;\n margin: 0;\n`;\n\nexport const Wrap = styled.div<{ $expanded?: boolean }>`\n width: 100%;\n display: flex;\n margin: 1em 0;\n flex-direction: ${p => (p.$expanded ? 'column' : 'row')};\n ${media.lessThan('small')`\n flex-direction: column;\n `}\n`;\n\nexport const SecurityRow = styled.div`\n margin: 0.5em 0;\n`;\n\nexport const SecurityDetailsStyle = styled.div`\n border-bottom: 1px solid ${({ theme }) => theme.colors.border.dark};\n margin-bottom: 1.5em;\n padding-bottom: 0.7em;\n\n h5 {\n line-height: 1em;\n margin: 0 0 0.6em;\n font-size: ${({ theme }) => theme.typography.fontSize};\n }\n\n .redoc-markdown p:first-child {\n display: inline;\n }\n`;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst TOLERANCE_PX = 20;\n\ninterface SeeMoreProps {\n children?: React.ReactNode;\n height: string;\n}\n\nexport function SeeMore({ children, height }: SeeMoreProps): JSX.Element {\n const ref = React.createRef() as React.RefObject<HTMLDivElement>;\n const [showMore, setShowMore] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n\n React.useEffect(() => {\n if (ref.current && ref.current.clientHeight + TOLERANCE_PX < ref.current.scrollHeight) {\n setShowLink(true);\n }\n }, [ref]);\n\n const onClickMore = () => {\n setShowMore(!showMore);\n };\n\n return (\n <>\n <Container\n ref={ref}\n className={showMore ? '' : 'container'}\n style={{ height: showMore ? 'auto' : height }}\n >\n {children}\n </Container>\n <ButtonContainer $dimmed={!showMore}>\n {showLink && (\n <ButtonLinkStyled onClick={onClickMore}>\n {showMore ? 'See less' : 'See more'}\n </ButtonLinkStyled>\n )}\n </ButtonContainer>\n </>\n );\n}\n\nconst Container = styled.div`\n overflow-y: hidden;\n`;\n\nconst ButtonContainer = styled.div<{ $dimmed?: boolean }>`\n text-align: center;\n line-height: 1.5em;\n ${({ $dimmed }) =>\n $dimmed &&\n `background-image: linear-gradient(to bottom, transparent,rgb(255 255 255));\n position: relative;\n top: -0.5em;\n padding-top: 0.5em;\n background-position-y: -1em;\n `}\n`;\n\nconst ButtonLinkStyled = styled.a`\n cursor: pointer;\n`;\n","import * as React from 'react';\nimport { OpenAPISecurityScheme } from '../../types';\nimport { SecurityRow } from './styled.elements';\nimport { SeeMore } from '../SeeMore/SeeMore';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface OAuthFlowProps {\n type: string;\n flow: OpenAPISecurityScheme['flows'][keyof OpenAPISecurityScheme['flows']];\n RequiredScopes?: JSX.Element;\n}\n\nexport function OAuthFlowComponent(props: OAuthFlowProps) {\n const { type, flow, RequiredScopes } = props;\n const scopesNames = Object.keys(flow?.scopes || {});\n\n return (\n <>\n <SecurityRow>\n <b>Flow type: </b>\n <code>{type} </code>\n </SecurityRow>\n {(type === 'implicit' || type === 'authorizationCode') && (\n <SecurityRow>\n <strong> Authorization URL: </strong>\n <code>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href={(flow as any).authorizationUrl}>\n {(flow as any).authorizationUrl}\n </a>\n </code>\n </SecurityRow>\n )}\n {(type === 'password' || type === 'clientCredentials' || type === 'authorizationCode') && (\n <SecurityRow>\n <b> Token URL: </b>\n <code>{(flow as any).tokenUrl}</code>\n </SecurityRow>\n )}\n {flow!.refreshUrl && (\n <SecurityRow>\n <strong> Refresh URL: </strong>\n <code>{flow!.refreshUrl}</code>\n </SecurityRow>\n )}\n {!!scopesNames.length && (\n <>\n {RequiredScopes || null}\n <SecurityRow>\n <b> Scopes: </b>\n </SecurityRow>\n <SeeMore height=\"4em\">\n <ul>\n {scopesNames.map(scope => (\n <li key={scope}>\n <code>{scope}</code> -{' '}\n <Markdown\n className={'redoc-markdown'}\n inline={true}\n source={flow!.scopes[scope] || ''}\n />\n </li>\n ))}\n </ul>\n </SeeMore>\n </>\n )}\n </>\n );\n}\n\nexport const OAuthFlow = React.memo<OAuthFlowProps>(OAuthFlowComponent);\n","import * as React from 'react';\nimport { SecuritySchemeModel } from '../../services';\nimport { titleize } from '../../utils';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport { SecurityRow } from './styled.elements';\nimport { OAuthFlow } from './OAuthFlow';\n\ninterface SecuritySchemaProps {\n RequiredScopes?: JSX.Element;\n scheme: SecuritySchemeModel;\n}\nexport function SecurityDetails(props: SecuritySchemaProps) {\n const { RequiredScopes, scheme } = props;\n\n return (\n <StyledMarkdownBlock>\n {scheme.apiKey ? (\n <>\n <SecurityRow>\n <b>{titleize(scheme.apiKey.in || '')} parameter name: </b>\n <code>{scheme.apiKey.name}</code>\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.http ? (\n <>\n <SecurityRow>\n <b>HTTP Authorization Scheme: </b>\n <code>{scheme.http.scheme}</code>\n </SecurityRow>\n <SecurityRow>\n {scheme.http.scheme === 'bearer' && scheme.http.bearerFormat && (\n <>\n <b>Bearer format: </b>\n <code>{scheme.http.bearerFormat}</code>\n </>\n )}\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.openId ? (\n <>\n <SecurityRow>\n <b>Connect URL: </b>\n <code>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href={scheme.openId.connectUrl}>\n {scheme.openId.connectUrl}\n </a>\n </code>\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.flows ? (\n Object.keys(scheme.flows).map(type => (\n <OAuthFlow\n key={type}\n type={type}\n RequiredScopes={RequiredScopes}\n flow={scheme.flows[type]}\n />\n ))\n ) : null}\n </StyledMarkdownBlock>\n );\n}\n","import * as React from 'react';\n\nimport { SecuritySchemesModel } from '../../services';\nimport { H2, Row, ShareLink, MiddlePanel, Section } from '../../common-elements';\nimport { Markdown } from '../Markdown/Markdown';\nimport { SecurityDetails } from '../SecurityRequirement/SecurityDetails';\nimport { SecurityDetailsStyle, SecurityRow } from '../SecurityRequirement/styled.elements';\n\nexport const AUTH_TYPES = {\n oauth2: 'OAuth2',\n apiKey: 'API Key',\n http: 'HTTP',\n openIdConnect: 'OpenID Connect',\n};\n\nexport interface SecurityDefsProps {\n securitySchemes: SecuritySchemesModel;\n}\n\nexport class SecurityDefs extends React.PureComponent<SecurityDefsProps> {\n render() {\n return this.props.securitySchemes.schemes.map(scheme => (\n <Section id={scheme.sectionId} key={scheme.id}>\n <Row>\n <MiddlePanel>\n <H2>\n <ShareLink to={scheme.sectionId} />\n {scheme.displayName}\n </H2>\n <Markdown source={scheme.description || ''} />\n <SecurityDetailsStyle>\n <SecurityRow>\n <b>Security Scheme Type: </b>\n <span>{AUTH_TYPES[scheme.type] || scheme.type}</span>\n </SecurityRow>\n <SecurityDetails scheme={scheme} />\n </SecurityDetailsStyle>\n </MiddlePanel>\n </Row>\n </Section>\n ));\n }\n}\n","import { Lambda, observe } from 'mobx';\n\nimport type { OpenAPISpec } from '../types';\nimport { loadAndBundleSpec } from '../utils/loadAndBundleSpec';\nimport { history } from './HistoryService';\nimport { MarkerService } from './MarkerService';\nimport { MenuStore } from './MenuStore';\nimport { SpecStore } from './models';\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { RedocRawOptions } from './RedocNormalizedOptions';\nimport { ScrollService } from './ScrollService';\nimport { SearchStore } from './SearchStore';\n\nimport { SchemaDefinition } from '../components/SchemaDefinition/SchemaDefinition';\nimport { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes';\nimport {\n SCHEMA_DEFINITION_JSX_NAME,\n SECURITY_DEFINITIONS_JSX_NAME,\n OLD_SECURITY_DEFINITIONS_JSX_NAME,\n} from '../utils/openapi';\n\nimport { IS_BROWSER } from '../utils';\nimport type { StoreState } from './types';\n\nexport async function createStore(\n spec: object,\n specUrl: string | undefined,\n options: RedocRawOptions = {},\n) {\n const resolvedSpec = await loadAndBundleSpec(spec || specUrl);\n return new AppStore(resolvedSpec, specUrl, options);\n}\n\nexport class AppStore {\n /**\n * deserialize store\n * **SUPER HACKY AND NOT OPTIMAL IMPLEMENTATION**\n */\n // TODO:\n static fromJS(state: StoreState): AppStore {\n const inst = new AppStore(state.spec.data, state.spec.url, state.options, false);\n inst.menu.activeItemIdx = state.menu.activeItemIdx || 0;\n inst.menu.activate(inst.menu.flatItems[inst.menu.activeItemIdx]);\n if (!inst.options.disableSearch) {\n inst.search!.load(state.searchIndex);\n }\n return inst;\n }\n\n menu: MenuStore;\n spec: SpecStore;\n rawOptions: RedocRawOptions;\n options: RedocNormalizedOptions;\n search?: SearchStore<string>;\n marker = new MarkerService();\n\n private scroll: ScrollService;\n private disposer: Lambda | null = null;\n\n constructor(\n spec: OpenAPISpec,\n specUrl?: string,\n options: RedocRawOptions = {},\n createSearchIndex: boolean = true,\n ) {\n this.rawOptions = options;\n this.options = new RedocNormalizedOptions(options, DEFAULT_OPTIONS);\n this.scroll = new ScrollService(this.options);\n\n // update position statically based on hash (in case of SSR)\n MenuStore.updateOnHistory(history.currentId, this.scroll);\n\n this.spec = new SpecStore(spec, specUrl, this.options);\n this.menu = new MenuStore(this.spec, this.scroll, history);\n\n if (!this.options.disableSearch) {\n this.search = new SearchStore();\n if (createSearchIndex) {\n this.search.indexItems(this.menu.items);\n }\n\n this.disposer = observe(this.menu, 'activeItemIdx', change => {\n this.updateMarkOnMenu(change.newValue as number);\n });\n }\n }\n\n onDidMount() {\n this.menu.updateOnHistory();\n this.updateMarkOnMenu(this.menu.activeItemIdx);\n }\n\n dispose() {\n this.scroll.dispose();\n this.menu.dispose();\n if (this.search) {\n this.search.dispose();\n }\n if (this.disposer != null) {\n this.disposer();\n }\n }\n\n /**\n * serializes store\n * **SUPER HACKY AND NOT OPTIMAL IMPLEMENTATION**\n */\n // TODO: improve\n async toJS(): Promise<StoreState> {\n return {\n menu: {\n activeItemIdx: this.menu.activeItemIdx,\n },\n spec: {\n url: this.spec.parser.specUrl,\n data: this.spec.parser.spec,\n },\n searchIndex: this.search ? await this.search.toJS() : undefined,\n options: this.rawOptions,\n };\n }\n\n private updateMarkOnMenu(idx: number) {\n const start = Math.max(0, idx);\n const end = Math.min(this.menu.flatItems.length, start + 5);\n\n const elements: Element[] = [];\n for (let i = start; i < end; i++) {\n const elem = this.menu.getElementAt(i);\n if (!elem) {\n continue;\n }\n elements.push(elem);\n }\n\n if (idx === -1 && IS_BROWSER) {\n const $description = document.querySelector('[data-role=\"redoc-description\"]');\n const $summary = document.querySelector('[data-role=\"redoc-summary\"]');\n\n if ($description) elements.push($description);\n if ($summary) elements.push($summary);\n }\n\n this.marker.addOnly(elements);\n this.marker.mark();\n }\n}\n\nconst DEFAULT_OPTIONS: RedocRawOptions = {\n allowedMdComponents: {\n [SECURITY_DEFINITIONS_JSX_NAME]: {\n component: SecurityDefs,\n propsSelector: (store: AppStore) => ({\n securitySchemes: store.spec.securitySchemes,\n }),\n },\n [OLD_SECURITY_DEFINITIONS_JSX_NAME]: {\n component: SecurityDefs,\n propsSelector: (store: AppStore) => ({\n securitySchemes: store.spec.securitySchemes,\n }),\n },\n [SCHEMA_DEFINITION_JSX_NAME]: {\n component: SchemaDefinition,\n propsSelector: (store: AppStore) => ({\n parser: store.spec.parser,\n options: store.options,\n }),\n },\n },\n};\n","import { H1, MiddlePanel } from '../../common-elements';\nimport styled, { extensionsHook } from '../../styled-components';\n\nconst delimiterWidth = 15;\n\nexport const ApiInfoWrap = MiddlePanel;\n\nexport const ApiHeader = styled(H1)`\n margin-top: 0;\n margin-bottom: 0.5em;\n\n ${extensionsHook('ApiHeader')};\n`;\n\nexport const DownloadButton = styled.a`\n border: 1px solid ${props => props.theme.colors.primary.main};\n color: ${props => props.theme.colors.primary.main};\n font-weight: normal;\n margin-left: 0.5em;\n padding: 4px 8px 4px;\n display: inline-block;\n text-decoration: none;\n cursor: pointer;\n\n ${extensionsHook('DownloadButton')};\n`;\n\nexport const InfoSpan = styled.span`\n &::before {\n content: '|';\n display: inline-block;\n opacity: 0.5;\n width: ${delimiterWidth}px;\n text-align: center;\n }\n\n &:last-child::after {\n display: none;\n }\n`;\n\nexport const InfoSpanBoxWrap = styled.div`\n overflow: hidden;\n`;\n\nexport const InfoSpanBox = styled.div`\n display: flex;\n flex-wrap: wrap;\n // hide separator on new lines: idea from https://stackoverflow.com/a/31732902/1749888\n margin-left: -${delimiterWidth}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AppStore } from '../../services/AppStore';\n\nimport { MiddlePanel, Row, Section } from '../../common-elements/';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Markdown } from '../Markdown/Markdown';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport {\n ApiHeader,\n DownloadButton,\n InfoSpan,\n InfoSpanBox,\n InfoSpanBoxWrap,\n} from './styled.elements';\nimport { l } from '../../services/Labels';\n\nexport interface ApiInfoProps {\n store: AppStore;\n}\n\n@observer\nexport class ApiInfo extends React.Component<ApiInfoProps> {\n render() {\n const { store } = this.props;\n const { info, externalDocs } = store.spec;\n const hideDownloadButtons = store.options.hideDownloadButtons;\n\n const downloadUrls = info.downloadUrls;\n const downloadFileName = info.downloadFileName;\n const license =\n (info.license && (\n <InfoSpan>\n License:{' '}\n {info.license.identifier ? (\n info.license.identifier\n ) : (\n <a href={info.license.url}>{info.license.name}</a>\n )}\n </InfoSpan>\n )) ||\n null;\n\n const website =\n (info.contact && info.contact.url && (\n <InfoSpan>\n URL: <a href={info.contact.url}>{info.contact.url}</a>\n </InfoSpan>\n )) ||\n null;\n\n const email =\n (info.contact && info.contact.email && (\n <InfoSpan>\n {info.contact.name || 'E-mail'}:{' '}\n <a href={'mailto:' + info.contact.email}>{info.contact.email}</a>\n </InfoSpan>\n )) ||\n null;\n\n const terms =\n (info.termsOfService && (\n <InfoSpan>\n <a href={info.termsOfService}>Terms of Service</a>\n </InfoSpan>\n )) ||\n null;\n\n const version = (info.version && <span>({info.version})</span>) || null;\n\n return (\n <Section>\n <Row>\n <MiddlePanel className=\"api-info\">\n <ApiHeader>\n {info.title} {version}\n </ApiHeader>\n {!hideDownloadButtons && (\n <p>\n {l('downloadSpecification')}:\n {downloadUrls?.map(({ title, url }) => {\n return (\n <DownloadButton\n download={downloadFileName || true}\n target=\"_blank\"\n href={url}\n rel=\"noreferrer\"\n key={url}\n >\n {title}\n </DownloadButton>\n );\n })}\n </p>\n )}\n <StyledMarkdownBlock>\n {((info.license || info.contact || info.termsOfService) && (\n <InfoSpanBoxWrap>\n <InfoSpanBox>\n {email} {website} {license} {terms}\n </InfoSpanBox>\n </InfoSpanBoxWrap>\n )) ||\n null}\n </StyledMarkdownBlock>\n <Markdown source={store.spec.info.summary} data-role=\"redoc-summary\" />\n <Markdown source={store.spec.info.description} data-role=\"redoc-description\" />\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </MiddlePanel>\n </Row>\n </Section>\n );\n }\n}\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nexport const LogoImgEl = styled.img`\n max-height: ${props => props.theme.logo.maxHeight};\n max-width: ${props => props.theme.logo.maxWidth};\n padding: ${props => props.theme.logo.gutter};\n width: 100%;\n display: block;\n`;\n\nexport const LogoWrap = styled.div`\n text-align: center;\n`;\n\nconst Link = styled.a`\n display: inline-block;\n`;\n\n// eslint-disable-next-line react/display-name\nexport const LinkWrap = url => Component => <Link href={url}>{Component}</Link>;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { OpenAPIInfo } from '../../types';\nimport { LinkWrap, LogoImgEl, LogoWrap } from './styled.elements';\n\n@observer\nexport class ApiLogo extends React.Component<{ info: OpenAPIInfo }> {\n render() {\n const { info } = this.props;\n const logoInfo = info['x-logo'];\n if (!logoInfo || !logoInfo.url) {\n return null;\n }\n\n const logoHref = logoInfo.href || (info.contact && info.contact.url);\n\n // Use the english word logo if no alt text is provided\n const altText = logoInfo.altText ? logoInfo.altText : 'logo';\n\n const logo = <LogoImgEl src={logoInfo.url} alt={altText} />;\n return (\n <LogoWrap style={{ backgroundColor: logoInfo.backgroundColor }}>\n {logoHref ? LinkWrap(logoHref)(logo) : logo}\n </LogoWrap>\n );\n }\n}\n","import * as React from 'react';\n\nimport { AppStore, MarkdownRenderer, RedocNormalizedOptions } from '../../services';\nimport { BaseMarkdownProps } from './Markdown';\nimport { SanitizedMarkdownHTML } from './SanitizedMdBlock';\n\nimport { OptionsConsumer } from '../OptionsProvider';\nimport { StoreConsumer } from '../StoreBuilder';\n\nexport interface AdvancedMarkdownProps extends BaseMarkdownProps {\n htmlWrap?: (part: JSX.Element) => JSX.Element;\n parentId?: string;\n}\n\nexport class AdvancedMarkdown extends React.Component<AdvancedMarkdownProps> {\n render() {\n return (\n <OptionsConsumer>\n {options => (\n <StoreConsumer>{store => this.renderWithOptionsAndStore(options, store)}</StoreConsumer>\n )}\n </OptionsConsumer>\n );\n }\n\n renderWithOptionsAndStore(options: RedocNormalizedOptions, store?: AppStore) {\n const { source, htmlWrap = i => i } = this.props;\n if (!store) {\n throw new Error('When using components in markdown, store prop must be provided');\n }\n\n const renderer = new MarkdownRenderer(options, this.props.parentId);\n const parts = renderer.renderMdWithComponents(source);\n\n if (!parts.length) {\n return null;\n }\n\n return parts.map((part, idx) => {\n if (typeof part === 'string') {\n return React.cloneElement(\n htmlWrap(<SanitizedMarkdownHTML html={part} inline={false} compact={false} />),\n { key: idx },\n );\n }\n const PartComponent = part.component as React.FunctionComponent;\n return <PartComponent key={idx} {...{ ...part.props, ...part.propsSelector(store) }} />;\n });\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"classnames\");","import * as classnames from 'classnames';\nimport { darken } from 'polished';\n\nimport { deprecatedCss, ShelfIcon } from '../../common-elements';\nimport styled, { css, media, ResolvedThemeInterface } from '../../styled-components';\n\nexport const OperationBadge = styled.span.attrs((props: { type: string; color?: string }) => ({\n className: `operation-type ${props.type}`,\n}))<{ type: string; color?: string }>`\n width: 9ex;\n display: inline-block;\n height: ${props => props.theme.typography.code.fontSize};\n line-height: ${props => props.theme.typography.code.fontSize};\n background-color: ${props => props.color || '#333'};\n border-radius: 3px;\n background-repeat: no-repeat;\n background-position: 6px 4px;\n font-size: 7px;\n font-family: Verdana, sans-serif; // web-safe\n color: white;\n text-transform: uppercase;\n text-align: center;\n font-weight: bold;\n vertical-align: middle;\n margin-right: 6px;\n margin-top: 2px;\n\n &.get {\n background-color: ${({ theme }) => theme.colors.http.get};\n }\n\n &.post {\n background-color: ${({ theme }) => theme.colors.http.post};\n }\n\n &.put {\n background-color: ${({ theme }) => theme.colors.http.put};\n }\n\n &.options {\n background-color: ${({ theme }) => theme.colors.http.options};\n }\n\n &.patch {\n background-color: ${({ theme }) => theme.colors.http.patch};\n }\n\n &.delete {\n background-color: ${({ theme }) => theme.colors.http.delete};\n }\n\n &.basic {\n background-color: ${({ theme }) => theme.colors.http.basic};\n }\n\n &.link {\n background-color: ${({ theme }) => theme.colors.http.link};\n }\n\n &.head {\n background-color: ${({ theme }) => theme.colors.http.head};\n }\n\n &.hook {\n background-color: ${({ theme }) => theme.colors.primary.main};\n }\n\n &.schema {\n background-color: ${({ theme }) => theme.colors.http.basic};\n }\n`;\n\nfunction menuItemActive(\n depth,\n { theme }: { theme: ResolvedThemeInterface },\n option: string,\n): string {\n if (depth > 1) {\n return theme.sidebar.level1Items[option];\n } else if (depth === 1) {\n return theme.sidebar.groupItems[option];\n } else {\n return '';\n }\n}\n\nexport const MenuItemUl = styled.ul<{ $expanded: boolean }>`\n margin: 0;\n padding: 0;\n\n &:first-child {\n padding-bottom: 32px;\n }\n\n & & {\n font-size: 0.929em;\n }\n\n ${props => (props.$expanded ? '' : 'display: none;')};\n`;\n\nexport const MenuItemLi = styled.li<{ depth: number }>`\n list-style: none inside none;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n ${props => (props.depth === 0 ? 'margin-top: 15px' : '')};\n`;\n\nexport const menuItemDepth = {\n 0: css`\n opacity: 0.7;\n text-transform: ${({ theme }) => theme.sidebar.groupItems.textTransform};\n font-size: 0.8em;\n padding-bottom: 0;\n cursor: default;\n `,\n 1: css`\n font-size: 0.929em;\n text-transform: ${({ theme }) => theme.sidebar.level1Items.textTransform};\n `,\n};\n\nexport interface MenuItemLabelType {\n $depth: number;\n $active: boolean;\n $deprecated?: boolean;\n $type?: string;\n}\n\nexport const MenuItemLabel = styled.label.attrs((props: MenuItemLabelType) => ({\n className: classnames('-depth' + props.$depth, {\n active: props.$active,\n }),\n}))<MenuItemLabelType>`\n cursor: pointer;\n color: ${props =>\n props.$active\n ? menuItemActive(props.$depth, props, 'activeTextColor')\n : props.theme.sidebar.textColor};\n margin: 0;\n padding: 12.5px ${props => props.theme.spacing.unit * 4}px;\n ${({ $depth, $type, theme }) =>\n ($type === 'section' && $depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''}\n display: flex;\n justify-content: space-between;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n ${props => menuItemDepth[props.$depth]};\n background-color: ${props =>\n props.$active\n ? menuItemActive(props.$depth, props, 'activeBackgroundColor')\n : props.theme.sidebar.backgroundColor};\n\n ${props => (props.$deprecated && deprecatedCss) || ''};\n\n &:hover {\n color: ${props => menuItemActive(props.$depth, props, 'activeTextColor')};\n background-color: ${props => menuItemActive(props.$depth, props, 'activeBackgroundColor')};\n }\n\n ${ShelfIcon} {\n height: ${({ theme }) => theme.sidebar.arrow.size};\n width: ${({ theme }) => theme.sidebar.arrow.size};\n polygon {\n fill: ${({ theme }) => theme.sidebar.arrow.color};\n }\n }\n`;\n\nexport const MenuItemTitle = styled.span<{ width?: string }>`\n display: inline-block;\n vertical-align: middle;\n width: ${props => (props.width ? props.width : 'auto')};\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const RedocAttribution = styled.div`\n ${({ theme }) => css`\n font-size: 0.8em;\n margin-top: ${theme.spacing.unit * 2}px;\n text-align: center;\n position: fixed;\n width: ${theme.sidebar.width};\n bottom: 0;\n background: ${theme.sidebar.backgroundColor};\n\n a,\n a:visited,\n a:hover {\n color: ${theme.sidebar.textColor} !important;\n padding: ${theme.spacing.unit}px 0;\n border-top: 1px solid ${darken(0.1, theme.sidebar.backgroundColor)};\n text-decoration: none;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `};\n img {\n width: 15px;\n margin-right: 5px;\n }\n\n ${media.lessThan('small')`\n width: 100%;\n `};\n`;\n","import * as React from 'react';\n\nimport { darken } from 'polished';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationBadge } from '../SideMenu/styled.elements';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport styled from '../../styled-components';\nimport { Badge } from '../../common-elements/';\nimport { l } from '../../services/Labels';\n\nexport interface CallbackTitleProps {\n name: string;\n opened?: boolean;\n httpVerb: string;\n deprecated?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nexport const CallbackTitle = (props: CallbackTitleProps) => {\n const { name, opened, className, onClick, httpVerb, deprecated } = props;\n\n return (\n <CallbackTitleWrapper className={className} onClick={onClick || undefined}>\n <OperationBadgeStyled type={httpVerb}>{shortenHTTPVerb(httpVerb)}</OperationBadgeStyled>\n <ShelfIcon size={'1.5em'} direction={opened ? 'down' : 'right'} float={'left'} />\n <CallbackName $deprecated={deprecated}>{name}</CallbackName>\n {deprecated ? <Badge type=\"warning\"> {l('deprecated')} </Badge> : null}\n </CallbackTitleWrapper>\n );\n};\n\nconst CallbackTitleWrapper = styled.button`\n border: 0;\n width: 100%;\n text-align: left;\n & > * {\n vertical-align: middle;\n }\n\n ${ShelfIcon} {\n polygon {\n fill: ${({ theme }) => darken(theme.colors.tonalOffset, theme.colors.gray[100])};\n }\n }\n`;\n\nconst CallbackName = styled.span<{ $deprecated?: boolean }>`\n text-decoration: ${props => (props.$deprecated ? 'line-through' : 'none')};\n margin-right: 8px;\n`;\n\nconst OperationBadgeStyled = styled(OperationBadge)`\n margin: 0 5px 0 0;\n`;\n","import styled from '../../styled-components';\nimport { CallbackTitle } from './CallbackTitle';\nimport { darken } from 'polished';\n\nexport const StyledCallbackTitle = styled(CallbackTitle)`\n padding: 10px;\n border-radius: 2px;\n margin-bottom: 4px;\n line-height: 1.5em;\n background-color: ${({ theme }) => theme.colors.gray[100]};\n cursor: pointer;\n outline-color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.colors.gray[100])};\n`;\n\nexport const CallbackDetailsWrap = styled.div`\n padding: 10px 25px;\n background-color: ${({ theme }) => theme.colors.gray[50]};\n margin-bottom: 5px;\n margin-top: 5px;\n`;\n","import * as React from 'react';\n\nimport { ClipboardService } from '../../services';\n\nexport class SelectOnClick extends React.PureComponent<React.PropsWithChildren<any>> {\n private child: HTMLDivElement | null;\n selectElement = () => {\n ClipboardService.selectElement(this.child);\n };\n\n render() {\n const { children } = this.props;\n return (\n <div\n ref={el => (this.child = el)}\n onClick={this.selectElement}\n onFocus={this.selectElement}\n tabIndex={0}\n role=\"button\"\n >\n {children}\n </div>\n );\n }\n}\n","import styled from '../../styled-components';\n\nexport const OperationEndpointWrap = styled.div`\n cursor: pointer;\n position: relative;\n margin-bottom: 5px;\n`;\n\nexport const ServerRelativeURL = styled.span`\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin-left: 10px;\n flex: 1;\n overflow-x: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const EndpointInfo = styled.button<{ $expanded?: boolean; $inverted?: boolean }>`\n outline: 0;\n color: inherit;\n width: 100%;\n text-align: left;\n cursor: pointer;\n padding: 10px 30px 10px ${props => (props.$inverted ? '10px' : '20px')};\n border-radius: ${props => (props.$inverted ? '0' : '4px 4px 0 0')};\n background-color: ${props =>\n props.$inverted ? 'transparent' : props.theme.codeBlock.backgroundColor};\n display: flex;\n white-space: nowrap;\n align-items: center;\n border: ${props => (props.$inverted ? '0' : '1px solid transparent')};\n border-bottom: ${props => (props.$inverted ? '1px solid #ccc' : '0')};\n transition: border-color 0.25s ease;\n\n ${props =>\n (props.$expanded && !props.$inverted && `border-color: ${props.theme.colors.border.dark};`) ||\n ''}\n\n .${ServerRelativeURL} {\n color: ${props => (props.$inverted ? props.theme.colors.text.primary : '#ffffff')};\n }\n &:focus {\n box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.45), 0 2px 0 rgba(128, 128, 128, 0.25);\n }\n`;\n\nexport const HttpVerb = styled.span.attrs((props: { type: string; $compact?: boolean }) => ({\n className: `http-verb ${props.type}`,\n}))<{ type: string; $compact?: boolean }>`\n font-size: ${props => (props.$compact ? '0.8em' : '0.929em')};\n line-height: ${props => (props.$compact ? '18px' : '20px')};\n background-color: ${props => props.theme.colors.http[props.type] || '#999999'};\n color: #ffffff;\n padding: ${props => (props.$compact ? '2px 8px' : '3px 10px')};\n text-transform: uppercase;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n margin: 0;\n`;\n\nexport const ServersOverlay = styled.div<{ $expanded: boolean }>`\n position: absolute;\n width: 100%;\n z-index: 100;\n background: ${props => props.theme.rightPanel.servers.overlay.backgroundColor};\n color: ${props => props.theme.rightPanel.servers.overlay.textColor};\n box-sizing: border-box;\n box-shadow: 0 0 6px rgba(0, 0, 0, 0.33);\n overflow: hidden;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n transition: all 0.25s ease;\n visibility: hidden;\n ${props => (props.$expanded ? 'visibility: visible;' : 'transform: translateY(-50%) scaleY(0);')}\n`;\n\nexport const ServerItem = styled.div`\n padding: 10px;\n`;\n\nexport const ServerUrl = styled.div`\n padding: 5px;\n border: 1px solid #ccc;\n background: ${props => props.theme.rightPanel.servers.url.backgroundColor};\n word-break: break-all;\n color: ${props => props.theme.colors.primary.main};\n > span {\n color: ${props => props.theme.colors.text.primary};\n }\n`;\n","import * as React from 'react';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationModel } from '../../services';\nimport { Markdown } from '../Markdown/Markdown';\nimport { OptionsContext } from '../OptionsProvider';\nimport { SelectOnClick } from '../SelectOnClick/SelectOnClick';\n\nimport { expandDefaultServerVariables, getBasePath } from '../../utils';\nimport {\n EndpointInfo,\n HttpVerb,\n OperationEndpointWrap,\n ServerItem,\n ServerRelativeURL,\n ServersOverlay,\n ServerUrl,\n} from './styled.elements';\n\nexport interface EndpointProps {\n operation: OperationModel;\n\n hideHostname?: boolean;\n inverted?: boolean;\n compact?: boolean;\n}\n\nexport interface EndpointState {\n expanded: boolean;\n}\n\nexport class Endpoint extends React.Component<EndpointProps, EndpointState> {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n }\n\n toggle = () => {\n this.setState({ expanded: !this.state.expanded });\n };\n\n render() {\n const { operation, inverted, hideHostname } = this.props;\n const { expanded } = this.state;\n\n // TODO: highlight server variables, e.g. https://{user}.test.com\n return (\n <OptionsContext.Consumer>\n {options => (\n <OperationEndpointWrap>\n <EndpointInfo onClick={this.toggle} $expanded={expanded} $inverted={inverted}>\n <HttpVerb type={operation.httpVerb} $compact={this.props.compact}>\n {operation.httpVerb}\n </HttpVerb>\n <ServerRelativeURL>{operation.path}</ServerRelativeURL>\n <ShelfIcon\n float={'right'}\n color={inverted ? 'black' : 'white'}\n size={'20px'}\n direction={expanded ? 'up' : 'down'}\n style={{ marginRight: '-25px' }}\n />\n </EndpointInfo>\n <ServersOverlay $expanded={expanded} aria-hidden={!expanded}>\n {operation.servers.map(server => {\n const normalizedUrl = options.expandDefaultServerVariables\n ? expandDefaultServerVariables(server.url, server.variables)\n : server.url;\n const basePath = getBasePath(normalizedUrl);\n return (\n <ServerItem key={normalizedUrl}>\n <Markdown source={server.description || ''} compact={true} />\n <SelectOnClick>\n <ServerUrl>\n <span>\n {hideHostname || options.hideHostname\n ? basePath === '/'\n ? ''\n : basePath\n : normalizedUrl}\n </span>\n {operation.path}\n </ServerUrl>\n </SelectOnClick>\n </ServerItem>\n );\n })}\n </ServersOverlay>\n </OperationEndpointWrap>\n )}\n </OptionsContext.Consumer>\n );\n }\n}\n","import * as React from 'react';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldModel } from '../../services/models';\nimport { Field } from '../Fields/Field';\n\nimport { mapWithLast } from '../../utils';\n\nexport interface ParametersGroupProps {\n place: string;\n parameters: FieldModel[];\n}\n\nexport class ParametersGroup extends React.PureComponent<ParametersGroupProps, any> {\n render() {\n const { place, parameters } = this.props;\n if (!parameters || !parameters.length) {\n return null;\n }\n\n return (\n <div key={place}>\n <UnderlinedHeader>{place} Parameters</UnderlinedHeader>\n <PropertiesTable>\n <tbody>\n {mapWithLast(parameters, (field, isLast) => (\n <Field key={field.name} isLast={isLast} field={field} showExamples={true} />\n ))}\n </tbody>\n </PropertiesTable>\n </div>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, DropdownProps } from '../../common-elements/Dropdown';\nimport { MediaContentModel, MediaTypeModel, SchemaModel } from '../../services/models';\nimport { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements';\n\nexport interface MediaTypeChildProps {\n schema: SchemaModel;\n mime?: string;\n}\n\nexport interface MediaTypesSwitchProps {\n content?: MediaContentModel;\n withLabel?: boolean;\n\n renderDropdown: (props: DropdownProps) => JSX.Element;\n children: (activeMime: MediaTypeModel) => JSX.Element;\n}\n\n@observer\nexport class MediaTypesSwitch extends React.Component<MediaTypesSwitchProps> {\n switchMedia = ({ idx }: DropdownOption) => {\n if (this.props.content && idx !== undefined) {\n this.props.content.activate(idx);\n }\n };\n\n render() {\n const { content } = this.props;\n if (!content || !content.mediaTypes || !content.mediaTypes.length) {\n return null;\n }\n const activeMimeIdx = content.activeMimeIdx;\n\n const options = content.mediaTypes.map((mime, idx) => {\n return {\n value: mime.name,\n idx,\n };\n });\n\n const Wrapper = ({ children }) =>\n this.props.withLabel ? (\n <DropdownWrapper>\n <DropdownLabel>Content type</DropdownLabel>\n {children}\n </DropdownWrapper>\n ) : (\n children\n );\n\n return (\n <>\n <Wrapper>\n {this.props.renderDropdown({\n value: options[activeMimeIdx].value,\n options,\n onChange: this.switchMedia,\n ariaLabel: 'Content type',\n })}\n </Wrapper>\n {this.props.children(content.active)}\n </>\n );\n }\n}\n","import * as React from 'react';\nimport { DropdownOrLabel, DropdownOrLabelProps } from '../DropdownOrLabel/DropdownOrLabel';\nimport { ParametersGroup } from './ParametersGroup';\n\nimport { UnderlinedHeader } from '../../common-elements';\n\nimport { MediaContentModel } from '../../services';\nimport { FieldModel, RequestBodyModel } from '../../services/models';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { Schema } from '../Schema';\n\nimport { Markdown } from '../Markdown/Markdown';\nimport { ConstraintsView } from '../Fields/FieldConstraints';\nimport { RequiredLabel } from '../../common-elements/fields';\nimport styled from '../../styled-components';\n\nfunction safePush(obj, prop, item) {\n if (!obj[prop]) {\n obj[prop] = [];\n }\n obj[prop].push(item);\n}\n\nexport interface ParametersProps {\n parameters?: FieldModel[];\n body?: RequestBodyModel;\n}\n\nconst PARAM_PLACES = ['path', 'query', 'cookie', 'header'];\n\nexport class Parameters extends React.PureComponent<ParametersProps> {\n orderParams(params: FieldModel[]): Record<string, FieldModel[]> {\n const res = {};\n params.forEach(param => {\n safePush(res, param.in, param);\n });\n return res;\n }\n\n render() {\n const { body, parameters = [] } = this.props;\n if (body === undefined && parameters === undefined) {\n return null;\n }\n\n const paramsMap = this.orderParams(parameters);\n\n const paramsPlaces = parameters.length > 0 ? PARAM_PLACES : [];\n\n const bodyContent = body && body.content;\n\n const bodyDescription = body && body.description;\n\n const bodyRequired = body && body.required;\n\n return (\n <>\n {paramsPlaces.map(place => (\n <ParametersGroup key={place} place={place} parameters={paramsMap[place]} />\n ))}\n {bodyContent && (\n <BodyContent\n content={bodyContent}\n description={bodyDescription}\n bodyRequired={bodyRequired}\n />\n )}\n </>\n );\n }\n}\n\nfunction DropdownWithinHeader({\n bodyRequired,\n ...props\n}: DropdownOrLabelProps & { bodyRequired?: boolean }) {\n const isRequired = typeof bodyRequired === 'boolean' && !!bodyRequired;\n const isOptional = typeof bodyRequired === 'boolean' && !bodyRequired;\n\n return (\n <UnderlinedHeader key=\"header\">\n Request Body schema: <DropdownOrLabel {...props} />\n {isRequired && <RequiredBody>required</RequiredBody>}\n {isOptional && <OptionalBody>optional</OptionalBody>}\n </UnderlinedHeader>\n );\n}\n\nexport function BodyContent(props: {\n content: MediaContentModel;\n description?: string;\n bodyRequired?: boolean;\n}): JSX.Element {\n const { content, description, bodyRequired } = props;\n const { isRequestType } = content;\n return (\n <MediaTypesSwitch\n content={content}\n renderDropdown={props => <DropdownWithinHeader bodyRequired={bodyRequired} {...props} />}\n >\n {({ schema }) => {\n return (\n <>\n {description !== undefined && <Markdown source={description} />}\n {schema?.type === 'object' && (\n <ConstraintsView constraints={schema?.constraints || []} />\n )}\n <Schema\n skipReadOnly={isRequestType}\n skipWriteOnly={!isRequestType}\n key=\"schema\"\n schema={schema}\n />\n </>\n );\n }}\n </MediaTypesSwitch>\n );\n}\n\nconst commonStyles = `\n text-transform: lowercase;\n margin-left: 0;\n line-height: 1.5em;\n`;\n\nconst RequiredBody = styled(RequiredLabel)`\n ${commonStyles}\n`;\n\nconst OptionalBody = styled('div')`\n ${commonStyles}\n color: ${({ theme }) => theme.colors.text.secondary};\n font-size: ${props => props.theme.schema.labelsTextSize};\n`;\n","import * as React from 'react';\n\nimport { Code } from './styled.elements';\nimport { ShelfIcon } from '../../common-elements';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface ResponseTitleProps {\n code: string;\n title: string;\n type: string;\n empty?: boolean;\n opened?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nfunction ResponseTitleComponent({\n title,\n type,\n empty,\n code,\n opened,\n className,\n onClick,\n}: ResponseTitleProps): React.ReactElement {\n return (\n <button\n className={className}\n onClick={(!empty && onClick) || undefined}\n aria-expanded={opened}\n disabled={empty}\n >\n {!empty && (\n <ShelfIcon\n size={'1.5em'}\n color={type}\n direction={opened ? 'down' : 'right'}\n float={'left'}\n />\n )}\n <Code>{code} </Code>\n <Markdown compact={true} inline={true} source={title} />\n </button>\n );\n}\n\nexport const ResponseTitle = React.memo<ResponseTitleProps>(ResponseTitleComponent);\n","import { UnderlinedHeader } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { ResponseTitle } from './ResponseTitle';\n\nexport const StyledResponseTitle = styled(ResponseTitle)`\n display: block;\n border: 0;\n width: 100%;\n text-align: left;\n padding: 10px;\n border-radius: 2px;\n margin-bottom: 4px;\n line-height: 1.5em;\n cursor: pointer;\n\n color: ${props => props.theme.colors.responses[props.type].color};\n background-color: ${props => props.theme.colors.responses[props.type].backgroundColor};\n &:focus {\n outline: auto ${props => props.theme.colors.responses[props.type].color};\n }\n ${props =>\n (props.empty &&\n `\ncursor: default;\n&::before {\n content: \"—\";\n font-weight: bold;\n width: 1.5em;\n text-align: center;\n display: inline-block;\n vertical-align: top;\n}\n&:focus {\n outline: 0;\n}\n`) ||\n ''};\n`;\n\nexport const ResponseDetailsWrap = styled.div`\n padding: 10px;\n`;\n\nexport const HeadersCaption = styled(UnderlinedHeader).attrs({\n as: 'caption',\n})`\n text-align: left;\n margin-top: 1em;\n caption-side: top;\n`;\n\nexport const Code = styled.strong`\n vertical-align: top;\n`;\n","import * as React from 'react';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldModel } from '../../services/models';\nimport { mapWithLast } from '../../utils';\nimport { Field } from '../Fields/Field';\nimport { HeadersCaption } from './styled.elements';\n\nexport interface ResponseHeadersProps {\n headers?: FieldModel[];\n}\n\nexport class ResponseHeaders extends React.PureComponent<ResponseHeadersProps> {\n render() {\n const { headers } = this.props;\n if (headers === undefined || headers.length === 0) {\n return null;\n }\n return (\n <PropertiesTable>\n <HeadersCaption> Response Headers </HeadersCaption>\n <tbody>\n {mapWithLast(headers, (header, isLast) => (\n <Field isLast={isLast} key={header.name} field={header} showExamples={true} />\n ))}\n </tbody>\n </PropertiesTable>\n );\n }\n}\n","import * as React from 'react';\n\nimport { ResponseModel } from '../../services/models';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { Schema } from '../Schema';\n\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { ResponseHeaders } from './ResponseHeaders';\nimport { ConstraintsView } from '../Fields/FieldConstraints';\n\nexport class ResponseDetails extends React.PureComponent<{ response: ResponseModel }> {\n render() {\n const { description, extensions, headers, content } = this.props.response;\n return (\n <>\n {description && <Markdown source={description} />}\n <Extensions extensions={extensions} />\n <ResponseHeaders headers={headers} />\n <MediaTypesSwitch content={content} renderDropdown={this.renderDropdown}>\n {({ schema }) => {\n return (\n <>\n {schema?.type === 'object' && (\n <ConstraintsView constraints={schema?.constraints || []} />\n )}\n <Schema skipWriteOnly={true} key=\"schema\" schema={schema} />\n </>\n );\n }}\n </MediaTypesSwitch>\n </>\n );\n }\n\n private renderDropdown = props => {\n return (\n <UnderlinedHeader key=\"header\">\n Response Schema: <DropdownOrLabel {...props} />\n </UnderlinedHeader>\n );\n };\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport type { ResponseModel, MediaTypeModel } from '../../services/models';\nimport { ResponseDetails } from './ResponseDetails';\nimport { ResponseDetailsWrap, StyledResponseTitle } from './styled.elements';\n\nexport interface ResponseViewProps {\n response: ResponseModel;\n}\n\nexport const ResponseView = observer(({ response }: ResponseViewProps): React.ReactElement => {\n const { extensions, headers, type, summary, description, code, expanded, content } = response;\n\n const mimes = React.useMemo<MediaTypeModel[]>(\n () =>\n content === undefined ? [] : content.mediaTypes.filter(mime => mime.schema !== undefined),\n [content],\n );\n\n const empty = React.useMemo<boolean>(\n () =>\n (!extensions || Object.keys(extensions).length === 0) &&\n headers.length === 0 &&\n mimes.length === 0 &&\n !description,\n [extensions, headers, mimes, description],\n );\n\n return (\n <div>\n <StyledResponseTitle\n onClick={() => response.toggle()}\n type={type}\n empty={empty}\n title={summary || ''}\n code={code}\n opened={expanded}\n />\n {expanded && !empty && (\n <ResponseDetailsWrap>\n <ResponseDetails response={response} />\n </ResponseDetailsWrap>\n )}\n </div>\n );\n});\n","import * as React from 'react';\nimport { l } from '../../services/Labels';\nimport { ResponseModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { ResponseView } from './Response';\n\nconst ResponsesHeader = styled.h3`\n font-size: 1.3em;\n padding: 0.2em 0;\n margin: 3em 0 1.1em;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: normal;\n`;\n\nexport interface ResponseListProps {\n responses: ResponseModel[];\n isCallback?: boolean;\n}\n\nexport class ResponsesList extends React.PureComponent<ResponseListProps> {\n render() {\n const { responses, isCallback } = this.props;\n\n if (!responses || responses.length === 0) {\n return null;\n }\n\n return (\n <div>\n <ResponsesHeader>{isCallback ? l('callbackResponses') : l('responses')}</ResponsesHeader>\n {responses.map(response => {\n return <ResponseView key={response.code} response={response} />;\n })}\n </div>\n );\n }\n}\n","import { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n ScopeName,\n SecurityRequirementAndWrap,\n SecurityRequirementOrWrap,\n} from './styled.elements';\nimport * as React from 'react';\nimport { AUTH_TYPES } from '../SecuritySchemes/SecuritySchemes';\n\nexport interface SecurityRequirementProps {\n security: SecurityRequirementModel;\n showSecuritySchemeType?: boolean;\n expanded: boolean;\n}\n\nexport function SecurityHeader(props: SecurityRequirementProps) {\n const { security, showSecuritySchemeType, expanded } = props;\n\n const grouping = security.schemes.length > 1;\n if (security.schemes.length === 0)\n return <SecurityRequirementOrWrap $expanded={expanded}>None</SecurityRequirementOrWrap>;\n return (\n <SecurityRequirementOrWrap $expanded={expanded}>\n {grouping && '('}\n {security.schemes.map(scheme => {\n return (\n <SecurityRequirementAndWrap key={scheme.id}>\n {showSecuritySchemeType && `${AUTH_TYPES[scheme.type] || scheme.type}: `}\n <i>{scheme.displayName}</i>\n {expanded && scheme.scopes.length\n ? [\n ' (',\n scheme.scopes.map<React.ReactNode>(scope => (\n <ScopeName key={scope}>{scope}</ScopeName>\n )),\n ') ',\n ]\n : null}\n </SecurityRequirementAndWrap>\n );\n })}\n {grouping && ') '}\n </SecurityRequirementOrWrap>\n );\n}\n","import * as React from 'react';\n\nexport const RequiredScopesRow = ({ scopes }: { scopes: string[] }): JSX.Element | null => {\n if (!scopes.length) return null;\n\n return (\n <div>\n <b>Required scopes: </b>\n {scopes.map((scope, idx) => {\n return (\n <React.Fragment key={idx}>\n <code>{scope}</code>{' '}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n AuthHeader,\n AuthHeaderColumn,\n SecuritiesColumn,\n SecurityDetailsStyle,\n Wrap,\n} from './styled.elements';\nimport { useStore } from '../StoreBuilder';\nimport { SecurityHeader } from './SecurityHeader';\nimport { RequiredScopesRow } from './RequiredScopesRow';\nimport { AUTH_TYPES } from '../SecuritySchemes/SecuritySchemes';\nimport { Markdown } from '../Markdown/Markdown';\nimport { SecurityDetails } from './SecurityDetails';\nimport { ShelfIcon } from '../../common-elements';\n\nexport interface SecurityRequirementsProps {\n securities: SecurityRequirementModel[];\n}\n\nexport function SecurityRequirements(props: SecurityRequirementsProps) {\n const store = useStore();\n const showSecuritySchemeType = store?.options.showSecuritySchemeType;\n const [expanded, setExpanded] = useState(false);\n\n const { securities } = props;\n\n if (!securities?.length || store?.options.hideSecuritySection) {\n return null;\n }\n\n const operationSecuritySchemes = store?.spec.securitySchemes.schemes.filter(({ id }) => {\n return securities.find(security => security.schemes.find(scheme => scheme.id === id));\n });\n\n return (\n <>\n <Wrap $expanded={expanded}>\n <AuthHeaderColumn onClick={() => setExpanded(!expanded)}>\n <AuthHeader>Authorizations:</AuthHeader>\n <ShelfIcon size={'1.3em'} direction={expanded ? 'down' : 'right'} />\n </AuthHeaderColumn>\n <SecuritiesColumn $expanded={expanded}>\n {securities.map((security, idx) => (\n <SecurityHeader\n key={idx}\n expanded={expanded}\n showSecuritySchemeType={showSecuritySchemeType}\n security={security}\n />\n ))}\n </SecuritiesColumn>\n </Wrap>\n {expanded &&\n !!operationSecuritySchemes?.length &&\n operationSecuritySchemes.map((scheme, idx) => (\n <SecurityDetailsStyle key={idx}>\n <h5>\n <LockIcon /> {AUTH_TYPES[scheme.type] || scheme.type}: {scheme.id}\n </h5>\n <Markdown source={scheme.description || ''} />\n <SecurityDetails\n key={scheme.id}\n scheme={scheme}\n RequiredScopes={\n <RequiredScopesRow scopes={getRequiredScopes(scheme.id, securities)} />\n }\n />\n </SecurityDetailsStyle>\n ))}\n </>\n );\n}\n\nconst LockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"11\" height=\"11\">\n <path\n fill=\"currentColor\"\n d=\"M18 10V6A6 6 0 0 0 6 6v4H3v14h18V10h-3zM8 6c0-2.206 1.794-4 4-4s4 1.794 4 4v4H8V6zm11 16H5V12h14v10z\"\n />\n </svg>\n);\n\nfunction getRequiredScopes(id: string, securities: SecurityRequirementModel[]): string[] {\n const allScopes: string[] = [];\n let securitiesLength = securities.length;\n\n while (securitiesLength--) {\n const security = securities[securitiesLength];\n let schemesLength = security.schemes.length;\n while (schemesLength--) {\n const scheme = security.schemes[schemesLength];\n if (scheme.id === id && Array.isArray(scheme.scopes)) {\n allScopes.push(...scheme.scopes);\n }\n }\n }\n\n return Array.from(new Set(allScopes));\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { Endpoint } from '../Endpoint/Endpoint';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { Parameters } from '../Parameters/Parameters';\nimport { ResponsesList } from '../Responses/ResponsesList';\nimport { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement';\nimport { CallbackDetailsWrap } from './styled.elements';\n\nexport interface CallbackDetailsProps {\n operation: OperationModel;\n}\n\n@observer\nexport class CallbackDetails extends React.Component<CallbackDetailsProps> {\n render() {\n const { operation } = this.props;\n const { description, externalDocs } = operation;\n const hasDescription = !!(description || externalDocs);\n\n return (\n <CallbackDetailsWrap>\n {hasDescription && (\n <Description>\n {description !== undefined && <Markdown source={description} />}\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </Description>\n )}\n <Endpoint operation={this.props.operation} inverted={true} compact={true} />\n <Extensions extensions={operation.extensions} />\n <SecurityRequirements securities={operation.security} />\n <Parameters parameters={operation.parameters} body={operation.requestBody} />\n <ResponsesList responses={operation.responses} isCallback={operation.isCallback} />\n </CallbackDetailsWrap>\n );\n }\n}\n\nconst Description = styled.div`\n margin-bottom: ${({ theme }) => theme.spacing.unit * 3}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\nimport { StyledCallbackTitle } from './styled.elements';\nimport { CallbackDetails } from './CallbackDetails';\n\n@observer\nexport class CallbackOperation extends React.Component<{ callbackOperation: OperationModel }> {\n toggle = () => {\n this.props.callbackOperation.toggle();\n };\n\n render() {\n const { name, expanded, httpVerb, deprecated } = this.props.callbackOperation;\n\n return (\n <>\n <StyledCallbackTitle\n onClick={this.toggle}\n name={name}\n opened={expanded}\n httpVerb={httpVerb}\n deprecated={deprecated}\n />\n {expanded && <CallbackDetails operation={this.props.callbackOperation} />}\n </>\n );\n }\n}\n","import * as React from 'react';\n\nimport { CallbackModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { CallbackOperation } from './CallbackOperation';\n\nexport interface CallbacksListProps {\n callbacks: CallbackModel[];\n}\n\nexport class CallbacksList extends React.PureComponent<CallbacksListProps> {\n render() {\n const { callbacks } = this.props;\n\n if (!callbacks || callbacks.length === 0) {\n return null;\n }\n\n return (\n <div>\n <CallbacksHeader> Callbacks </CallbacksHeader>\n {callbacks.map(callback => {\n return callback.operations.map((operation, index) => {\n return (\n <CallbackOperation key={`${callback.name}_${index}`} callbackOperation={operation} />\n );\n });\n })}\n </div>\n );\n }\n}\n\nconst CallbacksHeader = styled.h3`\n font-size: 1.3em;\n padding: 0.2em 0;\n margin: 3em 0 1.1em;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: normal;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownProps, DropdownOption } from '../../common-elements/Dropdown';\nimport { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements';\n\nexport interface GenericChildrenSwitcherProps<T> {\n items?: T[];\n options: DropdownOption[];\n label?: string;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n children: (activeItem: T) => JSX.Element;\n}\n\nexport interface GenericChildrenSwitcherState {\n activeItemIdx: number;\n}\n/**\n * TODO: Refactor this component:\n * Implement rendering dropdown/label directly in this component\n * Accept as a parameter mapper-function for building dropdown option labels\n */\n@observer\nexport class GenericChildrenSwitcher<T> extends React.Component<\n GenericChildrenSwitcherProps<T>,\n GenericChildrenSwitcherState\n> {\n constructor(props) {\n super(props);\n this.state = {\n activeItemIdx: 0,\n };\n }\n\n switchItem = ({ idx }: DropdownOption) => {\n if (this.props.items && idx !== undefined) {\n this.setState({\n activeItemIdx: idx,\n });\n }\n };\n\n render() {\n const { items } = this.props;\n\n if (!items || !items.length) {\n return null;\n }\n\n const Wrapper = ({ children }) =>\n this.props.label ? (\n <DropdownWrapper>\n <DropdownLabel>{this.props.label}</DropdownLabel>\n {children}\n </DropdownWrapper>\n ) : (\n children\n );\n\n return (\n <>\n <Wrapper>\n {this.props.renderDropdown({\n value: this.props.options[this.state.activeItemIdx].value,\n options: this.props.options,\n onChange: this.switchItem,\n ariaLabel: this.props.label || 'Callback',\n })}\n </Wrapper>\n\n {this.props.children(items[this.state.activeItemIdx])}\n </>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { MediaTypeSamples } from './MediaTypeSamples';\n\nimport { MediaContentModel } from '../../services/models';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { InvertedSimpleDropdown, MimeLabel } from './styled.elements';\n\nexport interface PayloadSamplesProps {\n content: MediaContentModel;\n}\n\n@observer\nexport class PayloadSamples extends React.Component<PayloadSamplesProps> {\n render() {\n const mimeContent = this.props.content;\n if (mimeContent === undefined) {\n return null;\n }\n\n return (\n <MediaTypesSwitch content={mimeContent} renderDropdown={this.renderDropdown} withLabel={true}>\n {mediaType => (\n <MediaTypeSamples\n key=\"samples\"\n mediaType={mediaType}\n renderDropdown={this.renderDropdown}\n />\n )}\n </MediaTypesSwitch>\n );\n }\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n}\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { DropdownProps } from '../../common-elements';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { OperationModel } from '../../services/models';\nimport { XPayloadSample } from '../../services/models/Operation';\nimport { isPayloadSample } from '../../services';\n\nexport interface PayloadSampleProps {\n callback: OperationModel;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n}\n\nexport class CallbackPayloadSample extends React.Component<PayloadSampleProps> {\n render() {\n const payloadSample = this.props.callback.codeSamples.find(sample =>\n isPayloadSample(sample),\n ) as XPayloadSample | undefined;\n\n if (!payloadSample) {\n return null;\n }\n\n return (\n <PayloadSampleWrapper>\n <PayloadSamples content={payloadSample.requestBodyContent} />\n </PayloadSampleWrapper>\n );\n }\n}\n\nexport const PayloadSampleWrapper = styled.div`\n margin-top: 15px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { RightPanelHeader } from '../../common-elements';\nimport { RedocNormalizedOptions } from '../../services';\nimport { CallbackModel } from '../../services/models';\nimport { OptionsContext } from '../OptionsProvider';\nimport { GenericChildrenSwitcher } from '../GenericChildrenSwitcher/GenericChildrenSwitcher';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { InvertedSimpleDropdown, MimeLabel } from '../PayloadSamples/styled.elements';\nimport { CallbackPayloadSample } from './CallbackReqSamples';\n\nexport interface CallbackSamplesProps {\n callbacks: CallbackModel[];\n}\n\n@observer\nexport class CallbackSamples extends React.Component<CallbackSamplesProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n\n render() {\n const { callbacks } = this.props;\n\n if (!callbacks || callbacks.length === 0) {\n return null;\n }\n\n const operations = callbacks\n .map(callback => callback.operations.map(operation => operation))\n .reduce((a, b) => a.concat(b), []);\n\n const hasSamples = operations.some(operation => operation.codeSamples.length > 0);\n\n if (!hasSamples) {\n return null;\n }\n\n const dropdownOptions = operations.map((callback, idx) => {\n return {\n value: `${callback.httpVerb.toUpperCase()}: ${callback.name}`,\n idx,\n };\n });\n\n return (\n <div>\n <RightPanelHeader> Callback payload samples </RightPanelHeader>\n\n <SamplesWrapper>\n <GenericChildrenSwitcher\n items={operations}\n renderDropdown={this.renderDropdown}\n label={'Callback'}\n options={dropdownOptions}\n >\n {callback => (\n <CallbackPayloadSample\n key=\"callbackPayloadSample\"\n callback={callback}\n renderDropdown={this.renderDropdown}\n />\n )}\n </GenericChildrenSwitcher>\n </SamplesWrapper>\n </div>\n );\n }\n}\n\nexport const SamplesWrapper = styled.div`\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n padding: ${props => props.theme.spacing.unit * 4}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { isPayloadSample, OperationModel, RedocNormalizedOptions } from '../../services';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { SourceCodeWithCopy } from '../SourceCode/SourceCode';\n\nimport { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';\nimport { OptionsContext } from '../OptionsProvider';\nimport { l } from '../../services/Labels';\n\nexport interface RequestSamplesProps {\n operation: OperationModel;\n}\n\n@observer\nexport class RequestSamples extends React.Component<RequestSamplesProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n operation: OperationModel;\n\n render() {\n const { operation } = this.props;\n const samples = operation.codeSamples;\n\n const hasSamples = samples.length > 0;\n const hideTabList = samples.length === 1 ? this.context.hideSingleRequestSampleTab : false;\n return (\n (hasSamples && (\n <div>\n <RightPanelHeader> {l('requestSamples')} </RightPanelHeader>\n\n <Tabs defaultIndex={0}>\n <TabList hidden={hideTabList}>\n {samples.map(sample => (\n <Tab key={sample.lang + '_' + (sample.label || '')}>\n {sample.label !== undefined ? sample.label : sample.lang}\n </Tab>\n ))}\n </TabList>\n {samples.map(sample => (\n <TabPanel key={sample.lang + '_' + (sample.label || '')}>\n {isPayloadSample(sample) ? (\n <div>\n <PayloadSamples content={sample.requestBodyContent} />\n </div>\n ) : (\n <SourceCodeWithCopy lang={sample.lang} source={sample.source} />\n )}\n </TabPanel>\n ))}\n </Tabs>\n </div>\n )) ||\n null\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\n\nimport { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { l } from '../../services/Labels';\n\nexport interface ResponseSamplesProps {\n operation: OperationModel;\n}\n\n@observer\nexport class ResponseSamples extends React.Component<ResponseSamplesProps> {\n operation: OperationModel;\n\n render() {\n const { operation } = this.props;\n const responses = operation.responses.filter(response => {\n return response.content && response.content.hasSample;\n });\n\n return (\n (responses.length > 0 && (\n <div>\n <RightPanelHeader> {l('responseSamples')} </RightPanelHeader>\n\n <Tabs defaultIndex={0}>\n <TabList>\n {responses.map(response => (\n <Tab className={'tab-' + response.type} key={response.code}>\n {response.code}\n </Tab>\n ))}\n </TabList>\n {responses.map(response => (\n <TabPanel key={response.code}>\n <div>\n <PayloadSamples content={response.content!} />\n </div>\n </TabPanel>\n ))}\n </Tabs>\n </div>\n )) ||\n null\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { Badge, DarkRightPanel, H2, MiddlePanel, Row } from '../../common-elements';\nimport { ShareLink } from '../../common-elements/linkify';\nimport { OperationModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { CallbacksList } from '../Callbacks';\nimport { CallbackSamples } from '../CallbackSamples/CallbackSamples';\nimport { Endpoint } from '../Endpoint/Endpoint';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { OptionsContext } from '../OptionsProvider';\nimport { Parameters } from '../Parameters/Parameters';\nimport { RequestSamples } from '../RequestSamples/RequestSamples';\nimport { ResponsesList } from '../Responses/ResponsesList';\nimport { ResponseSamples } from '../ResponseSamples/ResponseSamples';\nimport { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement';\nimport { SECTION_ATTR } from '../../services';\n\nconst Description = styled.div`\n margin-bottom: ${({ theme }) => theme.spacing.unit * 6}px;\n`;\n\nexport interface OperationProps {\n operation: OperationModel;\n}\n\nexport const Operation = observer(({ operation }: OperationProps): JSX.Element => {\n const {\n name: summary,\n description,\n deprecated,\n externalDocs,\n isWebhook,\n httpVerb,\n badges,\n } = operation;\n const hasDescription = !!(description || externalDocs);\n const { showWebhookVerb } = React.useContext(OptionsContext);\n const badgesBefore = badges.filter(({ position }) => position === 'before');\n const badgesAfter = badges.filter(({ position }) => position === 'after');\n\n return (\n <OptionsContext.Consumer>\n {options => (\n <Row {...{ [SECTION_ATTR]: operation.operationHash }} id={operation.operationHash}>\n <MiddlePanel>\n <H2>\n <ShareLink to={operation.id} />\n {badgesBefore.map(({ name, color }) => (\n <Badge type=\"primary\" key={name} color={color}>\n {name}\n </Badge>\n ))}\n {summary} {deprecated && <Badge type=\"warning\"> Deprecated </Badge>}\n {isWebhook && (\n <Badge type=\"primary\">\n {' '}\n Webhook {showWebhookVerb && httpVerb && '| ' + httpVerb.toUpperCase()}\n </Badge>\n )}\n {badgesAfter.map(({ name, color }) => (\n <Badge type=\"primary\" key={name} color={color}>\n {name}\n </Badge>\n ))}\n </H2>\n {options.pathInMiddlePanel && !isWebhook && (\n <Endpoint operation={operation} inverted={true} />\n )}\n {hasDescription && (\n <Description>\n {description !== undefined && <Markdown source={description} />}\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </Description>\n )}\n <Extensions extensions={operation.extensions} />\n <SecurityRequirements securities={operation.security} />\n <Parameters parameters={operation.parameters} body={operation.requestBody} />\n <ResponsesList responses={operation.responses} />\n <CallbacksList callbacks={operation.callbacks} />\n </MiddlePanel>\n <DarkRightPanel>\n {!options.pathInMiddlePanel && !isWebhook && <Endpoint operation={operation} />}\n <RequestSamples operation={operation} />\n <ResponseSamples operation={operation} />\n <CallbackSamples callbacks={operation.callbacks} />\n </DarkRightPanel>\n </Row>\n )}\n </OptionsContext.Consumer>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown';\nimport { H2, H3, MiddlePanel, Row, Section, ShareLink } from '../../common-elements';\nimport type { ContentItemModel } from '../../services';\nimport type { GroupModel, OperationModel } from '../../services/models';\nimport { Operation } from '../Operation/Operation';\n\n@observer\nexport class ContentItems extends React.Component<{\n items: ContentItemModel[];\n}> {\n render() {\n const items = this.props.items;\n if (items.length === 0) {\n return null;\n }\n return items.map(item => {\n return <ContentItem key={item.id} item={item} />;\n });\n }\n}\n\nexport interface ContentItemProps {\n item: ContentItemModel;\n}\n\n@observer\nexport class ContentItem extends React.Component<ContentItemProps> {\n render() {\n const item = this.props.item;\n let content;\n const { type } = item;\n switch (type) {\n case 'group':\n content = null;\n break;\n case 'tag':\n case 'section':\n content = <SectionItem {...this.props} />;\n break;\n case 'operation':\n content = <OperationItem item={item as any} />;\n break;\n default:\n content = <SectionItem {...this.props} />;\n }\n\n return (\n <>\n {content && (\n <Section id={item.id} $underlined={item.type === 'operation'}>\n {content}\n </Section>\n )}\n {item.items && <ContentItems items={item.items} />}\n </>\n );\n }\n}\n\nconst middlePanelWrap = component => <MiddlePanel $compact={true}>{component}</MiddlePanel>;\n\n@observer\nexport class SectionItem extends React.Component<ContentItemProps> {\n render() {\n const { name, description, externalDocs, level } = this.props.item as GroupModel;\n\n const Header = level === 2 ? H3 : H2;\n return (\n <>\n <Row>\n <MiddlePanel $compact={false}>\n <Header>\n <ShareLink to={this.props.item.id} />\n {name}\n </Header>\n </MiddlePanel>\n </Row>\n <AdvancedMarkdown\n parentId={this.props.item.id}\n source={description || ''}\n htmlWrap={middlePanelWrap}\n />\n {externalDocs && (\n <Row>\n <MiddlePanel>\n <ExternalDocumentation externalDocs={externalDocs} />\n </MiddlePanel>\n </Row>\n )}\n </>\n );\n }\n}\n\n@observer\nexport class OperationItem extends React.Component<{\n item: OperationModel;\n}> {\n render() {\n return <Operation operation={this.props.item} />;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ShelfIcon } from '../../common-elements/shelfs';\nimport type { IMenuItem } from '../../services';\nimport { OperationModel } from '../../services';\nimport { l } from '../../services/Labels';\nimport { scrollIntoViewIfNeeded } from '../../utils';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport { OptionsContext } from '../OptionsProvider';\nimport { MenuItems } from './MenuItems';\nimport { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements';\n\nexport interface MenuItemProps {\n item: IMenuItem;\n onActivate?: (item: IMenuItem) => void;\n withoutChildren?: boolean;\n children?: React.ReactChild;\n}\n\n@observer\nexport class MenuItem extends React.Component<MenuItemProps> {\n ref = React.createRef<HTMLLabelElement>();\n\n activate = (evt: React.MouseEvent<HTMLElement>) => {\n this.props.onActivate!(this.props.item);\n evt.stopPropagation();\n };\n\n componentDidMount() {\n this.scrollIntoViewIfActive();\n }\n\n componentDidUpdate() {\n this.scrollIntoViewIfActive();\n }\n\n scrollIntoViewIfActive() {\n if (this.props.item.active && this.ref.current) {\n scrollIntoViewIfNeeded(this.ref.current);\n }\n }\n\n render() {\n const { item, withoutChildren } = this.props;\n return (\n <MenuItemLi\n tabIndex={0}\n onClick={this.activate}\n onKeyDown={evt => {\n // Space or Enter key will activate the menu item\n if (evt.key === 'Enter' || evt.key === ' ') {\n this.props.onActivate!(this.props.item);\n evt.stopPropagation();\n }\n }}\n depth={item.depth}\n data-item-id={item.id}\n role=\"menuitem\"\n aria-label={item.sidebarLabel}\n aria-expanded={item.expanded}\n >\n {item.type === 'operation' ? (\n <OperationMenuItemContent {...this.props} item={item as OperationModel} />\n ) : (\n <MenuItemLabel $depth={item.depth} $active={item.active} $type={item.type} ref={this.ref}>\n {item.type === 'schema' && <OperationBadge type=\"schema\">schema</OperationBadge>}\n <MenuItemTitle width=\"calc(100% - 38px)\" title={item.sidebarLabel}>\n {item.sidebarLabel}\n {this.props.children}\n </MenuItemTitle>\n {(item.depth > 0 && item.items.length > 0 && (\n <ShelfIcon float={'right'} direction={item.expanded ? 'down' : 'right'} />\n )) ||\n null}\n </MenuItemLabel>\n )}\n {!withoutChildren && item.items && item.items.length > 0 && (\n <MenuItems\n expanded={item.expanded}\n items={item.items}\n onActivate={this.props.onActivate}\n />\n )}\n </MenuItemLi>\n );\n }\n}\n\nexport interface OperationMenuItemContentProps {\n item: OperationModel;\n children?: React.ReactChild;\n}\n\nexport const OperationMenuItemContent = observer((props: OperationMenuItemContentProps) => {\n const { item } = props;\n const ref = React.createRef<HTMLLabelElement>();\n const { showWebhookVerb } = React.useContext(OptionsContext);\n\n React.useEffect(() => {\n if (props.item.active && ref.current) {\n scrollIntoViewIfNeeded(ref.current);\n }\n }, [props.item.active, ref]);\n\n return (\n <MenuItemLabel\n $depth={item.depth}\n $active={item.active}\n $deprecated={item.deprecated}\n ref={ref}\n >\n {item.badges &&\n item.badges?.map(({ name, color }) => (\n <OperationBadge type=\"badge\" color={color} key={name}>\n {name}\n </OperationBadge>\n ))}\n {item.isWebhook ? (\n <OperationBadge type=\"hook\">\n {showWebhookVerb ? item.httpVerb : l('webhook')}\n </OperationBadge>\n ) : (\n <OperationBadge type={item.httpVerb}>{shortenHTTPVerb(item.httpVerb)}</OperationBadge>\n )}\n <MenuItemTitle tabIndex={0} width=\"calc(100% - 38px)\">\n {item.sidebarLabel}\n {props.children}\n </MenuItemTitle>\n </MenuItemLabel>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport type { IMenuItem } from '../../services';\n\nimport { MenuItem } from './MenuItem';\nimport { MenuItemUl } from './styled.elements';\n\nexport interface MenuItemsProps {\n items: IMenuItem[];\n expanded?: boolean;\n onActivate?: (item: IMenuItem) => void;\n style?: React.CSSProperties;\n root?: boolean;\n\n className?: string;\n}\n\n@observer\nexport class MenuItems extends React.Component<MenuItemsProps> {\n render() {\n const { items, root, className } = this.props;\n const expanded = this.props.expanded == null ? true : this.props.expanded;\n return (\n <MenuItemUl\n className={className}\n style={this.props.style}\n $expanded={expanded}\n {...(root ? { role: 'menu' } : {})}\n >\n {items.map((item, idx) => (\n <MenuItem key={idx} item={item} onActivate={this.props.onActivate} />\n ))}\n </MenuItemUl>\n );\n }\n}\n","import { useEffect, useState } from 'react';\nimport * as React from 'react';\n\nexport default function RedoclyLogo(): JSX.Element | null {\n const [isDisplay, setDisplay] = useState(false);\n\n useEffect(() => {\n setDisplay(true);\n }, []);\n\n return isDisplay ? (\n <img\n alt={'redocly logo'}\n onError={() => setDisplay(false)}\n src={'https://cdn.redoc.ly/redoc/logo-mini.svg'}\n />\n ) : null;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services';\nimport type { IMenuItem } from '../../services';\nimport { OptionsContext } from '../OptionsProvider';\nimport { MenuItems } from './MenuItems';\n\nimport { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';\nimport { RedocAttribution } from './styled.elements';\nimport RedoclyLogo from './Logo';\n\n@observer\nexport class SideMenu extends React.Component<{ menu: MenuStore; className?: string }> {\n static contextType = OptionsContext;\n declare context: React.ContextType<typeof OptionsContext>;\n private _updateScroll?: () => void;\n\n render() {\n const store = this.props.menu;\n return (\n <PerfectScrollbarWrap\n updateFn={this.saveScrollUpdate}\n className={this.props.className}\n options={{\n wheelPropagation: false,\n }}\n >\n <MenuItems items={store.items} onActivate={this.activate} root={true} />\n <RedocAttribution>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://redocly.com/redoc/\">\n <RedoclyLogo />\n API docs by Redocly\n </a>\n </RedocAttribution>\n </PerfectScrollbarWrap>\n );\n }\n\n activate = (item: IMenuItem) => {\n if (item && item.active && this.context.menuToggle) {\n return item.expanded ? item.collapse() : item.expand();\n }\n this.props.menu.activateAndScroll(item, true);\n setTimeout(() => {\n if (this._updateScroll) {\n this._updateScroll();\n }\n });\n };\n\n private saveScrollUpdate = upd => {\n this._updateScroll = upd;\n };\n}\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nexport const AnimatedChevronButton = ({ open }: { open: boolean }) => {\n const iconOffset = open ? 8 : -4;\n\n return (\n <ChevronContainer>\n <ChevronSvg\n size={15}\n style={{\n transform: `translate(2px, ${iconOffset}px) rotate(180deg)`,\n transition: 'transform 0.2s ease',\n }}\n />\n <ChevronSvg\n size={15}\n style={{\n transform: `translate(2px, ${0 - iconOffset}px)`,\n transition: 'transform 0.2s ease',\n }}\n />\n </ChevronContainer>\n );\n};\n\n// adapted from reactjs.org\nconst ChevronSvg = ({ size = 10, className = '', style }) => (\n <svg\n className={className}\n style={style || {}}\n viewBox=\"0 0 926.23699 573.74994\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n width={size}\n height={size}\n >\n <g transform=\"translate(904.92214,-879.1482)\">\n <path\n d={`\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n `}\n fill=\"currentColor\"\n />\n </g>\n </svg>\n);\n\nconst ChevronContainer = styled.div`\n user-select: none;\n width: 20px;\n height: 20px;\n align-self: center;\n display: flex;\n flex-direction: column;\n color: ${props => props.theme.colors.primary.main};\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services/MenuStore';\nimport { RedocNormalizedOptions, RedocRawOptions } from '../../services/RedocNormalizedOptions';\nimport styled, { media } from '../../styled-components';\nimport { IS_BROWSER } from '../../utils/index';\nimport { OptionsContext } from '../OptionsProvider';\nimport { AnimatedChevronButton } from './ChevronSvg';\n\nlet Stickyfill;\nif (IS_BROWSER) {\n Stickyfill = require('stickyfill');\n}\n\nexport interface StickySidebarProps {\n className?: string;\n scrollYOffset?: RedocRawOptions['scrollYOffset']; // passed directly or via context\n menu: MenuStore;\n}\n\nexport interface StickySidebarState {\n offsetTop?: string;\n}\n\nconst stickyfill = Stickyfill && Stickyfill();\n\nconst StyledStickySidebar = styled.div<{ $open?: boolean }>`\n width: ${props => props.theme.sidebar.width};\n background-color: ${props => props.theme.sidebar.backgroundColor};\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n backface-visibility: hidden;\n /* contain: strict; TODO: breaks layout since Chrome 80*/\n\n height: 100vh;\n position: sticky;\n position: -webkit-sticky;\n top: 0;\n\n ${media.lessThan('small')`\n position: fixed;\n z-index: 20;\n width: 100%;\n background: ${({ theme }) => theme.sidebar.backgroundColor};\n display: ${props => (props.$open ? 'flex' : 'none')};\n `};\n\n @media print {\n display: none;\n }\n`;\n\nconst FloatingButton = styled.div`\n outline: none;\n user-select: none;\n background-color: ${({ theme }) => theme.fab.backgroundColor};\n color: ${props => props.theme.colors.primary.main};\n display: none;\n cursor: pointer;\n position: fixed;\n right: 20px;\n z-index: 100;\n border-radius: 50%;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);\n ${media.lessThan('small')`\n display: flex;\n `};\n\n bottom: 44px;\n\n width: 60px;\n height: 60px;\n padding: 0 20px;\n svg {\n color: ${({ theme }) => theme.fab.color};\n }\n\n @media print {\n display: none;\n }\n`;\n\n@observer\nexport class StickyResponsiveSidebar extends React.Component<\n React.PropsWithChildren<StickySidebarProps>,\n StickySidebarState\n> {\n static contextType = OptionsContext;\n context!: React.ContextType<typeof OptionsContext>;\n state: StickySidebarState = { offsetTop: '0px' };\n\n stickyElement: Element;\n\n componentDidMount() {\n if (stickyfill) {\n stickyfill.add(this.stickyElement);\n }\n\n // rerender when hydrating from SSR\n // see https://github.com/facebook/react/issues/8017#issuecomment-256351955\n this.setState({\n offsetTop: this.getScrollYOffset(this.context),\n });\n }\n\n componentWillUnmount() {\n if (stickyfill) {\n stickyfill.remove(this.stickyElement);\n }\n }\n\n getScrollYOffset(options: RedocNormalizedOptions) {\n let top;\n if (this.props.scrollYOffset !== undefined) {\n top = RedocNormalizedOptions.normalizeScrollYOffset(this.props.scrollYOffset)();\n } else {\n top = options.scrollYOffset();\n }\n return top + 'px';\n }\n\n render() {\n const open = this.props.menu.sideBarOpened;\n\n const top = this.state.offsetTop;\n\n return (\n <>\n <StyledStickySidebar\n $open={open}\n className={this.props.className}\n style={{\n top,\n height: `calc(100vh - ${top})`,\n }}\n // tslint:disable-next-line\n ref={el => {\n this.stickyElement = el as any;\n }}\n >\n {this.props.children}\n </StyledStickySidebar>\n {!this.context.hideFab && (\n <FloatingButton onClick={this.toggleNavMenu}>\n <AnimatedChevronButton open={open} />\n </FloatingButton>\n )}\n </>\n );\n }\n\n private toggleNavMenu = () => {\n this.props.menu.toggleSidebar();\n };\n}\n","import styled, { media } from '../../styled-components';\n\nexport const RedocWrap = styled.div`\n ${({ theme }) => `\n font-family: ${theme.typography.fontFamily};\n font-size: ${theme.typography.fontSize};\n font-weight: ${theme.typography.fontWeightRegular};\n line-height: ${theme.typography.lineHeight};\n color: ${theme.colors.text.primary};\n display: flex;\n position: relative;\n text-align: left;\n\n -webkit-font-smoothing: ${theme.typography.smoothing};\n font-smoothing: ${theme.typography.smoothing};\n ${(theme.typography.optimizeSpeed && 'text-rendering: optimizeSpeed !important') || ''};\n\n tap-highlight-color: rgba(0, 0, 0, 0);\n text-size-adjust: 100%;\n\n * {\n box-sizing: border-box;\n -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n }\n`};\n`;\n\nexport const ApiContentWrap = styled.div`\n z-index: 1;\n position: relative;\n overflow: hidden;\n width: calc(100% - ${props => props.theme.sidebar.width});\n ${media.lessThan('small', true)`\n width: 100%;\n `};\n\n contain: layout;\n`;\n\nexport const BackgroundStub = styled.div`\n background: ${({ theme }) => theme.rightPanel.backgroundColor};\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: ${({ theme }) => {\n if (theme.rightPanel.width.endsWith('%')) {\n const percents = parseInt(theme.rightPanel.width, 10);\n return `calc((100% - ${theme.sidebar.width}) * ${percents / 100})`;\n } else {\n return theme.rightPanel.width;\n }\n }};\n ${media.lessThan('medium', true)`\n display: none;\n `};\n`;\n","import * as React from 'react';\n\nimport { darken, getLuminance, lighten } from 'polished';\nimport styled from '../../styled-components';\nimport { MenuItemLabel } from '../SideMenu/styled.elements';\n\nexport const SearchWrap = styled.div`\n padding: 5px 0;\n`;\n\nexport const SearchInput = styled.input.attrs(() => ({\n className: 'search-input',\n}))`\n width: calc(100% - ${props => props.theme.spacing.unit * 8}px);\n box-sizing: border-box;\n margin: 0 ${props => props.theme.spacing.unit * 4}px;\n padding: 5px ${props => props.theme.spacing.unit * 2}px 5px\n ${props => props.theme.spacing.unit * 4}px;\n border: 0;\n border-bottom: 1px solid\n ${({ theme }) =>\n (getLuminance(theme.sidebar.backgroundColor) > 0.5 ? darken : lighten)(\n 0.1,\n theme.sidebar.backgroundColor,\n )};\n font-family: ${({ theme }) => theme.typography.fontFamily};\n font-weight: bold;\n font-size: 13px;\n color: ${props => props.theme.sidebar.textColor};\n background-color: transparent;\n outline: none;\n`;\n\nexport const SearchIcon = styled((props: { className?: string }) => (\n <svg\n className={props.className}\n version=\"1.1\"\n viewBox=\"0 0 1000 1000\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\"\n >\n <path d=\"M968.2,849.4L667.3,549c83.9-136.5,66.7-317.4-51.7-435.6C477.1-25,252.5-25,113.9,113.4c-138.5,138.3-138.5,362.6,0,501C219.2,730.1,413.2,743,547.6,666.5l301.9,301.4c43.6,43.6,76.9,14.9,104.2-12.4C981,928.3,1011.8,893,968.2,849.4z M524.5,522c-88.9,88.7-233,88.7-321.8,0c-88.9-88.7-88.9-232.6,0-321.3c88.9-88.7,233-88.7,321.8,0C613.4,289.4,613.4,433.3,524.5,522z\" />\n </svg>\n)).attrs({\n className: 'search-icon',\n})`\n position: absolute;\n left: ${props => props.theme.spacing.unit * 4}px;\n height: 1.8em;\n width: 0.9em;\n\n path {\n fill: ${props => props.theme.sidebar.textColor};\n }\n`;\n\nexport const SearchResultsBox = styled.div`\n padding: ${props => props.theme.spacing.unit}px 0;\n background-color: ${({ theme }) => darken(0.05, theme.sidebar.backgroundColor)}};\n color: ${props => props.theme.sidebar.textColor};\n min-height: 150px;\n max-height: 250px;\n border-top: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)}};\n border-bottom: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)}};\n margin-top: 10px;\n line-height: 1.4;\n font-size: 0.9em;\n \n li {\n background-color: inherit;\n }\n\n ${MenuItemLabel} {\n padding-top: 6px;\n padding-bottom: 6px;\n\n &:hover,\n &.active {\n background-color: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)};\n }\n\n > svg {\n display: none;\n }\n }\n`;\n\nexport const ClearIcon = styled.i`\n position: absolute;\n display: inline-block;\n width: ${props => props.theme.spacing.unit * 2}px;\n text-align: center;\n right: ${props => props.theme.spacing.unit * 4}px;\n line-height: 2em;\n vertical-align: middle;\n margin-right: 2px;\n cursor: pointer;\n font-style: normal;\n color: '#666';\n`;\n","import * as React from 'react';\n\nimport type { IMenuItem, SearchResult } from '../../services/types';\nimport type { SearchStore } from '../../services/SearchStore';\nimport type { MarkerService } from '../../services/MarkerService';\n\nimport { MenuItem } from '../SideMenu/MenuItem';\nimport { OptionsContext } from '../OptionsProvider';\nimport { bind, debounce } from 'decko';\nimport { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';\nimport {\n ClearIcon,\n SearchIcon,\n SearchInput,\n SearchResultsBox,\n SearchWrap,\n} from './styled.elements';\nimport { l } from '../../services/Labels';\n\nexport interface SearchBoxProps {\n search: SearchStore<string>;\n marker: MarkerService;\n getItemById: (id: string) => IMenuItem | undefined;\n onActivate: (item: IMenuItem) => void;\n\n className?: string;\n}\n\nexport interface SearchBoxState {\n results: SearchResult[];\n noResults: boolean;\n term: string;\n activeItemIdx: number;\n}\n\nexport class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxState> {\n activeItemRef: MenuItem | null = null;\n\n static contextType = OptionsContext;\n declare context: React.ContextType<typeof OptionsContext>;\n\n constructor(props) {\n super(props);\n this.state = {\n results: [],\n noResults: false,\n term: '',\n activeItemIdx: -1,\n };\n }\n\n clearResults(term: string) {\n this.setState({\n results: [],\n noResults: false,\n term,\n });\n this.props.marker.unmark();\n }\n\n clear = () => {\n this.setState({\n results: [],\n noResults: false,\n term: '',\n activeItemIdx: -1,\n });\n this.props.marker.unmark();\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.keyCode === 27) {\n // ESQ\n this.clear();\n }\n if (event.keyCode === 40) {\n // Arrow down\n this.setState({\n activeItemIdx: Math.min(this.state.activeItemIdx + 1, this.state.results.length - 1),\n });\n event.preventDefault();\n }\n if (event.keyCode === 38) {\n // Arrow up\n this.setState({\n activeItemIdx: Math.max(0, this.state.activeItemIdx - 1),\n });\n event.preventDefault();\n }\n if (event.keyCode === 13) {\n // enter\n const activeResult = this.state.results[this.state.activeItemIdx];\n if (activeResult) {\n const item = this.props.getItemById(activeResult.meta);\n if (item) {\n this.props.onActivate(item);\n }\n }\n }\n };\n\n setResults(results: SearchResult[], term: string) {\n this.setState({\n results,\n noResults: results.length === 0,\n });\n this.props.marker.mark(term);\n }\n\n @bind\n @debounce(400)\n searchCallback(searchTerm: string) {\n this.props.search.search(searchTerm).then(res => {\n this.setResults(res, searchTerm);\n });\n }\n\n search = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { minCharacterLengthToInitSearch } = this.context;\n const q = event.target.value;\n if (q.length < minCharacterLengthToInitSearch) {\n this.clearResults(q);\n return;\n }\n\n this.setState(\n {\n term: q,\n },\n () => this.searchCallback(this.state.term),\n );\n };\n\n render() {\n const { activeItemIdx } = this.state;\n const results = this.state.results\n .filter(res => this.props.getItemById(res.meta))\n .map(res => ({\n item: this.props.getItemById(res.meta)!,\n score: res.score,\n }))\n .sort((a, b) => b.score - a.score);\n\n return (\n <SearchWrap role=\"search\">\n {this.state.term && <ClearIcon onClick={this.clear}>×</ClearIcon>}\n <SearchIcon />\n <SearchInput\n value={this.state.term}\n onKeyDown={this.handleKeyDown}\n placeholder=\"Search...\"\n aria-label=\"Search\"\n type=\"text\"\n onChange={this.search}\n />\n {results.length > 0 && (\n <PerfectScrollbarWrap\n options={{\n wheelPropagation: false,\n }}\n >\n <SearchResultsBox data-role=\"search:results\">\n {results.map((res, idx) => (\n <MenuItem\n item={Object.create(res.item, {\n active: {\n value: idx === activeItemIdx,\n },\n })}\n onActivate={this.props.onActivate}\n withoutChildren={true}\n key={res.item.id}\n data-role=\"search:result\"\n />\n ))}\n </SearchResultsBox>\n </PerfectScrollbarWrap>\n )}\n {this.state.term && this.state.noResults ? (\n <SearchResultsBox data-role=\"search:results\">{l('noResultsFound')}</SearchResultsBox>\n ) : null}\n </SearchWrap>\n );\n }\n}\n","import * as PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport { ThemeProvider } from '../../styled-components';\nimport { OptionsProvider } from '../OptionsProvider';\n\nimport { AppStore } from '../../services';\nimport { ApiInfo } from '../ApiInfo/';\nimport { ApiLogo } from '../ApiLogo/ApiLogo';\nimport { ContentItems } from '../ContentItems/ContentItems';\nimport { SideMenu } from '../SideMenu/SideMenu';\nimport { StickyResponsiveSidebar } from '../StickySidebar/StickyResponsiveSidebar';\nimport { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements';\n\nimport { SearchBox } from '../SearchBox/SearchBox';\nimport { StoreProvider } from '../StoreBuilder';\n\nexport interface RedocProps {\n store: AppStore;\n}\n\nexport class Redoc extends React.Component<RedocProps> {\n static propTypes = {\n store: PropTypes.instanceOf(AppStore).isRequired,\n };\n\n componentDidMount() {\n this.props.store.onDidMount();\n }\n\n componentWillUnmount() {\n this.props.store.dispose();\n }\n\n render() {\n const {\n store: { spec, menu, options, search, marker },\n } = this.props;\n const store = this.props.store;\n return (\n <ThemeProvider theme={options.theme}>\n <StoreProvider value={store}>\n <OptionsProvider value={options}>\n <RedocWrap className=\"redoc-wrap\">\n <StickyResponsiveSidebar menu={menu} className=\"menu-content\">\n <ApiLogo info={spec.info} />\n {(!options.disableSearch && (\n <SearchBox\n search={search!}\n marker={marker}\n getItemById={menu.getItemById}\n onActivate={menu.activateAndScroll}\n />\n )) ||\n null}\n <SideMenu menu={menu} />\n </StickyResponsiveSidebar>\n <ApiContentWrap className=\"api-content\">\n <ApiInfo store={store} />\n <ContentItems items={menu.items as any} />\n </ApiContentWrap>\n <BackgroundStub />\n </RedocWrap>\n </OptionsProvider>\n </StoreProvider>\n </ThemeProvider>\n );\n }\n}\n","import * as React from 'react';\n\nimport {\n argValueToBoolean,\n RedocNormalizedOptions,\n RedocRawOptions,\n} from '../services/RedocNormalizedOptions';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { Loading } from './Loading/Loading';\nimport { Redoc } from './Redoc/Redoc';\nimport { StoreBuilder } from './StoreBuilder';\n\nexport interface RedocStandaloneProps {\n spec?: object;\n specUrl?: string;\n options?: RedocRawOptions;\n onLoaded?: (e?: Error) => any;\n}\n\ndeclare let __webpack_nonce__: string;\n\nexport const RedocStandalone = function (props: RedocStandaloneProps) {\n const { spec, specUrl, options = {}, onLoaded } = props;\n const hideLoading = argValueToBoolean(options.hideLoading, false);\n\n const normalizedOpts = new RedocNormalizedOptions(options);\n\n if (normalizedOpts.nonce !== undefined) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __webpack_nonce__ = normalizedOpts.nonce;\n } catch {} // If we have exception, Webpack was not used to run this.\n }\n\n return (\n <ErrorBoundary>\n <StoreBuilder\n spec={spec ? { ...spec } : undefined}\n specUrl={specUrl}\n options={options}\n onLoaded={onLoaded}\n >\n {({ loading, store }) =>\n !loading ? (\n <Redoc store={store!} />\n ) : hideLoading ? null : (\n <Loading color={normalizedOpts.theme.colors.primary.main} />\n )\n }\n </StoreBuilder>\n </ErrorBoundary>\n );\n};\n"],"names":["root","factory","exports","module","define","amd","this","addMethods","__webpack_require__","methods","w","Worker","URL","createObjectURL","Blob","name","worker","c","callbacks","addEventListener","e","d","data","type","id","f","error","Object","assign","Error","message","result","evt","document","createEvent","initEvent","method","params","dispatchEvent","forEach","_arguments","arguments","Promise","a","b","postMessage","slice","call","___CSS_LOADER_EXPORT___","_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default","push","version","sources","names","mappings","sourcesContent","sourceRoot","__webpack_exports__","A","cssWithMappingToString","list","toString","map","item","content","concat","join","i","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","_arrayLikeToArray","arr","len","arr2","Array","_item","isArray","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","next","done","value","err","_iterableToArrayLimit","o","minLen","n","prototype","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","sourceMapping","sourceURLs","source","external_lunr_namespaceObject","require","add","search","toJS","load","dispose","fromExternalJS","builder","resolveIndex","index","store","initEmpty","Builder","field","ref","pipeline","trimmer","stopWordFilter","stemmer","resolve","tokenizer","separator","expandTerm","term","token","Token","title","description","meta","toLowerCase","__async","build","toJSON","path","exportName","importScripts","self","console","state","Index","q","limit","trim","searchResults","query","t","split","exp","res","score","sjs","colour","NODE_DISABLE_COLORS","red","yellow","green","normal","deepEquals","obj1","obj2","_equals","sanitise","s","components","replace","String","toCamelCase","match","group1","toUpperCase","uniqueOnly","indexOf","hasDuplicates","array","Set","size","allSame","distinctArray","candidate","find","compressArray","firstDupe","hash","chr","charCodeAt","parameterTypeProperties","arrayProperties","httpMethods","sanitiseAll","fs","url","fetch","yaml","jptr","recurse","clone","deRef","isRef","common","resolveAllFragment","obj","context","src","parentPath","base","options","attachPoint","externalRefs","paths","baseUrl","parse","seen","changes","identityDetection","key","startsWith","$fixed","newRef","parent","pkey","$ref","verbose","warn","target","fatal","ex","promise","reject","protocol","failed","filterData","filters","filter","resolveExternal","pointer","callback","u","pop","fragment","fnComponents","effectiveProtocol","input","backup","cache","externalRef","handlers","then","catch","fetchOptions","agent","status","ignoreIOErrors","text","schema","prettyErrors","def","filename","encoding","readFile","readFileAsync","findExternalRefs","rej","inner","$extra","refs","potential","keys","resolved","extras","rewriteRefs","resolvedAt","resolver","depth","openapi","definitions","scanExternalRefs","actions","external","original","updated","externals","localOptions","patch","pointers","sort","aComp","bComp","ptr","cdata","loopReferences","funcs","reduce","func","bind","setTimeout","resolveInternal","preserveMiro","setupOptions","srcUrl","optionalResolve","getDefaultState","WeakMap","top","combine","allowRefSiblings","walkSchema","temp","allOf","anyOf","oneOf","has","set","items","property","additionalItems","additionalProperties","properties","prop","subSchema","patternProperties","not","nop","shallowClone","p","hasOwnProperty","deepClone","fastClone","circularClone","Function","get","create","getPrototypeOf","dereference","container","defs","master","logger","args","apply","getLogger","entry","jpunescape","newValue","parts","decodeURIComponent","setAndLast","parseInt","isNaN","jpescape","object","payload","identity","oPath","identityPath","newState","styleTagTransform","_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default","setAttributes","_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default","insert","_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default","domAPI","_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default","insertStyleElement","_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default","_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default","_css_loader_dist_cjs_js_esbuild_loader_dist_index_cjs_ruleSet_1_rules_1_use_2_perfect_scrollbar_css__WEBPACK_IMPORTED_MODULE_6__","locals","undefined","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","api","update","newObj","remove","lastIdentifiers","newList","newLastIdentifiers","_index","memo","style","styleTarget","querySelector","window","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","createElement","attributes","styleElement","nonce","nc","setAttribute","needLayer","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","maybe","cclone","sw","statusCodes","ourVersion","targetVersion","componentNames","S2OError","super","throwError","throwOrWarn","warnOnly","warnProperty","fixUpSchema","required","nullable","propertyName","discriminator","mapping","schemaOrRef","fixUpSubSchemaExtensions","patches","newSchema","format","xml","namespace","allowEmptyValue","fixUpSubSchema","fixupRefs","consumes","produces","newKey","schemas","refmap","oldRef","schemaIndex","lastIndexOf","prefix","substr","suffix","refSuffix","tmpRef","inSchema","refSiblings","processSecurity","securityObject","k","sname","processSecurityScheme","scheme","flow","flowName","authorizationUrl","tokenUrl","scopes","flows","keepParameters","processHeader","header","collectionFormat","explode","fixParamRef","param","refComponents","processParameter","op","originalType","singularRequestBody","rbody","parameters","newParam","in","deprecated","example","oldCollectionFormat","allowReserved","contentType","default","copyExtensions","operationId","rbname","mimetype","requestBody","newOp","attachRequestBody","tgt","processResponse","response","examples","headers","h","processPaths","containerName","requestBodyCache","trace","summary","servers","debug","security","responses","defaultResp","r","schemes","server","newServer","serverUrl","se","rh","body","ct","effectiveOperationId","rbName","rbStr","rbHash","p2","extractServerParameters","variables","fixInfo","info","logo","termsOfService","fixPaths","convertObj","swagger","WeakSet","anchors","detectObjectReferences","direct","origin","converter","host","basePath","xMsPHost","hostTemplate","paramNames","msp","enum","useSchemePrefix","links","requestBodies","securitySchemes","securityDefinitions","dedupeRefs","rb","rbNamesGenerated","counter","main","convertStr","str","sourceYaml","convert","convertUrl","convertFile","sourceFile","convertStream","readable","on","chunk","http","STATUS_CODES","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","defineProperty","enumerable","g","globalThis","toStringTag","external_react_namespaceObject","external_polished_namespaceObject","defaultTheme","spacing","unit","sectionHorizontal","sectionVertical","breakpoints","small","medium","large","colors","tonalOffset","primary","light","lighten","dark","darken","contrastText","readableColor","success","warning","gray","secondary","border","color","backgroundColor","transparentize","tabTextColor","redirect","post","put","delete","basic","link","linesColor","theme","desaturate","defaultDetailsWidth","typeNameColor","typeTitleColor","requireLabelColor","labelsTextSize","nestingSpacing","nestedBackground","arrow","typography","fontSize","lineHeight","fontWeightRegular","fontWeightBold","fontWeightLight","fontFamily","smoothing","optimizeSpeed","headings","fontWeight","code","wrap","visited","hover","textDecoration","hoverTextDecoration","sidebar","width","textColor","activeTextColor","groupItems","activeBackgroundColor","textTransform","level1Items","maxHeight","maxWidth","gutter","rightPanel","overlay","codeBlock","fab","IS_BROWSER","selector","html2Str","html","trimmedChunk","scrollIntoViewIfNeeded","el","centerIfNeeded","parentComputedStyle","getComputedStyle","parentBorderTopWidth","getPropertyValue","parentBorderLeftWidth","overTop","offsetTop","scrollTop","overBottom","clientHeight","overLeft","offsetLeft","scrollLeft","overRight","clientWidth","alignWithTop","scrollIntoView","external_slugify_namespaceObject","mapWithLast","iteratee","mapValues","flattenByProp","collectionItems","iterate","stripTrailingSlash","endsWith","substring","isNumeric","parseFloat","isFinite","appendToMdHeading","md","heading","testRegex","RegExp","replaceRegex","br","mergeObjects","shift","isMergebleObject","isObject","safeSlugify","external_slugify_default","isAbsoluteUrl","resolveUrl","to","urlObj","pathname","href","getBasePath","parseURL","titleize","charAt","removeQueryStringAndHash","escapeHTMLAttrChars","unescapeHTMLChars","_m","fromCharCode","isBoolean","labels","enumSingleValue","enumArray","recursive","arrayOf","webhook","const","noResultsFound","download","downloadSpecification","callbackResponses","requestSamples","responseSamples","l","idx","label","SideNavStyleEnum","argValueToBoolean","val","defaultValue","argValueToNumber","RedocNormalizedOptions","normalizeExpandResponses","normalizeHideHostname","normalizeScrollYOffset","bottom","getBoundingClientRect","normalizeShowExtensions","ext","normalizeSideNavStyle","SummaryOnly","PathOnly","IdOnly","normalizePayloadSampleIdx","Math","max","normalizeJsonSampleExpandLevel","level","Infinity","Number","ceil","normalizeGeneratedPayloadSamplesMaxDepth","raw","defaults","_a","_b","_c","hook","__spreadValues","extensionsHook","_labels","menu","codeSample","resolvedValues","setProxy","currentPath","resolveTheme","scrollYOffset","hideHostname","expandResponses","sortRequiredPropsFirst","requiredPropsFirst","sortPropsAlphabetically","sortEnumValuesAlphabetically","sortOperationsAlphabetically","sortTagsAlphabetically","nativeScrollbars","pathInMiddlePanel","sanitize","untrustedSpec","hideDownloadButtons","hideDownloadButton","downloadFileName","downloadDefinitionUrl","downloadUrls","disableSearch","onlyRequiredInSamples","showExtensions","sideNavStyle","hideSingleRequestSampleTab","hideRequestPayloadSample","menuToggle","jsonSamplesExpandLevel","jsonSampleExpandLevel","enumSkipQuotes","hideSchemaTitles","simpleOneOfTypeLabel","payloadSampleIdx","expandSingleSchemaField","schemasExpansionLevel","argValueToExpandLevel","schemaExpansionLevel","schemaDefinitionsTagName","showObjectSchemaExamples","showSecuritySchemeType","hideSecuritySection","unstable_ignoreMimeParameters","allowedMdComponents","expandDefaultServerVariables","maxDisplayedEnumValues","ignoreNamedSchemas","hideSchemaPattern","generatedSamplesMaxDepth","generatedPayloadSamplesMaxDepth","hideFab","minCharacterLengthToInitSearch","showWebhookVerb","hidePropertiesPrefix","external_styled_components_namespaceObject","styled","createGlobalStyle","keyframes","ThemeProvider","lessThan","breakpoint","print","extra","props","greaterThan","between","firstBreakpoint","secondBreakpoint","styled_components","styledName","ErrorWrapper","div","ErrorBoundary","Component","componentDidCatch","setState","render","stack","Fragment","Children","only","children","rotate","Spinner","className","height","viewBox","LoadingMessage","Loading","PureComponent","textAlign","external_prop_types_namespaceObject","OptionsContext","createContext","OptionsProvider","Provider","OptionsConsumer","Consumer","external_mobx_namespaceObject","bundle_namespaceObject","config_namespaceObject","loadAndBundleSpec","specUrlOrObject","config","Config","bundleOpts","location","process","cwd","customFetch","absoluteRef","parsed","bundle","convertSwagger2OpenAPI","spec","swagger2openapi","external_decko_namespaceObject","external_eventemitter3_namespaceObject","external_json_pointer_namespaceObject","origParse","JsonPointer","baseName","tokens","dirName","compile","relative","fromTokens","resTokens","escape","external_url_template_namespaceObject","isWildcardStatusCode","statusCode","isStatusCode","getStatusCodeType","defaultAsError","operationNames","isOperationName","getOperationSummary","operation","pathName","schemaKeywordTypes","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","contentEncoding","contentMediaType","maxItems","minItems","uniqueItems","maxProperties","minProperties","unevaluatedProperties","detectType","keywords","keyword","isPrimitiveType","if","else","isPrimitive","isArrayType","includes","prefixItems","isJsonLike","isFormUrlEncoded","delimitedEncodeField","fieldVal","fieldName","delimiter","v","deepObjectEncodeField","serializeFormValue","safeName","expand","urlFormEncodePayload","serializeParameterValueWithMime","mime","serializeParameterValue","parameter","serializationMime","serializePathParameter","serializeQueryParameter","template","serializeHeaderParameter","serializeCookieParameter","getSerializedValue","langFromMime","DEFINITION_NAME_REGEX","isNamedDefinition","getDefinitionName","reverse","humanizeRangeConstraint","min","stringRange","humanizeNumberRange","humanizeConstraints","arrayRange","propertiesRange","multipleOfConstraint","strigifiedMultipleOf","humanizeMultipleOfConstraint","numberRange","sortByRequired","fields","order","unrequiredFields","orderedFields","unorderedFields","sortByField","localeCompare","mergeParams","parser","pathParams","operationParams","operationParamNames","deref","mergeSimilarMediaTypes","types","mergedTypes","normalizedMimeName","openapi_spreadValues","normalizeServers","specUrl","external_path_","dirname","getHref","openapi_spreadProps","SECURITY_DEFINITIONS_JSX_NAME","OLD_SECURITY_DEFINITIONS_JSX_NAME","SCHEMA_DEFINITION_JSX_NAME","SECURITY_SCHEMES_SECTION_PREFIX","setSecuritySchemePrefix","shortenHTTPVerb","verb","isRedocExtension","extractExtensions","acc","pluralizeType","displayType","getContentWithLegacyExamples","mediaContent","xExamples","xExample","external_prismjs_namespaceObject","DEFAULT_LANG","mapLang","lang","json","shell","viml","highlight","grammar","languages","Throttle","delay","_","_2","desc","wait","timeout","previous","later","Date","getTime","now","remaining","clearTimeout","throttle","debugTime","debugTimeEnd","insertBefore","lookbehind","SENTINEL","memoize","descriptor","memoizedName","memoize_spreadProps","memoize_spreadValues","_memoizeMethod","_memoizeGetter","alphabeticallyByProp","sortOrder","EVENT","HistoryService","emit","_emiter","currentId","EventEmitter","linkForId","subscribe","cb","emmiter","addListener","removeListener","removeEventListener","rewriteHistory","history","replaceState","pushState","__decorateClass","debounce","HistoryService_history","external_mark_js_namespaceObject","MarkerService","Map","prevTerm","addOnly","elements","inst","elem","unmark","clearAll","clear","mark","async","breaks","extensions","gfm","headerIds","headerPrefix","hooks","langPrefix","mangle","pedantic","renderer","sanitizer","silent","smartypants","walkTokens","xhtml","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","marked_esm_escape","encode","unescapeTest","marked_esm_unescape","caret","edit","regex","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","baseUrls","justDomain","rtrim","relativeBase","domain","marked_esm_resolveUrl","encodeURI","noopTest","exec","splitCells","tableRow","cells","offset","escaped","curr","invert","suffLen","currChar","repeatString","outputLink","cap","lexer","inLink","inlineTokens","Tokenizer","space","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","indentCodeCompensation","inline","_escapes","trimmed","hr","blockquote","blockTokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","itemRegex","repeat","trimLeft","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","task","checked","trimRight","spacers","hasMultipleLineBreaks","some","pre","tag","table","align","rows","j","row","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","reflink","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","reflinkSearch","out","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","leading","tabs","extTokenizer","startBlock","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","startInline","Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","flags","image","TextRenderer","Slugger","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","Hooks","static","preprocess","markdown","postprocess","parseMarkdown","origOpt","msg","onError","marked","checkSanitizeDeprecation","pending","all","setOptions","newDefaults","getDefaults","use","childTokens","pack","opts","prevRenderer","prevTokenizer","prevHook","passThroughHooks","arg","values","LEGACY_REGEXP","MDX_COMPONENT_REGEXP","COMPONENT_REGEXP","buildComponentComment","MarkdownRenderer","parentId","headingRule","currentTopHeading","saveHeading","originalHeadingRule","headingEnhanceRenderer","containsComponent","rawText","componentName","getTextBeforeHading","headingLinePos","flattenHeadings","attachHeadingsDescriptions","buildRegexp","flatHeadings","prevHeading","prevRegexp","prevPos","regexp","currentPos","renderMd","extractHeadings","renderMdWithComponents","componentsRegexp","htmlParts","componentDefs","lasxtIdx","componentMeta","component","propsSelector","MarkdownRenderer_spreadProps","MarkdownRenderer_spreadValues","parseProps","htmlPart","ApiInfoModel","firstHeadingLinePos","getDownloadUrls","getDownloadFileName","getDownloadLink","blob","SecurityRequirementModel","requirement","displayName","SecurityRequirement_spreadValues","sectionId","CallbackModel","infoOrRef","expanded","operations","makeObservable","operationName","operationInfo","OperationModel","Callback_spreadProps","Callback_spreadValues","httpVerb","pathParameters","pathServers","toggle","Callback_decorateClass","observable","action","pushRef","concatRefStacks","OpenAPIParser","allowMergeRefs","byRef","validate","baseRefsStack","mergeAsAllOf","objRefsStack","schemaName","refsStack","mergeRefs","rest","__objRest","readOnly","writeOnly","OpenAPIParser_spreadValues","mergeAllOf","hoistOneOfs","receiver","OpenAPIParser_spreadProps","allOfSchemas","uniqByPropIncludeMissing","subRefsStack","subRef","subMerged","child","enumProperty","isCircular","otherConstraints","propRefsStack","mergedProp","receiverItems","subSchemaItems","findDerived","$refs","defName","sub","beforeAllOf","afterAllOf","siblingValues","part","_SchemaModel","isChild","typePrefix","activeOneOf","newRefsStack","rawSchema","init","activateOneOf","hasType","_f","_g","_h","externalDocs","constraints","displayFormat","initConditionalOperators","getDiscriminator","initOneOf","oneOfType","buildFields","filteredType","initDiscriminator","variant","derefVariant","merged","Schema_spreadProps","Schema_spreadValues","uniqueTypes","crawl","collectUniqueOneOfTypesDeep","discriminatorProp","implicitInversedMapping","isLimitedToMapping","explicitInversedMapping","inversedMapping","left","right","indexLeft","indexRight","innerSchema","ifOperator","elseOperator","thenOperator","restSchema","Schema_objRest","groupedOperators","Schema_decorateClass","SchemaModel","patternProps","additionalProps","itemsProps","FieldModel","kind","fieldsCount","buildAdditionalItems","externalExamplesCache","ExampleModel","externalValue","externalValueUrl","getExternalValue","mimeType","txt","ok","DEFAULT_SERIALIZATION","cookie","fieldSchema","exampleValue","collapse","Field_decorateClass","external_openapi_sampler_namespaceObject","MediaTypeModel","isRequestType","generateExample","samplerOptions","skipReadOnly","skipWriteOnly","skipNonRequired","maxSampleDepth","sample","MediaContentModel","activeMimeIdx","mediaTypes","activate","active","hasSample","MediaContent_decorateClass","computed","RequestBodyModel","isEvent","isRequest","ResponseModel","Response_spreadValues","Response_decorateClass","isPayloadSample","requestBodyContent","isCodeSamplesWarningPrinted","operationSpec","isCallback","ready","isWebhook","sidebarLabel","badges","position","operationHash","deactivate","codeSamples","samples","insertInx","_parameters","paramOrRef","hasSuccessResponses","callbackEventName","Operation_decorateClass","WebhookModel","webhooks","initWebhooks","webhookName","resolvedWebhook","Webhook_spreadProps","Webhook_spreadValues","SecuritySchemeModel","apiKey","bearerFormat","openId","connectUrl","openIdConnectUrl","SecuritySchemesModel","SpecStore","contentItems","MenuBuilder","buildStructure","webhookPath","SpecStore_spreadValues","GroupModel","tagOrGroup","Group_model_decorateClass","GROUP_DEPTH","tags","tagsMap","getTagsWithOperations","addMarkdownItems","getTagGroupsItems","getTagsItems","initialDepth","mapHeadingsDeep","_parent","group","groups","tagNames","tagName","used","getOperationsItems","relatedSchemas","getTagRelatedSchema","explicitTags","MenuBuilder_spreadProps","MenuBuilder_spreadValues","getTags","resolvedPaths","operationTags","defaultTags","entries","schemaTags","Boolean","SECTION_ATTR","MenuStore","scroll","activeItemIdx","sideBarOpened","updateOnScroll","isScrolledDown","step","itemIdx","flatItems","getElementAtOrFirstChild","isElementBellow","getElementAt","isElementAbove","updateOnHistory","activateAndScroll","scrollIntoViewBySelector","getItemById","absoluteIdx","_unsubscribe","_hashUnsubscribe","toggleSidebar","closeSidebar","activeItem","updateLocation","menuItem","scrollToActive","MenuStore_decorateClass","bound","ScrollService_EVENT","ScrollService","_prevOffsetY","_scrollParent","scrollY","handleScroll","removeAllListeners","HTMLElement","pageYOffset","floor","scrollBy","ScrollService_decorateClass","SearchStore","searchWorker","getWorker","indexItems","terminate","MiddlePanel","$compact","Section","attrs","$underlined","RightPanel","DarkRightPanel","Row","headerFontSize","headerCommonMixin","H1","h1","H2","h2","H3","RightPanelHeader","h3","UnderlinedHeader","h5","StoreContext","StoreBuilder","onLoaded","resolvedSpec","setResolvedSpec","useState","setError","useEffect","StoreBuilder_async","useMemo","AppStore","loading","useStore","useContext","linkifyMixin","StyledShareLink","clickHandler","useCallback","event","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","preventDefault","linkify_navigate","onClick","ShareLink","directionMap","up","down","ShelfIcon","x","xmlns","y","points","float","direction","Badge","span","deprecatedCss","PropertiesTableCaption","caption","PropertyCell","td","PropertyCellWithInner","PropertyNameCell","PropertyDetailsCell","PropertyBullet","InnerPropertiesWrap","PropertiesTable","OneOfList","OneOfLabel","OneOfButton","$deprecated","$active","ArrayOpenningLabel","ArrayClosingLabel","external_react_tabs_namespaceObject","Tabs","PrismDiv","SampleControls","SampleControlsWrap","StyledPre","as","external_perfect_scrollbar_namespaceObject","PerfectScrollbarConstructor","external_perfect_scrollbar_default","psStyles","PSStyling","StyledScrollWrapper","PerfectScrollbar","handleRef","_container","componentDidMount","parentElement","scrollTo","componentDidUpdate","componentWillUnmount","destroy","updateFn","PerfectScrollbarWrap","overflow","overscrollBehavior","msOverflowStyle","perfect_scrollbar_spreadValues","ArrowIcon","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Dropdown","onChange","placeholder","selectedIndex","disabled","hidden","styled_Dropdown","external_styled_components_default","fullWidth","SimpleDropdown","MimeLabel","DropdownOrLabel","Label","DropdownOrLabel_spreadValues","external_dompurify_namespaceObject","linksCss","StyledMarkdownBlock","$inline","dompurify","external_dompurify_default","StyledMarkdownSpan","SanitizedMarkdownHTML","compact","SanitizedMdBlock_objRest","Wrap","SanitizedMdBlock_spreadValues","dangerouslySetInnerHTML","__html","Markdown","dataRole","Wrapper","Tip","Content","Arrow","Gap","Tooltip","open","isSupported","queryCommandSupported","ClipboardService","selectElement","range","selection","createTextRange","moveToElementText","select","createRange","getSelection","selectNodeContents","removeAllRanges","addRange","deselect","empty","copySelected","execCommand","copyElement","copyCustom","textArea","padding","outline","boxShadow","background","CopyButtonWrapper","tooltipShown","setTooltipShown","copy","showTooltip","renderCopyButton","jsonToHTML","maxExpandLevel","output","valueToHTML","htmlEncode","stringifyStringLiteral","decorateWithSpan","valueType","collapsed","hasContents","arrayToHTML","toISOString","objectToHTML","jsonStyles","JsonViewerWrap","JsonViewer","setNode","renderInner","showFoldingButtons","expandAll","collapseAll","tabIndex","getElementsByClassName","classList","elementsArr","collapseElement","contains","clickListener","focusListener","SourceCode","SourceCodeWithCopy","ExampleValue","Example","ExternalExample","setIsLoading","useRef","prevRef","current","exernalExampleHook_async","useExternalExample","rel","styled_elements_MimeLabel","DropdownLabel","DropdownWrapper","InvertedSimpleDropdown","NoSampleLabel","MediaTypeSamples","activeIdx","switchMedia","mediaType","noSample","examplesNames","SamplesWrapper","renderDropdown","ariaLabel","external_mobx_react_namespaceObject","ClickablePropertyNameCell","FieldLabel","TypePrefix","TypeName","TypeTitle","TypeFormat","RequiredLabel","PropertyLabel","RecursiveLabel","PatternLabel","fields_ExampleValue","ExtensionValue","ConstraintItem","ToggleButton","LinkWrap","ExternalDocumentation","ExternalDocumentation_decorateClass","observer","DescriptionEnumsBlock","EnumValues","isDescriptionEnum","enums","displayedItems","showToggleButton","toggleButtonText","EnumValues_ToggleButton","contextType","Extension","Extensions","exts","Examples","stringifyValue","ExamplesList","ul","ConstraintsView","constraint","FieldDetail","Pattern","isPatternShown","setIsPatternShown","togglePattern","ArrayItemDetails","ArrayItemDetails_Wrapper","FieldDetailsComponent","showExamples","renderDiscriminatorSwitch","_in","_const","rawDefault","renderedExamples","FieldDetails_spreadValues","FieldDetails","Field","expandByDefault","handleKeyPress","isLast","fieldParentsName","withSubSchema","paramName","onKeyPress","Field_spreadValues","colSpan","Schema","showTitle","Fields_Field_decorateClass","DiscriminatorDropdown","changeActiveChild","option","sortOptions","enumValues","enumOrder","enumItem","activeValue","DiscriminatorDropdown_decorateClass","ObjectSchema","filteredFields","parentSchema","PaddedSchema","ArraySchema","itemsSchema","minMaxItems","updatedParentsArray","ArraySchema_spreadProps","ArraySchema_spreadValues","OneOfSchema_OneOfButton","OneOfSchema_decorateClass","OneOfSchema","activeSchema","OneOfSchema_spreadValues","RecursiveSchema","Schema_Schema_objRest","Schema_Schema_spreadProps","Schema_Schema_spreadValues","Schema_Schema_decorateClass","SchemaDefinition","SchemaDefinition_spreadValues","getMediaType","schemaRef","exampleRef","mediaModel","_mediaModel","showReadOnly","showWriteOnly","showExample","MediaSamplesWrap","ScopeName","SecurityRequirementAndWrap","SecurityRequirementOrWrap","$expanded","AuthHeaderColumn","SecuritiesColumn","AuthHeader","SecurityRow","SecurityDetailsStyle","SeeMore","createRef","showMore","setShowMore","showLink","setShowLink","scrollHeight","Container","ButtonContainer","$dimmed","ButtonLinkStyled","OAuthFlow","RequiredScopes","scopesNames","refreshUrl","scope","SecurityDetails","AUTH_TYPES","oauth2","openIdConnect","SecurityDefs","createStore","_0","_1","AppStore_async","createSearchIndex","marker","disposer","rawOptions","DEFAULT_OPTIONS","observe","change","updateMarkOnMenu","fromJS","searchIndex","onDidMount","end","$description","$summary","ApiHeader","DownloadButton","InfoSpan","InfoSpanBoxWrap","InfoSpanBox","ApiInfo","license","website","contact","email","terms","ApiInfo_decorateClass","LogoImgEl","img","LogoWrap","styled_elements_Link","ApiLogo","logoInfo","logoHref","altText","alt","ApiLogo_decorateClass","AdvancedMarkdown","renderWithOptionsAndStore","htmlWrap","cloneElement","PartComponent","AdvancedMarkdown_spreadValues","external_classnames_namespaceObject","OperationBadge","menuItemActive","MenuItemUl","MenuItemLi","li","menuItemDepth","MenuItemLabel","$depth","$type","MenuItemTitle","RedocAttribution","CallbackTitleWrapper","CallbackName","OperationBadgeStyled","StyledCallbackTitle","opened","CallbackDetailsWrap","SelectOnClick","onFocus","role","OperationEndpointWrap","ServerRelativeURL","EndpointInfo","$inverted","HttpVerb","ServersOverlay","ServerItem","ServerUrl","Endpoint","inverted","marginRight","normalizedUrl","ParametersGroup","place","MediaTypesSwitch","withLabel","MediaTypesSwitch_decorateClass","PARAM_PLACES","Parameters","orderParams","paramsMap","paramsPlaces","bodyContent","bodyDescription","bodyRequired","BodyContent","DropdownWithinHeader","Parameters_objRest","isRequired","isOptional","Parameters_spreadValues","RequiredBody","OptionalBody","commonStyles","ResponseTitle","Code","StyledResponseTitle","ResponseDetailsWrap","HeadersCaption","ResponseHeaders","ResponseDetails","ResponseDetails_spreadValues","ResponseView","mimes","ResponsesHeader","ResponsesList","SecurityHeader","grouping","RequiredScopesRow","SecurityRequirements","setExpanded","securities","operationSecuritySchemes","LockIcon","getRequiredScopes","allScopes","securitiesLength","schemesLength","CallbackDetails","hasDescription","Description","CallbackDetails_decorateClass","CallbackOperation","callbackOperation","CallbackOperation_decorateClass","CallbacksList","CallbacksHeader","GenericChildrenSwitcher","switchItem","GenericChildrenSwitcher_decorateClass","PayloadSamples","PayloadSamples_spreadValues","mimeContent","PayloadSamples_decorateClass","CallbackPayloadSample","payloadSample","PayloadSampleWrapper","CallbackSamples","CallbackSamples_spreadValues","dropdownOptions","CallbackSamples_SamplesWrapper","CallbackSamples_decorateClass","RequestSamples","hasSamples","hideTabList","defaultIndex","TabList","Tab","TabPanel","RequestSamples_decorateClass","ResponseSamples","ResponseSamples_decorateClass","Operation_Description","Operation","badgesBefore","badgesAfter","Operation_spreadValues","ContentItems","ContentItem","ContentItems_decorateClass","SectionItem","ContentItems_spreadValues","OperationItem","middlePanelWrap","Header","MenuItem","onActivate","stopPropagation","scrollIntoViewIfActive","withoutChildren","onKeyDown","OperationMenuItemContent","MenuItem_spreadValues","MenuItems","MenuItem_decorateClass","MenuItems_spreadValues","RedoclyLogo","isDisplay","setDisplay","MenuItems_decorateClass","SideMenu","_updateScroll","saveScrollUpdate","upd","wheelPropagation","SideMenu_decorateClass","AnimatedChevronButton","iconOffset","ChevronContainer","ChevronSvg","transform","transition","Stickyfill","stickyfill","StyledStickySidebar","$open","FloatingButton","StickyResponsiveSidebar","toggleNavMenu","stickyElement","getScrollYOffset","StickyResponsiveSidebar_decorateClass","RedocWrap","ApiContentWrap","BackgroundStub","percents","SearchWrap","SearchInput","getLuminance","SearchIcon","SearchResultsBox","ClearIcon","SearchBox","activeItemRef","results","noResults","handleKeyDown","keyCode","activeResult","clearResults","searchCallback","setResults","searchTerm","SearchBox_decorateClass","Redoc","propTypes","instanceOf","RedocStandalone","hideLoading","normalizedOpts","RedocStandalone_spreadValues"],"sourceRoot":""}