diff --git a/package-lock.json b/package-lock.json index fab4e016c..31c55c025 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@redocly/openapi-core": "^1.4.0", "classnames": "^2.3.2", "decko": "^1.2.0", - "dompurify": "^3.0.6", + "dompurify": "^3.3.0", "eventemitter3": "^5.0.1", "json-pointer": "^0.6.2", "lunr": "^2.3.9", @@ -24,7 +24,7 @@ "path-browserify": "^1.0.1", "perfect-scrollbar": "^1.5.5", "polished": "^4.2.2", - "prismjs": "^1.29.0", + "prismjs": "^1.30.0", "prop-types": "^15.8.1", "react-tabs": "^6.0.2", "slugify": "~1.4.7", @@ -4121,10 +4121,11 @@ "dev": true }, "node_modules/@types/trusted-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.0.tgz", - "integrity": "sha512-I8MnZqNXsOLHsU111oHbn3khtvKMi5Bn4qVFsIWSJcCP1KKDiXX5AEw8UPk0nSopeC+Hvxt6yAy1/a5PailFqg==", - "dev": true + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "devOptional": true, + "license": "MIT" }, "node_modules/@types/webpack": { "version": "5.28.0", @@ -7535,9 +7536,13 @@ } }, "node_modules/dompurify": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.3.tgz", - "integrity": "sha512-5sOWYSNPaxz6o2MUPvtyxTTqR4D3L77pr5rUQoWgD5ROQtVIZQgJkXbo1DLlK3vj11YGw5+LnF4SYti4gZmwng==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/domutils": { "version": "2.7.0", @@ -15451,9 +15456,10 @@ } }, "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -22240,10 +22246,10 @@ "dev": true }, "@types/trusted-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.0.tgz", - "integrity": "sha512-I8MnZqNXsOLHsU111oHbn3khtvKMi5Bn4qVFsIWSJcCP1KKDiXX5AEw8UPk0nSopeC+Hvxt6yAy1/a5PailFqg==", - "dev": true + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "devOptional": true }, "@types/webpack": { "version": "5.28.0", @@ -24757,9 +24763,12 @@ } }, "dompurify": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.3.tgz", - "integrity": "sha512-5sOWYSNPaxz6o2MUPvtyxTTqR4D3L77pr5rUQoWgD5ROQtVIZQgJkXbo1DLlK3vj11YGw5+LnF4SYti4gZmwng==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", + "requires": { + "@types/trusted-types": "^2.0.7" + } }, "domutils": { "version": "2.7.0", @@ -25731,7 +25740,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -30604,9 +30616,9 @@ } }, "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==" }, "process": { "version": "0.11.10", diff --git a/package.json b/package.json index 551d6aaa1..09903bb3b 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "@redocly/openapi-core": "^1.4.0", "classnames": "^2.3.2", "decko": "^1.2.0", - "dompurify": "^3.0.6", + "dompurify": "^3.3.0", "eventemitter3": "^5.0.1", "json-pointer": "^0.6.2", "lunr": "^2.3.9", @@ -152,7 +152,7 @@ "path-browserify": "^1.0.1", "perfect-scrollbar": "^1.5.5", "polished": "^4.2.2", - "prismjs": "^1.29.0", + "prismjs": "^1.30.0", "prop-types": "^15.8.1", "react-tabs": "^6.0.2", "slugify": "~1.4.7", diff --git a/src/components/Operation/Operation.tsx b/src/components/Operation/Operation.tsx index 9ce0aab1f..27ff24c70 100644 --- a/src/components/Operation/Operation.tsx +++ b/src/components/Operation/Operation.tsx @@ -56,7 +56,7 @@ export const Operation = observer(({ operation }: OperationProps): JSX.Element = ))} {summary} {deprecated && Deprecated } {isWebhook && ( - + {' '} Webhook {showWebhookVerb && httpVerb && '| ' + httpVerb.toUpperCase()} diff --git a/src/components/SideMenu/MenuItem.tsx b/src/components/SideMenu/MenuItem.tsx index 4c72cc440..7ef6e4be6 100644 --- a/src/components/SideMenu/MenuItem.tsx +++ b/src/components/SideMenu/MenuItem.tsx @@ -86,7 +86,7 @@ export interface OperationMenuItemContentProps { export const OperationMenuItemContent = observer((props: OperationMenuItemContentProps) => { const { item } = props; const ref = React.createRef(); - const { showWebhookVerb } = React.useContext(OptionsContext); + const { showWebhookVerb, webhookBadgeColor } = React.useContext(OptionsContext); React.useEffect(() => { if (props.item.active && ref.current) { @@ -108,7 +108,7 @@ export const OperationMenuItemContent = observer((props: OperationMenuItemConten ))} {item.isWebhook ? ( - + {showWebhookVerb ? item.httpVerb : l('webhook')} ) : ( diff --git a/src/components/__tests__/__snapshots__/DiscriminatorDropdown.test.tsx.snap b/src/components/__tests__/__snapshots__/DiscriminatorDropdown.test.tsx.snap index adad16913..5614b0af3 100644 --- a/src/components/__tests__/__snapshots__/DiscriminatorDropdown.test.tsx.snap +++ b/src/components/__tests__/__snapshots__/DiscriminatorDropdown.test.tsx.snap @@ -294,6 +294,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Dog/properties/packSize", @@ -567,6 +568,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Dog/properties/type", @@ -827,6 +829,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Dog", @@ -1149,6 +1152,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Cat/properties/type", @@ -1434,6 +1438,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Cat/properties/packSize", @@ -1690,6 +1695,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Cat", @@ -1971,6 +1977,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Pet", @@ -2282,6 +2289,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Dog/properties/packSize", @@ -2555,6 +2563,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Dog/properties/type", @@ -2815,6 +2824,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView }, "unstable_ignoreMimeParameters": false, "untrustedSpec": false, + "webhookBadgeColor": undefined, }, "pattern": undefined, "pointer": "#/components/schemas/Dog", diff --git a/src/components/__tests__/__snapshots__/FieldDetails.test.tsx.snap b/src/components/__tests__/__snapshots__/FieldDetails.test.tsx.snap index 90cb6c356..4eabd3442 100644 --- a/src/components/__tests__/__snapshots__/FieldDetails.test.tsx.snap +++ b/src/components/__tests__/__snapshots__/FieldDetails.test.tsx.snap @@ -174,10 +174,12 @@ exports[`FieldDetailsComponent renders correctly when field items have string ty class="sc-kpDqfm sc-dAlyuH sc-gvZAcH cGRfjn gHomYR eXivNJ" > [ items - + <= 128 characters diff --git a/src/services/RedocNormalizedOptions.ts b/src/services/RedocNormalizedOptions.ts index fd162b91d..ec60b94d5 100644 --- a/src/services/RedocNormalizedOptions.ts +++ b/src/services/RedocNormalizedOptions.ts @@ -39,6 +39,7 @@ export interface RedocRawOptions { showObjectSchemaExamples?: boolean | string; showSecuritySchemeType?: boolean; hideSecuritySection?: boolean; + webhookBadgeColor?: string; unstable_ignoreMimeParameters?: boolean; @@ -244,6 +245,7 @@ export class RedocNormalizedOptions { showObjectSchemaExamples: boolean; showSecuritySchemeType?: boolean; hideSecuritySection?: boolean; + webhookBadgeColor?: string; /* tslint:disable-next-line */ unstable_ignoreMimeParameters: boolean; @@ -318,6 +320,7 @@ export class RedocNormalizedOptions { this.showObjectSchemaExamples = argValueToBoolean(raw.showObjectSchemaExamples); this.showSecuritySchemeType = argValueToBoolean(raw.showSecuritySchemeType); this.hideSecuritySection = argValueToBoolean(raw.hideSecuritySection); + this.webhookBadgeColor = raw.webhookBadgeColor; this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters);