UNPKG

@asyncapi/react-component

Version:

A React component for AsyncAPI specification.

144 lines 9.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Security = void 0; var react_1 = __importDefault(require("react")); var components_1 = require("../../components"); var helpers_1 = require("../../helpers"); var Security = function (_a) { var _b = _a.security, security = _b === void 0 ? [] : _b, _c = _a.protocol, protocol = _c === void 0 ? '' : _c, _d = _a.header, header = _d === void 0 ? 'Security' : _d; var renderedSecurities; if (!(security === null || security === void 0 ? void 0 : security.length)) { if (protocol === 'kafka' || protocol === 'kafka-secure') { renderedSecurities = (react_1.default.createElement(SecurityItem, { protocol: protocol, securitySchema: null })); } } else { var securities = Object.values(security) .map(function (requirements) { return requirements.all(); }) .flat() .map(function (requirement) { var def = requirement.scheme(); var requiredScopes = requirement.scopes(); if (!def) { return null; } return (react_1.default.createElement(SecurityItem, { protocol: protocol, securitySchema: def, requiredScopes: requiredScopes, key: def.type() })); }) .filter(Boolean); renderedSecurities = (react_1.default.createElement("ul", null, securities.map(function (s, idx) { return (react_1.default.createElement("li", { className: "mt-2", key: idx }, s)); }))); } if (!renderedSecurities) { return null; } return (react_1.default.createElement("div", { className: "text-sm mt-4" }, react_1.default.createElement("h5", { className: "text-gray-800" }, header, ":"), renderedSecurities)); }; exports.Security = Security; function collectSecuritySchemas(securitySchema, requiredScopes) { if (requiredScopes === void 0) { requiredScopes = []; } var schemas = []; if (securitySchema) { if (securitySchema.name()) { schemas.push(react_1.default.createElement("span", null, "Name: ", securitySchema.name())); } if (securitySchema.in()) { schemas.push(react_1.default.createElement("span", null, "In: ", securitySchema.in())); } if (securitySchema.scheme()) { schemas.push(react_1.default.createElement("span", null, "Scheme: ", securitySchema.scheme())); } if (securitySchema.bearerFormat()) { schemas.push(react_1.default.createElement("span", null, "Bearer format: ", securitySchema.bearerFormat())); } if (securitySchema.openIdConnectUrl()) { schemas.push(react_1.default.createElement(components_1.Href, { href: securitySchema.openIdConnectUrl(), className: "underline" }, "Connect URL")); } if (requiredScopes.length) { schemas.push(react_1.default.createElement("span", null, "Required scopes: ", requiredScopes.join(', '))); } } return schemas; } var SecurityItem = function (_a) { var securitySchema = _a.securitySchema, protocol = _a.protocol, requiredScopes = _a.requiredScopes; var schemas = collectSecuritySchemas(securitySchema, requiredScopes); var renderedKafkaSecurity; if (['kafka', 'kafka-secure'].includes(protocol)) { var _b = helpers_1.ServerHelpers.getKafkaSecurity(protocol, securitySchema), securityProtocol = _b.securityProtocol, saslMechanism = _b.saslMechanism; renderedKafkaSecurity = (react_1.default.createElement("div", { className: "px-4 py-2 ml-2 mb-2 border border-gray-400 bg-gray-100 rounded" }, securityProtocol && (react_1.default.createElement("div", { className: "mt-1" }, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "security.protocol:"), react_1.default.createElement("strong", { className: "inline-block no-underline bg-indigo-400 text-white text-xs rounded py-0 px-1 ml-1" }, securityProtocol))), saslMechanism && (react_1.default.createElement("div", { className: "mt-1" }, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "sasl.mechanism:"), react_1.default.createElement("strong", { className: "inline-block no-underline bg-indigo-400 text-white text-xs rounded py-0 px-1 ml-1" }, saslMechanism))))); } var flows = securitySchema === null || securitySchema === void 0 ? void 0 : securitySchema.flows(); var unwrappedFlows = {}; if (flows === null || flows === void 0 ? void 0 : flows.hasImplicit()) { unwrappedFlows.implicit = flows.implicit(); } if (flows === null || flows === void 0 ? void 0 : flows.hasAuthorizationCode()) { unwrappedFlows.authorizationCode = flows.authorizationCode(); } if (flows === null || flows === void 0 ? void 0 : flows.hasClientCredentials()) { unwrappedFlows.clientCredentials = flows.clientCredentials(); } if (flows === null || flows === void 0 ? void 0 : flows.hasPassword()) { unwrappedFlows.password = flows.password(); } var renderedFlows = Object.entries(unwrappedFlows).map(function (_a) { var flowName = _a[0], flow = _a[1]; var authorizationUrl = flow.authorizationUrl(); var tokenUrl = flow.tokenUrl(); var refreshUrl = flow.refreshUrl(); var scopes = flow.scopes(); return (react_1.default.createElement("div", { className: "px-4 py-2 ml-2 mb-2 border border-gray-400 bg-gray-100 rounded", key: flowName }, react_1.default.createElement("div", null, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "Flow:"), react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, helpers_1.ServerHelpers.flowName(flowName))), authorizationUrl && (react_1.default.createElement("div", { className: "mt-1" }, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "Auth URL:"), react_1.default.createElement(components_1.Href, { href: authorizationUrl, className: "underline" }, authorizationUrl))), tokenUrl && (react_1.default.createElement("div", { className: "mt-1" }, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "Token URL:"), react_1.default.createElement(components_1.Href, { href: tokenUrl, className: "underline" }, tokenUrl))), refreshUrl && (react_1.default.createElement("div", { className: "mt-1" }, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "Refresh URL:"), react_1.default.createElement(components_1.Href, { href: refreshUrl, className: "underline" }, refreshUrl))), scopes && (react_1.default.createElement("div", { className: "mt-1" }, react_1.default.createElement("strong", { className: "text-xs text-gray-600 mt-1 mr-1 uppercase" }, "Scopes:"), react_1.default.createElement("ul", { className: "inline-block" }, scopes && Object.entries(scopes).map(function (_a) { var scopeName = _a[0], scopeDesc = _a[1]; return (react_1.default.createElement("li", { className: "inline-block font-bold no-underline bg-indigo-400 text-white text-xs rounded py-0 px-1 ml-1", title: scopeDesc, key: scopeName }, scopeName)); })))))); }); return (react_1.default.createElement("div", null, securitySchema && schemas && (react_1.default.createElement("div", null, react_1.default.createElement("span", null, helpers_1.ServerHelpers.securityType(securitySchema.type()), schemas.length > 0 && (react_1.default.createElement("ul", { className: "inline-block ml-2" }, schemas.map(function (schema, idx) { return (react_1.default.createElement("li", { className: "inline-block font-bold no-underline bg-blue-400 text-white text-xs uppercase rounded px-2 py-0 ml-1", key: idx }, schema)); })))))), (securitySchema === null || securitySchema === void 0 ? void 0 : securitySchema.hasDescription()) && (react_1.default.createElement("div", null, react_1.default.createElement(components_1.Markdown, null, securitySchema.description()))), renderedFlows && renderedFlows.length > 0 && (react_1.default.createElement("ul", { className: "my-2" }, react_1.default.createElement("li", null, renderedFlows))), renderedKafkaSecurity && react_1.default.createElement("div", null, renderedKafkaSecurity))); }; //# sourceMappingURL=Security.js.map