Socket
Socket
Sign inDemoInstall

docker-stream-cleanser

Package Overview
Dependencies
177
Maintainers
2
Versions
23
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.0 to 1.0.0

.idea/watcherTasks.xml

11

package.json
{
"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

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