github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/javascript/cataloger.go (about) 1 /* 2 Package javascript provides a concrete Cataloger implementation for JavaScript ecosystem files (yarn and npm). 3 */ 4 package javascript 5 6 import ( 7 "github.com/anchore/syft/syft/pkg/cataloger/generic" 8 ) 9 10 // NewPackageCataloger returns a new JavaScript cataloger object based on detection of npm based packages. 11 func NewPackageCataloger() *generic.Cataloger { 12 return generic.NewCataloger("javascript-package-cataloger"). 13 WithParserByGlobs(parsePackageJSON, "**/package.json") 14 } 15 16 // NewLockCataloger returns a new JavaScript cataloger object based on detection of lock files. 17 func NewLockCataloger() *generic.Cataloger { 18 return generic.NewCataloger("javascript-lock-cataloger"). 19 WithParserByGlobs(parsePackageLock, "**/package-lock.json"). 20 WithParserByGlobs(parseYarnLock, "**/yarn.lock"). 21 WithParserByGlobs(parsePnpmLock, "**/pnpm-lock.yaml") 22 } 23 24 // NewJavaScriptCataloger returns a new JavaScript cataloger object based on detection 25 // of npm based packages and lock files to provide a complete dependency graph of the 26 // packages. 27 func NewJavaScriptCataloger() *generic.GroupedCataloger { 28 return generic.NewGroupedCataloger("javascript-cataloger"). 29 WithParserByGlobColocation(parseJavaScript, "**/yarn.lock", []string{"**/package.json", "**/yarn.lock"}). 30 WithParserByGlobColocation(parseJavaScript, "**/package-lock.json", []string{"**/package.json", "**/package-lock.json"}). 31 WithParserByGlobColocation(parseJavaScript, "**/pnpm-lock.yaml", []string{"**/package.json", "**/pnpm-lock.yaml"}) 32 }