GetTerminus / ngx-tools

:hammer_and_wrench: A collection of tools and utilities for Terminus applications.
MIT License
9 stars 2 forks source link
angular coercion regex rxjs utility-library

@terminus/ngx-tools


:rotating_light: ATTENTION: THIS REPO HAS MOVED :rotating_light:

We have moved to separately published packages from within a monorepo. Please update any bookmarks to point to the new repo.

NOTE: This package is being split into 3 packages:

See https://github.com/GetTerminus/terminus-oss/issues/217 for full migration notes.

:rotating_light:


CircleCI codecov semantic-release MIT License
NPM version Github release

A collection of tools and utilities for Terminus applications.

Table of Contents

Installation

Install the library and required dependencies:

# Primary dependencies:
$ yarn add @terminus/ngx-tools

# Peer dependencies that need to be installed (you will likely already have some of these installed):
$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5

Then import your item from the associated endpoint: import { debounce } from '@terminus/ngx-tools/utilities';

You can play with the library live on StackBlitz: https://stackblitz.com/github/GetTerminus/ngx-tools

Library Structure

Import location Description Docs Size
@terminus/ngx-tools/browser Helpers to deal directly with browsers (TsCookieService..) :books: File size
@terminus/ngx-tools/coercion Functions to coerce values to specific types (Array..) :books: File size
@terminus/ngx-tools/jwt Utilities for dealing with JWT tokens (TokenEscalator..) :books: File size
@terminus/ngx-tools/keycodes Constants for commonly needed key codes (ESC..) :books: File size
@terminus/ngx-tools/regex Regex definitions (creditCardRegex..) :books: File size
@terminus/ngx-tools/testing Test helpers and test mocks (dispatchFakeEvent..) :books: File size
@terminus/ngx-tools/type-guards TypeScript type guards (isSet, isArray..) :books: File size
@terminus/ngx-tools/utilities Basic utilities (debounce, groupBy..) :books: File size

Features

Browser Utilities

Import from: @terminus/ngx-tools/browser

:books: Browser Documentation

// Example usage:
import { TsCookieService } from '@terminus/ngx-tools/browser';

...

this.cookieService.set('myName', 'myValue'); // Sets a cookie

Coercion

Import from: @terminus/ngx-tools/coercion

:books: Coercion Documentation

// Example usage:
import { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';

coerceBooleanProperty('true'); // Returns: true

JWT Token Managment

Store, escalate, renew and use a named set of JWT tokens with ease!

:books: JWT Documentation

Key Codes

Import from: @terminus/ngx-tools/keycodes

:books: Key Codes Documentation

// Example usage:
import { KEYS } from '@terminus/ngx-tools/keycodes';
import { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';

KEYS.ENTER.code    // 'Enter'
KEYS.ENTER.keyCode // 13

// Example usage:
dispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);

Regex

Import from: @terminus/ngx-tools/regex

:books: RegEx Documentation

// Example usage:
import { emailRegex } from '@terminus/ngx-tools/regex';

emailRegex.test('foo@bar.com'); // Returns: true

Testing Utilities

Import from: @terminus/ngx-tools/testing

:books: Testing Documentation

// Example usage:
import { dispatchFakeEvent } from '@terminus/ngx-tools/testing';

dispatchFakeEvent(window, 'resize');

Type Guards

Import from: @terminus/ngx-tools/type-guards

:books: Type Guards Documentation

// Example usage:
import { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';

arrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true
arrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false

General Utilities

Import from: @terminus/ngx-tools/utilities

:books: Utilities Documentation

// Example usage:
import { groupBy } from '@terminus/ngx-tools/utilites';

groupBy<MyObj, keyof MyObj>(myArray, 'a');

Contributing

See the development workflow for the @terminus/ui library: Terminus Library Contribution Docs

Contributors

Thanks goes to these wonderful people (emoji key):

Benjamin Charity
Benjamin Charity

💻 🔧 🤔 📖 💬 🐛 💡 🚇 🚧 👀 ⚠️
Brian Malinconico
Brian Malinconico

💻 🤔
Wendy
Wendy

💻 📖 ⚠️ 🚧 👀
shani-terminus
shani-terminus

🐛 💻 📖 🚧 ⚠️ 👀

This project follows the all-contributors specification. Contributions of any kind welcome!

Basic Commands

Command Function
build Build release
test Run unit tests
test:ci:local Run all unit tests and output coverage
start:app Start demo project
lint Lint all library files and attempt to fix issues
lint:ci Lint all library files
docs:toc Update the Table of Contents in all files
cm Commit with commitizen cli

See package.json for the full list of available commands.