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

node-javascript-utils

v1.0.0

Published

The NodeJavaScriptUtils module is a collection of functions for manipulating strings.

Downloads

1

Readme

NodeJavaScript

The NodeJavaScriptUtils module is a collection of functions for manipulating strings, arrays, dates, colors, objects, errors, maths in TypeScript and JavaScript.

Installation

To use NodeJavaScriptUtils in your TypeScript or JavaScript project, you can install it from npm:

npm i node-javascript-utils@latest

Usage (Strings)

Import the NodeJavaScriptUtils module into your TypeScript or JavaScript code and use its functions as needed:

import { StringUtils } from "node-javascript-utils";

const myString = "   Hello, world!   ";

const trimmedString = StringUtils.trim(myString);
// trimmedString === 'Hello, world!'

const replacedString = StringUtils.replace(myString, ["o", "e"], "a");
// replacedString === '   Hella, werld!   '

const paddedString = StringUtils.pad(myString, [20, "-"]);
// paddedString === '   Hello, world!   --'

Usage (Arrays)

const { ArrayUtils, SortDirection } = require("node-javascript-utils");

const people = [
  { name: "Alice", age: 30 },
  { name: "Bob", age: 25 },
  { name: "Charlie", age: 35 },
];

const arrayUtils = new ArrayUtils(people);

// Sort the array by age in descending order
arrayUtils.sortBy("age", SortDirection.Descending);

// Filter the array to only include people older than 30
const filteredArray = arrayUtils.filter((person) => person.age > 30);

// Map the array to an array of strings that only contain the person's name
const mappedArray = arrayUtils.map((person) => person.name);

Usage (CustomError)

const { CustomError } = require("node-javascript-utils");

class AnError extends CustomError() {
  constructor(...message) {
    // I'm using spread operator, you can also deny it.
    super(message.join(" "));
    this.name = "AnError"; // Error Name
  }
}

throw new AnError("Just", "A", "Random", "Error");

Usage (DateUtils)

const {
  DateUtils,
  DateUnits,
  DateUnitValue,
  DateFormat,
} = require("node-javascript-utils");

// Add 2 weeks to a date
const originalDate = new Date("2023-03-26");
const twoWeeksLater = DateUtils.add(originalDate, DateUnits.WEEK, 2);
console.log(`Two weeks later: ${twoWeeksLater}`);

// Get the difference in months between two dates
const date1 = new Date("2023-01-01");
const date2 = new Date("2023-03-01");
const monthsDiff = DateUtils.difference(date1, date2, DateUnits.MONTH);
console.log(`Months difference: ${monthsDiff}`);

// Parse a date string and format it
const dateString = "2023-03-26T10:30:00Z";
const parsedDate = DateUtils.parse(dateString);
const formattedDate = DateUtils.format(parsedDate, DateFormat.MM_dd_yyyy);
console.log(`Formatted date: ${formattedDate}`);

// Use the DateUnitValue interface to pass a unit and value together
const date = new Date("2023-03-26");
const twoYearsAgo = DateUtils.add(date, { unit: DateUnits.YEAR, value: -2 });
console.log(`Two years ago: ${twoYearsAgo}`);

Usage (MathUtils)

const { MathUtils } = require("node-javascript-utils");

const math = new MathUtils();

console.log(math.add(2, 3)); // 5
console.log(math.subtract(5, 3)); // 2
console.log(math.multiply(2, 3)); // 6
console.log(math.divide(6, 3)); // 2

Usage (ObjectUtils)

const { ObjectUtils } = require("node-javascript-utils");

const objUtils = new ObjectUtils();

// deepClone
const obj1 = { foo: "bar", baz: { hello: "world" } };
const obj2 = objUtils.deepClone(obj1);
console.log(obj1 === obj2); // false
console.log(obj1.baz === obj2.baz); // false

// merge
const obj3 = { foo: "bar", baz: { hello: "world" } };
const obj4 = { baz: { world: "hello" } };
const obj5 = objUtils.merge(obj3, obj4);
console.log(obj5); // { foo: 'bar', baz: { hello: 'world', world: 'hello' } }

// isEqual
const obj6 = { foo: "bar", baz: { hello: "world" } };
const obj7 = { foo: "bar", baz: { hello: "world" } };
console.log(objUtils.isEqual(obj6, obj7)); // true

// toArray
const obj8 = { foo: "bar", baz: { hello: "world" } };
const arr1 = objUtils.toArray(obj8);
console.log(arr1); // [ 'bar', { hello: 'world' } ]

// flatten
const obj9 = { foo: { bar: { baz: "hello" } }, world: "world" };
const obj10 = objUtils.flatten(obj9);
console.log(obj10); // { 'foo.bar.baz': 'hello', world: 'world' }

Usage (ColorUtils)

const { parseColor, formatColor } = require("node-javascript-utils");

const color = parseColor("#FF0000"); // { r: 255, g: 0, b: 0, a: 1 }

const color = { r: 255, g: 0, b: 0, a: 0.5 };
const hexColor = formatColor(color); // "#FF000080"
const rgbColor = formatColor(color, ColorFormat.RGB); // "rgb(255, 0, 0)"

Usage (ChalkUtils) - 3rd Party Library Utils

const chalk = require("chalk"); // CommonJS Chalk use import syntax for ModernJS
const { colors } = require("node-javascript-utils");
const PowderBlue = chalk.hex(colors.PowderBlue);

console.log(PowderBlue("Hello, World!")); // PowderBlue color

API (String)

The NodeJavaScriptUtils module provides the following functions for manipulating strings:

trim(str: string): string

Removes whitespace from the beginning and end of a string.

toUpper(str: string): string

Converts a string to uppercase.

toLower(str: string): string

Converts a string to lowercase.

countChars(str: string): number

Counts the number of characters in a string.

replace(str: string, replace: [string, string], withStr: string): string

Replaces all occurrences of a substring in a string with another substring.

substring(str: string, [start: number, end?: number]): string

Extracts a substring from a string.

pad(str: string, [length: number, padChar?: string]): string

Pads a string with a specified character to a specified length.

API (Arrays)

sortBy(prop: keyof T, direction: SortDirection = SortDirection.Ascending): void:

This method sorts the array in the specified direction based on the given property. It takes two parameters: prop, which is the property to sort by, and direction, which is the direction to sort in (ascending or descending). If direction is not provided, it defaults to SortDirection.Ascending. This method throws an ArrayUtilsError if the array is not an array of objects or if the specified property does not exist on the objects in the array.

filter(predicate: (item: T) => boolean): T[]:

This method filters the array based on the given predicate function. It takes one parameter: predicate, which is the function used to filter the array. This method throws an ArrayUtilsError if the array is not an array of objects or if the predicate function does not return a boolean.

map<R>(mapper: (item: T) => R): R[]:

This method maps the array based on the given mapping function. It takes one parameter: mapper, which is the function used to map the array. This method throws an ArrayUtilsError if the array is not an array of objects or if the mapper function does not return a value of the expected type.

API (CustomError)

CustomError

This class is a base class to create error. It has message, stack, code, status, name to edit. You can create an advanced error message with it.

API (DateUtils)

add(date: Date, unit: DateUnits, value: number): Date

Adds a number of units to a date.

  • date: A Date object to which the units will be added.
  • unit: A member of the DateUnits enum that represents the unit to be added.
  • value: A number that represents the value of the unit to be added.

Returns a new Date object that represents the result of the addition.

Throws a DateUtilsTypeError if the date parameter is not a valid Date object, or if the value parameter is not an integer.

Throws a DateUtilsError if the unit parameter is not a member of the DateUnits enum.

difference(date1: Date, date2: Date, unit: DateUnits): number

Calculates the difference between two dates in a specific unit.

  • date1: The first Date object.
  • date2: The second Date object.
  • unit: A member of the DateUnits enum that represents the unit in which the difference will be calculated.

Returns a number that represents the difference between the two dates in the specified unit.

Throws a DateUtilsTypeError if either date1 or date2 parameters are not valid Date objects.

Throws a DateUtilsError if the unit parameter is not a member of the DateUnits enum.

parse(dateString: string): Date

Parses a date string and returns a Date object.

  • dateString: A string that represents a date.

Returns a Date object that represents the parsed date.

Throws a DateUtilsError if the dateString parameter is not a valid date string.

format(date: Date, format: DateFormat): string

Formats a Date object according to a format string.

  • date: A Date object to be formatted.
  • format: A string that represents the format to be used.

Returns a string that represents the formatted date.

Throws a DateUtilsTypeError if the date parameter is not a valid Date object.

API (MathUtils)

Error Codes:

The MathUtilsError class includes an code property that can be used to identify specific errors. The available error codes are:

  • INVALID_ARGUMENTS: The arguments passed to the method are invalid.
  • DIVIDE_BY_ZERO: An attempt was made to divide by zero.

API (ColorUtils)

parseColor(color: Color): RGBAColor

This function takes a color value in one of the supported formats and returns an object representing the color as an RGBAColor.

Supported formats are:

  • A string in the format #RRGGBB or #RRGGBBAA, where RR, GG, BB, and AA are hexadecimal values for the red, green, blue, and alpha components of the color, respectively.
  • A string in the format rgb(R, G, B) or rgba(R, G, B, A), where R, G, B, and A are decimal values for the red, green, blue, and alpha components of the color, respectively.
  • An object with r, g, b, and optionally a properties, where r, g, and b are numbers representing the red, green, and blue components of the color, respectively, and a is an optional number representing the alpha component of the color (default is 1).

Contribute

If you find a bug or would like to suggest an enhancement, please open an issue on the GitHub repository. Pull requests are also welcome.

LICENSE

The NodeJavaScriptUtils module is released under the MIT License. See LICENSE for details.