What is jsprim?
The jsprim package provides utilities for working with primitive JavaScript types. It includes functions for deep copying, testing object types, parsing JSON safely, and more. It's designed to offer a collection of utilities that are commonly needed but not provided by the JavaScript standard library.
What are jsprim's main functionalities?
Deep copying objects
This feature allows you to create a deep copy of an object, ensuring that nested objects are also copied rather than just copying the reference.
var jsprim = require('jsprim');
var obj = { a: 1, b: { c: 2 } };
var copy = jsprim.deepCopy(obj);
Checking if a value is an object
This utility helps in determining whether a given value is an object, which can be particularly useful for validation and type checking.
var jsprim = require('jsprim');
var result = jsprim.isObject({}); // true
result = jsprim.isObject(123); // false
Parsing JSON safely
Safely parse a JSON string, catching any errors that occur during parsing and returning `null` instead of throwing an exception.
var jsprim = require('jsprim');
var str = '{ "key": "value" }';
var obj = jsprim.parseJSON(str);
Other packages similar to jsprim
lodash
Lodash is a comprehensive utility library offering a wide range of functions for tasks such as deep copying, type checking, and more. It's more extensive than jsprim but can be bulkier due to its size and scope.
underscore
Underscore is another utility library similar to lodash but with a smaller footprint. It provides many of the same functionalities as jsprim, such as object manipulation and type checking, but it doesn't include JSON parsing utilities.
jsprim: utilities for primitive JavaScript types
This module provides miscellaneous facilities for working with strings,
numbers, dates, and objects and arrays of these basic types.
deepCopy(obj)
Creates a deep copy of a primitive type, object, or array of primitive types.
isEmpty(obj)
Returns true if the given object has no properties and false otherwise. This
is O(1) (unlike Object.keys(obj).length === 0
, which is O(N)).
forEachKey(obj, callback)
Like Array.forEach, but iterates properties of an object rather than elements
of an array. Equivalent to:
for (var key in obj)
callback(key, obj[key]);
randElt(array)
Returns an element from "array" selected uniformly at random. If "array" is
empty, throws an Error.
startsWith(str, prefix)
Returns true if the given string starts with the given prefix and false
otherwise.
endsWith(str, suffix)
Returns true if the given string ends with the given suffix and false
otherwise.
iso8601(date)
Converts a Date object to an ISO8601 date string of the form
"YYYY-MM-DDTHH:MM:SS.sssZ". This format is not customizable.
validateJsonObject(schema, object)
Uses JSON validation (via JSV) to validate the given object against the given
schema. On success, returns null. On failure, returns (does not throw) a
useful Error object.