Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/birdofpreyru/js-utils

Collection of JavaScript (TypeScript) utilities.
https://github.com/birdofpreyru/js-utils

javascript js js-utils node react-native utility utils web

Last synced: 21 days ago
JSON representation

Collection of JavaScript (TypeScript) utilities.

Awesome Lists containing this project

README

        

[React Utils]: https://github.com/birdofpreyru/react-utils

# JS Utils

[![Latest NPM Release](https://img.shields.io/npm/v/@dr.pogodin/js-utils.svg)](https://www.npmjs.com/package/@dr.pogodin/js-utils)
[![NPM Downloads](https://img.shields.io/npm/dm/@dr.pogodin/js-utils.svg)](https://www.npmjs.com/package/@dr.pogodin/js-utils)
[![CircleCI](https://dl.circleci.com/status-badge/img/gh/birdofpreyru/js-utils/tree/master.svg?style=shield)](https://app.circleci.com/pipelines/github/birdofpreyru/js-utils)
[![GitHub repo stars](https://img.shields.io/github/stars/birdofpreyru/js-utils?style=social)](https://github.com/birdofpreyru/js-utils)
[![Dr. Pogodin Studio](https://raw.githubusercontent.com/birdofpreyru/js-utils/master/.README/logo-dr-pogodin-studio.svg)](https://dr.pogodin.studio/docs/js-utils)

The aim for this repo/package is to move in from the [React Utils] the pieces
which are not React-specific, thus are also useful cross non-React projects,
and thus having them in a dedicated package will faciliate their re-use
in generic JavaScript (and TypeScript) projects.

At least for the first time, all stuff moved in here will still be exposed from
[React Utils] the same way as before, and the documentation for these pieces
will be still kept at https://dr.pogodin.studio/docs/react-utils/index.html.
Maybe later, time permitting, this will be documented as a stand-alone library,
but prior to that it will be maintained and used as a stand-alone lib, but not
very well documented as such.

Yeah, the source code will be written in TypeScript, and for the library
version released to NPM it will be also compiled into plain JavaScript.
Consumers of that NPM package thus will have access to both TS (`/src` folder)
and JS (`/build` folder) version of the library.

[![Sponsor](https://raw.githubusercontent.com/birdofpreyru/js-utils/master/.README/sponsor.svg)](https://github.com/sponsors/birdofpreyru)

## Content

The library currently exports (links below lead to [React Utils] docs,
but the same stuff can be imported from this `@dr.pogodin/js-utils`,
and used in the same way):

### Constants
- [SEC_MS](https://dr.pogodin.studio/docs/react-utils/docs/api/utils/time#sec_ms)
— One second expressed in milliseconds.
- [MIN_MS](https://dr.pogodin.studio/docs/react-utils/docs/api/utils/time#min_ms)
— One minute expressed in milliseconds.
- [HOUR_MS](https://dr.pogodin.studio/docs/react-utils/docs/api/utils/time#hour_ms)
— One hour expressed in milliseconds.
- [DAY_MS](https://dr.pogodin.studio/docs/react-utils/docs/api/utils/time#day_ms)
— One day expressed in milliseconds.
- [YEAR_MS](https://dr.pogodin.studio/docs/react-utils/docs/api/utils/time#year_ms)
— One year expressed in milliseconds.

### Functions
- [timer()] — Creates a [Barrier] which resolves after the specified timeout.
- [withRetries()] — Attempts a given action multiple times until its succeeds.

### Classes
- [Barrier] — A [Promise] with **resolve()** and **reject()** exposed as
instance methods.
- [Emitter](https://dr.pogodin.studio/docs/react-utils/docs/api/classes/Emitter)
— Simple listeneable data emitter.
- [Semaphore](https://dr.pogodin.studio/docs/react-utils/docs/api/classes/Semaphore)
— Synchronization primitive.
- `Timer` — The core implementation of [timer()] functionality, allowing
to create further customized timer objects. _To be documented_.

[Barrier]: https://dr.pogodin.studio/docs/react-utils/docs/api/classes/Barrier
[Promise]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
[timer()]: https://dr.pogodin.studio/docs/react-utils/docs/api/utils/time#timer
[withRetries()]: https://dr.pogodin.studio/docs/react-utils/docs/api/functions/withretries