summaryrefslogtreecommitdiff
path: root/deps/npm/lib/search/all-package-search.js
diff options
context:
space:
mode:
authorKat Marchán <kzm@sykosomatic.org>2017-02-14 15:12:22 -0800
committerJeremiah Senkpiel <fishrock123@rocketmail.com>2017-03-22 18:27:31 -0400
commite1834ff5da0117457a14fe76a097ed7763cfb61f (patch)
tree15ae7076df1333fb02cb20d5fafb542f0d526874 /deps/npm/lib/search/all-package-search.js
parentcaf9ae748b1324c34284b324f2951b91368ca840 (diff)
downloadandroid-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.js50
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
+ }
+}