diff options
author | Kat Marchán <kzm@sykosomatic.org> | 2017-02-14 15:12:22 -0800 |
---|---|---|
committer | Jeremiah Senkpiel <fishrock123@rocketmail.com> | 2017-03-22 18:27:31 -0400 |
commit | e1834ff5da0117457a14fe76a097ed7763cfb61f (patch) | |
tree | 15ae7076df1333fb02cb20d5fafb542f0d526874 /deps/npm/lib/search/all-package-search.js | |
parent | caf9ae748b1324c34284b324f2951b91368ca840 (diff) | |
download | android-node-v8-e1834ff5da0117457a14fe76a097ed7763cfb61f.tar.gz android-node-v8-e1834ff5da0117457a14fe76a097ed7763cfb61f.tar.bz2 android-node-v8-e1834ff5da0117457a14fe76a097ed7763cfb61f.zip |
deps: upgrade npm to 4.2.0
PR-URL: https://github.com/nodejs/node/pull/11389
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'deps/npm/lib/search/all-package-search.js')
-rw-r--r-- | deps/npm/lib/search/all-package-search.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/deps/npm/lib/search/all-package-search.js b/deps/npm/lib/search/all-package-search.js new file mode 100644 index 0000000000..7a893d517b --- /dev/null +++ b/deps/npm/lib/search/all-package-search.js @@ -0,0 +1,50 @@ +var ms = require('mississippi') +var allPackageMetadata = require('./all-package-metadata') +var packageFilter = require('./package-filter.js') + +module.exports = allPackageSearch +function allPackageSearch (opts) { + var searchSection = (opts.unicode ? '🤔 ' : '') + 'search' + + // Get a stream with *all* the packages. This takes care of dealing + // with the local cache as well, but that's an internal detail. + var allEntriesStream = allPackageMetadata(opts.staleness) + + // Grab a stream that filters those packages according to given params. + var filterStream = streamFilter(function (pkg) { + opts.log.gauge.pulse('search') + opts.log.gauge.show({section: searchSection, logline: 'scanning ' + pkg.name}) + // Simply 'true' if the package matches search parameters. + var match = packageFilter(pkg, opts.include, opts.exclude, { + description: opts.description + }) + return match + }) + return ms.pipeline.obj(allEntriesStream, filterStream) +} + +function streamFilter (filter) { + return ms.through.obj(function (data, enc, cb) { + if (filter(data)) { + this.push(standardizePkg(data)) + } + cb() + }) +} + +function standardizePkg (data) { + return { + name: data.name, + description: data.description, + maintainers: (data.maintainers || []).map(function (m) { + return { username: m.name, email: m.email } + }), + keywords: data.keywords || [], + version: Object.keys(data.versions || {})[0] || [], + date: ( + data.time && + data.time.modified && + new Date(data.time.modified) + ) || null + } +} |