@@ -9,18 +9,22 @@ import { desktopMetaDir, fullName, SCOPE, KINDS, inferKind } from './workspace.j
99 * @param {string } pkgShortName
1010 */
1111export async function resolveForkUser ( githubUser , pkgShortName ) {
12- if ( ! githubUser || githubUser === 'owdproject' ) return 'owdproject'
12+ if ( ! githubUser || githubUser === 'owdproject' ) return { exists : false , isFork : false }
1313
1414 try {
1515 const res = await fetch ( `https://api.github.com/repos/${ githubUser } /${ pkgShortName } ` , {
1616 headers : { Accept : 'application/vnd.github+json' , 'User-Agent' : 'owd-desktop-cli' } ,
1717 } )
18- if ( res . ok ) return githubUser
18+ if ( res . ok ) {
19+ const data = await res . json ( )
20+ // data.fork === true only if this repo was forked FROM another repo
21+ return { exists : true , isFork : data . fork === true }
22+ }
1923 } catch {
2024 /* ignore */
2125 }
2226
23- return 'owdproject'
27+ return { exists : false , isFork : false }
2428}
2529
2630/**
@@ -205,9 +209,11 @@ export async function resolvePackageSources(shortName, settings, workspaceRoot,
205209
206210 let forkOwner = settings . githubUser && settings . githubUser !== 'owdproject' ? settings . githubUser : null
207211 let forkExists = false
212+ let forkIsActualFork = false
208213 if ( forkOwner ) {
209- const resolved = await resolveForkUser ( forkOwner , shortName )
210- forkExists = resolved === forkOwner
214+ const result = await resolveForkUser ( forkOwner , shortName )
215+ forkExists = result . exists
216+ forkIsActualFork = result . isFork
211217 }
212218
213219 const local = workspaceRoot && hasLocalWorkspaceSource ( workspaceRoot , pkgName )
@@ -222,8 +228,8 @@ export async function resolvePackageSources(shortName, settings, workspaceRoot,
222228 htmlUrl : officialHtml ,
223229 exists : Boolean ( catalogEntry . htmlUrl || officialOwner ) ,
224230 } ,
225- fork : forkOwner
226- ? { owner : forkOwner , exists : forkExists , htmlUrl : githubHtmlUrl ( forkOwner , shortName ) }
231+ fork : forkOwner && forkExists
232+ ? { owner : forkOwner , exists : forkExists , isFork : forkIsActualFork , htmlUrl : githubHtmlUrl ( forkOwner , shortName ) }
227233 : null ,
228234 } ,
229235 local : local ? true : false ,
@@ -325,29 +331,10 @@ export function buildSourceOptions(metadata, settings, sshAuth = {}) {
325331 */
326332export async function enrichCatalogEntries ( entries , workspaceRoot , settings ) {
327333 const cache = readCacheFile ( workspaceRoot )
328- const sshAuth = await detectGithubSshAuth ( workspaceRoot )
329- const shortNames = entries . map ( ( e ) => e . shortName )
330- const missingNpm = shortNames . filter ( ( s ) => ! cache ?. packages ?. [ s ] ?. npm )
331-
332- if ( missingNpm . length > 0 ) {
333- const packages = { ...( cache ?. packages ?? { } ) }
334- for ( const shortName of missingNpm . slice ( 0 , 40 ) ) {
335- const version = fetchLatestVersion ( fullName ( shortName ) , { optional : true } )
336- packages [ shortName ] = {
337- ...( packages [ shortName ] ?? { } ) ,
338- npm : version ? { version } : null ,
339- }
340- }
341- writeCacheFile ( workspaceRoot , {
342- fetchedAt : Date . now ( ) ,
343- sshAuth : cache ?. sshAuth ?? sshAuth ,
344- packages,
345- } )
346- }
334+ const sshAuth = getCachedSshAuth ( workspaceRoot ) ?? { available : false }
347335
348- const freshCache = readCacheFile ( workspaceRoot )
349336 return entries . map ( ( entry ) => {
350- const pkgMeta = freshCache ?. packages ?. [ entry . shortName ]
337+ const pkgMeta = cache ?. packages ?. [ entry . shortName ]
351338 return {
352339 ...entry ,
353340 trusted : isTrustedPublisher ( entry , settings ) ,
@@ -358,6 +345,7 @@ export async function enrichCatalogEntries(entries, workspaceRoot, settings) {
358345 owner : entry . org && entry . org !== 'workspace' ? entry . org : 'owdproject' ,
359346 htmlUrl : entry . htmlUrl ?? githubHtmlUrl ( entry . org ?? 'owdproject' , entry . shortName ) ,
360347 } ,
348+ fork : pkgMeta ?. github ?. fork ?? null ,
361349 } ,
362350 } ,
363351 }
0 commit comments