{"_id":"bitfield-rle","_rev":"237328","name":"bitfield-rle","description":"A run-length-encoder that compresses bitfields.","dist-tags":{"latest":"2.2.1"},"maintainers":[{"name":"mafintosh","email":""}],"time":{"modified":"2023-03-24T16:34:32.000Z","created":"2016-04-01T02:33:17.717Z","2.2.1":"2018-08-20T22:08:53.638Z","2.2.0":"2018-08-20T19:04:56.080Z","2.1.1":"2018-08-20T18:30:33.869Z","2.1.0":"2017-03-05T12:33:02.889Z","2.0.0":"2017-02-21T15:13:09.169Z","1.1.2":"2016-06-29T00:28:52.591Z","1.1.1":"2016-06-06T10:56:17.035Z","1.1.0":"2016-04-01T14:24:29.932Z","1.0.0":"2016-04-01T02:33:17.717Z"},"users":{},"author":{"name":"Mathias Buus","url":"@mafintosh"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/bitfield-rle.git"},"versions":{"2.2.1":{"name":"bitfield-rle","version":"2.2.1","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"buffer-alloc-unsafe":"^1.1.0","varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"31a000123bc7ead667585831bc8dd21e614fe03f","_id":"bitfield-rle@2.2.1","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"07c910f7e650c005c46d18ee5ca6e62c4baf8310","size":3627,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-2.2.1.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-2.2.1.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bitfield-rle_2.2.1_1534802933481_0.6001855991356031"},"_hasShrinkwrap":false,"publish_time":1534802933638,"_cnpm_publish_time":1534802933638,"_cnpmcore_publish_time":"2021-12-17T00:25:20.698Z"},"2.2.0":{"name":"bitfield-rle","version":"2.2.0","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"buffer-alloc-unsafe":"^1.1.0","varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"13cfa8e797d2142f55b14b918cd3c63bedfaf319","_id":"bitfield-rle@2.2.0","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"a39e36e858759efa5c0c4dcd4244f377133fc9df","size":3624,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-2.2.0.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-2.2.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bitfield-rle_2.2.0_1534791895986_0.4784297541386504"},"_hasShrinkwrap":false,"publish_time":1534791896080,"_cnpm_publish_time":1534791896080,"_cnpmcore_publish_time":"2021-12-17T00:25:20.904Z"},"2.1.1":{"name":"bitfield-rle","version":"2.1.1","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"buffer-alloc-unsafe":"^1.1.0","varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"3d7aac4ae599a0f5b172dc1662f0a9b461af223c","_id":"bitfield-rle@2.1.1","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"5269045d22664e6373dc1c30bdc2de813c8ef51d","size":3546,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-2.1.1.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-2.1.1.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bitfield-rle_2.1.1_1534789833788_0.6066506101493974"},"_hasShrinkwrap":false,"publish_time":1534789833869,"_cnpm_publish_time":1534789833869,"_cnpmcore_publish_time":"2021-12-17T00:25:21.141Z"},"2.1.0":{"name":"bitfield-rle","version":"2.1.0","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"6e7953d6fca83a98c0d59b4fb83352354bc26824","_id":"bitfield-rle@2.1.0","_shasum":"ae29e9382a7ba4898de9f48bb23fd338c4fbdcf8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.5","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"ae29e9382a7ba4898de9f48bb23fd338c4fbdcf8","size":3582,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-2.1.0.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-2.1.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bitfield-rle-2.1.0.tgz_1488717181011_0.966285509057343"},"directories":{},"publish_time":1488717182889,"_hasShrinkwrap":false,"_cnpm_publish_time":1488717182889,"_cnpmcore_publish_time":"2021-12-17T00:25:21.361Z"},"2.0.0":{"name":"bitfield-rle","version":"2.0.0","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"055bf178be228580456cb7c7a6565f5802ca4425","_id":"bitfield-rle@2.0.0","_shasum":"0e413ce156018d30b55c1659e9942f9d7b7e8771","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.5","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"0e413ce156018d30b55c1659e9942f9d7b7e8771","size":3496,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-2.0.0.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-2.0.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bitfield-rle-2.0.0.tgz_1487689987164_0.21983791468665004"},"directories":{},"publish_time":1487689989169,"_hasShrinkwrap":false,"_cnpm_publish_time":1487689989169,"_cnpmcore_publish_time":"2021-12-17T00:25:21.569Z"},"1.1.2":{"name":"bitfield-rle","version":"1.1.2","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"1936df5b12ab985a9282d3f9315175380ac08054","_id":"bitfield-rle@1.1.2","_shasum":"bcd1fd9039cc19bd068db4029adbdceccc228910","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.3","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"bcd1fd9039cc19bd068db4029adbdceccc228910","size":3544,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-1.1.2.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-1.1.2.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bitfield-rle-1.1.2.tgz_1467160132116_0.5699537962209433"},"directories":{},"publish_time":1467160132591,"_hasShrinkwrap":false,"_cnpm_publish_time":1467160132591,"_cnpmcore_publish_time":"2021-12-17T00:25:21.765Z"},"1.1.1":{"name":"bitfield-rle","version":"1.1.1","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"d9e540c0bd599298f01a6b97584a303104d7b57c","_id":"bitfield-rle@1.1.1","_shasum":"851bb14c10f2d31a229b2ee45d7e3ef147a8a315","_from":".","_npmVersion":"2.15.1","_nodeVersion":"4.4.3","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"851bb14c10f2d31a229b2ee45d7e3ef147a8a315","size":3523,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-1.1.1.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-1.1.1.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bitfield-rle-1.1.1.tgz_1465210574640_0.27832179539836943"},"directories":{},"publish_time":1465210577035,"_hasShrinkwrap":false,"_cnpm_publish_time":1465210577035,"_cnpmcore_publish_time":"2021-12-17T00:25:21.962Z"},"1.1.0":{"name":"bitfield-rle","version":"1.1.0","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"40cedd7f8d19f398cd02e6a55fd0ef3c9c10c9cb","_id":"bitfield-rle@1.1.0","_shasum":"5d8051da646fd0e102a5acea48bf0757349a7386","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"5d8051da646fd0e102a5acea48bf0757349a7386","size":3456,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-1.1.0.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-1.1.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bitfield-rle-1.1.0.tgz_1459520667314_0.18020071787759662"},"directories":{},"publish_time":1459520669932,"_hasShrinkwrap":false,"_cnpm_publish_time":1459520669932,"_cnpmcore_publish_time":"2021-12-17T00:25:22.252Z"},"1.0.0":{"name":"bitfield-rle","version":"1.0.0","description":"A run-length-encoder that compresses bitfields.","main":"index.js","dependencies":{"varint":"^4.0.0"},"devDependencies":{"bitfield":"^1.1.2","standard":"^6.0.8","tape":"^4.5.1"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/bitfield-rle.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"homepage":"https://github.com/mafintosh/bitfield-rle","gitHead":"c830a3ba570d2103759bb212418a598db6d39713","_id":"bitfield-rle@1.0.0","_shasum":"fe3bc0abcb7251f5cbf2c63d306c2a435cdd0876","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.4.1","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"dist":{"shasum":"fe3bc0abcb7251f5cbf2c63d306c2a435cdd0876","size":3237,"noattachment":false,"key":"/bitfield-rle/-/bitfield-rle-1.0.0.tgz","tarball":"http://name.csiicloud.com:7001/bitfield-rle/download/bitfield-rle-1.0.0.tgz"},"maintainers":[{"name":"mafintosh","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/bitfield-rle-1.0.0.tgz_1459477995438_0.23705640551634133"},"directories":{},"publish_time":1459477997717,"_hasShrinkwrap":false,"_cnpm_publish_time":1459477997717,"_cnpmcore_publish_time":"2021-12-17T00:25:22.461Z"}},"readme":"# bitfield-rle\n\nA run-length-encoder ([RLE](https://en.wikipedia.org/wiki/Run-length_encoding)) that compresses bitfields.\n\n```\nnpm install bitfield-rle\n```\n\n[![build status](http://img.shields.io/travis/mafintosh/bitfield-rle.svg?style=flat)](http://travis-ci.org/mafintosh/bitfield-rle)\n\n## Usage\n\n``` js\nvar rle = require('bitfield-rle')\nvar bitfield = require('bitfield')\n\nvar bits = bitfield(1024)\n\nbits.set(400, true) // set bit 400\n\nvar enc = rle.encode(bits.buffer) // rle encode the bitfield\nconsole.log(enc.length) // 6 bytes\nvar dec = rle.decode(enc) // decode the rle encoded buffer\nconsole.log(dec.length) // 128 bytes (like the old bitfield)\n\nbits = bitfield(dec)\nconsole.log(bits.get(400)) // still returns true\n```\n\nThe encoder uses a compact format and will only run length encode sequences of bits if it compresses\nthe bitfield. The encoded bitfield should therefore always be smaller or the same size as the original\nbitfield with the exception of a 1-6 byte header.\n\nSince this uses run-length-encoding, you'll get the best compression results if you have longer sequences\nof the same bit in your bitfield.\n\n## API\n\nThe API is [abstract-encoding](https://github.com/mafintosh/abstract-encoding) compliant\n\n#### `buffer = rle.encode(bitfield, [buffer], [offset])`\n\nRun-length-encode a bitfield. Optionally you can pass in a buffer to encode it to.\n\n#### `length = rle.encodingLength(bitfield)`\n\nReturns how many bytes are needed to encode the bitfield\n\n#### `bitfield = rle.decode(buffer, [offset])`\n\nDecode an encoded bitfield.\n\n#### `length = rle.decodingLength(buffer, [offset])`\n\nReturns how many bytes a decoded bitfield will use.\n\n## Format\n\nThe encoded bitfield is a series of compressed and uncompressed bit sequences. All sequences start with a header\nthat is a varint.\n\nIf the last bit is set in the varint (it is an odd number) then a header represents a compressed bit sequence.\n\n```\ncompressed-sequence = varint(byte-length-of-sequence << 2 | bit << 1 | 1)\n```\n\nIf the last bit is *not* set then a header represents an non compressed sequence\n\n```\nuncompressed-sequence = varint(byte-length-of-bitfield << 1 | 0) + (bitfield)\n```\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/mafintosh/bitfield-rle","bugs":{"url":"https://github.com/mafintosh/bitfield-rle/issues"},"license":"MIT"}