aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/pacote/lib/extract-stream.js
diff options
context:
space:
mode:
authorFallenRiteMonk <fallenritemonk@gmail.com>2018-04-05 11:52:34 -0400
committerMyles Borins <mylesborins@google.com>2018-04-05 16:01:07 -0400
commit25a816dcda7b1db0929501acfe13f2fe5119759b (patch)
treed3df4377a11dfb643b5976d2048d9bb4ee527903 /deps/npm/node_modules/pacote/lib/extract-stream.js
parentb29c36b80746733994257b7380245102bc3c4cd6 (diff)
downloadandroid-node-v8-25a816dcda7b1db0929501acfe13f2fe5119759b.tar.gz
android-node-v8-25a816dcda7b1db0929501acfe13f2fe5119759b.tar.bz2
android-node-v8-25a816dcda7b1db0929501acfe13f2fe5119759b.zip
deps: upgrade npm to 5.8.0
PR-URL: https://github.com/nodejs/node/pull/19560 Fixes: https://github.com/nodejs/node/issues/19271 Reviewed-By: Michaƫl Zasso <targos@protonmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/npm/node_modules/pacote/lib/extract-stream.js')
-rw-r--r--deps/npm/node_modules/pacote/lib/extract-stream.js26
1 files changed, 25 insertions, 1 deletions
diff --git a/deps/npm/node_modules/pacote/lib/extract-stream.js b/deps/npm/node_modules/pacote/lib/extract-stream.js
index b3c720b07f..b7694876ba 100644
--- a/deps/npm/node_modules/pacote/lib/extract-stream.js
+++ b/deps/npm/node_modules/pacote/lib/extract-stream.js
@@ -1,5 +1,6 @@
'use strict'
+const PassThrough = require('stream').PassThrough
const path = require('path')
const tar = require('tar')
@@ -10,7 +11,29 @@ function computeMode (fileMode, optMode, umask) {
return (fileMode | optMode) & ~(umask || 0)
}
-function extractStream (dest, opts) {
+function pkgJsonTransform (spec, opts) {
+ return entry => {
+ if (entry.path === 'package.json') {
+ const transformed = new PassThrough()
+ let str = ''
+ entry.on('end', () => transformed.end(str.replace(
+ /}\s*$/,
+ `\n,"_resolved": ${
+ JSON.stringify(opts.resolved || '')
+ }\n,"_integrity": ${
+ JSON.stringify(opts.integrity || '')
+ }\n,"_from": ${
+ JSON.stringify(spec.toString())
+ }\n}`
+ )))
+ entry.on('error', e => transformed.emit('error'))
+ entry.on('data', d => { str += d })
+ return transformed
+ }
+ }
+}
+
+function extractStream (spec, dest, opts) {
opts = opts || {}
const sawIgnores = new Set()
return tar.x({
@@ -20,6 +43,7 @@ function extractStream (dest, opts) {
onwarn: msg => opts.log && opts.log.warn('tar', msg),
uid: opts.uid,
gid: opts.gid,
+ transform: opts.resolved && pkgJsonTransform(spec, opts),
onentry (entry) {
if (entry.type.toLowerCase() === 'file') {
entry.mode = computeMode(entry.mode, opts.fmode, opts.umask)