implementation is ready

This commit is contained in:
2016-08-16 03:37:40 +02:00
parent 17ccc27244
commit e2b90b7d30
18 changed files with 290 additions and 7 deletions

View File

@ -1 +1,3 @@
import * as plugins from "./nodehash.plugins";
export * from "./nodehash.sha256";

15
ts/nodehash.helpers.ts Normal file
View File

@ -0,0 +1,15 @@
import * as plugins from "./nodehash.plugins";
export let hashStreamPipeStop = (resolveFuntion) => {
let forEach = (chunk:Buffer,enc,cb) => {
resolveFuntion(chunk.toString("utf8"));
cb(null,chunk);
};
let atEnd = (cb) => {
cb();
};
return plugins.through2(forEach,atEnd);
};

View File

@ -1,2 +1,7 @@
import "typings-global";
export import crypto = require("crypto");
export import crypto = require("crypto");
export import fs = require("fs");
export import path = require("path");
export import q = require("q");
export import stream = require("stream");
export import through2 = require("through2");

51
ts/nodehash.sha256.ts Normal file
View File

@ -0,0 +1,51 @@
import * as plugins from "./nodehash.plugins";
import * as helpers from "./nodehash.helpers";
/**
* creates sha256 Hash from Stream
*/
export let sha256FromStream = (input) => {
let done = plugins.q.defer();
let hash = plugins.crypto.createHash('sha256');
hash["setEncoding"]("hex");
input
.pipe(hash)
.pipe(helpers.hashStreamPipeStop(done.resolve));
return done.promise;
};
/**
* creates sha256 Hash from File;
*/
export let sha256FromFile = (filePath:string) => {
let done = plugins.q.defer();
let absolutePath = plugins.path.resolve(filePath);
let readableStream = plugins.fs.createReadStream(absolutePath);
sha256FromStream(readableStream)
.then((resultHashString) => {
done.resolve(resultHashString);
});
return done.promise;
}
/**
* Computes sha256 Hash from String synchronously
*/
export let sha256FromStringSync = (stringArg) => {
let hash = plugins.crypto.createHash('sha256');
hash.update(stringArg);
return hash.digest("hex");
};
/**
* Computes sha256 Hash from String
*/
export let sha256FromString = (stringArg) => {
let done = plugins.q.defer();
let hash = plugins.crypto.createHash('sha256');
hash.update(stringArg);
let hashResult = hash.digest("hex");
done.resolve(hashResult);
return done.promise;
};