Exciting news!Announcing our $4.6M Series Seed. Learn more
Socket
LoveBlogFAQ
Install
Log in

@ably/vcdiff-decoder

Package Overview
Dependencies
0
Maintainers
3
Versions
6
Issues
File Explorer

Advanced tools

@ably/vcdiff-decoder

Pure JavaScript Vcdiff decoder that works with binary deltas from Google's open-vcdiff

    1.0.5latest

Version published
Maintainers
3
Yearly downloads
8,347
increased by120.3%

Weekly downloads

Readme

Source

Vcdiff Decoder

Build Status npm version

A Vcdiff decoder written in pure JavaScript. Supports the Vcdiff format, as specified in RFC 3284.

Tested and proven with Vcdiff patch/delta files generated from Google's open-vcdiff and Joshua MacDonald's xdelta.

Installation from npm for Node.js

npm install @ably/vcdiff-decoder

and require as:

const vcdiffPlugin = require('@ably/vcdiff-decoder');

Script include for Web Browsers

Include the library in your HTML from our CDN:

<script src="https://cdn.ably.io/lib/vcdiff-decoder.min-1.js"></script>

We follow Semantic Versioning. To lock into a major or minor version of the client library, you can specify a specific version number - for example:

  • https://cdn.ably.io/lib/vcdiff-decoder.min-1.js for latest 1.* version
  • https://cdn.ably.io/lib/vcdiff-decoder.min-1.0.js for latest v1.0.* version
  • https://cdn.ably.io/lib/vcdiff-decoder.min-1.0.3.js for version 1.0.3 explicitly

You can load the non-minified version by omitting min- from the URL, for example https://cdn.ably.io/lib/vcdiff-decoder-1.js.

See tagged releases for available versions.

Usage

The following code sample shows how to use Vcdiff with Ably:

const Ably = require('ably'); const vcdiffPlugin = require('@ably/vcdiff-decoder'); const realtime = new Ably.Realtime({ key: 'YOUR_ABLY_KEY', plugins: { vcdiff: vcdiffPlugin }, log: { level: 4 } // optional }); const channel = realtime.channels.get('your-ably-channel', { params: { delta: 'vcdiff' } }); channel.subscribe(msg => console.log("Received message: ", msg));

Exported Functions

decode(delta, source)

Synchronous decode. Parameters:

  • delta: Uint8Array - the binary Vcdiff format encoding of the patch/diff information needed to transform source to the returned target
  • source: Uint8Array - the group of bytes to transform to the returned target using by applying delta

Returns a Uint8Array, the 'target', being the result of applying delta to source.

Contributing

Requirements

The vcdiff dev dependency of this project, used for testing, fails to build against Node.js 9 and newer. For this reason, until #3 has been addressed, the tests must be run against an environment with Node.js 8 installed.

At the time of writing this means:

vcdiff-decoder % node --version v8.17.0 vcdiff-decoder % npm --version 6.13.4

For those who use ASDF or compatible tooling to manage their Node.js runtime versions, we have included a .tool-versions file.

Building

You can trigger a build using Webpack with:

npm run grunt -- build

which creates vcdiff-decoder.js and vcdiff-decoder.min.js in the dist folder.

Testing

To run all tests use:

npm test

Browser testing supported by

for which you will need to configure environment variables for BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESSKEY.

Release Procedure

On the main branch:

  1. Increment the version, regenerate from source (a.k.a. build / bundle) and make a tagged commit which includes the built output from the /dist folder by running npm run grunt -- release:patch (or "major", "minor" or "prepatch" as appropriate - see grunt-bump Usage Examples)
  2. Release the tagged commit to Github using git push origin main --follow-tags
  3. Release to NPM using npm publish . --access public (this package is configured to require that 2FA is used by publishers)
  4. Release to Ably's CDN using npm run grunt -- publish-cdn (operable by Ably staff only)
  5. Visit tags and draft new release for the newly created tag

Keywords

Socket

Product

Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc