UNPKG

903 kBSource Map (JSON)View Raw
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?2fd0","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?40cf","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/FieldContstraints.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,yBAAA,CACA,oBAAA,CACA,uBAAA,CACA,iBAAA,CACA,qBAAA,CAMF,YACE,YAAA,CACA,SAAA,CACA,yDAAA,CACA,iEAAA,CACA,WAAA,CAEA,QAAA,CAEA,iBAAA,CAGF,YACE,YAAA,CACA,SAAA,CACA,yDAAA,CACA,iEAAA,CACA,UAAA,CAEA,OAAA,CAEA,iBAAA,CAGF,oDAEE,aAAA,CACA,4BAAA,CAGF,oJAME,UAAA,CAGF,kJAME,qBAAA,CACA,UAAA,CAMF,aACE,qBAAA,CAnEF,iBAAA,CAqEE,6DAAA,CACA,qEAAA,CACA,UAAA,CAEA,UAAA,CAEA,iBAAA,CAGF,aACE,qBAAA,CA/EF,iBAAA,CAiFE,4DAAA,CACA,oEAAA,CACA,SAAA,CAEA,SAAA,CAEA,iBAAA,CAGF,oGAGE,qBAAA,CACA,WAAA,CAGF,oGAGE,qBAAA,CACA,UAAA,CAIF,qCACE,IACE,uBAAA,CAAA,CAIJ,wEACE,IACE,uBAAA,CAAA\",\"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][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][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[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.js??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.js??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 0a6ad30060afff00cb34.worker.js.LICENSE.txt */\\n!function(){var e={336: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=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version=\\\"2.3.9\\\",R.utils={},R.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?\\\"\\\":e.toString()},R.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},R.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},R.FieldRef.joiner=\\\"/\\\",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw\\\"malformed field ref string\\\";var r=e.slice(0,t),n=e.slice(t+1);return new R.FieldRef(n,r,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.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},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,r,n,i=[];if(e===R.Set.complete)return this;if(e===R.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 R.Set(i)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.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))},R.Token=function(e,t){this.str=e||\\\"\\\",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.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(R.tokenizer.separator)||s==n){if(a>0){var u=R.utils.clone(t)||{};u.position=[o,a],u.index=i.length,i.push(new R.Token(r.slice(o,s),u))}o=s+1}}return i},R.tokenizer.separator=/[\\\\s\\\\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn(\\\"Overwriting existing registered function: \\\"+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn(\\\"Function is not registered with pipeline. This may cause problems when serialising the index.\\\\n\\\",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var r=R.Pipeline.registeredFunctions[e];if(!r)throw new Error(\\\"Cannot load unregistered function: \\\"+e);t.add(r)})),t},R.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.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)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");this._stack.splice(r,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.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},R.Pipeline.prototype.runString=function(e,t){var r=new R.Token(e,t);return this.run([r]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.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},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw\\\"duplicate index\\\"}))},R.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)},R.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)},R.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},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.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},R.Vector.prototype.toJSON=function(){return this.elements},R.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:\\\"\\\"},u=\\\"[aeiouy]\\\",l=\\\"[^aeiou][^aeiouy]*\\\",c=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*\\\"),h=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*\\\"),d=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$\\\"),f=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy]\\\"),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,x=/.$/,v=/(at|bl|iz)$/,w=new RegExp(\\\"([^aeiouylsz])\\\\\\\\1$\\\"),Q=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,b=/^(.+?)e$/,T=/ll$/,O=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),I=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=y,(i=p).test(e)?e=e.replace(i,\\\"$1$2\\\"):s.test(e)&&(e=e.replace(s,\\\"$1$2\\\")),s=g,(i=m).test(e)){var I=i.exec(e);(i=c).test(I[1])&&(i=x,e=e.replace(i,\\\"\\\"))}else s.test(e)&&(t=(I=s.exec(e))[1],(s=f).test(t)&&(u=w,l=Q,(s=v).test(e=t)?e+=\\\"e\\\":u.test(e)?(i=x,e=e.replace(i,\\\"\\\")):l.test(e)&&(e+=\\\"e\\\")));return(i=k).test(e)&&(e=(t=(I=i.exec(e))[1])+\\\"i\\\"),(i=S).test(e)&&(t=(I=i.exec(e))[1],r=I[2],(i=c).test(t)&&(e=t+o[r])),(i=E).test(e)&&(t=(I=i.exec(e))[1],r=I[2],(i=c).test(t)&&(e=t+a[r])),s=P,(i=L).test(e)?(t=(I=i.exec(e))[1],(i=h).test(t)&&(e=t)):s.test(e)&&(t=(I=s.exec(e))[1]+I[2],(s=h).test(t)&&(e=t)),(i=b).test(e)&&(t=(I=i.exec(e))[1],s=d,u=O,((i=h).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=h,(i=T).test(e)&&s.test(e)&&(i=x,e=e.replace(i,\\\"\\\")),\\\"y\\\"==n&&(e=n.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),R.Pipeline.registerFunction(R.stemmer,\\\"stemmer\\\"),R.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}},R.stopWordFilter=R.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\\\"]),R.Pipeline.registerFunction(R.stopWordFilter,\\\"stopWordFilter\\\"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\\\\W+/,\\\"\\\").replace(/\\\\W+$/,\\\"\\\")}))},R.Pipeline.registerFunction(R.trimmer,\\\"trimmer\\\"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,r=0,n=e.length;r<n;r++)t.insert(e[r]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return\\\"editDistance\\\"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var r=new R.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 R.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 R.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 R.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 R.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},R.TokenSet.fromString=function(e){for(var t=new R.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 R.TokenSet;a.final=o,t.edges[s]=a,t=a}}return r},R.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},R.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},R.TokenSet.prototype.intersect=function(e){for(var t=new R.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 R.TokenSet).final=p,r.output.edges[h]=y),n.push({qNode:f,output:y,node:d})}}}return t},R.TokenSet.Builder=function(){this.previousWord=\\\"\\\",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.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 R.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},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.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()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.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 R.Vector;for(e.call(t,t),a=0;a<t.clauses.length;a++){var u,l=t.clauses[a],c=R.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=R.TokenSet.fromClause(l),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&l.presence===R.Query.presence.REQUIRED){for(var y=0;y<l.fields.length;y++)s[F=l.fields[y]]=R.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[F=l.fields[y]],Q=Object.keys(w),k=g+\\\"/\\\"+F,S=new R.Set(Q);if(l.presence==R.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[F]&&(s[F]=R.Set.complete)),l.presence!=R.Query.presence.PROHIBITED){if(n[F].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 R.FieldRef(P,F),T=w[P];void 0===(L=r[b])?r[b]=new R.MatchData(g,F,T):L.add(g,F,T)}i[k]=!0}}else void 0===o[F]&&(o[F]=R.Set.empty),o[F]=o[F].union(S)}}}if(l.presence===R.Query.presence.REQUIRED)for(y=0;y<l.fields.length;y++)s[F=l.fields[y]]=s[F].intersect(c)}var O=R.Set.complete,I=R.Set.empty;for(a=0;a<this.fields.length;a++){var F;s[F=this.fields[a]]&&(O=O.intersect(s[F])),o[F]&&(I=I.union(o[F]))}var C=Object.keys(r),N=[],j=Object.create(null);if(t.isNegated())for(C=Object.keys(this.fieldVectors),a=0;a<C.length;a++){b=C[a];var _=R.FieldRef.fromString(b);r[b]=new R.MatchData}for(a=0;a<C.length;a++){var D=(_=R.FieldRef.fromString(C[a])).docRef;if(O.contains(D)&&!I.contains(D)){var A,B=this.fieldVectors[_],z=n[_.fieldName].similarity(B);if(void 0!==(A=j[D]))A.score+=z,A.matchData.combine(r[_]);else{var V={ref:D,score:z,matchData:r[_]};j[D]=V,N.push(V)}}}return N.sort((function(e,t){return t.score-e.score}))},R.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:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},r={},n=e.fieldVectors,i=Object.create(null),s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn(\\\"Version mismatch when loading serialised index. Current version of lunr '\\\"+R.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 R.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 R.Index(t)},R.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=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\\\\//.test(e))throw new RangeError(\\\"Field '\\\"+e+\\\"' contains illegal character '/'\\\");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.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 R.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)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},n={},i=0;i<t;i++){var s=R.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},R.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=R.FieldRef.fromString(t[i]),o=s.fieldName,a=this.fieldLengths[s],u=new R.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=R.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},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.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)},R.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])}}}},R.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},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String(\\\"*\\\"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.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=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term=\\\"*\\\"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+\\\"*\\\"),\\\"presence\\\"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},R.QueryParseError=function(e,t,r){this.name=\\\"QueryParseError\\\",this.message=e,this.start=t,this.end=r},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.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(\\\"\\\")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS=\\\"EOS\\\",R.QueryLexer.FIELD=\\\"FIELD\\\",R.QueryLexer.TERM=\\\"TERM\\\",R.QueryLexer.EDIT_DISTANCE=\\\"EDIT_DISTANCE\\\",R.QueryLexer.BOOST=\\\"BOOST\\\",R.QueryLexer.PRESENCE=\\\"PRESENCE\\\",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(\\\":\\\"==t)return R.QueryLexer.lexField;if(\\\"~\\\"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if(\\\"^\\\"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if(\\\"+\\\"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(\\\"-\\\"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.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 R.QueryParseError(r,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case\\\"-\\\":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case\\\"+\\\":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var r=\\\"unrecognised presence operator'\\\"+t.str+\\\"'\\\";throw new R.QueryParseError(r,t.start,t.end)}var n=e.peekLexeme();if(null==n)throw r=\\\"expecting term or field, found nothing\\\",new R.QueryParseError(r,t.start,t.end);switch(n.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:throw r=\\\"expecting term or field, found '\\\"+n.type+\\\"'\\\",new R.QueryParseError(r,n.start,n.end)}}},R.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 R.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 R.QueryParseError(n,t.start,t.end);if(i.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;throw n=\\\"expecting term, found '\\\"+i.type+\\\"'\\\",new R.QueryParseError(n,i.start,i.end)}},R.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 R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var n=\\\"Unexpected lexeme type '\\\"+r.type+\\\"'\\\";throw new R.QueryParseError(n,r.start,r.end)}else e.nextClause()}},R.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 R.QueryParseError(n,t.start,t.end)}e.currentClause.editDistance=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new R.QueryParseError(n,i.start,i.end)}else e.nextClause()}},R.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 R.QueryParseError(n,t.start,t.end)}e.currentClause.boost=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new R.QueryParseError(n,i.start,i.end)}else e.nextClause()}},void 0===(i=\\\"function\\\"==typeof(n=function(){return R})?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 l},dispose:function(){return p},done:function(){return c},fromExternalJS:function(){return d},load:function(){return f},search:function(){return y},toJS:function(){return h}});var e=r(336),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}))}function l(e,t,r){const n=a.push(r)-1,s={title:e.toLowerCase(),description:t.toLowerCase(),ref:n};i.add(s)}function c(){return t(this,null,(function*(){s(i.build())}))}function h(){return t(this,null,(function*(){return{store:a,index:(yield o).toJSON()}}))}function d(e,r){return t(this,null,(function*(){try{if(importScripts(e),!self[r])throw new Error(\\\"Broken index file format\\\");f(self[r])}catch(e){console.error(\\\"Failed to load search index: \\\"+e.message)}}))}function f(r){return t(this,null,(function*(){a=r.store,s(e.Index.load(r.index))}))}function p(){return t(this,null,(function*(){a=[],u()}))}function y(r,n=0){return t(this,null,(function*(){if(0===r.trim().length)return[];let t=(yield o).query((t=>{r.trim().toLowerCase().split(/\\\\s+/).forEach((r=>{if(1===r.length)return;const n=(t=>{const r=e.trimmer(new e.Token(t,{}));return\\\"*\\\"+e.stemmer(r)+\\\"*\\\"})(r);t.term(n,{})}))}));return n>0&&(t=t.slice(0,n)),t.map((e=>({meta:a[e.ref],score:e.score})))}))}e.tokenizer.separator=/\\\\s+/,u(),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=0a6ad30060afff00cb34.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\n// credits https://stackoverflow.com/a/46973278/1749888\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 (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 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';\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 interface RedocRawOptions {\n theme?: ThemeInterface;\n scrollYOffset?: number | string | (() => number);\n hideHostname?: boolean | string;\n expandResponses?: string | 'all';\n requiredPropsFirst?: 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;\n hideLoading?: boolean | string;\n hideDownloadButton?: boolean | string;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n disableSearch?: boolean | string;\n onlyRequiredInSamples?: boolean | string;\n showExtensions?: boolean | string | string[];\n sideNavStyle?: SideNavStyleEnum;\n hideSingleRequestSampleTab?: boolean | string;\n menuToggle?: boolean | string;\n jsonSampleExpandLevel?: number | string | 'all';\n hideSchemaTitles?: boolean | string;\n simpleOneOfTypeLabel?: boolean | string;\n payloadSampleIdx?: number;\n expandSingleSchemaField?: boolean | string;\n schemaExpansionLevel?: number | string | 'all';\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;\n nonce?: string;\n hideFab?: boolean;\n minCharacterLengthToInitSearch?: number;\n showWebhookVerb?: 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 requiredPropsFirst: boolean;\n sortPropsAlphabetically: boolean;\n sortEnumValuesAlphabetically: boolean;\n sortOperationsAlphabetically: boolean;\n sortTagsAlphabetically: boolean;\n nativeScrollbars: boolean;\n pathInMiddlePanel: boolean;\n untrustedSpec: boolean;\n hideDownloadButton: boolean;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n disableSearch: boolean;\n onlyRequiredInSamples: boolean;\n showExtensions: boolean | string[];\n sideNavStyle: SideNavStyleEnum;\n hideSingleRequestSampleTab: boolean;\n menuToggle: boolean;\n jsonSampleExpandLevel: number;\n enumSkipQuotes: boolean;\n hideSchemaTitles: boolean;\n simpleOneOfTypeLabel: boolean;\n payloadSampleIdx: number;\n expandSingleSchemaField: boolean;\n schemaExpansionLevel: number;\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 generatedPayloadSamplesMaxDepth: number;\n hideFab: boolean;\n minCharacterLengthToInitSearch: number;\n showWebhookVerb: 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.requiredPropsFirst = argValueToBoolean(raw.requiredPropsFirst);\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.untrustedSpec = argValueToBoolean(raw.untrustedSpec);\n this.hideDownloadButton = argValueToBoolean(raw.hideDownloadButton);\n this.downloadFileName = raw.downloadFileName;\n this.downloadDefinitionUrl = raw.downloadDefinitionUrl;\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.menuToggle = argValueToBoolean(raw.menuToggle, true);\n this.jsonSampleExpandLevel = RedocNormalizedOptions.normalizeJsonSampleExpandLevel(\n 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.schemaExpansionLevel = argValueToExpandLevel(raw.schemaExpansionLevel);\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.generatedPayloadSamplesMaxDepth =\n RedocNormalizedOptions.normalizeGeneratedPayloadSamplesMaxDepth(\n 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 }\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 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-ignoredHeaderParameters': true,\n 'x-logo': true,\n 'x-nullable': true,\n 'x-servers': true,\n 'x-tagGroups': true,\n 'x-traitTag': 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 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 - a markdown parser\n * Copyright (c) 2011-2022, 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 baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: 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 = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/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 merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\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() : 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 const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\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\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\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];\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}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(line)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) { // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) { // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else { // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\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 const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.every(t => {\n const chars = t.raw.split('');\n let lineBreaks = 0;\n for (const char of chars) {\n if (char === '\\n') {\n lineBreaks += 1;\n }\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\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 token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\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 = [];\n this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\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 = [];\n this.lexer.inlineTokens(row[k].text, row[k].tokens);\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 const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n const token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\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 || !link.href) {\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 // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = src.slice(1, lLength + match.index + rLength);\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\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 = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\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://' + text;\n } else {\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 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>]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\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 = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, 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 = merge({}, 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 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;\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 = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, 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 = merge({}, 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 = merge({}, 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 }\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) + '++' + maskedSrc.slice(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, true)\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=\"' + escape(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\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(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.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(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 try {\n const tokens = Lexer.lex(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parse(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(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 opts = merge({}, ...args);\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n let hasExtensions;\n\n args.forEach((pack) => {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\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 ? extensions.renderers[ext.name] : null;\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 }\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 WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n pack.walkTokens.call(this, token);\n if (walkTokens) {\n walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n for (const token of tokens) {\n callback.call(marked, token);\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n marked.walkTokens(cell.tokens, callback);\n }\n for (const row of token.rows) {\n for (const cell of row) {\n marked.walkTokens(cell.tokens, callback);\n }\n }\n break;\n }\n case 'list': {\n 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 marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = function(src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n const tokens = Lexer.lexInline(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n};\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.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 { 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 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 downloadLink?: string;\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.downloadLink = this.getDownloadLink();\n this.downloadFileName = this.getDownloadFileName();\n }\n\n private getDownloadLink(): string | undefined {\n if (this.options.downloadDefinitionUrl) {\n return this.options.downloadDefinitionUrl;\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: GenericObject): 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 extends any = 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 extends unknown>(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 extends unknown>(\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 extends unknown>(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 GenericObject),\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 sub = allOf[i];\n if (Array.isArray(sub.oneOf)) {\n const beforeAllOf = allOf.slice(0, i);\n const afterAllOf = allOf.slice(i + 1);\n return {\n oneOf: sub.oneOf.map((part: OpenAPISchema) => {\n return {\n allOf: [...beforeAllOf, 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 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.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 }\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 || ''}${(merged.const && 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.requiredPropsFirst) {\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 generatedPayloadSamplesMaxDepth: 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.generatedPayloadSamplesMaxDepth = options.generatedPayloadSamplesMaxDepth;\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.generatedPayloadSamplesMaxDepth,\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 { OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample } 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 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\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 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) {\n const insertInx = Math.min(samples.length, this.options.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.requiredPropsFirst) {\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 { OpenAPISpec, OpenAPIPaths } 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\n const items: ContentItemModel[] = [];\n const tagsMap = MenuBuilder.getTagsWithOperations(parser, spec);\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 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 item.items = [\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, spec: OpenAPISpec): TagsInfoMap {\n const tags: TagsInfoMap = {};\n const webhooks = spec['x-webhooks'] || spec.webhooks;\n for (const tag of spec.tags || []) {\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","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 * as 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 ${(props: any) =>\n (props.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 setError(e);\n throw e;\n }\n }\n load();\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 }>`\n display: inline-block;\n padding: 2px 8px;\n margin: 0;\n background-color: ${props => 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.withComponent('pre'))`\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<PerfectScrollbarProps> {\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, GenericObject, 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: 0px;\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';\n\nconst StyledMarkdownSpan = StyledMarkdownBlock.withComponent('span');\n\nconst sanitize = (untrustedSpec, html) => (untrustedSpec ? DOMPurify.sanitize(html) : html);\n\nexport function SanitizedMarkdownHTML(\n props: StylingMarkdownProps & { html: string; className?: string; 'data-role'?: string },\n) {\n const Wrap = props.inline ? StyledMarkdownSpan : StyledMarkdownBlock;\n\n return (\n <OptionsConsumer>\n {options => (\n <Wrap\n className={'redoc-markdown ' + (props.className || '')}\n dangerouslySetInnerHTML={{\n __html: sanitize(options.untrustedSpec, props.html),\n }}\n data-role={props['data-role']}\n {...props}\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 {\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 className={props.className}\n // tslint:disable-next-line\n ref={node => setNode(node!)}\n dangerouslySetInnerHTML={{\n __html: jsonToHTML(props.data, options.jsonSampleExpandLevel),\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, { extensionsHook, css } from '../styled-components';\nimport { PropertyNameCell } from './fields-layout';\nimport { ShelfIcon } from './shelfs';\n\nexport const ClickablePropertyNameCell = styled(PropertyNameCell)`\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.withComponent('div'))`\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 &::before,\n &::after {\n font-weight: bold;\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';\n\nexport interface EnumValuesProps {\n values: string[];\n isArrayType: boolean;\n}\n\nexport interface EnumValuesState {\n collapsed: boolean;\n}\n\nexport class EnumValues extends React.PureComponent<EnumValuesProps, EnumValuesState> {\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, isArrayType } = this.props;\n const { collapsed } = this.state;\n\n // TODO: provide context interface in more elegant way\n const { enumSkipQuotes, maxDisplayedEnumValues } = this.context as RedocRawOptions;\n\n if (!values.length) {\n return null;\n }\n\n const displayedItems =\n this.state.collapsed && maxDisplayedEnumValues\n ? values.slice(0, maxDisplayedEnumValues)\n : values;\n\n const showToggleButton = maxDisplayedEnumValues\n ? values.length > maxDisplayedEnumValues\n : false;\n\n const toggleButtonText = maxDisplayedEnumValues\n ? collapsed\n ? `… ${values.length - maxDisplayedEnumValues} more`\n : 'Hide'\n : '';\n\n return (\n <div>\n <FieldLabel>\n {isArrayType ? 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\n onClick={() => {\n this.toggle();\n }}\n >\n {toggleButtonText}\n </ToggleButton>\n ) : null}\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 './FieldContstraints';\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.type === 'string' && !schema.constraints.length) ||\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 } 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 './FieldContstraints';\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 = schema.type === '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\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={schema.default} />\n {!renderDiscriminatorSwitch && (\n <EnumValues isArrayType={isArrayType} values={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';\n\nexport interface FieldProps extends SchemaOptions {\n className?: string;\n isLast?: boolean;\n showExamples?: boolean;\n\n field: FieldModel;\n expandByDefault?: boolean;\n\n renderDiscriminatorSwitch?: (opts: FieldProps) => JSX.Element;\n}\n\n@observer\nexport class Field extends React.Component<FieldProps> {\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 { className = '', field, isLast, expandByDefault } = 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\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 properties\"\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 <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 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}\n\nexport const ObjectSchema = observer(\n ({\n schema: { fields = [], title },\n showTitle,\n discriminator,\n skipReadOnly,\n skipWriteOnly,\n level,\n }: ObjectSchemaProps) => {\n const { expandSingleSchemaField, showObjectSchemaExamples, schemaExpansionLevel } =\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) || schemaExpansionLevel >= 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 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\n const minMaxItems =\n schema.minItems === undefined && schema.maxItems === undefined\n ? ''\n : `(${humanizeConstraints(schema)})`;\n\n if (schema.fields) {\n return <ObjectSchema {...(this.props as any)} level={this.props.level} />;\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} />\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/FieldContstraints';\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}\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 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 } = 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 <DarkRightPanel>\n <MediaSamplesWrap>\n <MediaTypeSamples renderDropdown={this.renderDropdown} mediaType={this.mediaModel} />\n </MediaSamplesWrap>\n </DarkRightPanel>\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 {flow!.refreshUrl}\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 handleDownloadClick = e => {\n if (!e.target.href) {\n e.target.href = this.props.store.spec.info.downloadLink;\n }\n };\n\n render() {\n const { store } = this.props;\n const { info, externalDocs } = store.spec;\n const hideDownloadButton = store.options.hideDownloadButton;\n\n const downloadFilename = info.downloadFileName;\n const downloadLink = info.downloadLink;\n\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 {!hideDownloadButton && (\n <p>\n {l('downloadSpecification')}:\n <DownloadButton\n download={downloadFilename || true}\n target=\"_blank\"\n href={downloadLink}\n onClick={this.handleDownloadClick}\n >\n {l('download')}\n </DownloadButton>\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 { default 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 }) => ({\n className: `operation-type ${props.type}`,\n}))<{ type: 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: #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: ${props => props.theme.colors.http.get};\n }\n\n &.post {\n background-color: ${props => props.theme.colors.http.post};\n }\n\n &.put {\n background-color: ${props => props.theme.colors.http.put};\n }\n\n &.options {\n background-color: ${props => props.theme.colors.http.options};\n }\n\n &.patch {\n background-color: ${props => props.theme.colors.http.patch};\n }\n\n &.delete {\n background-color: ${props => props.theme.colors.http.delete};\n }\n\n &.basic {\n background-color: ${props => props.theme.colors.http.basic};\n }\n\n &.link {\n background-color: ${props => props.theme.colors.http.link};\n }\n\n &.head {\n background-color: ${props => props.theme.colors.http.head};\n }\n\n &.hook {\n background-color: ${props => props.theme.colors.primary.main};\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 role: 'menuitem',\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 {\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 .${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: 0px 0px 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 } 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/FieldContstraints';\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 return (\n <>\n {paramsPlaces.map(place => (\n <ParametersGroup key={place} place={place} parameters={paramsMap[place]} />\n ))}\n {bodyContent && <BodyContent content={bodyContent} description={bodyDescription} />}\n </>\n );\n }\n}\n\nfunction DropdownWithinHeader(props) {\n return (\n <UnderlinedHeader key=\"header\">\n Request Body schema: <DropdownOrLabel {...props} />\n </UnderlinedHeader>\n );\n}\n\nexport function BodyContent(props: {\n content: MediaContentModel;\n description?: string;\n}): JSX.Element {\n const { content, description } = props;\n const { isRequestType } = content;\n return (\n <MediaTypesSwitch content={content} renderDropdown={DropdownWithinHeader}>\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","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.withComponent('caption'))`\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/FieldContstraints';\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 { name: summary, description, deprecated, externalDocs, isWebhook, httpVerb } = operation;\n const hasDescription = !!(description || externalDocs);\n const { showWebhookVerb } = React.useContext(OptionsContext);\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 {summary} {deprecated && <Badge type=\"warning\"> Deprecated </Badge>}\n {isWebhook && (\n <Badge type=\"primary\">\n {' '}\n Webhook {showWebhookVerb && httpVerb && '| ' + httpVerb.toUpperCase()}\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 { H1, H2, 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 ? H2 : H1;\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 { OperationModel } from '../../services';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport { MenuItems } from './MenuItems';\nimport { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements';\nimport { l } from '../../services/Labels';\nimport { scrollIntoViewIfNeeded } from '../../utils';\nimport { OptionsContext } from '../OptionsProvider';\nimport type { IMenuItem } from '../../services';\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 onClick={this.activate} depth={item.depth} data-item-id={item.id}>\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 <MenuItemTitle 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 depth={item.depth} active={item.active} deprecated={item.deprecated} ref={ref}>\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 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 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 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\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 spec={spec} specUrl={specUrl} options={options} onLoaded={onLoaded}>\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","title","description","meta","toLowerCase","build","toJSON","path","exportName","importScripts","self","Error","e","console","error","message","state","q","limit","trim","searchResults","query","t","split","forEach","term","exp","token","expandTerm","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","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","bottom","getBoundingClientRect","ext","SummaryOnly","PathOnly","IdOnly","Math","max","level","Number","ceil","raw","defaults","hook","extensionsHook","_labels","menu","codeSample","resolvedValues","setProxy","currentPath","resolveTheme","scrollYOffset","normalizeScrollYOffset","hideHostname","normalizeHideHostname","expandResponses","normalizeExpandResponses","requiredPropsFirst","sortPropsAlphabetically","sortEnumValuesAlphabetically","sortOperationsAlphabetically","sortTagsAlphabetically","nativeScrollbars","pathInMiddlePanel","untrustedSpec","hideDownloadButton","downloadFileName","downloadDefinitionUrl","disableSearch","onlyRequiredInSamples","showExtensions","normalizeShowExtensions","sideNavStyle","normalizeSideNavStyle","hideSingleRequestSampleTab","menuToggle","jsonSampleExpandLevel","normalizeJsonSampleExpandLevel","enumSkipQuotes","hideSchemaTitles","simpleOneOfTypeLabel","payloadSampleIdx","normalizePayloadSampleIdx","expandSingleSchemaField","schemaExpansionLevel","Infinity","argValueToExpandLevel","showObjectSchemaExamples","showSecuritySchemeType","hideSecuritySection","unstable_ignoreMimeParameters","allowedMdComponents","expandDefaultServerVariables","maxDisplayedEnumValues","ignoreNamedSchemas","hideSchemaPattern","generatedPayloadSamplesMaxDepth","normalizeGeneratedPayloadSamplesMaxDepth","hideFab","minCharacterLengthToInitSearch","showWebhookVerb","styled","createGlobalStyle","keyframes","ThemeProvider","lessThan","breakpoint","print","extra","props","greaterThan","between","firstBreakpoint","secondBreakpoint","styledName","ErrorWrapper","ErrorBoundary","componentDidCatch","setState","render","stack","children","rotate","Spinner","className","height","viewBox","LoadingMessage","Loading","textAlign","OptionsContext","OptionsProvider","Provider","OptionsConsumer","Consumer","specUrlOrObject","config","Config","bundleOpts","location","process","cwd","customFetch","absoluteRef","parsed","bundle","convertSwagger2OpenAPI","spec","origParse","JsonPointer","tokens","fromTokens","resTokens","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","mapLang","lang","json","shell","viml","highlight","DEFAULT_LANG","grammar","Throttle","delay","_","_2","desc","wait","timeout","previous","later","Date","getTime","now","remaining","clearTimeout","throttle","debugTime","debugTimeEnd","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","breaks","extensions","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","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","merge","splitCells","tableRow","cells","offset","escaped","curr","invert","suffLen","currChar","checkSanitizeDeprecation","repeatString","outputLink","cap","lexer","inLink","inlineTokens","Tokenizer","space","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","indentCodeCompensation","trimmed","inline","hr","blockquote","blockTokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","itemRegex","trimLeft","nextBulletRegex","hrRegex","task","checked","trimRight","spacers","hasMultipleLineBreaks","every","chars","lineBreaks","char","pre","tag","table","align","rows","j","row","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","_escapes","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","static","lex","lastToken","cutSrc","lastParagraphClipped","leading","tabs","repeat","some","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","marked","pending","setOptions","newDefaults","getDefaults","use","opts","childTokens","hasExtensions","pack","prevRenderer","prevTokenizer","lexInline","LEGACY_REGEXP","MDX_COMPONENT_REGEXP","COMPONENT_REGEXP","buildComponentComment","MarkdownRenderer","parentId","headingRule","currentTopHeading","saveHeading","originalHeadingRule","headingEnhanceRenderer","rawText","componentName","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","downloadLink","getDownloadLink","getDownloadFileName","blob","SecurityRequirementModel","requirement","displayName","sectionId","CallbackModel","infoOrRef","expanded","operations","makeObservable","operationName","operationInfo","OperationModel","compile","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","subRefsStack","subRef","subMerged","child","enumProperty","isCircular","otherConstraints","propRefsStack","mergedProp","receiverItems","subSchemaItems","findDerived","$refs","defName","sub","beforeAllOf","afterAllOf","part","isChild","typePrefix","activeOneOf","newRefsStack","rawSchema","init","activateOneOf","hasType","baseName","externalDocs","constraints","displayFormat","initConditionalOperators","getDiscriminator","initOneOf","oneOfType","buildFields","filteredType","initDiscriminator","variant","derefVariant","merged","uniqueTypes","crawl","values","collectUniqueOneOfTypesDeep","discriminatorProp","implicitInversedMapping","isLimitedToMapping","explicitInversedMapping","inversedMapping","left","right","indexLeft","indexRight","innerSchema","ifOperator","elseOperator","thenOperator","restSchema","groupedOperators","patternProps","additionalProps","itemsProps","FieldModel","kind","fieldsCount","buildAdditionalItems","externalExamplesCache","ExampleModel","externalValue","externalValueUrl","getExternalValue","mimeType","txt","ok","DEFAULT_SERIALIZATION","cookie","fieldSchema","SchemaModel","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","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","getTextBeforeHading","GROUP_DEPTH","tagsMap","getTagsWithOperations","addMarkdownItems","getTagGroupsItems","getTagsItems","initialDepth","mapHeadingsDeep","_parent","group","groups","tags","tagNames","tagName","used","getOperationsItems","resolvedPaths","getTags","operationTags","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","ScrollService","_prevOffsetY","_scrollParent","scrollY","handleScroll","removeAllListeners","HTMLElement","pageYOffset","floor","scrollBy","SearchStore","searchWorker","getWorker","indexItems","terminate","compact","Section","underlined","RightPanel","DarkRightPanel","Row","headerFontSize","headerCommonMixin","H1","H2","RightPanelHeader","UnderlinedHeader","StoreContext","createContext","StoreBuilder","onLoaded","resolvedSpec","setResolvedSpec","setError","loadAndBundleSpec","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","deprecatedCss","PropertiesTableCaption","PropertyCell","PropertyCellWithInner","PropertyNameCell","PropertyDetailsCell","PropertyBullet","InnerPropertiesWrap","PropertiesTable","OneOfList","OneOfLabel","OneOfButton","ArrayOpenningLabel","ArrayClosingLabel","Tabs","PrismDiv","SampleControls","SampleControlsWrap","StyledPre","withComponent","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","StyledMarkdownSpan","SanitizedMarkdownHTML","Wrap","dangerouslySetInnerHTML","__html","Markdown","dataRole","Wrapper","Tip","Content","Arrow","Gap","Tooltip","open","isSupported","queryCommandSupported","ClipboardService","range","selection","createTextRange","moveToElementText","select","createRange","getSelection","selectNodeContents","removeAllRanges","addRange","empty","execCommand","selectElement","copySelected","deselect","textArea","position","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","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","observer","EnumValues","displayedItems","showToggleButton","toggleButtonText","contextType","Extension","Extensions","exts","Examples","stringifyValue","ExamplesList","ConstraintsView","constraint","FieldDetail","Pattern","isPatternShown","setIsPatternShown","togglePattern","ArrayItemDetails","FieldDetailsComponent","showExamples","renderDiscriminatorSwitch","_in","_const","rawDefault","renderedExamples","Boolean","ExternalDocumentation","FieldDetails","expandByDefault","handleKeyPress","isLast","withSubSchema","paramName","onKeyPress","colSpan","Schema","showTitle","changeActiveChild","option","sortOptions","enumValues","enumOrder","enumItem","activeValue","ObjectSchema","filteredFields","Field","DiscriminatorDropdown","parentSchema","PaddedSchema","ArraySchema","itemsSchema","minMaxItems","activeSchema","RecursiveSchema","OneOfSchema","SchemaDefinition","schemaRef","exampleRef","mediaModel","_mediaModel","getMediaType","showReadOnly","showWriteOnly","MediaSamplesWrap","ScopeName","SecurityRequirementAndWrap","SecurityRequirementOrWrap","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","createSearchIndex","marker","disposer","rawOptions","DEFAULT_OPTIONS","observe","change","updateMarkOnMenu","searchIndex","onDidMount","end","$description","$summary","ApiHeader","DownloadButton","InfoSpan","InfoSpanBoxWrap","InfoSpanBox","handleDownloadClick","downloadFilename","license","website","contact","email","terms","LogoImgEl","LogoWrap","logoInfo","logoHref","altText","alt","Component","AdvancedMarkdown","renderWithOptionsAndStore","htmlWrap","PartComponent","OperationBadge","menuItemActive","MenuItemUl","MenuItemLi","menuItemDepth","MenuItemLabel","role","MenuItemTitle","RedocAttribution","CallbackTitleWrapper","CallbackName","OperationBadgeStyled","StyledCallbackTitle","opened","CallbackDetailsWrap","SelectOnClick","onFocus","tabIndex","OperationEndpointWrap","ServerRelativeURL","EndpointInfo","inverted","HttpVerb","ServersOverlay","ServerItem","ServerUrl","Endpoint","marginRight","normalizedUrl","ParametersGroup","place","withLabel","PARAM_PLACES","Parameters","orderParams","paramsMap","paramsPlaces","bodyContent","bodyDescription","BodyContent","DropdownWithinHeader","MediaTypesSwitch","ResponseTitle","Code","StyledResponseTitle","ResponseDetailsWrap","HeadersCaption","ResponseHeaders","ResponseDetails","ResponseView","mimes","ResponsesHeader","ResponsesList","SecurityHeader","grouping","RequiredScopesRow","SecurityRequirements","setExpanded","securities","operationSecuritySchemes","LockIcon","getRequiredScopes","allScopes","securitiesLength","schemesLength","hasDescription","Description","callbackOperation","CallbackDetails","CallbacksList","CallbacksHeader","CallbackOperation","switchItem","mimeContent","CallbackPayloadSample","payloadSample","PayloadSampleWrapper","PayloadSamples","dropdownOptions","GenericChildrenSwitcher","hasSamples","hideTabList","defaultIndex","TabList","Tab","TabPanel","Operation","RequestSamples","ResponseSamples","CallbackSamples","ContentItem","SectionItem","OperationItem","ContentItems","middlePanelWrap","Header","onActivate","stopPropagation","scrollIntoViewIfActive","withoutChildren","OperationMenuItemContent","MenuItems","MenuItem","RedoclyLogo","isDisplay","setDisplay","onError","_updateScroll","saveScrollUpdate","upd","wheelPropagation","AnimatedChevronButton","iconOffset","ChevronContainer","ChevronSvg","transform","transition","Stickyfill","stickyfill","StyledStickySidebar","FloatingButton","toggleNavMenu","stickyElement","getScrollYOffset","RedocWrap","ApiContentWrap","BackgroundStub","percents","SearchWrap","SearchInput","getLuminance","SearchIcon","attrs","SearchResultsBox","ClearIcon","SearchBox","activeItemRef","results","noResults","handleKeyDown","keyCode","activeResult","clearResults","searchCallback","setResults","searchTerm","onKeyDown","Redoc","StickyResponsiveSidebar","ApiLogo","SideMenu","ApiInfo","propTypes","isRequired","RedocStandalone","hideLoading","normalizedOpts"],"sourceRoot":""}
\No newline at end of file