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  }