diff --git a/packages/plugins/ui-theme/htmllinter.config.js b/packages/plugins/ui-theme/htmllinter.config.js
deleted file mode 100644
index a7b44cf647b8..000000000000
--- a/packages/plugins/ui-theme/htmllinter.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- extend: require('@htmllinter/basic-config'),
- rules: {
- 'long-line-content': ['on', { maxLen: 120 }],
- },
-};
diff --git a/packages/plugins/ui-theme/i18n/translations/en-US.json b/packages/plugins/ui-theme/i18n/translations/en-US.json
index f9d41cc00a3e..00de90d54ccf 100644
--- a/packages/plugins/ui-theme/i18n/translations/en-US.json
+++ b/packages/plugins/ui-theme/i18n/translations/en-US.json
@@ -15,6 +15,8 @@
"header": {
"documentation": "Documentation",
"registry-info": "Registry Information",
+ "registry-info-link": "Learn more",
+ "registry-no-conf": "No configurations available",
"greetings": "Hi "
},
"search": {
diff --git a/packages/plugins/ui-theme/package.json b/packages/plugins/ui-theme/package.json
index 8328aefb433f..7b0f1834d62d 100644
--- a/packages/plugins/ui-theme/package.json
+++ b/packages/plugins/ui-theme/package.json
@@ -21,9 +21,7 @@
"@emotion/jest": "^11.3.0",
"@emotion/styled": "10.0.27",
"@emotion/styled-base": "^10.0.31",
- "@htmllinter/basic-config": "^0.5.1",
- "@htmllinter/core": "^0.5.1",
- "@material-ui/core": "4.11.2",
+ "@material-ui/core": "4.11.4",
"@material-ui/icons": "4.11.2",
"@material-ui/styles": "^4.11.4",
"@testing-library/dom": "7.31.2",
@@ -135,7 +133,6 @@
"test:size": "bundlesize",
"lint": "pnpm lint:js && pnpm lint:css",
"lint:css": "yarn stylelint \"src/**/styles.ts\"",
- "lint:html": "yarn htmllinter src/template/index.html",
"verdaccio:server": "node tools/verdaccio.js",
"build": "webpack --config tools/webpack.prod.config.babel.js",
"build:stats": "webpack --config tools/webpack.prod.config.babel.js --json > stats.json",
diff --git a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.test.tsx b/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.test.tsx
index 5d797b4f7040..d4f75bc07c0c 100644
--- a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.test.tsx
+++ b/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.test.tsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { render, cleanup, fireEvent } from 'verdaccio-ui/utils/test-react-testing-library';
+import { screen, render, cleanup } from 'verdaccio-ui/utils/test-react-testing-library';
import RegistryInfoContent from './RegistryInfoContent';
@@ -10,27 +10,19 @@ describe(' component', () => {
});
test('should load the component with no data', () => {
- const { getByTestId } = render();
- const unorderedListOfTodos = getByTestId('tabs-el');
- expect(unorderedListOfTodos.children.length).toBe(1);
+ render();
+ expect(screen.getByText('No configurations available')).toBeInTheDocument();
});
test('should load the appropiate tab content when the tab is clicked', () => {
const props = { registryUrl: 'http://localhost:4872', scope: '@' };
- const pnpmTabTextContent = `pnpm adduser --registry ${props.registryUrl}`;
-
- // Render the component.
- const { container, getByTestId } = render(
-
- );
-
- // Assert the text content for pnpm tab is not present intially
- expect(container.textContent).not.toContain(pnpmTabTextContent);
-
- const pnpmTab = getByTestId('pnpm-tab');
- fireEvent.click(pnpmTab);
-
- // Assert the text content is correct after clicking on the tab.
- expect(container.textContent).toContain(pnpmTabTextContent);
+ render();
+
+ screen.debug();
+ expect(screen.getByText('pnpm set @:registry http://localhost:4872')).toBeInTheDocument();
+ expect(screen.getByText('pnpm adduser --registry http://localhost:4872')).toBeInTheDocument();
+ expect(
+ screen.getByText('pnpm profile set password --registry http://localhost:4872')
+ ).toBeInTheDocument();
});
});
diff --git a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.tsx b/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.tsx
index 04386d40aeaf..ba76269f3629 100644
--- a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.tsx
+++ b/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/RegistryInfoContent.tsx
@@ -1,9 +1,17 @@
-import React, { useState } from 'react';
+import styled from '@emotion/styled';
+import Accordion from '@material-ui/core/Accordion';
+import AccordionDetails from '@material-ui/core/AccordionDetails';
+import AccordionSummary from '@material-ui/core/AccordionSummary';
+import Box from '@material-ui/core/Box';
+import Link from '@material-ui/core/Link';
+import { makeStyles } from '@material-ui/core/styles';
+import Typography from '@material-ui/core/Typography';
+import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
+import React, { FC } from 'react';
+import { useTranslation } from 'react-i18next';
import CopyToClipBoard from 'verdaccio-ui/components/CopyToClipBoard';
-import { default as Typography } from 'verdaccio-ui/components/Heading';
-import Tab from 'verdaccio-ui/components/Tab';
-import Tabs from 'verdaccio-ui/components/Tabs';
+import { useConfig } from 'verdaccio-ui/providers/config';
import {
getCLISetRegistry,
getCLIChangePassword,
@@ -11,81 +19,137 @@ import {
} from 'verdaccio-ui/utils/cli-utils';
import { NODE_MANAGER } from 'verdaccio-ui/utils/constants';
-import { CommandContainer } from './styles';
-import { Props, State } from './types';
-
-const RegistryInfoContent: React.FC = (props) => {
- const [tabPosition, setTabPosition] = useState(0);
- const handleChange = (event: React.ChangeEvent<{}>, tabPosition: number): void => {
- event.preventDefault();
- setTabPosition(tabPosition);
- };
-
- const renderNpmTab = (scope: string, registryUrl: string): JSX.Element => {
- return (
- <>
-
-
-
- >
- );
- };
+const renderNpmTab = (scope: string, registryUrl: string): JSX.Element => {
+ return (
+
+
+
+
+
+ );
+};
- const renderPnpmTab = (scope: string, registryUrl: string): JSX.Element => {
- return (
- <>
-
-
-
- >
- );
- };
+const renderPnpmTab = (scope: string, registryUrl: string): JSX.Element => {
+ return (
+
+
+
+
+
+ );
+};
- const renderYarnTab = (scope: string, registryUrl: string): JSX.Element => {
- return (
+const renderYarnTab = (scope: string, registryUrl: string): JSX.Element => {
+ return (
+
- );
- };
+
+ );
+};
+
+const useStyles = makeStyles((theme) => ({
+ root: {
+ width: '100%',
+ },
+ heading: {
+ fontSize: theme.typography.pxToRem(15),
+ fontWeight: theme.typography.fontWeightBold,
+ },
+}));
+
+export const AccordionContainer = styled('div')({
+ padding: 30,
+ paddingLeft: 0,
+ paddingRight: 0,
+});
- const renderTabs = (): JSX.Element => {
- const { scope, registryUrl } = props;
+export const CommandContainer = styled('div')({
+ padding: 5,
+});
+
+export const LinkContainer = styled('div')({
+ margin: 10,
+ marginLeft: 0,
+});
+
+export type Props = {
+ registryUrl: string;
+ scope: string;
+};
- return (
- <>
-
-
-
-
-
- {tabPosition === 0 && {renderNpmTab(scope, registryUrl)}}
- {tabPosition === 1 && {renderPnpmTab(scope, registryUrl)}}
- {tabPosition === 2 && {renderYarnTab(scope, registryUrl)}}
- >
- );
- };
+const RegistryInfoContent: FC = ({ scope, registryUrl }) => {
+ const { t } = useTranslation();
+ const classes = useStyles();
+ const { configOptions } = useConfig();
- /* eslint react/prop-types:0 */
- const TabContainer: React.FC = ({ children }): JSX.Element => {
- return (
-
- {children}
-
- );
- };
+ const hasNpm = configOptions?.pkgManagers?.includes('npm');
+ const hasYarn = configOptions?.pkgManagers?.includes('yarn');
+ const hasPnpm = configOptions?.pkgManagers?.includes('pnpm');
+ const hasPkgManagers = hasNpm | hasPnpm | hasYarn;
+ if (!hasPkgManagers || !scope || !registryUrl) {
+ return {t('header.registry-no-conf')};
+ }
- return {renderTabs()}
;
+ return hasPkgManagers ? (
+
+ {hasNpm && (
+
+ }
+ id="panel1a-header">
+ {'npm'}
+
+
+
+ {renderNpmTab(scope, registryUrl)}
+
+
+
+ )}
+ {hasYarn && (
+
+ }
+ id="panel2a-header">
+ {'yarn'}
+
+
+
+ {renderYarnTab(scope, registryUrl)}
+
+
+
+ )}
+ {hasPnpm && (
+
+ }
+ id="panel3a-header">
+ {'pnpm'}
+
+
+
+ {renderPnpmTab(scope, registryUrl)}
+
+
+
+ )}
+
+
+ {t('header.registry-info-link')}
+
+
+
+ ) : null;
};
export default RegistryInfoContent;
diff --git a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/styles.ts b/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/styles.ts
deleted file mode 100644
index fbe6f5f9488b..000000000000
--- a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/styles.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import styled from '@emotion/styled';
-
-export const CommandContainer = styled('div')({
- paddingTop: 20,
-});
diff --git a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/types.ts b/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/types.ts
deleted file mode 100644
index 1c208cbe2ba9..000000000000
--- a/packages/plugins/ui-theme/src/App/Header/RegistryInfoContent/types.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export interface Props {
- scope: string;
- registryUrl: string;
-}
-
-export interface State {
- tabPosition: number;
-}
diff --git a/packages/web/src/renderHTML.ts b/packages/web/src/renderHTML.ts
index 595e071b1167..b4973dcdb891 100644
--- a/packages/web/src/renderHTML.ts
+++ b/packages/web/src/renderHTML.ts
@@ -28,8 +28,7 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
const title = config?.web?.title ?? WEB_TITLE;
const login = hasLogin(config);
const scope = config?.web?.scope ?? '';
- // FIXME: logo URI is incomplete
- let logoURI = config?.web?.logo ?? '';
+ const logoURI = config?.web?.logo ?? '';
const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];
const version = pkgJSON.version;
const primaryColor = validatePrimaryColor(config?.web?.primary_color) ?? '#4b5e40';
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6149b59c9f45..ab28bb8768ab 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -744,9 +744,7 @@ importers:
'@emotion/jest': ^11.3.0
'@emotion/styled': 10.0.27
'@emotion/styled-base': ^10.0.31
- '@htmllinter/basic-config': ^0.5.1
- '@htmllinter/core': ^0.5.1
- '@material-ui/core': 4.11.2
+ '@material-ui/core': 4.11.4
'@material-ui/icons': 4.11.2
'@material-ui/styles': ^4.11.4
'@testing-library/dom': 7.31.2
@@ -820,10 +818,8 @@ importers:
'@emotion/jest': 11.3.0
'@emotion/styled': 10.0.27_33bb31e1d857102242df3642b32eda18
'@emotion/styled-base': 10.0.31_33bb31e1d857102242df3642b32eda18
- '@htmllinter/basic-config': 0.5.1
- '@htmllinter/core': 0.5.1
- '@material-ui/core': 4.11.2_react-dom@17.0.2+react@17.0.2
- '@material-ui/icons': 4.11.2_00fcc96c46389b3398eebc2d751ab6a0
+ '@material-ui/core': 4.11.4_react-dom@17.0.2+react@17.0.2
+ '@material-ui/icons': 4.11.2_f543984b3e6c18c2e2e104a9ecbda934
'@material-ui/styles': 4.11.4_react-dom@17.0.2+react@17.0.2
'@testing-library/dom': 7.31.2
'@testing-library/jest-dom': 5.14.1
@@ -3569,32 +3565,6 @@ packages:
'@hapi/hoek': 9.1.0
dev: true
- /@htmllinter/basic-config/0.5.1:
- resolution: {integrity: sha512-IrzjDoQXNL5Db5vS5jUBk2fcYiCLVyeHNRK4ZmMUSoehesfaMLZy755VAn+iVdZyV01KaSYVMKB7rIH1CTm0Ig==}
- dependencies:
- '@htmllinter/basic-rules': 0.5.1
- '@htmllinter/core': 0.5.1
- dev: true
-
- /@htmllinter/basic-rules/0.5.1:
- resolution: {integrity: sha512-bZyGTJkP+e0w+VA+Jk1SEKlGhypRKxXoOSSE42WrTvukMM4/4WNQKgU8QrXOiBOVs0ckKo1/W6nEevtl7PjNyw==}
- dependencies:
- '@htmllinter/core': 0.5.1
- dev: true
-
- /@htmllinter/core/0.5.1:
- resolution: {integrity: sha512-OoJMqlQd0w12i1UqKCSBo5ZRjz7P96ODmUjVsMfxCZZKYncDQvwtuhLXp8tSQ4WAcCP1ACLtEtjM+vHv7yxCvA==}
- hasBin: true
- dependencies:
- ajv: 6.12.4
- chalk: 3.0.0
- glob: 7.1.6
- posthtml: 0.13.4
- reshape-parser: 1.0.0
- strip-ansi: 6.0.0
- text-table: 0.2.0
- dev: true
-
/@istanbuljs/load-nyc-config/1.1.0:
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
engines: {node: '>=8'}
@@ -3840,8 +3810,8 @@ packages:
rimraf: 2.7.1
dev: true
- /@material-ui/core/4.11.2_react-dom@17.0.2+react@17.0.2:
- resolution: {integrity: sha512-/D1+AQQeYX/WhT/FUk78UCRj8ch/RCglsQLYujYTIqPSJlwZHKcvHidNeVhODXeApojeXjkl0tWdk5C9ofwOkQ==}
+ /@material-ui/core/4.11.4_react-dom@17.0.2+react@17.0.2:
+ resolution: {integrity: sha512-oqb+lJ2Dl9HXI9orc6/aN8ZIAMkeThufA5iZELf2LQeBn2NtjVilF5D2w7e9RpntAzDb4jK5DsVhkfOvFY/8fg==}
engines: {node: '>=8.0.0'}
peerDependencies:
'@types/react': ^16.8.6 || ^17.0.0
@@ -3851,9 +3821,9 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.12.5
+ '@babel/runtime': 7.14.5
'@material-ui/styles': 4.11.4_react-dom@17.0.2+react@17.0.2
- '@material-ui/system': 4.11.2_react-dom@17.0.2+react@17.0.2
+ '@material-ui/system': 4.11.3_react-dom@17.0.2+react@17.0.2
'@material-ui/types': 5.1.0
'@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2
'@types/react-transition-group': 4.4.0
@@ -3863,11 +3833,11 @@ packages:
prop-types: 15.7.2
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
- react-is: 16.13.1
+ react-is: 17.0.2
react-transition-group: 4.4.1_react-dom@17.0.2+react@17.0.2
dev: true
- /@material-ui/icons/4.11.2_00fcc96c46389b3398eebc2d751ab6a0:
+ /@material-ui/icons/4.11.2_f543984b3e6c18c2e2e104a9ecbda934:
resolution: {integrity: sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==}
engines: {node: '>=8.0.0'}
peerDependencies:
@@ -3880,7 +3850,7 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.12.5
- '@material-ui/core': 4.11.2_react-dom@17.0.2+react@17.0.2
+ '@material-ui/core': 4.11.4_react-dom@17.0.2+react@17.0.2
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
dev: true
@@ -3916,8 +3886,8 @@ packages:
react-dom: 17.0.2_react@17.0.2
dev: true
- /@material-ui/system/4.11.2_react-dom@17.0.2+react@17.0.2:
- resolution: {integrity: sha512-BELFJEel5E+5DMiZb6XXT3peWRn6UixRvBtKwSxqntmD0+zwbbfCij6jtGwwdJhN1qX/aXrKu10zX31GBaeR7A==}
+ /@material-ui/system/4.11.3_react-dom@17.0.2+react@17.0.2:
+ resolution: {integrity: sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==}
engines: {node: '>=8.0.0'}
peerDependencies:
'@types/react': ^16.8.6 || ^17.0.0
@@ -3927,7 +3897,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.12.5
+ '@babel/runtime': 7.14.5
'@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2
csstype: 2.6.13
prop-types: 15.7.2
@@ -3951,11 +3921,11 @@ packages:
react: ^16.8.0 || ^17.0.0
react-dom: ^16.8.0 || ^17.0.0
dependencies:
- '@babel/runtime': 7.12.5
+ '@babel/runtime': 7.14.5
prop-types: 15.7.2
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
- react-is: 16.13.1
+ react-is: 17.0.2
dev: true
/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents:
@@ -4561,7 +4531,7 @@ packages:
/@types/react-transition-group/4.4.0:
resolution: {integrity: sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==}
dependencies:
- '@types/react': 16.9.48
+ '@types/react': 16.14.2
dev: true
/@types/react-virtualized/9.21.10:
@@ -4578,13 +4548,6 @@ packages:
csstype: 3.0.3
dev: true
- /@types/react/16.9.48:
- resolution: {integrity: sha512-4ykBVswgYitPGMXFRxJCHkxJDU2rjfU3/zw67f8+dB7sNdVJXsrwqoYxz/stkAucymnEEbRPFmX7Ce5Mc/kJCw==}
- dependencies:
- '@types/prop-types': 15.7.3
- csstype: 3.0.3
- dev: true
-
/@types/request/2.48.5:
resolution: {integrity: sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==}
dependencies:
@@ -8120,13 +8083,6 @@ packages:
utila: 0.4.0
dev: true
- /dom-helpers/5.2.0:
- resolution: {integrity: sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==}
- dependencies:
- '@babel/runtime': 7.11.2
- csstype: 3.0.3
- dev: true
-
/dom-helpers/5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
@@ -9535,7 +9491,7 @@ packages:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
- mime-types: 2.1.30
+ mime-types: 2.1.31
/form-data/3.0.0:
resolution: {integrity: sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==}
@@ -13305,7 +13261,6 @@ packages:
/mime-db/1.48.0:
resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==}
engines: {node: '>= 0.6'}
- dev: true
/mime-types/2.1.27:
resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==}
@@ -13331,7 +13286,6 @@ packages:
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.48.0
- dev: true
/mime/1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
@@ -14390,10 +14344,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /parse5/4.0.0:
- resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==}
- dev: true
-
/parse5/5.1.0:
resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==}
@@ -15155,26 +15105,6 @@ packages:
source-map: 0.6.1
dev: true
- /posthtml-parser/0.5.3:
- resolution: {integrity: sha512-uHosRn0y+1wbnlYKrqMjBPoo/kK5LPYImLtiETszNFYfFwAD3cQdD1R2E13Mh5icBxkHj+yKtlIHozCsmVWD/Q==}
- engines: {node: '>=10.0.0'}
- dependencies:
- htmlparser2: 3.10.1
- dev: true
-
- /posthtml-render/1.4.0:
- resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==}
- engines: {node: '>=10'}
- dev: true
-
- /posthtml/0.13.4:
- resolution: {integrity: sha512-i2oTo/+dwXGC6zaAQSF6WZEQSbEqu10hsvg01DWzGAfZmy31Iiy9ktPh9nnXDfZiYytjxTIvxoK4TI0uk4QWpw==}
- engines: {node: '>=10.0.0'}
- dependencies:
- posthtml-parser: 0.5.3
- posthtml-render: 1.4.0
- dev: true
-
/prebuild-install/5.3.5:
resolution: {integrity: sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw==}
engines: {node: '>=6'}
@@ -15640,8 +15570,8 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.11.2
- dom-helpers: 5.2.0
+ '@babel/runtime': 7.14.5
+ dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.7.2
react: 17.0.2
@@ -16102,13 +16032,6 @@ packages:
resolution: {integrity: sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=}
dev: true
- /reshape-parser/1.0.0:
- resolution: {integrity: sha1-RtIE+yD2i8hwvsZwljBSGcAXOHQ=}
- engines: {node: '>= 6.0.0'}
- dependencies:
- parse5: 4.0.0
- dev: true
-
/resolve-cwd/2.0.0:
resolution: {integrity: sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=}
engines: {node: '>=4'}