[Pkg-javascript-commits] [node-has-binary] 01/02: Imported Upstream version 0.1.6

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sun Mar 29 22:02:44 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository node-has-binary.

commit 4500a29f82b5d5a860b695c1c975bedecaaf16b1
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sun Mar 29 22:41:48 2015 +0200

    Imported Upstream version 0.1.6
---
 .npmignore        |  15 ++++++++
 History.md        |  11 ++++++
 LICENSE           |  20 ++++++++++
 Makefile          |   3 ++
 README.md         |   4 ++
 fixtures/big.json |   1 +
 index.js          |  58 +++++++++++++++++++++++++++++
 package.json      |  14 +++++++
 test.js           | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 234 insertions(+)

diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..a72b52e
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,15 @@
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+
+pids
+logs
+results
+
+npm-debug.log
+node_modules
diff --git a/History.md b/History.md
new file mode 100644
index 0000000..a1e3867
--- /dev/null
+++ b/History.md
@@ -0,0 +1,11 @@
+
+0.1.6 / 2015-01-24
+==================
+
+ * fix "undefined function" bug when iterating
+   an object created with Object.create(null) [gunta]
+
+0.1.5 / 2014-09-04
+==================
+
+ * prevent browserify from bundling `Buffer`
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..e6603cd
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Kevin Roark
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1d90629
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,3 @@
+
+test:
+	@./node_modules/.bin/mocha test.js
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..76a0035
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+has-binarydata.js
+=================
+
+Simple module to test if an object contains binary data
diff --git a/fixtures/big.json b/fixtures/big.json
new file mode 100644
index 0000000..3172879
--- /dev/null
+++ b/fixtures/big.json
@@ -0,0 +1 @@
+{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{" [...]
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..7684d23
--- /dev/null
+++ b/index.js
@@ -0,0 +1,58 @@
+
+/*
+ * Module requirements.
+ */
+
+var isArray = require('isarray');
+
+/**
+ * Module exports.
+ */
+
+module.exports = hasBinary;
+
+/**
+ * Checks for binary data.
+ *
+ * Right now only Buffer and ArrayBuffer are supported..
+ *
+ * @param {Object} anything
+ * @api public
+ */
+
+function hasBinary(data) {
+
+  function _hasBinary(obj) {
+    if (!obj) return false;
+
+    if ( (global.Buffer && global.Buffer.isBuffer(obj)) ||
+         (global.ArrayBuffer && obj instanceof ArrayBuffer) ||
+         (global.Blob && obj instanceof Blob) ||
+         (global.File && obj instanceof File)
+        ) {
+      return true;
+    }
+
+    if (isArray(obj)) {
+      for (var i = 0; i < obj.length; i++) {
+          if (_hasBinary(obj[i])) {
+              return true;
+          }
+      }
+    } else if (obj && 'object' == typeof obj) {
+      if (obj.toJSON) {
+        obj = obj.toJSON();
+      }
+
+      for (var key in obj) {
+        if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) {
+          return true;
+        }
+      }
+    }
+
+    return false;
+  }
+
+  return _hasBinary(data);
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..111c225
--- /dev/null
+++ b/package.json
@@ -0,0 +1,14 @@
+{
+  "name": "has-binary",
+  "version": "0.1.6",
+  "description": "A function that takes anything in javascript and returns true if its argument contains binary data.",
+  "dependencies": {
+    "isarray": "0.0.1"
+  },
+  "devDependencies": {
+    "better-assert": "1.0.0",
+    "mocha": "1.17.1"
+  },
+  "author": "Kevin Roark",
+  "license": "MIT"
+}
diff --git a/test.js b/test.js
new file mode 100644
index 0000000..5320d4f
--- /dev/null
+++ b/test.js
@@ -0,0 +1,108 @@
+
+var hasBinary = require('./');
+var assert = require('better-assert');
+var fs = require('fs');
+
+var start = new Date();
+
+describe('has-binarydata', function(){
+
+  it('should work with buffer', function(){
+    assert(hasBinary(fs.readFileSync('./test.js')));
+  });
+
+  it('should work with an array that does not contain binary', function() {
+    var arr = [1, 'cool', 2];
+    assert(!hasBinary(arr));
+  });
+
+  it('should work with an array that contains a buffer', function() {
+    var arr = [1, new Buffer('asdfasdf', 'utf8'), 2];
+    assert(hasBinary(arr));
+  });
+
+  it('should work with an object that does not contain binary', function() {
+    var ob = {a: 'a', b: [], c: 1234};
+    assert(!hasBinary(ob));
+  });
+
+  it('should work with an object that contains a buffer', function() {
+    var ob = {a: 'a', b: new Buffer('abc'), c: 1234};
+    assert(hasBinary(ob));
+  });
+
+  it('should work with null', function() {
+    assert(!hasBinary(null));
+  });
+
+  it('should work with undefined', function() {
+    assert(!hasBinary(undefined));
+  });
+
+  it('should work with a complex object that contains undefined and no binary', function() {
+    var ob = {
+      x: ['a', 'b', 123],
+      y: undefined,
+      z: {a: 'x', b: 'y', c: 3, d: null},
+      w: []
+    };
+    assert(!hasBinary(ob));
+  });
+
+  it('should work with a complex object that contains undefined and binary', function() {
+    var ob = {
+      x: ['a', 'b', 123],
+      y: undefined,
+      z: {a: 'x', b: 'y', c: 3, d: null},
+      w: [],
+      bin: new Buffer('xxx')
+    };
+    assert(hasBinary(ob));
+  });
+
+  it('should handle a very large json object with no binary', function(done) {
+    this.timeout();
+    fs.readFile(__dirname + '/fixtures/big.json', function(err, data) {
+      if (err) {
+        console.log(err);
+        assert(false);
+      }
+      data = JSON.parse(data);
+      assert(!hasBinary(data));
+      done();
+    });
+  });
+
+  it('should handle a very large json object with binary', function(done) {
+    this.timeout();
+    fs.readFile(__dirname + '/fixtures/big.json', function(err, data) {
+      if (err) {
+        console.log(err);
+        assert(false);
+      }
+      var ob = JSON.parse(data);
+      ob.bin = {bin: {bin: {bin: new Buffer('abc')}}};
+      assert(hasBinary(ob));
+      done();
+    });
+  });
+
+  if (global.ArrayBuffer) {
+      it('should work with an ArrayBuffer', function() {
+        assert(hasBinary(new ArrayBuffer()));
+      });
+  }
+
+  if (global.Blob) {
+     it('should work with a Blob', function() {
+        assert(hasBinary(new Blob()));
+     });
+  }
+
+  it('should print the test time', function() {
+    var end = new Date();
+    var diff = end - start;
+    console.log('\ntest time: ' + diff + ' ms');
+  });
+
+});

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-has-binary.git



More information about the Pkg-javascript-commits mailing list