Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pricemi115/grumptech-fs-hasher
nodeJS module for hashing file system items (files & directories)
https://github.com/pricemi115/grumptech-fs-hasher
Last synced: 30 days ago
JSON representation
nodeJS module for hashing file system items (files & directories)
- Host: GitHub
- URL: https://github.com/pricemi115/grumptech-fs-hasher
- Owner: pricemi115
- License: isc
- Created: 2020-05-05T20:44:17.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-03-15T09:59:58.000Z (almost 2 years ago)
- Last Synced: 2024-11-14T00:42:57.918Z (3 months ago)
- Language: HTML
- Size: 1.72 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# GrumpTech-FS-Hasher
A JavaScript node module for for producing message digests of files and directories. The message digest of a directory is computed as the hash of the message digests of all of the contents of the directory.
## Change Log
The change history can be viewed [here](./CHANGELOG.md)## Security Policy
Please refer to our [security policy](./SECURITY.md) for information on which versions are receiving security updates and how to report security vulnerabilities.## Installation
> npm install grumptech-fs-hasher## Basic Usage
Loading the module in NodeJS
>const fsHasher = require('grumptech-fs-hasher');Testing the module in NodeJS
*Example usage is shown in the file: ./test/testscript.js*
>npm run test-relThe module exports two objects:
1. **HASH_ALGORITHMS**: An enumeration of supported hashing algorithm.
2. **FSHasher**: Object to perform the hashing and reporting.#### FSHasher API
The FSHasher object provides the interface below> **Version**:
Read-only property for the version of the hasher module.
@return {string}> **IsBusy**:
Read-only property indicating that the object is busy performing an operation.
@return {boolean}> **Algorithm**:
Read-only property of the current hashing algorithm. Default: '_sha256_'
@return {string}> **Source**:
Read-only property for the source(s) to perform the hashing.
@return {string | string[]}:> **Build**:
Constructs a hierarchy of files and directories to be hashed.
@parm {string | string[]} [source]
@return {Promise(boolean)} - A promise that when resolved will indicate if the file system heirarchy was built or not. true if built. false otherwise.> **Compute**:
Generate a message digest of the source (and all child items).
@param {string} - A string representing the hashing algorithm to use. HASH_ALGORITHMS is an enum of common algorithms.
@return {Promise(string)} - A promise that when resolved will provide a string representing the overall hash of the root source. If the hierarchy has not been built or the root source is busy, the promise will resolve to and empty string> **Report**:
Build a report of the file system hierarchy with the results of the hashing.
@return {Promise(string)} - A promise that when resolved will provide a string containing a CSV delimited report. If the hierarchy has not been built or the root source is busy, the promise will resolve to an empty string.
CSV Format:
Field #1: Type - '(D)'-Directory, '(F)'-File, '(B)'-Batch
Field #2: Source - Path of the File System object. Will be prepended with spaces corresponding to the depth of the result item.
Field #3: Digest - Message digest of the item. If it has not been computed, it will default to undefined.> **FindDuplicates**:
Finds duplicate file system objects.
@return {Promise(Map{key:digest, value:source[]))} - A promise that when resolved will provide a map/dictionary. The key of the dictionary will be "common" message digest and the value will be an array of strings containing the sources sharing the digest. Unique items will _not_ be specified in the result.## License
Refer to [LICENSE.md](./LICENSE.md) for information regarding licensincg of this source code.