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

eid.js

v1.0.2

Published

EID Runtime Exceptions and Utilities for JS

Downloads

7

Readme

EID Runtime Exceptions and Utilities for Javascript

Build Status Coverage Status npm Bower

This small library holds a set of exceptions and utilities that implements idea of fast, reusable, error codes that can be simply thrown fast in case of unpredictable and unrecoverable application failure. It is meant to be used for application bugs.

Idea

The idea is to use a set of simple runtime exceptions. They should always take the Exception ID (Eid) object in the making. This eid object will then be reported when displaying or logging that exception. It can also be viewed on the professional fatal error window of the application as a bug reference. EidRuntimeExceptions contains also additional unique ID to distinguish each single exception from others with same Eid. This approach simplifies the management of exceptions in the application and allows developers to focus on functionalities rather than coming up with the correct statement for the exception.

This approach is best to use with tools and plugins like:

Example:

var cause = 'A extra message';
throw new EidIllegalStateException("20150721:100554", cause);

Example log:

ERROR 2016-01-11T22:48:42.445 EidIllegalStateException: [20150721:100554]<rww5y3> A extra message - Error
    at http://localhost:3000/browser/toplevel/eid.min.js:1:3959
    at Object.i.3.../eid (http://localhost:3000/browser/toplevel/eid.min.js:1:4211)
    at r (http://localhost:3000/browser/toplevel/eid.min.js:1:254)
    at http://localhost:3000/browser/toplevel/eid.min.js:1:305
    at http://localhost:3000/browser/toplevel/eid.min.js:1:536
    at Object.i.1.../../lib/eid (http://localhost:3000/browser/toplevel/eid.min.js:1:974)
    at r (http://localhost:3000/browser/toplevel/eid.min.js:1:254)
    at t (http://localhost:3000/browser/toplevel/eid.min.js:1:421)
    at http://localhost:3000/browser/toplevel/eid.min.js:1:438

Caution

This classes shouldn't be used in any public API or library. It is designed to be used for in-house development of end user applications which will report bugs in standardized error pages or post them to issue tracker.

NPM

npm install eid.js --save

Bower

bower install eid.js --save

EidPreconditions class

General use

EidPreconditions class consists static methods that help to use Eid in a method or constructor. This is solely for convenience purposes. Use them to check whether method or constructor was invoked correctly (whether its preconditions have been met). These methods generally accept a boolean expression which is expected to be true (or in the case of checkNotNull, an object reference which is expected to be non-null). When false (or null) is passed instead, the EidPreconditions method throws an unchecked exception, which helps the calling method communicate to its caller that that caller has made a mistake.

Each method accepts a EID string or Eid object, which is designed to ease of use and provide strict ID for given exception usage. This approach speed up development of large application and helps support teams by giving both static and random ID for each possible bug that could occur.

Each example uses static import:

// nodejs
var EidPreconditions = require('eid.js').preconditions;

// browser using bower using toplevel version
var EidPreconditions = window.Eid.preconditions;

checkArgument method

checkArgument method should be used to check argument of the method, and validate it in technical terms (not business terms).

Example:

// [..]
function sqrt(value) {
  checkArgument(value >= 0.0, "20150718:012333");
  // if ok, calculate the square root
}

In this example, checkArgument throws an EidIllegalArgumentException to indicate that developer made an error in its call to sqrt.

checkState method

checkState method should be used to check state of the class in given moment, and validate it in technical terms (not business terms).

Example:

checkState(a >= 3.14 && b < 0., "20150721:115016");

checkNotNull method

checkNotNull method should be used to check if given non null argument is actually null

Example:

var nonNullUserName = checkNotNull(userName, "20150721:115515");

checkElementIndex method

checkElementIndex method can be used to test parameters of an array, before being used

checkElementIndex(index, list.length, "20150721:115749");

Formatted message support

There have been added additional message to method descriptors for checkArgument, checkState, checkNotNull and checkElementIndex method. Those method's parameter can sometimes be used to pass additional information to exceptions that will be displayed in log files.

For example:

checkState(transation.isValid(), "20151119:120238", "Invalid transaction: " + transaction);

Will produce output similar to;

EidIllegalStateException: [20151119:120238]<xf4j1l> => Invalid transaction: <Transaction id=null, buyer=null, products=[]>

Functional try to execute blocks

You can use functional blocks to handle operations, that are intended to operate properly. This approach simplify the code and makes it more readable. It's also good way to deal with untested, uncovered catch blocks. It's easy and gives developers nice way of dealing with countless operations that suppose to work as intended.

Example:

var content = EidPreconditions.tryToExecute(function() {
  var fs = require('fs');
  return fs.readFileSync('project.properties');
}, "20150718:121521");

Logging

Eid object can also be useful in logging. That are makeLogMessage method provided to do that. Message formatting is done using equivalent of Java's String.format(String, Object[]) method. For example:

log.debug(new Eid("20151119:121814").makeLogMessage("REST request received: %s", request));

will unfold to something similar to:

2017-01-08T16:45:34,334 DEBUG [20151119:121814]<d1afca> REST request received: <RestRequest user=<User id=345> flow=ShowLastTransactions step=Confirm>

###Contributing

Contributions are welcome!

To contribute, follow the standard git flow of:

  1. Fork it
  2. Create your feature branch (git checkout -b feature/my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin feature/my-new-feature)
  5. Create new Pull Request

Even if you can't contribute code, if you have an idea for an improvement please open an issue.

Requirements

  • NodeJS >= 0.10
  • Any modern browser, supported by browserify.

Releases

  • 1.0.0
    • initial release
    • library ported from Java version