diff --git a/.changeset/slow-cars-guess.md b/.changeset/slow-cars-guess.md new file mode 100644 index 000000000..0e0c41228 --- /dev/null +++ b/.changeset/slow-cars-guess.md @@ -0,0 +1,5 @@ +--- +'@verdaccio/ui-components': minor +--- + +support packages with multiple module types diff --git a/packages/ui-components/src/components/SideBarTitle/SideBarTitle.stories.tsx b/packages/ui-components/src/components/SideBarTitle/SideBarTitle.stories.tsx index d80c763a4..530436e04 100644 --- a/packages/ui-components/src/components/SideBarTitle/SideBarTitle.stories.tsx +++ b/packages/ui-components/src/components/SideBarTitle/SideBarTitle.stories.tsx @@ -17,7 +17,7 @@ export const Commonjs: Story = { render: () => ( ( ( + + ), +}; + export const Description: Story = { name: 'With description', render: () => ( = ({ version, isLatest, hasTypes, - moduleType, + moduleTypes, time, }) => { const { t } = useTranslation(); @@ -63,7 +63,9 @@ const DetailSidebarTitle: React.FC = ({ )} - + {moduleTypes.map((module, index) => ( + + ))} diff --git a/packages/ui-components/src/sections/SideBar/Sidebar.tsx b/packages/ui-components/src/sections/SideBar/Sidebar.tsx index dd5982f0c..e525d0bca 100644 --- a/packages/ui-components/src/sections/SideBar/Sidebar.tsx +++ b/packages/ui-components/src/sections/SideBar/Sidebar.tsx @@ -13,15 +13,18 @@ import Repository from '../../components/Repository'; import SideBarTitle from '../../components/SideBarTitle'; import { useConfig } from '../../providers'; import { useVersion } from '../../providers'; -import { PackageMetaInterface } from '../../types/packageMeta'; +import { ModuleType, PackageMetaInterface } from '../../types/packageMeta'; + +const getModuleTypes = (manifest: PackageMetaInterface) => { + if (!manifest.latest) return []; + + const moduleTypes: ModuleType[] = [manifest.latest.type || 'commonjs']; -const getModuleType = (manifest: PackageMetaInterface) => { if (manifest.latest.main) { - return 'commonjs'; - } else if (manifest.latest.type) { - return manifest.latest.type; + moduleTypes.push('commonjs'); } - return; + + return Array.from(new Set(moduleTypes)); }; const DetailSidebar: React.FC = () => { @@ -40,7 +43,7 @@ const DetailSidebar: React.FC = () => { description={packageMeta.latest?.description} hasTypes={typeof packageMeta.latest?.types === 'string'} isLatest={typeof packageVersion === 'undefined'} - moduleType={getModuleType(packageMeta)} + moduleTypes={getModuleTypes(packageMeta)} packageName={packageName} time={time} version={version}