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

@defaultsbotdevelopment/dbd-tools

v2.3.3

Published

A package that contains a collection of useful tools.

Downloads

33

Readme

npm version

Default's Bot Development Tools

A collection of JavaScript utility functions.

Installation

To install the package, run the following command:

npm install @defaultsbotdevelopment/dbd-tools

Usage

In your project, import the package either using require or import:

const dbdTools = require('@defaultsbotdevelopment/dbd-tools');
// or
import dbdTools from '@defaultsbotdevelopment/dbd-tools';

You can also destructure the package to only import the functions you need:

const { getKeys, getValues } = require('@defaultsbotdevelopment/dbd-tools');
// or
import { getKeys, getValues } from '@defaultsbotdevelopment/dbd-tools';

// You can even import all functions as a collection
const { ArrayUtils, CacheUtils, ConvertUtils, DiscordUtils, NumberUtils, ObjectUtils, ParseUtils, StringUtils, TimeUtils } = require('@defaultsbotdevelopment/dbd-tools');
// or
import { ArrayUtils, CacheUtils, ConvertUtils, DiscordUtils, NumberUtils, ObjectUtils, ParseUtils, StringUtils, TimeUtils } from '@defaultsbotdevelopment/dbd-tools';

Functions

The functions are categorized into the following collections:

Array

All available array utility functions.

chunk

Chunks an array into smaller arrays.

import { chunk } from '@defaultsbotdevelopment/dbd-tools';

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9];

console.log(chunk(array, 3)); // => [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

hasMatches

Checks if an array has any matches with another array.

import { hasMatches } from '@defaultsbotdevelopment/dbd-tools';

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const array2 = [9, 10, 11];

console.log(hasMatches(array, array2)); // => true

getMatches

Gets all matches from an array.

import { getMatches } from '@defaultsbotdevelopment/dbd-tools';

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const array2 = [1, 9, 10, 11];

console.log(getMatches(array, array2)); // => [1, 9]

filterDuplicates

Filters out duplicate values from an array.

import { filterDuplicates } from '@defaultsbotdevelopment/dbd-tools';

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2];

console.log(filterDuplicates(array)); // => [1, 2, 3, 4, 5, 6, 7, 8, 9]

shuffle

Shuffles an array.

import { shuffle } from '@defaultsbotdevelopment/dbd-tools';

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9];

console.log(shuffle(array)); // => [9, 3, 1, 5, 4, 2, 6, 7, 8]

Cache

All available cache utility functions.

getCache

Retrieve JSON data from a cache file in a synchronous manner.

import { getCache } from '@defaultsbotdevelopment/dbd-tools';

const data = getCache('cache.json');

console.log(data); // => { "key": "value" }

updateCache

Update a cache file with new JSON data in an asynchronous manner.

import { updateCache, getCache } from '@defaultsbotdevelopment/dbd-tools';

let data = getCache('cache.json');

data.key = 'new value';

data = await updateCache('cache.json', data);

console.log(data); // => { key: "new value" }

Convert

All available convert utility functions.

hexToDecimal

Converts a hexadecimal string to a decimal number.

import { hexToDecimal } from '@defaultsbotdevelopment/dbd-tools';

const hex = '#FFFFFF';

console.log(hexToDecimal(hex)); // => 16777215

toBoolean

Converts a value to a boolean. Returns null if the value cannot be converted. This function accepts a range of values, including strings, numbers, and booleans. It even supports custom strings, which can be passed in the options object. All checks are case-insensitive.

import { toBoolean } from '@defaultsbotdevelopment/dbd-tools';

let options = {
    boolean: true, // Accept booleans
    string: true, // Accept strings
    number: true, // Accept numbers
    // Custom strings
    custom:{
        true: ['yes', 'y', 'ja'],
        false: ['no', 'n', 'nee']
    }

console.log(toBoolean(true, options)); // => true
console.log(toBoolean('true', options)); // => true
console.log(toBoolean(1, options)); // => true
console.log(toBoolean('yes', options)); // => true

console.log(toBoolean(false, options)); // => false
console.log(toBoolean('false', options)); // => false
console.log(toBoolean(0, options)); // => false
console.log(toBoolean('no', options)); // => false

console.log(toBoolean('maybe', options)); // => null (not specified as a custom string)
};

Discord

All available Discord utility functions.

formatButtons

Formats buttons into action rows to be used in a message.

import { formatButtons } from '@defaultsbotdevelopment/dbd-tools';

const buttons = [
    {
        button_data...
    },
    {
        button_data...
    },
    {
        button_data...
    }
    Twelve more buttons...
];

const actionRows = formatButtons(buttons); // => Returns an array of action rows with buttons

formatSelects

Formats an array of strings in (multiple) select menus with a max of 25 options per menu.

import { formatSelects } from '@defaultsbotdevelopment/dbd-tools';

const options = [
    'Option 1',
    'Option 2',
    'Option 3',
    'Option 4',
    'Option 5',
    95 more...
];

const selectMenus = formatSelects(options); // => Returns an array of action rows with select menus. Each select menu has a max of 25 options.

getMentions

Get mentions from a string. Supports users, roles, and channels. Returns an object with the following properties: users, roles, channels. Each property is an array of IDs.

import { getMentions } from '@defaultsbotdevelopment/dbd-tools';

let options = {
	users: true, // Accept users
	roles: true, // Accept roles
	channels: true, // Accept channels
};

const string = 'Hello world! <@1234567890> <@&1234567890> <#1234567890>';

console.log(getMentions(string, options)); // => { users: ['1234567890'], roles: ['1234567890'], channels: ['1234567890'] }

Number

All available number utility functions.

getRandom

Get a random number between a minimum and maximum value. Both the minimum and maximum value are inclusive.

import { getRandom } from '@defaultsbotdevelopment/dbd-tools';

console.log(getRandom(1, 10)); // => 5

Object

All available object utility functions.

getValue

Get a value from an object using a path. The path is a string with keys separated by a dot.

import { getValue } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(getValue(object, 'key.key2')); // => 'value'

setValue

Set a value in an object using a path. The path is a string with keys separated by a dot. If the path does not exist, it will be created.

import { setValue } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(setValue(object, 'key.key3', 'another value')); // => { key: { key2: 'value', key3: 'another value' } }

hasKey

Check if an object has a key. Works with nested objects.

import { hasKey } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(hasKey(object, 'key')); // => true
console.log(hasKey(object, 'key2')); // => true

hasValue

Check if an object has a value. Works with nested objects.

import { hasValue } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(hasValue(object, 'value')); // => true

getKeys

Get all keys from an object. Returns an array of keys. Works with nested objects.

import { getKeys } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(getKeys(object)); // => ['key', 'key2']

getValues

Get all values from an object. Returns an array of values. Works with nested objects.

import { getValues } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(getValues(object)); // => ['value']

getEntries

Get all entries from an object. Returns an array of entries. Works with nested objects.

import { getEntries } from '@defaultsbotdevelopment/dbd-tools';

const object = {
	key: {
		key2: 'value',
	},
};

console.log(getEntries(object)); // => [['key', { key2: 'value' }], ['key2', 'value']]

flatten

Flatten an object. Returns an object with all nested objects flattened. Only the last key of each nested object is kept.

const object = {
	key: {
		key2: 'value',
	},
};

console.log(flatten(object)); // => { key_key2: 'value' }

Parse

All available parse utility functions.

parseEmojis

Parse emojis from a string. Returns all emojis in an array. Only unicode emojis are supported.

import { parseEmojis } from '@defaultsbotdevelopment/dbd-tools';

const string = 'Hello world! 😃';

console.log(parseEmojis(string)); // => ['😃']

parseHexColors

Parse hex colors from a string. Returns all hex colors in an array.

const string = 'Hello world! #FFFFFF';

console.log(parseHexColors(string)); // => ['#FFFFFF']

parseRgbColors

Parse RGB colors from a string. Returns all RGB colors in an array.

const string = 'Hello world! rgb(255, 255, 255)';

console.log(parseRgbColors(string)); // => ['rgb(255, 255, 255)']

parseHslColors

Parse HSL colors from a string. Returns all HSL colors in an array.

const string = 'Hello world! hsl(0, 0%, 100%)';

console.log(parseHslColors(string)); // => ['hsl(0, 0%, 100%)']

parseDecimalColors

Parse decimal colors from a string. Returns all decimal colors in an array.

const string = 'Hello world! 16777215';

console.log(parseDecimalColors(string)); // => ['16777215']

String

All available string utility functions.

generateUuid

Generate a Universally Unique Identifier (UUID).

import { generateUuid } from '@defaultsbotdevelopment/dbd-tools';

console.log(generateUuid()); // => 'f4e7a3d0-6b2f-4b1d-8a5c-8d9d9b9b9b9b'

replacer

Replaces all placeholders in a string with the corresponding values.

import { replacer } from '@defaultsbotdevelopment/dbd-tools';

const string = '{greeting} {user}!';

const placeholders = {
	greeting: 'Hello',
	user: 'world',
};

console.log(replacer(string, placeholders)); // => 'Hello world!'

Time

All available time utility functions.

msToTimeObject

Converts milliseconds to an object with the following available properties: years, months, weeks,days, hours, minutes, seconds, milliseconds.

You can also specify which properties you want to include in the object. All properties are included by default.

import { msToTimeObject } from '@defaultsbotdevelopment/dbd-tools';

const ms = 1000000000;

console.log(msToTimeObject(ms)); // => { years: 0, months: 0, weeks: 1, days: 4, hours: 13, minutes: 46, seconds: 40 }

console.log(msToTimeObject(ms, { seconds: true, minutes: true })); // => { minutes: 16666, seconds: 40 }