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

cb-jsfix

v1.3.2

Published

A Lightweight Javascript Patches

Downloads

17

Readme

JSFix

v1.2.0

A Lightweight Javascript Patches.

This paches is works for both NodeJS and Browser. This patches is created to support the Stater project.

Helpers

Public Methods

Data Type

Data type helpers is a functions to validate the variable value type.

Example

var str = 'A String',
    int = 'A Number';

console.log(isString(str)); // true
console.log(isString(int)); // false

console.log(isNumber(str)); // false
console.log(isNumber(int)); // true

isDefined()

isUndefined()

Check does the function argument is defined.

isNull()

isNotNull()

Check does the variable value is null.

isString()

isNotString()

Check does the variable value is a string.

isNumber()

isNotNumber()

Check does the variable value is a number.

isFunction()

isNotFunction()

Check does the variable value is a function.

isArray()

isNotArray()

Check does the variable value is an array.

isObject()

isNotObject()

Check does the variable value is an object and not an array.

isBoolean()

isNotBoolean()

Check does the variable value is a boolean.

isDate()

isNotDate()

Check does the variable value is a date.

isURL()

isNotURL()

Check does the variable value is a URL.

isEmail()

isNotEmail()

Check does the variable value is a Email.

isArguments()

isNotArguments()

Check does the variable value is an function Arguments.

isError()

isNotError()

Check does the variable value is an error object.

isJSON()

isNotJSON()

Check does the variable value is a valid JSON object.

isJSONString()

isNotJSONString()

Check does the variable value is a valid JSON string.

isRegExp()

isNotRegExp()

Check does the variable value is a RegExp.

isEmpty()

isNotEmpty()

Check does the variable value is empty. Value can be Object, Array, and String.

Utilities

$dext()

Assign new prototypes to Javascript objects.

Example

$dext(Object, 'keys', function() { return Object.keys(this); }); // Assign prototype to Object.
$dest(String, 'keys', function() { return this.split(''); });    // Assign prototype to String.

console.log('String'.keys()); // ['S', 't', 'r', 'i', 'n', 'g']

$dget()

Define getter to Javascript objects.

Example

var x = { a: 1, b: 2 };

$dget(x, 'c', function() { return 'Value of c is: 3' });

console.log(x.c); // Value of c is: 3

$dset()

Define setter to Javascript objects.

Example

var x = { a: 1, b: 2 };

$dset(x, 'c', function(value) { this._values.c = (value * 2) });

x.c = 10;

console.log(x._values.c); // 20

Iterator

A simple Object and Array iterator that wait until the this.next() function is executed to proceed the next items.

Usage

forwait(object, handler).then(fn).break(fn);

Example

// Iterating object.
forwait({ a: 1, b: 2, c: 3}, function(key, value) {
  console.log(key, value);

  this.next();
});

// Iterating array.
forwait([1, 2, 3, 4], function(value, index) {
  console.log(value, index);

  if (value === 3) {
    // Stop iteration.
    this.break();
  else {
    // Next item.
    this.next();
  }
})
// Call function after iteration completed.
.then(function() {
  console.log('Iteration completed');
})
// Call function when iteration stopped.
.break(funtion() {
  console.log('Iteration stopped.');
});

Patches

Object Patches

Adding some methods to the Object.prototype.

Direct Iterator

obj.$each(), arr.$each(), str.$each(), and num.$each()

A direct object iterator, with reversed support for iterating array, number and string.

Usage

object.$each(handler, reversed);

Example

var obj = { a: 1, b: 2, c: 3},
    arr = [ 1, 2, 3 ],
    str = 'String',
    num = 10;

// Iterating object.
obj.$each(function(key, value) {
  console.log(key, value);
});

// Iterating array.
arr.$each(function(value, index) {
  console.log(value, index);
});

// Iterating string
str.$each(function(value, index) {
  console.log(value, index);
});

// Iterating number.
num.$each(function(value) {
  console.log(value);
});

// Reversed iterating array.
arr.$each, function(value, index) {
  console.log(value, index);
}, true);

Path Helpers

An array and object path helpers.

obj.$get() [browser: obj.$gets()]

Get an object and array value using path.

Usage

obj.$get(path, default);
  • path - Required String path (e.g: a.b.c)
  • default - Optional Default value when the path value is undefined.

Example

var obj = { 
  a: 1,
  b: 2, 
  c: {
    ca: 1,
    cb: {
      cba: 1,
      cbb: 2
    }
  }
}

var arr = [ 'a', 'b', { a: 1, b: 2 } ]

console.log(obj.$get('a.aa'));       // undefined
console.log(obj.$get('c.cb.cba'));   // 1
console.log(obj.$get('c.cc', 10));   // 10 since the value is undefined.

console.log(arr.$get('0.d'));        // undefined
console.log(arr.$get('2.a'));        // 1

obj.$set() [browser: obj.$sets()]

Set an object and array value using path.

Usage

obj.$set(path, value);
  • path - Required String path (e.g: a.b.c)
  • value - Required Value to set to.

Example

var obj = {},
    arr = [];

obj.$set('a.b.c', 100); // { a: { b: { c: 100 } } }
arr.$set('0.a.b', 100); // [ { a: { b: 100 } } ]

obj.$add() [browser: obj.$adds()]

Push an item into array in path.

Usage

obj.$add(path, value);
  • path - Required String path.
  • value - Required Value to set to.

Example

var obj = { a: { b: { c: [] } } };

obj.$add('a.b.c', 'item'); // { a: { b: { c: [ 'item' ] } } }

obj.$del() [browser: obj.$dels()]

Array and Object path remover.

Usage

obj.$del(path, length);
  • path - Required String path.
  • length - Optional The length of item to be removed. Only for array.

Example

var obj = { a: { b: { c: [1,2,3], d: 1 } } };

obj.$del('a.b.d');      // Remove property "d"
obj.$del('a.b.c.0', 2); // Remove 1 and 2 from c.

obj.$dir() [browser: obj.$dirs()]

Extract the paths from array or object.

Usage

obj.$dir(exclude_root);
  • exclude_root - Optional Does the root object or array is included.

Example

var obj = { a: { b: { c: 3, d: 4 } } };

obj.$dir(true);     // { 'a.b.c': { type: 'number', body: 3 }, 'a.b.d': { type: 'number', body: 4 }

obj.$diff() [browser: obj.$diffs()]

Compare two object (object to object, array to array).

Usage

obj.$diff(target);
  • target - Required Array or object to compare from.

Example

var a = { a: 1, b: 2 },
    b = { a: 2, b: 1, c: 3 };

a.$diff(b);
/*
{ a: { old: 1, new: 2 },
  b: { old: 2, new: 1 },
  c: { old: undefined, new: 3 } }
*/

b.$diff(a);
/*
{ a: { old: 2, new: 1 },
  b: { old: 1, new: 2 },
  c: { old: 3, new: undefined } }
*/

obj.$join()

Recursively merge two objects or arrays (object to object, array to array).

Usage

obj.$join(target, ignore);
  • target - Required Array or object to merge with.
  • ignore - Optional* Array contains paths to ignore.

Example

var a = { a: 1, b: 2 },
    b = { b: 1, c: 3 };

a.$join(b); { a: 1, b: 1, c: 3 }

obj.$sort() [browser: obj.$sorts()]

Recursively sort object or array.

Usage

obj.$sorts(handler);
  • handler - Optional* - Function to handler the sorting.

Example

var obj = { d: 4, b: 2, c: 3, a: 1 };

obj.$sort(); // { a: 1, b: 2, c: 3, d: 4 };

obj.$keys()

Direct Object.keys()

Example

var obj = { a: 1, b: 2 };

obj.$keys(); // [ 'a', 'b' ]

obj.$group() [browser: obj.$groups()]

Group an array items with specific column per row.

Usage

obj.$group(column, mode);
  • column - Required The number of columns per row.
  • mode - Optional The grouping mode (split or chunk). Default is chunk.

Example

var arr = [ 1, 2, 3, 4, 5, 6, 7, 8 ];

arr.$group(3);          // [ [ 1, 4, 7 ], [ 2, 5, 8 ], [ 3, 6 ] ]
arr.$group(3, 'split'); // [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ]

obj.$extend()

Extend the already defined object and array prototypes.

Usage

obj.$extend(name, handler);
  • name - String prototype name, or object contains key as name and value as handler.
  • handler - Function to handle the prototype call.

Example

var x = { a: 1, b: 2 }

x.$extend('keys', function() { return Object.keys(this); });

console.log(x.keys()); // ['a', 'b']

Number.random()

Generate random number.

Example

Number.random(0, 10);
Number.random(4, 10);

Changelog

v1.3.2 - May 11, 2016

  • Prevent reinitializing patches if already initialized.

v1.3.1 - Apr 23, 2016

  • Fixing error when using readable-stream

v1.3.0 - Mar 17, 2016

  • Object methods changes: $gets, $sets, $adds, $dels, $diffs, $sorts, and $groups only for browser. NodeJS users will use .$get(), .$set(), and so on.
  • Changed .$ext() to .$extend()
  • Changed .$dif() to .$diff()

v1.2.1 - Feb 20, 2016

  • Fixing wrong dependency.

v1.2.0 - Feb 17, 2016

  • Changed $get to $gets due to conflict with angular.
  • Chagned $set to $sets due to conflict with angular.
  • Changed $add to $adds due to conflict with angular.
  • Changed $del to $dels due to conflict with angular.
  • Changed $dirs to $dirs due to conflict with angular.
  • Changed $dif to $difs due to conflict with angular.
  • Changed $sort to $sorts due to conflict with angular.
  • Changed $group to $groups due to conflict with angular.