Sha256: dc60e0ca7069538abc1888e56de44f081ebc09675413b9ab2ca41bead1cbb61e

Contents?: true

Size: 1.91 KB

Versions: 26

Compression:

Stored size: 1.91 KB

Contents

'use strict'

const figgyPudding = require('figgy-pudding')
const index = require('./lib/entry-index')
const memo = require('./lib/memoization')
const write = require('./lib/content/write')
const to = require('mississippi').to

const PutOpts = figgyPudding({
  algorithms: {
    default: ['sha512']
  },
  integrity: {},
  memoize: {},
  metadata: {},
  pickAlgorithm: {},
  size: {},
  tmpPrefix: {},
  single: {},
  sep: {},
  error: {},
  strict: {}
})

module.exports = putData
function putData (cache, key, data, opts) {
  opts = PutOpts(opts)
  return write(cache, data, opts).then(res => {
    return index.insert(
      cache, key, res.integrity, opts.concat({ size: res.size })
    ).then(entry => {
      if (opts.memoize) {
        memo.put(cache, entry, data, opts)
      }
      return res.integrity
    })
  })
}

module.exports.stream = putStream
function putStream (cache, key, opts) {
  opts = PutOpts(opts)
  let integrity
  let size
  const contentStream = write.stream(
    cache, opts
  ).on('integrity', int => {
    integrity = int
  }).on('size', s => {
    size = s
  })
  let memoData
  let memoTotal = 0
  const stream = to((chunk, enc, cb) => {
    contentStream.write(chunk, enc, () => {
      if (opts.memoize) {
        if (!memoData) { memoData = [] }
        memoData.push(chunk)
        memoTotal += chunk.length
      }
      cb()
    })
  }, cb => {
    contentStream.end(() => {
      index.insert(cache, key, integrity, opts.concat({ size })).then(entry => {
        if (opts.memoize) {
          memo.put(cache, entry, Buffer.concat(memoData, memoTotal), opts)
        }
        stream.emit('integrity', integrity)
        cb()
      })
    })
  })
  let erred = false
  stream.once('error', err => {
    if (erred) { return }
    erred = true
    contentStream.emit('error', err)
  })
  contentStream.once('error', err => {
    if (erred) { return }
    erred = true
    stream.emit('error', err)
  })
  return stream
}

Version data entries

26 entries across 25 versions & 8 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.18.0 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.18.2 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.16.1 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.15.2 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.18.4 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.18.1 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.14.0 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/terser-webpack-plugin/node_modules/cacache/put.js
tang-0.2.1 spec/tang_app/node_modules/webpack/node_modules/cacache/put.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/webpack/node_modules/cacache/put.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/webpack/node_modules/cacache/put.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/webpack/node_modules/cacache/put.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/webpack/node_modules/cacache/put.js
tang-0.2.0 spec/tang_app/node_modules/webpack/node_modules/cacache/put.js
tang-0.1.0 spec/tang_app/node_modules/webpack/node_modules/cacache/put.js
tang-0.0.9 spec/tang_app/node_modules/webpack/node_modules/cacache/put.js
enju_library-0.3.8 spec/dummy/node_modules/webpack/node_modules/cacache/put.js
jester-data-8.0.0 node_modules/terser-webpack-plugin/node_modules/cacache/put.js