npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

Blackfeather

v2.0.1

Published

Blackfeather JavaScript framework for node.js, and, browsers.

Downloads

2

Readme

Blackfeather in JavaScript / Node

Installing

Browser

  <script src="blackfeather-2.0.0.min.js"></script>

You can also convert the main node js module into your own module with browserify at any time.

    npm install -g browserify
    browserify blackfeather-2.0.0.js -o blackfeather.2.0.0.min.js

Node.js

https://www.npmjs.com/package/Blackfeather

  npm install Blackfeather --save

Nuget

https://www.nuget.org/packages/blackfeatherjs

  Install-Package blackfeatherjs

Source

  git clone https://github.com/TimothyMeadows/blackfeatherjs

Blackfeather.Data.ManagedMemory

Ths is a helper class for storing data in memory in JavaScript. It supports serialization between languages allowing you to import, and, export serializable types.

ManagedMemorySpace

Model that data in memory is read, and, written too.

  Blackfeather.Data.ManagedMemorySpace = function (pointer, name, value, created, accessed, updated) {
    this.Created = created; // unix time
    this.Accessed = accessed; // unix time
    this.Updated = updated; // unix time
    this.Pointer = pointer; // string
    this.Name = name; // string
    this.Value = value; // any
  };

Read(ponter:string, name:string):ManagedMemorySpace

Read entry from memory that matches the pointer, and, name.

  var memory = new Blackfeather.Data.ManagedMemory();
  var caw = memory.Read("birds", "raven");
  console.log(caw);

ReadAll(ponter:string):[ManagedMemorySpace]

Read all entries from memory that matches the pointer.

  var memory = new Blackfeather.Data.ManagedMemory();
  var birds = memory.ReadAll("birds");
  console.log(birds);

Write(ponter:string, name:string, value:any):void

Write entry into memory. Remove any previous entry that matches the pointer, and, name.

  var memory = new Blackfeather.Data.ManagedMemory();
  memory.Write("birds", "raven", "caw");

WriteAll(spaces:[ManagedMemorySpace]):void

Write all entres into memory. Remove any previous entries that matches the pointer, and, name.

  var memory = new Blackfeather.Data.ManagedMemory();
  var spaces = [new Blackfeather.Data.ManagedMemorySpace("birds", "raven", "caw", 0, 0, 0)];
  
  memory.WriteAll(spaces);

Delete(ponter:string, name:string):void

Remove any entry from memory that matches the pointer, and, name.

  var memory = new Blackfeather.Data.ManagedMemory();
  memory.Delete("birds", "raven");

DeleteAll(ponter:string):void

Remove all entries from memory that matches the pointer.

  var memory = new Blackfeather.Data.ManagedMemory();
  memory.DeleteAll("birds");

Import(memory:ManagedMemory):void

Load ManagedMemory class as current MangedMemory class.

  var memory = new Blackfeather.Data.ManagedMemory();
  var memory2 = new Blackfeather.Data.ManagedMemory();
  memory.Import(memory2);

Export():ManagedMemory

Return current ManagedMemory class.

  var memory = new Blackfeather.Data.ManagedMemory();
  var memory2 = memory.Export();

Clear():void

Remove all entries from memory. Leaves memory still usable.

  var memory = new Blackfeather.Data.ManagedMemory();
  memory.Clear();

Dispose():void

Remove all entries from memory. Leaves memory unusable until reconstructed.

  var memory = new Blackfeather.Data.ManagedMemory();
  memory.Dispose();

Blackfeather.Data.Compression

This is a collection of usable compression libraries in JavaScript. Right now only LZStrng is supported.

LZString

Compress(data:string):string

  var compressed = Blackfeather.Data.Compression.LZString.Compress("caw caw caw!");
  console.log(compressed);

Decompress(data:string):string

  var decompressed = Blackfeather.Data.Compression.LZString.Decompress(
    Blackfeather.Data.Compression.LZString.Compress("caw caw caw!")
  );
  console.log(compressed);

Blackfeather.Data.Encoding

extEncoding

  Latin1
  Utf8
  Utf16
  Utf16BigEndian
  Utf16LittleEndian

BinaryEncoding

  Hex
  Base64

Blackfeather.Security.Cryptology

  Blackfeather.Security.Cryptology.SaltedData = function () {
    this.Data = null;
    this.Salt = null;
  }

Blackfeather.Security.Cryptology.SecureRandom

NextBytes(length:number):string

Returns random bytes to the specified length.

  var rng = new Blackfeather.Security.Cryptology.SecureRandom().NextBytes(16);
  console.log(rng);

NextBigInt(length:number):string

Returns random bytes to the specified length.

  var rng = new Blackfeather.Security.Cryptology.SecureRandom().NextBigInt(2048);
  console.log(rng);

Next(min:number, max:number):number

Returns random bytes to the specified length.

  var rng = new Blackfeather.Security.Cryptology.SecureRandom().Next(32, 134);
  console.log(rng);

Blackfeather.Security.Cryptology.Kdf

Compute(data:string, salt:Base64, length:number):SaltedData

Compute PBKDF2 returning SaltedData.

  var kdf = new Blackfeather.Security.Cryptology.Kdf().Compute(
    "caw caw caw!",
    "tNfyIx2PZjf6C+KC9N7Ydg==",
    32
  );
  console.log(kdf);

Blackfeather.Security.Cryptology.Hash

ComputeSalted(data:string, salt:Base64):SaltedData

Compute SHA256 wth PBKDF2 returning SaltedData.

  var hash = new Blackfeather.Security.Cryptology.Hash().Compute(
    "caw caw caw!",
    "tNfyIx2PZjf6C+KC9N7Ydg=="
  );
  console.log(hash);

Blackfeather.Security.Cryptology.Hmac

ComputeSalted(data:string, key:string, salt:Base64):SaltedData

Compute HMAC-SHA256 wth PBKDF2 returning SaltedData.

  var hmac = new Blackfeather.Security.Cryptology.Hmac().Compute(
    "caw caw caw!",
    "water123",
    "tNfyIx2PZjf6C+KC9N7Ydg=="
  );
  console.log(hmac);

Blackfeather.Security.Cryptology.EncryptionInMotion

Compute(data:string, password:string, salt:Base64, secondaryVerifier:string):SaltedData

Compute authentcated AES-CTR wth HMAC-SHA256, and, PBKDF2.

  var cipher = new Blackfeather.Security.Cryptology.EncryptionInMotion().Compute(
    "caw caw caw!",
    "water123",
    "tNfyIx2PZjf6C+KC9N7Ydg==",
    "321retaw"
  );
  console.log(cipher);

Blackfeather.Security.Cryptology.DecryptionInMotion

Compute(data:string, password:string, salt:Base64, secondaryVerifier:string):string

Compute authentcated AES-CTR wth HMAC-SHA256, and, PBKDF2.

  var plain = new Blackfeather.Security.Cryptology.DecryptionInMotion().Compute(
    "cJHuTYcAV5j798aJuSwPtLcemE86qhXOPDfRWQffIzwVUqctciDLIZNFspmBB3ym7hwVvydcsJeqtE/HmiLwiJCbu6Pwq/V5NZopupTq00BO34PMeQ+DcOkZvKrA/mLlxB0uZO3clclmMXj9+hfLtKKdNnGJTYHWg4dJEg==",
    "water123",
    "tNfyIx2PZjf6C+KC9N7Ydg==",
    "321retaw"
  );
  console.log(plain);

Blackfeather.Security.Cryptology.EncryptionAtRest

Compute(data:string, password:string, salt:Base64, secondaryVerifier:string):SaltedData

Compute authentcated AES-CTR wth HMAC-SHA256, and, PBKDF2.

  var cipher = new Blackfeather.Security.Cryptology.EncryptionAtRest().Compute(
    "caw caw caw!",
    "water123",
    "tNfyIx2PZjf6C+KC9N7Ydg==",
    "321retaw"
  );
  console.log(cipher);

Blackfeather.Security.Cryptology.DecryptionAtRest

Compute(data:string, password:string, salt:Base64, secondaryVerifier:string):string

Compute authentcated AES-CTR wth HMAC-SHA256, and, PBKDF2.

  var plain = new Blackfeather.Security.Cryptology.DecryptionAtRest().Compute(
    "1SYn3HBRIDCYaMPSoJAsMc8iwOwjb7JRjq+wyhjEB+Xvo0rbVWTgqgPk/cBKZqv0Bk+ioUzly29hdZmCtfQzi/CfiUK6fAl7pnE5HyGO1AcUHi9wxXxlkiC/FQGKpt81LNQVHu+vmW4oFIProNrbqv9UzGW9eLfOC6UqCANEIDs=",
    "water123",
    "tNfyIx2PZjf6C+KC9N7Ydg==",
    "321retaw"
  );
  console.log(plain);

Blackfeather.Security.Cryptology.KeyExchange

ar client = new Blackfeather.Security.Cryptology.KeyExchange().Mix();
var serverPublic = "10072451067358128667370122172133565286426273520457081541202696009092543305211841094697906349575345674115923241301922156530480175764026481816770507437923200637573363088905607034558695241173246307009995878117784478243313131685968854799300800700691656662848606744118040971840314947233291339212661690749394423715891911134762717021019928988569780826551116299625361903924016859140944701252642684457210980390047869449067290007099386872773076553494951935303123004213090275240758545751867197472450416424811618764768165224643793362948959692975844359439266365789906954808980720889327586602558296556297716800168958101769299242493";

var KeyPair = new Blackfeather.Security.Cryptology.KeyExchange().KeyPair;
var clientHandshake = new KeyPair(client.Private, serverPublic);
var clientSecret = new Blackfeather.Security.Cryptology.KeyExchange().Remix(clientHandshake);
console.log(client);
console.log(clientSecret);