docker-stream-cleanser
Advanced tools
Comparing version 0.3.0 to 1.0.0
{ | ||
"name": "docker-stream-cleanser", | ||
"version": "0.3.0", | ||
"version": "1.0.0", | ||
"main": "index.js", | ||
@@ -13,2 +13,6 @@ "description": "This module cleans the docker headers from the log stream from a container. I never found them very useful, so I wrote this to clean them up either in bulk, or in between a piping. It's not as simple as just removing the first 8 bytes on every message", | ||
}, | ||
"engineStrict": true, | ||
"engine": { | ||
"node": "6.9.4" | ||
}, | ||
"keywords": [ | ||
@@ -41,3 +45,4 @@ "docker", | ||
"dependencies": { | ||
"lab": "^5.2.1", | ||
"async": "^2.3.0", | ||
"lab": "^13.0.2", | ||
"through": "^2.3.6" | ||
@@ -48,4 +53,4 @@ }, | ||
"concat-stream": "^1.4.7", | ||
"lab": "^4.0.2" | ||
"lab": "^13.0.2" | ||
} | ||
} |
@@ -24,4 +24,4 @@ [![NPM](https://nodei.co/npm/docker-stream-cleanser.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/docker-stream-cleanser/) | ||
```js | ||
var streamCleanser = require('docker-stream-cleanser')(); | ||
const StreamCleanser = require('docker-stream-cleanser'); | ||
const streamCleanser = new StreamCleanser() | ||
dockerLogStream | ||
@@ -34,6 +34,8 @@ .pipe(streamCleanser) | ||
```js | ||
var Docker = require('dockerode'); | ||
var container = new Docker().getContainer(containerId); | ||
var streamCleanser = require('docker-stream-cleanser')(); | ||
const Docker = require('dockerode'); | ||
const container = new Docker().getContainer(containerId); | ||
const StreamCleanser = require('docker-stream-cleanser'); | ||
const streamCleanser = new StreamCleanser() | ||
container.logs({ stderr: true, stdout: true }, function (err, stream) { | ||
@@ -46,17 +48,3 @@ stream | ||
Usage with Docker Data Buffer | ||
```js | ||
var streamCleanser = require('docker-stream-cleanser')(); | ||
var concat = require('concat-stream'); | ||
streamCleanser | ||
.pipe(concat(function (cleanDockerData) { | ||
// use cleanDockerData here.. | ||
})); | ||
streamCleanser.write(dockerDataBuffer); | ||
streamCleanser.end(); | ||
``` | ||
Installation | ||
@@ -63,0 +51,0 @@ -------------- |
@@ -1,220 +0,153 @@ | ||
'use strict'; | ||
'use strict' | ||
var Code = require('code'); | ||
var Lab = require('lab'); | ||
var lab = exports.lab = Lab.script(); | ||
var Code = require('code') | ||
var Lab = require('lab') | ||
var lab = exports.lab = Lab.script() | ||
var describe = lab.describe; | ||
var it = lab.it; | ||
var beforeEach = lab.beforeEach; | ||
var expect = Code.expect; | ||
var describe = lab.describe | ||
var it = lab.it | ||
var beforeEach = lab.beforeEach | ||
var expect = Code.expect | ||
var through = require('through') | ||
var createStreamCleanser = require('../index'); | ||
var concat = require('concat-stream'); | ||
var createFrame = require('./fixtures/create-frame'); | ||
var Transformer = require('../transform') | ||
var concat = require('concat-stream') | ||
var createFrame = require('./fixtures/create-frame') | ||
describe('stream', function () { | ||
var ctx; | ||
var ctx | ||
beforeEach(function (done) { | ||
ctx = {}; | ||
done(); | ||
}); | ||
ctx = {} | ||
done() | ||
}) | ||
describe('all combinations of chunks', function () { | ||
beforeEach(function (done) { | ||
var frame1 = createFrame('helloworld'); | ||
var frame2 = createFrame('foobarbaz'); | ||
var twoFrames = Buffer.concat([ frame1, frame2 ]); | ||
var chunks = []; | ||
var expected = new Buffer(0); | ||
var frame1 = createFrame('helloworld') | ||
var frame2 = createFrame('foobarbaz') | ||
var twoFrames = Buffer.concat([ frame1, frame2 ]) | ||
var chunks = [] | ||
var expected = new Buffer(0) | ||
for (var i = 0; i < twoFrames.length; i++) { | ||
chunks.push(twoFrames.slice(0, i)); | ||
chunks.push(twoFrames.slice(i, twoFrames.length)); | ||
expected = Buffer.concat([expected, frame1.payload, frame2.payload]); | ||
chunks.push(twoFrames.slice(0, i)) | ||
chunks.push(twoFrames.slice(i, twoFrames.length)) | ||
expected = Buffer.concat([ expected, frame1.payload, frame2.payload ]) | ||
} | ||
ctx.chunks = chunks; | ||
ctx.expected = expected; | ||
ctx.streamCleanser = createStreamCleanser(); | ||
done(); | ||
}); | ||
ctx.chunks = chunks | ||
ctx.expected = expected | ||
done() | ||
}) | ||
describe('as buffers', function () { | ||
assertStreamIsCleaned(); | ||
}); | ||
it('should clean a stream piped to through it', function (done) { | ||
assertStreamIsCleaned(done) | ||
}) | ||
}) | ||
describe('as strings (payloads only)', function () { | ||
beforeEach(function (done) { | ||
ctx.streamCleanser = createStreamCleanser('base64'); | ||
ctx.chunks = ctx.chunks.map(function (chunk) { | ||
return chunk.toString('base64'); | ||
}); | ||
ctx.expected = ctx.expected.toString(); | ||
done(); | ||
}); | ||
assertStreamIsCleaned(); | ||
}); | ||
return chunk.toString('base64') | ||
}) | ||
ctx.expected = ctx.expected.toString() | ||
done() | ||
}) | ||
it('should clean a stream piped to through it', function (done) { | ||
assertStreamIsCleaned(done) | ||
}) | ||
}) | ||
describe('as buffers and strings (mixed)', function () { | ||
beforeEach(function (done) { | ||
ctx.streamCleanser = createStreamCleanser('hex'); | ||
ctx.chunks = ctx.chunks.map(function (chunk, i) { | ||
return i % 2 ? | ||
chunk.toString('hex') : | ||
chunk; | ||
}); | ||
done(); | ||
}); | ||
assertStreamIsCleaned(); | ||
}); | ||
}); | ||
chunk | ||
}) | ||
done() | ||
}) | ||
it('should clean a stream piped to through it', function (done) { | ||
assertStreamIsCleaned(done) | ||
}) | ||
}) | ||
}) | ||
describe('smallest chunks', function () { | ||
beforeEach(function (done) { | ||
var frame = createFrame('helloworld'); | ||
var chunks = []; | ||
var expected = frame.payload; | ||
var frame = createFrame('helloworld') | ||
var chunks = [] | ||
var expected = frame.payload | ||
for (var i = 0; i < frame.length; i++) { | ||
chunks.push(frame.slice(i, i+1)); | ||
chunks.push(frame.slice(i, i + 1)) | ||
} | ||
ctx.chunks = chunks; | ||
ctx.expected = expected; | ||
ctx.streamCleanser = createStreamCleanser('utf8'); | ||
done(); | ||
}); | ||
ctx.chunks = chunks | ||
ctx.expected = expected | ||
done() | ||
}) | ||
assertStreamIsCleaned(); | ||
}); | ||
it('should clean a stream piped to through it', function (done) { | ||
assertStreamIsCleaned(done) | ||
}) | ||
}) | ||
describe('multiframe chunks', function () { | ||
beforeEach(function (done) { | ||
var frame = createFrame('helloworld'); | ||
var chunks = []; | ||
var expected = new Buffer(0); | ||
var frame = createFrame('helloworld') | ||
var chunks = [] | ||
var expected = new Buffer(0) | ||
for (var i = 1; i < 3; i++) { | ||
var chunk = new Buffer(0); | ||
var chunk = new Buffer(0) | ||
for (var j = 0; i < j; j++) { | ||
chunk = Buffer.concat([ chunk, frame ]); | ||
expected = Buffer.concat([ expected, frame.payload ]); | ||
chunk = Buffer.concat([ chunk, frame ]) | ||
expected = Buffer.concat([ expected, frame.payload ]) | ||
} | ||
chunks.push(chunk); | ||
chunks.push(chunk) | ||
} | ||
ctx.chunks = chunks; | ||
ctx.expected = expected; | ||
ctx.streamCleanser = createStreamCleanser('utf8'); | ||
done(); | ||
}); | ||
ctx.chunks = chunks | ||
ctx.expected = expected | ||
done() | ||
}) | ||
assertStreamIsCleaned(); | ||
}); | ||
it('should clean a stream piped to through it', function (done) { | ||
assertStreamIsCleaned(done) | ||
}) | ||
}) | ||
describe('encoding', function() { | ||
beforeEach(function (done) { | ||
var frame = createFrame('helloworld'); | ||
ctx.chunks = [frame]; | ||
ctx.expected = frame.payload; | ||
ctx.streamCleanser = createStreamCleanser('utf8'); | ||
done(); | ||
}); | ||
function assertStreamIsCleaned (done) { | ||
var sourcePipe = new through() | ||
assertStreamIsCleaned(); | ||
}); | ||
var transformer = new Transformer() | ||
// console.log(ctx.chunks) | ||
sourcePipe | ||
.pipe(transformer) | ||
.pipe(concat(function (data) { | ||
var count = 0 | ||
const INC = 50 | ||
data = data.toString() | ||
var expected = ctx.expected.toString() | ||
while (count < data.length) { | ||
var nowD = data.substr(count, INC) | ||
var nowE = expected.substr(count, INC) | ||
console.log('Count at ', count) | ||
console.log('data ', nowD) | ||
console.log('expected ', nowE) | ||
count += INC | ||
expect(nowD).to.equal(nowE) | ||
describe('empty payload', function() { | ||
beforeEach(function (done) { | ||
var frame = createFrame(''); | ||
ctx.chunks = [frame]; | ||
ctx.expected = frame.payload; | ||
ctx.streamCleanser = createStreamCleanser('utf8'); | ||
done(); | ||
}); | ||
} | ||
done() | ||
})) | ||
assertStreamIsCleaned(); | ||
}); | ||
describe('incomplete payload', function() { | ||
beforeEach(function (done) { | ||
var frame = createFrame('hello'); | ||
frame = frame.slice(0, 2); // incomplete header and no more data | ||
ctx.chunks = [frame]; | ||
ctx.expected = frame.payload; | ||
ctx.streamCleanser = createStreamCleanser('utf8'); | ||
done(); | ||
}); | ||
it('should error bc it will get end before payload completes', function (done) { | ||
var streamCleanser = ctx.streamCleanser; | ||
// console.log(ctx.chunks); | ||
streamCleanser | ||
.pipe(concat(function () { | ||
// never makes it.. | ||
})); | ||
streamCleanser.on('error', function (err) { | ||
expect(err).to.exist(); | ||
expect(err.message).to.match(/buffer still has data/); | ||
done(); | ||
}); | ||
// write log data to stream | ||
ctx.chunks.forEach(function (chunk) { | ||
streamCleanser.write(chunk); | ||
}); | ||
streamCleanser.end(); | ||
}); | ||
}); | ||
describe('error upon recieving unexpected header type (> 2)', function() { | ||
beforeEach(function (done) { | ||
var frame = createFrame('hello', 3); | ||
ctx.chunks = [frame]; | ||
ctx.expected = frame.payload; | ||
ctx.streamCleanser = createStreamCleanser('utf8'); | ||
done(); | ||
}); | ||
it('should error bc it will get end before payload completes', function (done) { | ||
var streamCleanser = ctx.streamCleanser; | ||
// console.log(ctx.chunks); | ||
streamCleanser | ||
.pipe(concat(function () { | ||
// never makes it.. | ||
})); | ||
streamCleanser.on('error', function (err) { | ||
expect(err).to.exist(); | ||
expect(err.message).to.match(/unexpected type/); | ||
done(); | ||
}); | ||
// write log data to stream | ||
ctx.chunks.forEach(function (chunk) { | ||
streamCleanser.write(chunk); | ||
}); | ||
streamCleanser.end(); | ||
}); | ||
}); | ||
function assertStreamIsCleaned () { | ||
it('should clean a stream piped to through it', function (done) { | ||
var streamCleanser = ctx.streamCleanser; | ||
// console.log(ctx.chunks); | ||
streamCleanser | ||
.pipe(concat(function (data) { | ||
expect(data.toString()).to.equal(ctx.expected.toString()); | ||
done(); | ||
})); | ||
streamCleanser.on('error', done); | ||
// write log data to stream | ||
ctx.chunks.forEach(function (chunk) { | ||
streamCleanser.write(chunk); | ||
}); | ||
streamCleanser.end(); | ||
}); | ||
// write log data to stream | ||
ctx.chunks.forEach(function (chunk) { | ||
sourcePipe.write(chunk) | ||
}) | ||
sourcePipe.end() | ||
} | ||
}); | ||
}) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
26
0
73135
3
294
59
1
+ Addedasync@^2.3.0
+ Addedacorn@3.3.05.7.4(transitive)
+ Addedacorn-jsx@3.0.1(transitive)
+ Addedajv@4.11.8(transitive)
+ Addedajv-keywords@1.5.1(transitive)
+ Addedansi-escapes@1.4.0(transitive)
+ Addedansi-regex@3.0.1(transitive)
+ Addedasync@2.6.4(transitive)
+ Addedbabel-code-frame@6.26.0(transitive)
+ Addedbossy@3.0.4(transitive)
+ Addedcall-bind@1.0.7(transitive)
+ Addedcaller-path@0.1.0(transitive)
+ Addedcallsites@0.2.0(transitive)
+ Addedcli-cursor@1.0.2(transitive)
+ Addedcli-width@2.2.1(transitive)
+ Addedco@4.6.0(transitive)
+ Addedcode-point-at@1.1.0(transitive)
+ Addeddefine-data-property@1.1.4(transitive)
+ Addeddiff@3.5.0(transitive)
+ Addeddoctrine@2.1.0(transitive)
+ Addedes-define-property@1.0.0(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedeslint@3.19.0(transitive)
+ Addedeslint-config-hapi@10.1.0(transitive)
+ Addedeslint-plugin-hapi@4.1.0(transitive)
+ Addedespree@3.4.3(transitive)
+ Addedesquery@1.5.0(transitive)
+ Addedesutils@2.0.3(transitive)
+ Addedexit-hook@1.1.1(transitive)
+ Addedfast-levenshtein@2.0.6(transitive)
+ Addedfile-entry-cache@2.0.0(transitive)
+ Addedfind-rc@3.0.1(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-intrinsic@1.2.4(transitive)
+ Addedglobals@9.18.0(transitive)
+ Addedgopd@1.0.1(transitive)
+ Addedhapi-for-you@1.0.0(transitive)
+ Addedhapi-no-var@1.0.1(transitive)
+ Addedhapi-scope-start@2.1.1(transitive)
+ Addedhas-property-descriptors@1.0.2(transitive)
+ Addedhas-proto@1.0.3(transitive)
+ Addedhas-symbols@1.0.3(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhoek@4.3.1(transitive)
+ Addedignore@3.3.10(transitive)
+ Addedimurmurhash@0.1.4(transitive)
+ Addedinquirer@0.12.0(transitive)
+ Addedinterpret@1.4.0(transitive)
+ Addedis-core-module@2.14.0(transitive)
+ Addedis-fullwidth-code-point@1.0.02.0.0(transitive)
+ Addedisarray@2.0.5(transitive)
+ Addedisemail@2.2.1(transitive)
+ Addeditems@2.2.1(transitive)
+ Addedjoi@10.6.0(transitive)
+ Addedjs-tokens@3.0.2(transitive)
+ Addedjson-stable-stringify@1.1.1(transitive)
+ Addedjsonify@0.0.1(transitive)
+ Addedlab@13.1.0(transitive)
+ Addedlevn@0.3.0(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedmute-stream@0.0.5(transitive)
+ Addednatural-compare@1.4.0(transitive)
+ Addedno-arrowception@1.0.0(transitive)
+ Addednumber-is-nan@1.0.1(transitive)
+ Addedobject-keys@1.1.1(transitive)
+ Addedonetime@1.1.0(transitive)
+ Addedoptionator@0.8.3(transitive)
+ Addedos-homedir@1.0.2(transitive)
+ Addedpath-parse@1.0.7(transitive)
+ Addedpluralize@1.2.1(transitive)
+ Addedprogress@1.1.8(transitive)
+ Addedreadline2@1.0.1(transitive)
+ Addedrechoir@0.6.2(transitive)
+ Addedrequire-uncached@1.0.3(transitive)
+ Addedresolve@1.22.8(transitive)
+ Addedresolve-from@1.0.1(transitive)
+ Addedrestore-cursor@1.0.1(transitive)
+ Addedrx-lite@3.1.2(transitive)
+ Addedseedrandom@2.4.4(transitive)
+ Addedset-function-length@1.2.2(transitive)
+ Addedshelljs@0.7.8(transitive)
+ Addedslice-ansi@0.0.4(transitive)
+ Addedsource-map@0.5.7(transitive)
+ Addedsource-map-support@0.4.18(transitive)
+ Addedstring-width@1.0.22.1.1(transitive)
+ Addedstrip-ansi@4.0.0(transitive)
+ Addedstrip-bom@3.0.0(transitive)
+ Addedstrip-json-comments@2.0.1(transitive)
+ Addedsupports-preserve-symlinks-flag@1.0.0(transitive)
+ Addedtable@3.8.3(transitive)
+ Addedtopo@2.1.1(transitive)
+ Addeduser-home@2.0.0(transitive)
+ Addedword-wrap@1.2.5(transitive)
- Removedabbrev@1.1.1(transitive)
- Removedamdefine@1.0.1(transitive)
- Removedansi-regex@1.1.1(transitive)
- Removedbossy@1.0.3(transitive)
- Removedcli-width@1.1.1(transitive)
- Removeddiff@2.2.3(transitive)
- Removeddoctrine@0.6.40.7.2(transitive)
- Removedeslint@0.24.11.5.1(transitive)
- Removedeslint-config-hapi@2.0.1(transitive)
- Removedeslint-plugin-hapi@1.2.2(transitive)
- Removedespree@2.2.5(transitive)
- Removedestraverse-fb@1.3.2(transitive)
- Removedesutils@1.1.6(transitive)
- Removedexit@0.1.2(transitive)
- Removedfast-levenshtein@1.0.7(transitive)
- Removedfile-entry-cache@1.3.1(transitive)
- Removedget-stdin@3.0.2(transitive)
- Removedglob@4.5.35.0.15(transitive)
- Removedglobals@8.18.0(transitive)
- Removedhapi-scope-start@1.1.4(transitive)
- Removedhoek@2.16.3(transitive)
- Removedinquirer@0.8.50.9.0(transitive)
- Removedisarray@0.0.1(transitive)
- Removeditems@1.1.1(transitive)
- Removedjslint@0.9.8(transitive)
- Removedlab@5.18.1(transitive)
- Removedlevn@0.2.5(transitive)
- Removedlodash@3.10.1(transitive)
- Removedlodash._arraycopy@3.0.0(transitive)
- Removedlodash._arrayeach@3.0.0(transitive)
- Removedlodash._arraymap@3.0.0(transitive)
- Removedlodash._baseassign@3.2.0(transitive)
- Removedlodash._baseclone@3.3.0(transitive)
- Removedlodash._basecopy@3.0.1(transitive)
- Removedlodash._basedifference@3.0.3(transitive)
- Removedlodash._baseflatten@3.1.4(transitive)
- Removedlodash._basefor@3.0.3(transitive)
- Removedlodash._baseindexof@3.1.0(transitive)
- Removedlodash._bindcallback@3.0.1(transitive)
- Removedlodash._cacheindexof@3.0.2(transitive)
- Removedlodash._createassigner@3.1.1(transitive)
- Removedlodash._createcache@3.1.2(transitive)
- Removedlodash._getnative@3.9.1(transitive)
- Removedlodash._isiterateecall@3.0.9(transitive)
- Removedlodash._pickbyarray@3.0.2(transitive)
- Removedlodash._pickbycallback@3.0.0(transitive)
- Removedlodash.clonedeep@3.0.2(transitive)
- Removedlodash.isarguments@3.1.0(transitive)
- Removedlodash.isarray@3.0.4(transitive)
- Removedlodash.isplainobject@3.2.0(transitive)
- Removedlodash.istypedarray@3.0.6(transitive)
- Removedlodash.keys@3.1.2(transitive)
- Removedlodash.keysin@3.0.8(transitive)
- Removedlodash.merge@3.3.2(transitive)
- Removedlodash.omit@3.1.0(transitive)
- Removedlodash.restparam@3.6.1(transitive)
- Removedlodash.toplainobject@3.0.0(transitive)
- Removedminimatch@2.0.10(transitive)
- Removedmute-stream@0.0.4(transitive)
- Removedno-shadow-relaxed@1.0.1(transitive)
- Removednopt@3.0.6(transitive)
- Removedobject-assign@2.1.1(transitive)
- Removedoptionator@0.5.0(transitive)
- Removedreadable-stream@1.0.34(transitive)
- Removedreadline2@0.1.1(transitive)
- Removedrx@2.5.3(transitive)
- Removedrx-lite@2.5.2(transitive)
- Removedshelljs@0.3.0(transitive)
- Removedsource-map@0.1.32(transitive)
- Removedsource-map-support@0.3.3(transitive)
- Removedstring_decoder@0.10.31(transitive)
- Removedstrip-ansi@2.0.1(transitive)
- Removedstrip-json-comments@1.0.4(transitive)
- Removedto-double-quotes@1.0.2(transitive)
- Removedto-single-quotes@1.0.4(transitive)
- Removeduser-home@1.1.1(transitive)
- Removedwordwrap@0.0.3(transitive)
- Removedxml-escape@1.0.0(transitive)
Updatedlab@^13.0.2