diff --git a/node_modules/cacache/CHANGELOG.md b/node_modules/cacache/CHANGELOG.md
index f04bdea0c4089..a9aeb3bc1fbe3 100644
--- a/node_modules/cacache/CHANGELOG.md
+++ b/node_modules/cacache/CHANGELOG.md
@@ -2,6 +2,28 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+# [11.1.0](https://github.com/zkat/cacache/compare/v11.0.3...v11.1.0) (2018-08-01)
+
+
+### Features
+
+* **read:** add sync support for low-level content read ([b43af83](https://github.com/zkat/cacache/commit/b43af83))
+
+
+
+
+## [11.0.3](https://github.com/zkat/cacache/compare/v11.0.2...v11.0.3) (2018-08-01)
+
+
+### Bug Fixes
+
+* **config:** add ssri config options ([#136](https://github.com/zkat/cacache/issues/136)) ([10d5d9a](https://github.com/zkat/cacache/commit/10d5d9a))
+* **perf:** refactor content.read to avoid lstats ([c5ac10e](https://github.com/zkat/cacache/commit/c5ac10e))
+* **test:** oops when removing safe-buffer ([1950490](https://github.com/zkat/cacache/commit/1950490))
+
+
+
## [11.0.2](https://github.com/zkat/cacache/compare/v11.0.1...v11.0.2) (2018-05-07)
diff --git a/node_modules/cacache/lib/content/read.js b/node_modules/cacache/lib/content/read.js
index 5c1a6f2f290b4..e308ead92b8b5 100644
--- a/node_modules/cacache/lib/content/read.js
+++ b/node_modules/cacache/lib/content/read.js
@@ -10,7 +10,8 @@ const pipe = BB.promisify(require('mississippi').pipe)
const ssri = require('ssri')
const Y = require('../util/y.js')
-BB.promisifyAll(fs)
+const lstatAsync = BB.promisify(fs.lstat)
+const readFileAsync = BB.promisify(fs.readFile)
const ReadOpts = figgyPudding({
size: {}
@@ -19,10 +20,8 @@ const ReadOpts = figgyPudding({
module.exports = read
function read (cache, integrity, opts) {
opts = ReadOpts(opts)
- return pickContentSri(cache, integrity).then(content => {
- const sri = content.sri
- const cpath = contentPath(cache, sri)
- return fs.readFileAsync(cpath, null).then(data => {
+ return withContentSri(cache, integrity, (cpath, sri) => {
+ return readFileAsync(cpath, null).then(data => {
if (typeof opts.size === 'number' && opts.size !== data.length) {
throw sizeError(opts.size, data.length)
} else if (ssri.checkData(data, sri)) {
@@ -34,17 +33,31 @@ function read (cache, integrity, opts) {
})
}
+module.exports.sync = readSync
+function readSync (cache, integrity, opts) {
+ opts = ReadOpts(opts)
+ return withContentSriSync(cache, integrity, (cpath, sri) => {
+ const data = fs.readFileSync(cpath)
+ if (typeof opts.size === 'number' && opts.size !== data.length) {
+ throw sizeError(opts.size, data.length)
+ } else if (ssri.checkData(data, sri)) {
+ return data
+ } else {
+ throw integrityError(sri, cpath)
+ }
+ })
+}
+
module.exports.stream = readStream
module.exports.readStream = readStream
function readStream (cache, integrity, opts) {
opts = ReadOpts(opts)
const stream = new PassThrough()
- pickContentSri(
- cache, integrity
- ).then(content => {
- const sri = content.sri
+ withContentSri(cache, integrity, (cpath, sri) => {
+ return lstatAsync(cpath).then(stat => ({cpath, sri, stat}))
+ }).then(({cpath, sri, stat}) => {
return pipe(
- fs.createReadStream(contentPath(cache, sri)),
+ fs.createReadStream(cpath),
ssri.integrityStream({
integrity: sri,
size: opts.size
@@ -57,37 +70,64 @@ function readStream (cache, integrity, opts) {
return stream
}
+let copyFileAsync
if (fs.copyFile) {
module.exports.copy = copy
+ copyFileAsync = BB.promisify(fs.copyFile)
}
function copy (cache, integrity, dest, opts) {
opts = ReadOpts(opts)
- return pickContentSri(cache, integrity).then(content => {
- const sri = content.sri
- const cpath = contentPath(cache, sri)
- return fs.copyFileAsync(cpath, dest).then(() => content.size)
+ return withContentSri(cache, integrity, (cpath, sri) => {
+ return copyFileAsync(cpath, dest)
})
}
module.exports.hasContent = hasContent
function hasContent (cache, integrity) {
if (!integrity) { return BB.resolve(false) }
- return pickContentSri(cache, integrity)
- .catch({code: 'ENOENT'}, () => false)
- .catch({code: 'EPERM'}, err => {
+ return withContentSri(cache, integrity, (cpath, sri) => {
+ return lstatAsync(cpath).then(stat => ({size: stat.size, sri}))
+ }).catch(err => {
+ if (err.code === 'ENOENT') { return false }
+ if (err.code === 'EPERM') {
if (process.platform !== 'win32') {
throw err
} else {
return false
}
- }).then(content => {
- if (!content.sri) return false
- return ({ sri: content.sri, size: content.stat.size })
- })
+ }
+ })
}
-module.exports._pickContentSri = pickContentSri
-function pickContentSri (cache, integrity) {
+function withContentSri (cache, integrity, fn) {
+ return BB.try(() => {
+ const sri = ssri.parse(integrity)
+ // If `integrity` has multiple entries, pick the first digest
+ // with available local data.
+ const algo = sri.pickAlgorithm()
+ const digests = sri[algo]
+ if (digests.length <= 1) {
+ const cpath = contentPath(cache, digests[0])
+ return fn(cpath, digests[0])
+ } else {
+ return BB.any(sri[sri.pickAlgorithm()].map(meta => {
+ return withContentSri(cache, meta, fn)
+ }, {concurrency: 1}))
+ .catch(err => {
+ if ([].some.call(err, e => e.code === 'ENOENT')) {
+ throw Object.assign(
+ new Error('No matching content found for ' + sri.toString()),
+ {code: 'ENOENT'}
+ )
+ } else {
+ throw err[0]
+ }
+ })
+ }
+ })
+}
+
+function withContentSriSync (cache, integrity, fn) {
const sri = ssri.parse(integrity)
// If `integrity` has multiple entries, pick the first digest
// with available local data.
@@ -95,21 +135,17 @@ function pickContentSri (cache, integrity) {
const digests = sri[algo]
if (digests.length <= 1) {
const cpath = contentPath(cache, digests[0])
- return fs.lstatAsync(cpath).then(stat => ({ sri: digests[0], stat }))
+ return fn(cpath, digests[0])
} else {
- return BB.any(sri[sri.pickAlgorithm()].map(meta => {
- return pickContentSri(cache, meta)
- }))
- .catch(err => {
- if ([].some.call(err, e => e.code === 'ENOENT')) {
- throw Object.assign(
- new Error('No matching content found for ' + sri.toString()),
- {code: 'ENOENT'}
- )
- } else {
- throw err[0]
- }
- })
+ let lastErr = null
+ for (const meta of sri[sri.pickAlgorithm()]) {
+ try {
+ return withContentSriSync(cache, meta, fn)
+ } catch (err) {
+ lastErr = err
+ }
+ }
+ if (lastErr) { throw lastErr }
}
}
diff --git a/node_modules/cacache/package.json b/node_modules/cacache/package.json
index c9e61596f91c4..01e20c1346d0f 100644
--- a/node_modules/cacache/package.json
+++ b/node_modules/cacache/package.json
@@ -1,34 +1,30 @@
{
- "_args": [
- [
- "cacache@11.0.2",
- "/Users/rebecca/code/npm"
- ]
- ],
- "_from": "cacache@11.0.2",
- "_id": "cacache@11.0.2",
+ "_from": "cacache@latest",
+ "_id": "cacache@11.1.0",
"_inBundle": false,
- "_integrity": "sha512-hMiz7LN4w8sdfmKsvNs80ao/vf2JCGWWdpu95JyY90AJZRbZJmgE71dCefRiNf8OCqiZQDcUBfYiLlUNu4/j5A==",
+ "_integrity": "sha512-wFLexxfPdlvoUlpHIaU4y4Vm+Im/otOPCg1ov5g9/HRfUhVA8GpDdQL66SWBgRpgNC+5ebMT1Vr1RyPaFrJVqw==",
"_location": "/cacache",
"_phantomChildren": {},
"_requested": {
- "type": "version",
+ "type": "tag",
"registry": true,
- "raw": "cacache@11.0.2",
+ "raw": "cacache@latest",
"name": "cacache",
"escapedName": "cacache",
- "rawSpec": "11.0.2",
+ "rawSpec": "latest",
"saveSpec": null,
- "fetchSpec": "11.0.2"
+ "fetchSpec": "latest"
},
"_requiredBy": [
+ "#USER",
"/",
"/make-fetch-happen",
"/pacote"
],
- "_resolved": "https://registry.npmjs.org/cacache/-/cacache-11.0.2.tgz",
- "_spec": "11.0.2",
- "_where": "/Users/rebecca/code/npm",
+ "_resolved": "https://registry.npmjs.org/cacache/-/cacache-11.1.0.tgz",
+ "_shasum": "3d76dbc2e9da413acaad2557051960a4dad3e1a4",
+ "_spec": "cacache@latest",
+ "_where": "/Users/zkat/Documents/code/work/npm",
"author": {
"name": "Kat Marchán",
"email": "kzm@sykosomatic.org"
@@ -36,6 +32,7 @@
"bugs": {
"url": "https://github.com/zkat/cacache/issues"
},
+ "bundleDependencies": false,
"cache-version": {
"content": "2",
"index": "5"
@@ -64,7 +61,7 @@
"figgy-pudding": "^3.1.0",
"glob": "^7.1.2",
"graceful-fs": "^4.1.11",
- "lru-cache": "^4.1.2",
+ "lru-cache": "^4.1.3",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
@@ -74,17 +71,17 @@
"unique-filename": "^1.1.0",
"y18n": "^4.0.0"
},
+ "deprecated": false,
"description": "Fast, fault-tolerant, cross-platform, disk-based, data-agnostic, content-addressable cache.",
"devDependencies": {
"benchmark": "^2.1.4",
"chalk": "^2.3.2",
"cross-env": "^5.1.4",
"require-inject": "^1.4.2",
- "safe-buffer": "^5.1.1",
"standard": "^11.0.1",
- "standard-version": "^4.3.0",
- "tacks": "^1.2.2",
- "tap": "^11.1.3",
+ "standard-version": "^4.4.0",
+ "tacks": "^1.2.7",
+ "tap": "^12.0.1",
"weallbehave": "^1.2.0",
"weallcontribute": "^1.0.8"
},
@@ -127,5 +124,5 @@
"update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
"update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
},
- "version": "11.0.2"
+ "version": "11.1.0"
}
diff --git a/node_modules/cacache/put.js b/node_modules/cacache/put.js
index 0b0ee1497813b..01b0dd84fc5ad 100644
--- a/node_modules/cacache/put.js
+++ b/node_modules/cacache/put.js
@@ -13,10 +13,14 @@ const PutOpts = figgyPudding({
integrity: {},
memoize: {},
metadata: {},
+ pickAlgorithm: {},
size: {},
tmpPrefix: {},
uid: {},
- gid: {}
+ gid: {},
+ single: {},
+ sep: {},
+ strict: {}
})
module.exports = putData
diff --git a/package-lock.json b/package-lock.json
index 1f9107559cdda..a241dc6727923 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -355,16 +355,16 @@
"integrity": "sha512-JGC3EV2bCzJH/ENSh3afyJrH4vwxbHTuO5ljLoI5+2iJOcEpMgP8T782jH9b5qGxf2mSUIp1lfGnfKNrRHpvVg=="
},
"cacache": {
- "version": "11.0.2",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.0.2.tgz",
- "integrity": "sha512-hMiz7LN4w8sdfmKsvNs80ao/vf2JCGWWdpu95JyY90AJZRbZJmgE71dCefRiNf8OCqiZQDcUBfYiLlUNu4/j5A==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.1.0.tgz",
+ "integrity": "sha512-wFLexxfPdlvoUlpHIaU4y4Vm+Im/otOPCg1ov5g9/HRfUhVA8GpDdQL66SWBgRpgNC+5ebMT1Vr1RyPaFrJVqw==",
"requires": {
"bluebird": "^3.5.1",
"chownr": "^1.0.1",
"figgy-pudding": "^3.1.0",
"glob": "^7.1.2",
"graceful-fs": "^4.1.11",
- "lru-cache": "^4.1.2",
+ "lru-cache": "^4.1.3",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
diff --git a/package.json b/package.json
index a0eb27d1c93b0..a21f18dd4cbe0 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,7 @@
"bin-links": "^1.1.2",
"bluebird": "~3.5.1",
"byte-size": "^4.0.3",
- "cacache": "^11.0.2",
+ "cacache": "^11.1.0",
"call-limit": "~1.1.0",
"chownr": "~1.0.1",
"cli-columns": "^3.1.2",