deep-extend-stream

4.0.0-0 • Public • Published

deep-extend-stream

npm version Build Status Coverage Status

Recursively extend the object in a stream

const deepExtend = require('deep-extend-stream');
 
const target = {foo: {bar: 123}};
const deepExtendStream = deepExtend(target);
 
deepExtendStream.write({foo: {baz: 'Hello'}});
deepExtendStream.write({qux: 'World'});
 
deepExtendStream.on('finish', () => {
  target; //=> {foo: {bar: 123, baz: 'Hello'}, qux: 'World'}
});
 
deepExtendStream.end();

Installation

Use npm.

npm install deep-extend-stream

API

const deepExtend = require('deep-extend-stream');

deepExtend([target,] [callback])

target: Object or Array
callback: Function
Return: Object (stream.Transform)

It returns a transform stream that recursively extends the target object with passed objects (what is called "deep extend").

Target object is optional ({} by default).

const deepExtend = require('deep-extend-stream');
const deepExtendStream = deepExtend();
 
deepExtendStream
.on('finish', function() {
  // this._target is an internal property to keep target object
  this._target;
  /*=> {
    '0': 'a',
    '1': {
      b: 'c',
      d: 'e'
    },
    '2': 'f'
  } */
})
.write(['a', {'b': 'c'}, 'f'])
.write({'1': {'d': 'e'}})
.end();

callback(target)

You can specify a function to be called on finish event. It will be called with the target object as its first argument.

const deepExtend = require('deep-extend-stream');
 
deepExtend(target => {
  target; //=> [0, 1, 2]
}).end([0, 1, 2]);
 
deepExtend([0, 1, 2], target => {
  target; //=> [0, 1, 2]
}).end();

License

Copyright (c) 2014 - 2017 Shinnosuke Watanabe

Licensed under the MIT License.

Package Sidebar

Install

npm i deep-extend-stream

Weekly Downloads

2

Version

4.0.0-0

License

MIT

Last publish

Collaborators

  • shinnn