From 52ca4ade5c704bc6a5e3bf973a5500dd27a8afb1 Mon Sep 17 00:00:00 2001 From: Mark Gibson Date: Thu, 23 May 2024 12:10:10 +0100 Subject: [PATCH 1/4] feat: include module paths in Dependencies Closes #310 --- frontend/routes/package/dependencies.tsx | 58 ++++++++++++++++++------ 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/frontend/routes/package/dependencies.tsx b/frontend/routes/package/dependencies.tsx index 7a84cb323..fc0dc52b8 100644 --- a/frontend/routes/package/dependencies.tsx +++ b/frontend/routes/package/dependencies.tsx @@ -27,14 +27,28 @@ export default function Deps( ) { const iam = scopeIAM(state, data.member); - const deps: Record }> = {}; + const deps: Record< + string, + { + packageName: string; + packageLink: string; + moduleName?: string; + moduleLink?: string; + constraints: Set; + } + > = {}; for (const dep of data.deps) { - const key = `${dep.kind}:${dep.name}`; + const key = `${dep.kind}:${dep.name}${dep.path ? `/${dep.path}` : ""}`; deps[key] ??= { - link: `${ + packageName: `${dep.kind}:${dep.name}`, + packageLink: `${ dep.kind === "jsr" ? "/" : "https://www.npmjs.com/package/" }${dep.name}`, + moduleName: dep.path, + moduleLink: dep.path && dep.kind === "jsr" + ? `/${dep.name}/doc/${dep.path}/~` + : "", constraints: new Set(), }; deps[key].constraints.add(dep.constraint); @@ -80,16 +94,16 @@ export default function Deps( : ( - {list.map(([name, info]) => ( + {list.map(([key, { constraints, ...info }]) => ( ))}
@@ -100,18 +114,32 @@ export default function Deps( } function Dependency( - { name, link, constraints }: { - name: string; - link: string; + { packageName, packageLink, moduleName, moduleLink, constraints }: { + packageName: string; + packageLink: string; + moduleName?: string; + moduleLink?: string; constraints: string[]; }, ) { return ( - - - - {name} + + + + {packageName} + {moduleName && ( + <> + / + {moduleLink + ? ( + + {moduleName} + + ) + : {moduleName}} + + )} {constraints.map((constraint) => {constraint})} From f2fd32609be9e1f1d2a271141735dd51a89194b1 Mon Sep 17 00:00:00 2001 From: Mark Gibson Date: Mon, 10 Jun 2024 10:37:14 +0100 Subject: [PATCH 2/4] Group modules into a column per package --- frontend/routes/package/dependencies.tsx | 88 ++++++++++++++---------- 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/frontend/routes/package/dependencies.tsx b/frontend/routes/package/dependencies.tsx index fc0dc52b8..553dc2770 100644 --- a/frontend/routes/package/dependencies.tsx +++ b/frontend/routes/package/dependencies.tsx @@ -30,28 +30,32 @@ export default function Deps( const deps: Record< string, { - packageName: string; - packageLink: string; - moduleName?: string; - moduleLink?: string; + link: string; constraints: Set; + modules: Set<{ path: string; link?: string }>; + defaultModule: boolean; } > = {}; for (const dep of data.deps) { - const key = `${dep.kind}:${dep.name}${dep.path ? `/${dep.path}` : ""}`; + const key = `${dep.kind}:${dep.name}`; deps[key] ??= { - packageName: `${dep.kind}:${dep.name}`, - packageLink: `${ + link: `${ dep.kind === "jsr" ? "/" : "https://www.npmjs.com/package/" }${dep.name}`, - moduleName: dep.path, - moduleLink: dep.path && dep.kind === "jsr" - ? `/${dep.name}/doc/${dep.path}/~` - : "", constraints: new Set(), + modules: new Set(), + defaultModule: false, }; deps[key].constraints.add(dep.constraint); + if (dep.path) { + deps[key].modules.add({ + path: dep.path, + link: dep.kind === "jsr" ? `/${dep.name}/doc/${dep.path}/~` : undefined, + }); + } else { + deps[key].defaultModule = true; + } } const list = Object.entries(deps); @@ -94,16 +98,18 @@ export default function Deps( : ( - {list.map(([key, { constraints, ...info }]) => ( + {list.map(([name, info]) => ( ))}
@@ -114,36 +120,46 @@ export default function Deps( } function Dependency( - { packageName, packageLink, moduleName, moduleLink, constraints }: { - packageName: string; - packageLink: string; - moduleName?: string; - moduleLink?: string; + { name, link, constraints, modules, defaultModule }: { + name: string; + link: string; constraints: string[]; + modules: { path: string; link?: string }[]; + defaultModule: boolean; }, ) { return ( - - - {packageName} + + + {name} - {moduleName && ( - <> - / - {moduleLink - ? ( - - {moduleName} - - ) - : {moduleName}} - - )} {constraints.map((constraint) => {constraint})} + + {modules.length > 0 && ( +
    + {defaultModule &&
  • (default)
  • } + {modules.map(({ path, link }) => ( +
  • + {link + ? ( + + {path} + + ) + : ( + + {path} + + )} +
  • + ))} +
+ )} +
); } From 251d6704deb100ba711114ba253497153321dad5 Mon Sep 17 00:00:00 2001 From: Mark Gibson Date: Mon, 10 Jun 2024 10:49:36 +0100 Subject: [PATCH 3/4] Use a record for package modules rather than a Set to avoid potential duplicates. --- frontend/routes/package/dependencies.tsx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/routes/package/dependencies.tsx b/frontend/routes/package/dependencies.tsx index 553dc2770..ade4a3d2a 100644 --- a/frontend/routes/package/dependencies.tsx +++ b/frontend/routes/package/dependencies.tsx @@ -32,7 +32,7 @@ export default function Deps( { link: string; constraints: Set; - modules: Set<{ path: string; link?: string }>; + modules: Record; defaultModule: boolean; } > = {}; @@ -44,15 +44,14 @@ export default function Deps( dep.kind === "jsr" ? "/" : "https://www.npmjs.com/package/" }${dep.name}`, constraints: new Set(), - modules: new Set(), + modules: {}, defaultModule: false, }; deps[key].constraints.add(dep.constraint); if (dep.path) { - deps[key].modules.add({ - path: dep.path, - link: dep.kind === "jsr" ? `/${dep.name}/doc/${dep.path}/~` : undefined, - }); + deps[key].modules[dep.path] = dep.kind === "jsr" + ? `/${dep.name}/doc/${dep.path}/~` + : undefined; } else { deps[key].defaultModule = true; } @@ -109,7 +108,7 @@ export default function Deps( name={name} {...info} constraints={[...info.constraints]} - modules={[...info.modules]} + modules={Object.entries(info.modules)} /> ))} @@ -124,7 +123,7 @@ function Dependency( name: string; link: string; constraints: string[]; - modules: { path: string; link?: string }[]; + modules: [path: string, link?: string][]; defaultModule: boolean; }, ) { @@ -142,7 +141,7 @@ function Dependency( {modules.length > 0 && (
    {defaultModule &&
  • (default)
  • } - {modules.map(({ path, link }) => ( + {modules.map(([path, link]) => (
  • {link ? ( From 1709529ce8724b4677262348d6ee85f3c6030d31 Mon Sep 17 00:00:00 2001 From: Mark Gibson Date: Mon, 10 Jun 2024 10:56:33 +0100 Subject: [PATCH 4/4] Revert some unnecessary changes --- frontend/routes/package/dependencies.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/routes/package/dependencies.tsx b/frontend/routes/package/dependencies.tsx index ade4a3d2a..7f451a1c4 100644 --- a/frontend/routes/package/dependencies.tsx +++ b/frontend/routes/package/dependencies.tsx @@ -106,9 +106,10 @@ export default function Deps( {list.map(([name, info]) => ( ))} @@ -128,7 +129,7 @@ function Dependency( }, ) { return ( - + {name}