Socket
Socket
Sign inDemoInstall

livepatch

Package Overview
Dependencies
11
Maintainers
2
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    livepatch

Patch JSON streams on the fly


Version published
Maintainers
2
Install size
216 kB
Created

Readme

Source

livepatch

Build Status Coverage Status

Patch JSON streams on the fly.

Example

var fs = require('fs');
var livepatch = require('livepatch');

fs.createReadStream('test.json')
	.pipe(livepatch(function() {
		/* Transformations goes here */

		this.rename('$.name_*', 'name'); // Renames all keys in the root starting with 'name_' to 'name'

		this.remove('$._*'); // Removes all fields in the root starting with an underscore

		// Advanced usage
		this.rewrite('$.author', function(match) {
			return {
				rename: 'author_name',
				value: match.value.toUpperCase()
			};
		});
	}))
	.pipe(fs.createWriteStream('output.json'));

Documentation

rename(path, name)

Renames all fields matched by path to name.

remove(path)

Remove all fields matched by path.

rewrite(path, rewriteFn)

Rewrite all fields matched by path using rewriteFn.

The passed function receives an argument with the following information:

key: current key name

path: current path(as an array)

value: current key value(if available)

It should return a JSON object with atleast one of the following actions:

rename: Renames the fields with the given value

remove: If true, removes the key

value: Changes the key value

path

All paths used in transformations are based on the JSONPath spec.

$ denotes the root of the object . denotes the end of a key name * denotes any range of characters

Examples

$.name Matches the name field.

$.books[*].author Matches all books authors.

$.books[*].*_name Matches all fields in a book that ends with _name.

How it works

LivePatch works by reading a JSON stream with clarinet and doing live modifications based on the current path in the stream. After patching, it immediatly serializes to the next stream the resulting JSON.

It's very useful when dealing with very large objects which came from a stream(e.g.: ElasticSearch results) that need to be modified and streamed to another place(e.g.: network). As it doesn't hold the entire data on memory you don't need to worry about loading large files.

License

Check here.

Keywords

FAQs

Last updated on 26 Apr 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc