[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
npm install @terminus/ngx-tools[![CircleCI][circle-badge]][circle-link]
[![codecov][codecov-badge]][codecov-project]
[![semantic-release][semantic-release-badge]][semantic-release]
[![MIT License][license-image]][license-url]
[![NPM version][npm-version-image]][npm-url]
[![Github release][gh-release-badge]][gh-releases]
A collection of tools and utilities for Terminus applications.
Table of Contents
- Installation
- Library Structure
- Features
- Browser Utilities
- Coercion
- JWT Token Managment
- Key Codes
- Regex
- Testing Utilities
- Type Guards
- General Utilities
- Contributing
- Contributors
- Basic Commands
Install the library and required dependencies:
``bashPrimary dependencies:
$ yarn add @terminus/ngx-tools
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:][docs-browser] | [![File size][fs-badge-browser]][js-bundles] |
| @terminus/ngx-tools/coercion | Functions to coerce values to specific types (Array..) | [:books:][docs-coercion] | [![File size][fs-badge-coercion]][js-bundles] |
| @terminus/ngx-tools/jwt | Utilities for dealing with JWT tokens (TokenEscalator..) | [:books:][docs-jwt] | [![File size][fs-badge-jwt]][js-bundles] |
| @terminus/ngx-tools/keycodes | Constants for commonly needed key codes (ESC..) | [:books:][docs-keycodes] | [![File size][fs-badge-keycodes]][js-bundles] |
| @terminus/ngx-tools/regex | Regex definitions (creditCardRegex..) | [:books:][docs-regex] | [![File size][fs-badge-regex]][js-bundles] |
| @terminus/ngx-tools/testing | Test helpers and test mocks (dispatchFakeEvent..) | [:books:][docs-testing] | [![File size][fs-badge-testing]][js-bundles] |
| @terminus/ngx-tools/type-guards | TypeScript type guards (isSet, isArray..) | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |
| @terminus/ngx-tools/utilities | Basic utilities (debounce, groupBy..) | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |
Features
$3
Import from:
@terminus/ngx-tools/browser[:books: Browser Documentation][docs-browser]
`typescript
// Example usage:
import { TsCookieService } from '@terminus/ngx-tools/browser';...
this.cookieService.set('myName', 'myValue'); // Sets a cookie
`
$3
Import from:
@terminus/ngx-tools/coercion[:books: Coercion Documentation][docs-coercion]
`typescript
// Example usage:
import { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';coerceBooleanProperty('true'); // Returns: true
`
$3
Store, escalate, renew and use a named set of JWT tokens with ease!
[:books: JWT Documentation][docs-jwt]
$3
Import from:
@terminus/ngx-tools/keycodes[:books: Key Codes Documentation][docs-keycodes]
`typescript
// 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);
`
$3
Import from:
@terminus/ngx-tools/regex[:books: RegEx Documentation][docs-regex]
`typescript
// Example usage:
import { emailRegex } from '@terminus/ngx-tools/regex';emailRegex.test('foo@bar.com'); // Returns: true
`
$3
Import from:
@terminus/ngx-tools/testing[:books: Testing Documentation][docs-testing]
`typescript
// Example usage:
import { dispatchFakeEvent } from '@terminus/ngx-tools/testing';dispatchFakeEvent(window, 'resize');
`
$3
Import from:
@terminus/ngx-tools/type-guards[:books: Type Guards Documentation][docs-type-guards]
`typescript
// Example usage:
import { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';arrayHasAllElementsSet(['foo', 'bar']) // Returns: true
arrayHasAllElementsSet([1, 'bar']) // Returns: false
`
$3
Import from:
@terminus/ngx-tools/utilities[:books: Utilities Documentation][docs-utilities]
`typescript
// Example usage:
import { groupBy } from '@terminus/ngx-tools/utilites';groupBy(myArray, 'a');
`
Contributing
See the development workflow for the
@terminus/ui library: [Terminus Library Contribution Docs][contributing]
Contributors
Thanks goes to these wonderful people ([emoji key][all-contributors-key]):
| 
Benjamin Charity
💻 🔧 🤔 📖 💬 🐛 💡 🚇") 🚧 👀 ⚠️ | 
Brian Malinconico
💻 🤔 | 
Wendy
💻 📖 ⚠️ 🚧 👀 | 
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][package-json] for the full list of available commands.
[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield
[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/release
[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[semantic-release]: https://github.com/semantic-release/semantic-release
[npm-url]: https://npmjs.org/package/@terminus/ngx-tools
[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg
[license-image]: http://img.shields.io/badge/license-MIT-blue.svg
[license-url]: https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE
[semantic-release]: https://github.com/semantic-release/semantic-release
[contributing]: https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md
[package-json]: ./package.json
[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg
[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/
[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg
[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools
[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key
[fs-badge-browser]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip
[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip
[fs-badge-jwt]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip
[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip
[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip
[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip
[fs-badge-type-guards]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-type-guards.umd.min.js?compression=gzip
[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip
[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/
[docs-browser]: ngx-tools/browser/README.md
[docs-coercion]: ngx-tools/coercion/README.md
[docs-jwt]: ngx-tools/jwt/README.md
[docs-keycodes]: ngx-tools/keycodes/README.md
[docs-regex]: ngx-tools/regex/README.md
[docs-testing]: ngx-tools/testing/README.md
[docs-type-guards]: ngx-tools/type-guards/README.md
[docs-utilities]: ngx-tools/utilities/README.md