diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/cacache/put.js')
| -rw-r--r-- | sandbox/testAppNevena/Front/node_modules/cacache/put.js | 83 | 
1 files changed, 83 insertions, 0 deletions
| diff --git a/sandbox/testAppNevena/Front/node_modules/cacache/put.js b/sandbox/testAppNevena/Front/node_modules/cacache/put.js new file mode 100644 index 00000000..84e9562b --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/cacache/put.js @@ -0,0 +1,83 @@ +'use strict' + +const index = require('./lib/entry-index') +const memo = require('./lib/memoization') +const write = require('./lib/content/write') +const Flush = require('minipass-flush') +const { PassThrough } = require('minipass-collect') +const Pipeline = require('minipass-pipeline') + +const putOpts = (opts) => ({ +  algorithms: ['sha512'], +  ...opts, +}) + +module.exports = putData + +function putData (cache, key, data, opts = {}) { +  const { memoize } = opts +  opts = putOpts(opts) +  return write(cache, data, opts).then((res) => { +    return index +      .insert(cache, key, res.integrity, { ...opts, size: res.size }) +      .then((entry) => { +        if (memoize) +          memo.put(cache, entry, data, opts) + +        return res.integrity +      }) +  }) +} + +module.exports.stream = putStream + +function putStream (cache, key, opts = {}) { +  const { memoize } = opts +  opts = putOpts(opts) +  let integrity +  let size + +  let memoData +  const pipeline = new Pipeline() +  // first item in the pipeline is the memoizer, because we need +  // that to end first and get the collected data. +  if (memoize) { +    const memoizer = new PassThrough().on('collect', data => { +      memoData = data +    }) +    pipeline.push(memoizer) +  } + +  // contentStream is a write-only, not a passthrough +  // no data comes out of it. +  const contentStream = write.stream(cache, opts) +    .on('integrity', (int) => { +      integrity = int +    }) +    .on('size', (s) => { +      size = s +    }) + +  pipeline.push(contentStream) + +  // last but not least, we write the index and emit hash and size, +  // and memoize if we're doing that +  pipeline.push(new Flush({ +    flush () { +      return index +        .insert(cache, key, integrity, { ...opts, size }) +        .then((entry) => { +          if (memoize && memoData) +            memo.put(cache, entry, memoData, opts) + +          if (integrity) +            pipeline.emit('integrity', integrity) + +          if (size) +            pipeline.emit('size', size) +        }) +    }, +  })) + +  return pipeline +} | 
