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

@jitbug/helpers

v2.7.1

Published

Helpers for Jitbug's Ionic + Stencil PWAs.

Downloads

265

Readme

Jitbug Helpers

Build and Test

Installation

npm i @jitbug/helpers

API

Arrays (@jitbug/helpers/arrays)

  • createRange(start, end): Create a numeric array for the given range.
  • getArraySum(array): Calculate the sum of a numeric array.
  • removeFromArray(array, item): Remove an item from an array (returns a new array).
  • getLastElement(array): Get the last element of an array.
  • getPrevSibling(array, item): Get the previous sibling of an array element.
  • getNextSibling(array, item): Get the next sibling of an array element.
  • makeArrayUnique(array): Use a Set to get only the unique values of an array.
  • getCountWithLimit(array, filterFn, limit): Get the count of elements of an array that pass the filter, and return either the count or the limit (whatever is smaller) as a string.
  • reduceObjectArrayToObject(array): Reduce an array of objects to an object.
  • sortByKey(key): Get a function that can be passed into Array#sort to sort an array of objects by the given key.
  • flatten(array): Flatten an array.

Dates (@jitbug/helpers/dates)

Important: before using any of the moment.js related date helpers, you have to use setMomentReference once, to pass a reference for moment. This is so that this library doesn't need to ship its own moment.js bundle (for bundle size reasons). A good place to do this is in an app initialization script (e. g. for Stencil apps, that would be the globalScript).

import { setMomentReference } from '@jitbug/helpers';
import moment from 'moment'; // or 'moment-timezone'

setMomentReference(moment);
  • mergeDateAndTime(date, time): Merges the time of a date into another date.
  • minsToMs(mins): Convert minutes to milliseconds.
  • msToDecimalHours(ms): Convert milliseconds to decimal hours.
  • getWorkedHours(start, end, breakMinutes): Get the amount of worked hours as a decimal.
  • sortByDate(key): Get a function to pass to Array#sort to sort an array of objects by date.
  • formatAsTimestamp(date): Format a date as a timestamp depending on how long ago it was.
  • formatAsDayAndMonth(date): Format a date as day and month without the year, respecting the current locale (hopefully this works).
  • getNextWorkingDay(): Get the next working day, i. e. the next day that's not on a weekend (Sat/Sun).
  • getDuration(start, end): Get the difference between an start an end time.
  • validateShiftDuration(start, end, min): Validate a shift's duration.
  • getDatesOfNextWeeks(start, n, includeWeekends): Get the dates of the next n weeks from the start date. Don't try to use this with a start date that's not a Monday or you will break the internetz.
  • getCalendarMonthBoundaries(month): Get the start and end dates of a calendar month, which is the start date of the week that includes the first day of the month, and the end date of the week that includes the last day of the month.
  • isInFuture(date): Check whether the given moment is in the future.
  • isInPast(date): Check whether the given moment is in the past.

Functional Programming (@jitbug/helpers/fp)

  • compose(...fns): Compose the passed in functions.
  • pipe(...fns): Create a pipe of the passed in functions.
  • pluck(key)(obj): Create a function that plucks a property out of an object.
  • is(key, value)(obj): Create a function that checks whether a plucked value is equal to the given value.
  • isNot(key, value)(obj): Create a function that checks whether a plucked value is not equal to the given value.
  • Bool(value): Same as Boolean but acts as a type guard/"null check".
  • noop(): Do nothing.
  • isEnabled(obj): Check the enabled property of the given object.
  • isDisabled(obj): Check the enabled property of the given object.
  • isSelected(obj): Check the selected property of the given object.
  • isDeselected(obj): Check the selected property of the given object.
  • isChecked(obj): Check the checked property of the given object.
  • isUnchecked(obj): Check the checked property of the given object.
  • isVisible(obj): Check the visible property of the given object.
  • isInvisible(obj): Check the visible property of the given object.
  • getValueOrDefault(value, default): Return the value if it's set, or the default value otherwise.

Ionic (@jitbug/helpers/ionic)

  • showActionSheet(options): Show an action sheet.
  • showAlert(message, options): Show an alert.
  • showLoading(options): Show a loading popover.
  • showLoadingWhile(promise): Show a loading popover while awaiting a promise.
  • showModal(options): Show a modal.
  • showToas(message, options): Show a toast.
  • showPopover(options): Show a popover.
  • showProgress(): Show a progress bar at the top of the page (nprogress).
  • showProgressWhile(promise): Show a progress bar while awaiting a promise.
  • showConfirmationAlert(question, options): Show a confirmation alert.
  • viewportIsMin(size): Check whether the viewport is at least of specified size.
  • goToRoute(url): Go to a route programmatically.
  • goToPreviousRoute(): Go back to the previous route in the history.
  • changeRouteHash(hash): Change the hash of the current route without adding a new state to the browser history.

Strings (@jitbug/helpers/strings)

  • toStringOrEmptyString(string): Call toString() on a value if it exists in its prototype, or return '' otherwise.
  • toTitleCase(string): Convert a string to title case.
  • pascalToCamelCase(string): Convert a string from pascal to camel case.
  • getInitials(string): Get the initials for each word in a string (capitalized).
  • toOrdinal(number): Convert a number to it's ordinal version.
  • filterAndJoin(parts): Filter falsy elements from an array, then join them.
  • removeDataUrlPrefix(url): Remove the prefix of a base64 encoded data url.
  • bytes(string): Convert a size description into its amount of bytes.
  • formatBytes(number): Format a number of bytes into a human-readable format.

Time (@jitbug/helpers/time)

A time represents the hours and minutes of a day and can therefore be somewhere in between 00:00 and 23:59.

  • new Time(timeLike): Construct a new time object; a time-like value is a number (of minutes), string (HH:MM), Moment or another Time instance.
  • Time.add(number): Add the number of minutes and return a new Time instance with the new value. This is circular.
  • Time.subtract(number): Same as add but subtracts the number of minutes.

The class implements toValue, toJSON and toString for easier serialization.

Utilities (@jitbug/helpers/utils)

  • wait(ms): Wait for a given amount of time.
  • debounce(fn, delay): Debounce a function by the given delay.
  • throttle(fn, delay, skipFn): Throttle a function by the given delay.
  • getRandomInt(min, max): Get a random integer in the given range.
  • base64ImageToDataUrl(string): Get a data url from a base64 encoded image (assumes jpg by default).
  • getByPath(object, path): Get the value at the path of an object.
  • clone(object): Make a deep clone of an object.
  • downloadFile(data, mime, name): Download a file by opening it via a data url in a new window.
  • raf(options): Run a callback on the queried element within the parent. This uses requestAnimationFrame to make sure of the element's existence
  • stopPropagation(event): Handler to stop event propagation.
  • readFile(file): Read a file using a FileReader and return its data as a base64 encoded string.
  • uuid(): Generate a v4 compliant uuid.
  • convertDataUrlToBlob(data): Convert the given data url into a blob.

Publishing

There's a Github Action set up that automatically publishes new tags that follow the v*.*.* format. Use npm run release to create a new version, then push it using git push --follow-tags.