{"_id":"@terminus/ngx-tools","_rev":"197-937628143be8c5f3a3d45e270ee51e9d","name":"@terminus/ngx-tools","dist-tags":{"latest":"8.0.6","wip":"6.1.0-beta-1.0","next":"8.0.6"},"versions":{"0.0.1":{"name":"@terminus/ngx-tools","version":"0.0.1","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./tooling/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-umiu7JDk1uIBk8l4nFtfIWV152jCqwwglx9/EnGQL8M5Z9xSt0siXFM2uKxpdgiryZvoRPmzR+mzni70ROUdAw==","shasum":"4fda85b43b3bde6b5b9b63902f632a7802ea59b1","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+lb/CUJ3iwKtc9XRUl+fuJ31z8o1DeecQENgiUu0BSAiEAliJ7XtNpeAHkN/W0EtugrIWWc6sdNIXQ9brkKh9SwI0="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools-0.0.1.tgz_1517857990363_0.16079885372892022"},"directories":{}},"0.0.2":{"name":"@terminus/ngx-tools","version":"0.0.2","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-LPxoSLomU812EWPaKOs8D/2uc4oQXwaZ3wxsGFXZlqchc2fSMrDqP2jDR/5znZZTl4UwGOenaFWAsZ63p8K1gg==","shasum":"4dff8e6967abce9331d69c20ec51e44334e1b104","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7btLV61kqNFHuopQjP/QdDWPQUZ+VHUVbQcdltygYGAiEAqoCbWBMMELcc06+FxMz4N/o9VmDz6SFbBYcsSup+Z0U="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools-0.0.2.tgz_1517858725570_0.9005184785928577"},"directories":{}},"0.0.3":{"name":"@terminus/ngx-tools","version":"0.0.3","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-9S+uuSbK4TwVIv5akt2b0Nc2T/6qZHXEep7c9IQkr+uOWwYIejjIwbEjdA9W6n7hol5skXpf9CQvwb0Rc5i6lg==","shasum":"488732602f86eb3f7d9c32fe053d46c0230f4c23","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGAJyNb108yJtFh9+k7m1LN1rTdU+GJv/oZ0mr8J/Go1AiEAtyU/zRlF2DplpErptZSdQKFgX9QYF/m1EU6e0eqF37w="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools-0.0.3.tgz_1517948767689_0.11924900952726603"},"directories":{}},"0.0.4":{"name":"@terminus/ngx-tools","version":"0.0.4","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.4","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-12iArRlqPAU9nwS+v+axTvAeSCLEulVSYApavLER15TiCsg1c/Cfun8KYBuV4/6POMJq87NXWt4w47fkFImkXw==","shasum":"4fc1e96be6408fc5c1bad4dde93636f06b31bfc6","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.4.tgz","fileCount":63,"unpackedSize":126672,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdCcEhOcJWS5/4vz6TKmPV6D41HGriu2SL+myQbQigRwIhAIiBD8/x4MvTgeXFdZ35X8H126jESZTzG7/Tu7Eh84iw"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.4_1518012221892_0.9351241896249001"},"_hasShrinkwrap":false},"0.0.5":{"name":"@terminus/ngx-tools","version":"0.0.5","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.5","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-z4KTWU2mRdjAFV8ZeeT6DuybVkL85fuIz/jFoZkH4ytcwpdJxJqofIRoGgyGveEaJEBUEb+jQdX8gwWfXSl3mQ==","shasum":"573fec8413a833a63054833736bd735c76aad19c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.5.tgz","fileCount":63,"unpackedSize":126672,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTt08nMCB/yrt+4qpmVZK5sJPFE3BI/tbQ5Q6eQV7kzAiEA0THdLbADmXhl92DC4dlpLM4M9HzjVeiIFhUm6S1LVck="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.5_1518029203924_0.13152580048103713"},"_hasShrinkwrap":false},"0.0.6":{"name":"@terminus/ngx-tools","version":"0.0.6","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.6","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-OyqfAtbqAnzggBWLIO3bLUO3fP57+WBGCmD2R5jzCkglUuZkyS17JQ+DFlXUyGYuew9lnhGYDbRXfFS6/CsYzQ==","shasum":"189a1972344a46eb5a4667e223bb9fa0fe603ca2","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.6.tgz","fileCount":63,"unpackedSize":127064,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEMqG9tTGQwbmKnFGtICpE5/YE24Vy0If89wFVfcc7FQIhAM4/egE7lpqGoZY14U2xf9pXcwFLEqGoExpPp1JIdAjY"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.6_1518031266300_0.8376922187586546"},"_hasShrinkwrap":false},"0.0.7":{"name":"@terminus/ngx-tools","version":"0.0.7","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.7","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-DIhmFIhRvEteVSnor8Y7SfybJW8xxhAWEVru/8UfVMKQ06S52rBOx4oujVYIY5hQK5XsJHpwT0pxv7dPdR3eEA==","shasum":"1a434008cf778921ff0647f907813281bde4f8c2","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.7.tgz","fileCount":63,"unpackedSize":127064,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDeOCPuDcWFqoGl3ACam27eXfms1pmGRm7GaMFtxWHmoAiEA1I7m/nKRFGvM/TErNoyXwByK06DirRYAL4DVwDrgsXY="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.7_1518033590898_0.9483825199591862"},"_hasShrinkwrap":false},"0.0.8":{"name":"@terminus/ngx-tools","version":"0.0.8","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.8","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-FiRhpdlk5meG1eEjN7yrdJGBM3LgsU9EiY5xs9OwmpE3aML1wGOD465p2fnV53aGfrDAZDicr5r5U9SbEyFgCQ==","shasum":"4945c37cd43cf5091e3f6c0f435cf11a3da84d7c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.8.tgz","fileCount":63,"unpackedSize":127064,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwiWvBMazepyFPfIWb7ulAZQ9+s1XEwlWr/4uU/QcfXQIhAN21zcLTxnHxKfJwhWumbZE6TzQSXoN3w742rNSQ3hJ/"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.8_1518054572219_0.12683441873948054"},"_hasShrinkwrap":false},"0.0.9":{"name":"@terminus/ngx-tools","version":"0.0.9","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.9","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-kJzp5pr3uSrgbMeMOvfKx+JovcZxNnL1sUSXfSMWNRSI9Skbg8JM2GYEWa4X2vHyMOczaZt6FqxcO+IUrn9hVg==","shasum":"9358e2119e8f2344ba7c2951c53f139af3a63a47","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.9.tgz","fileCount":63,"unpackedSize":127064,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJiC+XGp4q/mQauLeV7TSfjEQwfmgeY8TL4XiE5CjoqAiEAkfaZ4g1hoj4SC1sFHg3nJoQ3skleoUEvraioOk0qLls="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.9_1518054698461_0.04960068640782622"},"_hasShrinkwrap":false},"0.0.10":{"name":"@terminus/ngx-tools","version":"0.0.10","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.10","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-BM7BpzG/scDdPGIcFSOeIThwxhBF7iSOg0rw1Y1cEmWCqrdeSCVZYacF7LDslipNM7p1jQHq1tQQTly4lM7iNg==","shasum":"c745ae659a69b21f9a268338969604f2352e63c8","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.10.tgz","fileCount":65,"unpackedSize":130561,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0IyzNl4KRzoqsBRYCnvRfv+svhSqDjrhNmFWozGgSEAiEAxWLZvoaUlioLEmY9B1hID+8eOAqiYr1h6JNRDp9ZnPE="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.10_1518057479443_0.029226305101740957"},"_hasShrinkwrap":false},"0.0.11":{"name":"@terminus/ngx-tools","version":"0.0.11","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.11","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Z+RpfRJv4qakGIfiWe21CkeZYcLW8QY3UvVAE09AyWWytwK2knyaCQJgV+vOinqPYcjcXbQphUyUWLJC2RFgDQ==","shasum":"47826e6875c41dd9e7c0216138fd6f3c167062b2","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.11.tgz","fileCount":65,"unpackedSize":132772,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0NBi1KYuJZnTTSIWhRVLhx+ax/ik9Vds4BxuMGo9ZJAiEAmlTp4sqP8NZEgej9skT33jwjN7FkWjL7Rcgala4dqEU="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.11_1518059372276_0.8287173640499437"},"_hasShrinkwrap":false},"0.0.12":{"name":"@terminus/ngx-tools","version":"0.0.12","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.0.12","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-HirrzngJUVyuhfgagBa4wBNDHJWVzixW2ST8yGw3abqVN+crE653JOxWR+fMcIWltyfbMzgf0Xkta1/BjqAaRw==","shasum":"447d341f8bfb9a83ac5fd31517f060229dc4b242","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.12.tgz","fileCount":65,"unpackedSize":138569,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9sPC+2ceVOmJzoaQ9d/fjxbdGc4dHoIEX05qTPv8R4gIgaXrJlVzTu39R1YAkoVltmX/PhNZlaxMkgZfvqJ4pa6U="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.12_1518061849076_0.224257287378421"},"_hasShrinkwrap":false},"0.1.0":{"name":"@terminus/ngx-tools","version":"0.1.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-X74AHA7ce1A8mosjPM98Z3pxNyODc79F4TCPr0wE2FMhi7dk0nfZ29P4nEMT6pSg7syZ/HhJJtXOw006+NyeNw==","shasum":"9a01f95100d750173a1d783884281d37d0da229c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.1.0.tgz","fileCount":80,"unpackedSize":160965,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf8jTG3/QLTKW7urgUGaDNLg4DVS0Um0VAIlNe6bwaVAIhAJLvrIYvUCxSJ6vH2v+MOnR30eATXm9FPH8XyQ5HVtdB"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.1.0_1518098745572_0.7574106397676015"},"_hasShrinkwrap":false},"1.0.0":{"name":"@terminus/ngx-tools","version":"1.0.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-MQ9U0OOjxfR/OnSJgmLwk8vyi4Hp/eBNcdIqRWklg4HkeFiXo9Fnkfj0x/wjo3tA3EpzALtkXPwLaVY/8LkqnQ==","shasum":"0c090f092fcf19571a725792fe1fe7055c04eb03","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.0.0.tgz","fileCount":80,"unpackedSize":161079,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIELoWGn9u7Lk1pxMFhQzBz+ZE8JpRlwOTRua4y+ahgyRAiEAtglLpVSg4yDji+L2uY6ilQrms2HvY9oZ+Q6pTynDceA="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.0.0_1518101459770_0.052991196851553735"},"_hasShrinkwrap":false},"1.1.0":{"name":"@terminus/ngx-tools","version":"1.1.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-H/yMT18k3Eiq8bWSK8nAL3VE7p6Jfp6RbgomKqXH6UICJQJoWzfmh2SN2Wac3rhkC6juNJVOtUKRGvdg3KW6NQ==","shasum":"e98f0b8d503cc468f2c0f190bf1dfadb04183afc","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.1.0.tgz","fileCount":85,"unpackedSize":180210,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0FOxmiVp+pRplOWa7yvlrdA2g27cJH9qV73M4HB3GUAiAHEi3dQACpKYoOf8tfWbGTvdk8PhyETPZlaR4jScWogA=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.1.0_1518446837149_0.9721356979674489"},"_hasShrinkwrap":false},"1.2.0":{"name":"@terminus/ngx-tools","version":"1.2.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-8tWkZnM4G16Hy1TdL62lFcRN4rCkVGX/sFW/LL0OIIfd9ZjBZbFCgmetDDJmUSEyk+d/oElyIheHJkvvUoPt2g==","shasum":"9dd16087c4adb0309ec245c3b172600a1d8d3283","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.2.0.tgz","fileCount":86,"unpackedSize":187909,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdCPZQ12nK5JVNyStX7PfDl3NCWccZ6HpUwLpXPXEUgAiEAzRxBSiEz0QC3awGUMyh6iC/+IkUoIQJ16gTslqj0AKw="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.2.0_1518707328269_0.8971294479476317"},"_hasShrinkwrap":false},"1.2.1":{"name":"@terminus/ngx-tools","version":"1.2.1","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.2.1","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-4i/q5d10LLFhCwau5j3NKw46oG+aSb/nd3vKBXuFp8my78KBwbx4ux+dYDpmNeB0SOk9RT+YxU+1drI+Tkeu7w==","shasum":"006945d0596210295b8ca8a351c553140be66386","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.2.1.tgz","fileCount":87,"unpackedSize":193815,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAx+45WI5hVdytle9xXhu/l9owxpfg5LGYgmVzf49xOyAiEA4lMkrkG+VYuEL1S8v72HYVKP/XTP9bd+ALki1okAPqI="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.2.1_1519048991111_0.6614941926902491"},"_hasShrinkwrap":false},"1.2.2":{"name":"@terminus/ngx-tools","version":"1.2.2","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.2.2","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-oLtfDDZuEYm5D7BDZKTAInDtTxhnXGnZ47RtvxRAoYFslQWTEkES9UdR7fY2/QbP05AUeh+tCJwbGbRiqAAehg==","shasum":"5aef40ae65528424e5f4f3606cd927baec5d6735","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.2.2.tgz","fileCount":87,"unpackedSize":193719,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFP1Jq5cXbE4pOxs4mxhP9AGln4p+T6ycM7hOHvw6LSwIhAMm1FxLw7TWuWVXhJrX6RSLaItEcabJkCJM65mlGyAEn"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.2.2_1519049853568_0.5445317453610983"},"_hasShrinkwrap":false},"1.3.0":{"name":"@terminus/ngx-tools","version":"1.3.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-AA08JxKSskCEr7Z54mtHgMOnlm+f54GZveC529FLvkBvkWAqI5mVWw3BJxsNY9dOfdlZKvQIecECs3KyhJnbNg==","shasum":"f92efda457b53aed6bf3aef6f3095f2af83d61c5","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.3.0.tgz","fileCount":92,"unpackedSize":210760,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0vtt9H/fYDCd38r6kz8fhKvQy+h56RW4PLLKIaJt+pgIhAKLZp0icc6+139N55EZueocujSahZgoWx7oLy8Ulgr3P"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.3.0_1519079438367_0.555144299695141"},"_hasShrinkwrap":false},"1.4.0":{"name":"@terminus/ngx-tools","version":"1.4.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-55He9zsjz0JaJK8UZ27ntG0iZbFqjZ54/ULFgvyQXcerjWnNAoPnQfHm+WNNzgkIlmMEsznFMpVeVn5YesNTOQ==","shasum":"84548bc495dfe379a6876ef4a5ce397bdd2cd7f1","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.4.0.tgz","fileCount":94,"unpackedSize":242484,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrF3IVwyz3oBub/dcPCLh/qsG4T+0tJ+cMXjOEAahPnwIhAMi9gxlfgtOmldf+1ZnUyWafhQ+LNLJR8DRqSpAXuuEP"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.4.0_1519224873627_0.09269339952214306"},"_hasShrinkwrap":false},"1.4.0-beta.1":{"name":"@terminus/ngx-tools","version":"1.4.0-beta.1","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![NPM version][npm-version-image]][npm-url]\n[![Library size][file-size-badge]][raw-distribution-js]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n[![All Contributors][all-contributors-badge]](#contributors)\n\nA collection of tools and utilities for Terminus (Angular/NGRX) applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n  - [Basic Commands](#basic-commands)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Test Helpers](#test-helpers)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributors](#contributors)\n- [Resources](#resources)\n- [Contributing](#contributing)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools --exact`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/edit/angular-ngx-tools-starter\n\n### Basic Commands\n\n| Command                  | Function                                                      |\n|--------------------------|---------------------------------------------------------------|\n| `build:lib`     | Build release                                                 |\n| `build:lib:sim` | Build release and start demo app in AoT                       |\n| `test:lib`               | Run unit tests                                                |\n| `test:lib:ci`            | Run unit tests and output coverage                            |\n| `start:lib:sim`          | Build release and start demo app in JiT                       |\n| `lib:sync`               | Sync configuration files (needed after any structural change) |\n| `lint:lib`               | Lint TS files and attempt to fix issues                       |\n| `lint:lib:ci`            | Lint TS files                                                 |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Library Structure\n\n\n| Import location                | Resources                                                                |\n|--------------------------------|--------------------------------------------------------------------------|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                                |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`, `emailRegex`..)                    |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchEvent`, `ElementRefMock`..)        |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types (`coerceBooleanProperty`..) |\n\n\n## Features\n\n\n### Basic Utilities\n\n**Import from:** `@terminus/ngx-tools`\n\n| Name                  | Description                                          |\n|-----------------------|------------------------------------------------------|\n| `arrayContainsObject` | Check if an object exists in an array                |\n| `debounce`            | Provides a debounced function                        |\n| `groupBy`             | Return an object containing arrays split by property |\n| `isArray`             | Check if value is an Array                           |\n| `isBoolean`           | Check if value is a Boolean                          |\n| `isFunction`          | Check if value is a function                         |\n| `isObject`            | Check if value is an Object                          |\n| `isString`            | Check if value is a String                           |\n| `noop`                | Placeholder function                                 |\n| `retryWithBackoff`    | Helper to retry an Observable stream (x) times       |\n\n**Example:**\n\n```typescript\nimport {\n  groupBy,\n  isArray,\n} from '@terminus/ngx-tools';\n\nconst groupedArrays = groupBy(myArray, 'myProperty'); // {foo: [...], bar: [...]}\nconst isValidArray = isArray([]); // true\n```\n\n\n### Regex\n\n**Import from:** `@terminus/ngx-tools/regex`\n\n| Name              | Description                                                      |\n|-------------------|------------------------------------------------------------------|\n| `creditCardRegex` | Visa, MasterCard, American Express, Diners Club, Discover, JCB   |\n| `emailRegex`      | Any valid email                                                  |\n| `lettersRegex`    | Only English letters                                             |\n| `numbersRegex`    | Only numbers                                                     |\n| `passwordRegex`   | Between 6 and 100 characters, is a string, has at least 1 number |\n| `phoneRegex`      | Any valid US phone number                                        |\n| `postalRegex`     | Any valid US postal code                                         |\n| `urlRegex`        | Any valid URL (http/ftp/unicode/IP/etc)                          |\n\n**Example:**\n\n```typescript\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nconst isTrue = emailRegex.test('foo@bar.com');\n```\n\n\n### Test Helpers\n\n**Import from:** `@terminus/ngx-tools/testing`\n\n> **NOTE:** The three mocks currently do not work. They are currently being compiled during the\n> build process.\n\n| Name                    | Description                                                                                |\n|-------------------------|--------------------------------------------------------------------------------------------|\n| `ChangeDetectorRefMock` | A mock of the Angular `ChangeDetectorRefMock` class                                        |\n| `createFakeEvent`       | Creates a fake event object with any desired event type                                    |\n| `createKeyboardEvent`   | Dispatches a keydown event from an element                                                 |\n| `createMouseEvent`      | Creates a browser MouseEvent with the specified options                                    |\n| `createTouchEvent`      | Creates a browser TouchEvent with the specified pointer coordinates                        |\n| `dispatchEvent`         | Utility to dispatch any event on a Node                                                    |\n| `dispatchFakeEvent`     | Shorthand to dispatch a fake event on a specified node                                     |\n| `dispatchKeyboardEvent` | Shorthand to dispatch a keyboard event with a specified key code                           |\n| `dispatchMouseEvent`    | Shorthand to dispatch a mouse event on the specified coordinates                           |\n| `dispatchTouchEvent`    | Shorthand to dispatch a touch event on the specified coordinates                           |\n| `ElementRefMock`        | A mock of the Angular ElementRef class                                                     |\n| `expectNativeEl`        | Reusable expect statement to check for the nativeElement                                   |\n| `queryFor`              | Helper to query a fixture for a selector                                                   |\n| `rendererMock`          | A mock of the Angular Renderer                                                             |\n| `typeInElement`         | Focuses an input, sets it's value and dispatches the `input` event, simulating user typing |\n| `wrappedErrorMessage`   | Gets a RegExp used to detect an angular wrapped error message                              |\n\n**Example:**\n\n```typescript\nimport { ElementRefMock } from '@terminus/ngx-tools/testing';\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\nthis.directive = new MyDirective(\n  new ElementRefMock(),\n);\n\ndispatchFakeEvent(window, 'resize')\n```\n\n\n### Key Codes\n\n**Import from:** `@terminus/ngx-tools/keycodes`\n\n| Name          | Description |\n|---------------|-------------|\n| `UP_ARROW`    | Key code    |\n| `DOWN_ARROW`  | Key code    |\n| `RIGHT_ARROW` | Key code    |\n| `LEFT_ARROW`  | Key code    |\n| `PAGE_UP`     | Key code    |\n| `PAGE_DOWN`   | Key code    |\n| `HOME`        | Key code    |\n| `END`         | Key code    |\n| `ENTER`       | Key code    |\n| `SPACE`       | Key code    |\n| `TAB`         | Key code    |\n| `BACKSPACE`   | Key code    |\n| `DELETE`      | Key code    |\n| `A`           | Key code    |\n| `Z`           | Key code    |\n| `ZERO`        | Key code    |\n| `NINE`        | Key code    |\n| `COMMA`       | Key code    |\n\n**Example:**\n\n```typescript\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\n\nconst isTrue = DELETE === 46;\n```\n\n\n### Coercion\n\n**Import from:** `@terminus/ngx-tools/coercion`\n\n| Name                    | Description                                                                 |\n|-------------------------|-----------------------------------------------------------------------------|\n| `coerceArray`           | Wraps the provided value in an array, unless the provided value is an array |\n| `coerceBooleanProperty` | Coerces a data-bound value to a boolean                                     |\n| `coerceNumberProperty`  | Coerces a data-bound value to a number                                      |\n\n**Example:**\n\n```typescript\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\nconst isTrue: boolean = coerceBooleanProperty('foo');\n```\n\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Resources\n\n- [Angular Library Starter][library-starter]\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][dev-wiki]\n\n\n<!-- LINKS -->\n[all-contributors-badge]: https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[file-size-badge]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js?compression=gzip\n[raw-distribution-js]: https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[library-starter]: https://github.com/shlomiassaf/angular-library-starter\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[dev-wiki]: https://github.com/GetTerminus/terminus-ui/wiki/Development-Workflow\n[package-json]: ./package.json\n","readmeFilename":"README.md","_id":"@terminus/ngx-tools@1.4.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-lyXq0Eth6NtXJqpWWlv9O9ZoV0q4p2nr6hEBIqcq//WWiKXFUidM2np84tqub3O6KKdfkT6wTWHoly/bFHZZsg==","shasum":"ac4b971b977c3e1f26ff55efddb72b2df4636049","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.4.0-beta.1.tgz","fileCount":98,"unpackedSize":271010,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaVhLTxLTLWJpH0LzeU5XGe6kD1xyATb0Dv7QHzOPjaQIhAJsDCIT8kBBVJaFEiJY45BZ6z8YFlkmPyNkal/g6fuLB"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.4.0-beta.1_1519304268047_0.30143707364568684"},"_hasShrinkwrap":false},"1.5.0":{"name":"@terminus/ngx-tools","version":"1.5.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-bACw0NEHD+OfYqtEwz7tfML6Loe6nPN43oBtodUDd1Ayn7Qnq9tLZaVZFztBDwXyNyMI+mwMHv4Sp8k6Z4FZRQ==","shasum":"affa9242ac3228173205be3e6776f9fc6973f9cd","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.5.0.tgz","fileCount":98,"unpackedSize":270907,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHpMmOKSpyWX49E3v/esFCu0B9dsx5l6H27iF4IndxJ/AiEAoiTmdaiW4/JsEt+2znmN1HzquRH1aBUGMrS6hTH4aXs="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.5.0_1519305125674_0.8790904726064728"},"_hasShrinkwrap":false},"1.6.0":{"name":"@terminus/ngx-tools","version":"1.6.0","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.6.0","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-eo7PamTEVn/CpypNrZgRsSy5Gu8AoOw8qSzSmEZwc5/ebm2KqvOeAiC80yyokXjA51HT843/O/nqA2dUOWucsA==","shasum":"6e4faf2c2f7b9efcef7ec56a7fa4bc0a4d5d1310","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.0.tgz","fileCount":98,"unpackedSize":271391,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByVg8Grgib6nDCEmt14Px6DytuEBN6vwcwcyeYcR4kUAiBSbQbRoPGVc8lvGPmiyn26KJ+O1A5JoZwEVDdCcpyy2A=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.0_1519930715072_0.9927426417466072"},"_hasShrinkwrap":false},"1.6.0-beta.1":{"name":"@terminus/ngx-tools","version":"1.6.0-beta.1","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![NPM version][npm-version-image]][npm-url]\n[![Library size][file-size-badge]][raw-distribution-js]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n\nA collection of tools and utilities for Terminus (Angular/NGRX) applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n  - [Basic Commands](#basic-commands)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Test Helpers](#test-helpers)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributors](#contributors)\n- [Resources](#resources)\n- [Contributing](#contributing)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools --exact`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/edit/angular-ngx-tools-starter\n\n### Basic Commands\n\n| Command                  | Function                                                      |\n|--------------------------|---------------------------------------------------------------|\n| `build:lib`     | Build release                                                 |\n| `build:lib:sim` | Build release and start demo app in AoT                       |\n| `test:lib`               | Run unit tests                                                |\n| `test:lib:ci`            | Run unit tests and output coverage                            |\n| `start:lib:sim`          | Build release and start demo app in JiT                       |\n| `lib:sync`               | Sync configuration files (needed after any structural change) |\n| `lint:lib`               | Lint TS files and attempt to fix issues                       |\n| `lint:lib:ci`            | Lint TS files                                                 |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Library Structure\n\n\n| Import location                | Resources                                                                |\n|--------------------------------|--------------------------------------------------------------------------|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                                |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`, `emailRegex`..)                    |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchEvent`, `ElementRefMock`..)        |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types (`coerceBooleanProperty`..) |\n\n\n## Features\n\n\n### Basic Utilities\n\n**Import from:** `@terminus/ngx-tools`\n\n| Name                          | Description                                                         |\n|-------------------------------|---------------------------------------------------------------------|\n| `arrayContainsObject`         | Check if an object exists in an array                               |\n| `controlHasRequiredField`     | Check if an `AbstractControl` has a required validator              |\n| `debounce`                    | Provides a debounced function                                       |\n| `groupBy`                     | Return an object containing arrays split by property                |\n| `formGroupHasRequiredControl` | Check if a `FormGroup` contains a control with a required validator |\n| `isArray`                     | Check if value is an Array                                          |\n| `isBoolean`                   | Check if value is a Boolean                                         |\n| `isFunction`                  | Check if value is a function                                        |\n| `isObject`                    | Check if value is an Object                                         |\n| `isString`                    | Check if value is a String                                          |\n| `noop`                        | Placeholder function                                                |\n| `retryWithBackoff`            | Helper to retry an Observable stream (x) times                      |\n\n**Example:**\n\n```typescript\nimport {\n  groupBy,\n  isArray,\n} from '@terminus/ngx-tools';\n\nconst groupedArrays = groupBy(myArray, 'myProperty'); // {foo: [...], bar: [...]}\nconst isValidArray = isArray([]); // true\n```\n\n\n### Regex\n\n**Import from:** `@terminus/ngx-tools/regex`\n\n| Name              | Description                                                      |\n|-------------------|------------------------------------------------------------------|\n| `creditCardRegex` | Visa, MasterCard, American Express, Diners Club, Discover, JCB   |\n| `emailRegex`      | Any valid email                                                  |\n| `lettersRegex`    | Only English letters                                             |\n| `numbersRegex`    | Only numbers                                                     |\n| `passwordRegex`   | Between 6 and 100 characters, is a string, has at least 1 number |\n| `phoneRegex`      | Any valid US phone number                                        |\n| `postalRegex`     | Any valid US postal code                                         |\n| `urlRegex`        | Any valid URL (http/ftp/unicode/IP/etc)                          |\n\n**Example:**\n\n```typescript\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nconst isTrue = emailRegex.test('foo@bar.com');\n```\n\n\n### Test Helpers\n\n**Import from:** `@terminus/ngx-tools/testing`\n\n> **NOTE:** The three mocks currently do not work. They are currently being compiled during the\n> build process.\n\n| Name                    | Description                                                                                |\n|-------------------------|--------------------------------------------------------------------------------------------|\n| `ChangeDetectorRefMock` | A mock of the Angular `ChangeDetectorRefMock` class                                        |\n| `createFakeEvent`       | Creates a fake event object with any desired event type                                    |\n| `createKeyboardEvent`   | Dispatches a keydown event from an element                                                 |\n| `createMouseEvent`      | Creates a browser MouseEvent with the specified options                                    |\n| `createTouchEvent`      | Creates a browser TouchEvent with the specified pointer coordinates                        |\n| `dispatchEvent`         | Utility to dispatch any event on a Node                                                    |\n| `dispatchFakeEvent`     | Shorthand to dispatch a fake event on a specified node                                     |\n| `dispatchKeyboardEvent` | Shorthand to dispatch a keyboard event with a specified key code                           |\n| `dispatchMouseEvent`    | Shorthand to dispatch a mouse event on the specified coordinates                           |\n| `dispatchTouchEvent`    | Shorthand to dispatch a touch event on the specified coordinates                           |\n| `ElementRefMock`        | A mock of the Angular ElementRef class                                                     |\n| `expectNativeEl`        | Reusable expect statement to check for the nativeElement                                   |\n| `queryFor`              | Helper to query a fixture for a selector                                                   |\n| `rendererMock`          | A mock of the Angular Renderer                                                             |\n| `typeInElement`         | Focuses an input, sets it's value and dispatches the `input` event, simulating user typing |\n| `wrappedErrorMessage`   | Gets a RegExp used to detect an angular wrapped error message                              |\n\n**Example:**\n\n```typescript\nimport { ElementRefMock } from '@terminus/ngx-tools/testing';\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\nthis.directive = new MyDirective(\n  new ElementRefMock(),\n);\n\ndispatchFakeEvent(window, 'resize')\n```\n\n\n### Key Codes\n\n**Import from:** `@terminus/ngx-tools/keycodes`\n\n| Name          | Description |\n|---------------|-------------|\n| `UP_ARROW`    | Key code    |\n| `DOWN_ARROW`  | Key code    |\n| `RIGHT_ARROW` | Key code    |\n| `LEFT_ARROW`  | Key code    |\n| `PAGE_UP`     | Key code    |\n| `PAGE_DOWN`   | Key code    |\n| `HOME`        | Key code    |\n| `END`         | Key code    |\n| `ENTER`       | Key code    |\n| `SPACE`       | Key code    |\n| `TAB`         | Key code    |\n| `BACKSPACE`   | Key code    |\n| `DELETE`      | Key code    |\n| `A`           | Key code    |\n| `Z`           | Key code    |\n| `ZERO`        | Key code    |\n| `NINE`        | Key code    |\n| `COMMA`       | Key code    |\n\n**Example:**\n\n```typescript\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\n\nconst isTrue = DELETE === 46;\n```\n\n\n### Coercion\n\n**Import from:** `@terminus/ngx-tools/coercion`\n\n| Name                    | Description                                                                 |\n|-------------------------|-----------------------------------------------------------------------------|\n| `coerceArray`           | Wraps the provided value in an array, unless the provided value is an array |\n| `coerceBooleanProperty` | Coerces a data-bound value to a boolean                                     |\n| `coerceNumberProperty`  | Coerces a data-bound value to a number                                      |\n\n**Example:**\n\n```typescript\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\nconst isTrue: boolean = coerceBooleanProperty('foo');\n```\n\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Resources\n\n- [Angular Library Starter][library-starter]\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][dev-wiki]\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[file-size-badge]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js?compression=gzip\n[raw-distribution-js]: https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[library-starter]: https://github.com/shlomiassaf/angular-library-starter\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[dev-wiki]: https://github.com/GetTerminus/terminus-ui/wiki/Development-Workflow\n[package-json]: ./package.json\n","readmeFilename":"README.md","_id":"@terminus/ngx-tools@1.6.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-m4lPy5s0M91Dl2gx2T27EC1IbShbRJ4AflfXM+Xxgh1IG31ZtKFMx1islTE5aDirQiNay1/xFkKQLRkNFzlDEA==","shasum":"491652e4ed7ee93ce7c4d2bddba4e1cc384b7668","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.0-beta.1.tgz","fileCount":100,"unpackedSize":284174,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEKzkzC8Qepk2Ht1rKgXXcl2NeuSs0VqW3mSQRze/nneAiASEdbnE/HmB7L3CzRpgomEz9nWdl0qmGdNTRirh0fTow=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.0-beta.1_1519947863302_0.39433674644096195"},"_hasShrinkwrap":false},"1.6.1":{"name":"@terminus/ngx-tools","version":"1.6.1","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.6.1","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-l3C6jSN4OG1AmBC245+SCI8x0XK1/6UB4mfTXtfpDAwm4frDmzH0wevtS3TVEZfKzsDaAtUBhQkC2M3sb4S3lw==","shasum":"70da532498f4daf971c3c986789b3b1c21c5e151","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.1.tgz","fileCount":100,"unpackedSize":284071,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTXey7LzRJtgzZdu361xDBtI558xDcJq8yG214CCoUbgIhAOccVqIWkYgE8FRKQAHuF9iAovwVRXlbfJKy9BAagLDp"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.1_1519954321836_0.6246255513875221"},"_hasShrinkwrap":false},"1.6.2":{"name":"@terminus/ngx-tools","version":"1.6.2","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.6.2","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-obvm3nkwVcRw9E0EXi3/yxfr5ZbfN4DrJVvwbZ8pDpp4Hd0FUm0sdP5xgF9Z2boGjleNjWIV0+0voELjqD2UYw==","shasum":"fbfde02d77cbf7015ee2855f60f46e93b6d5763f","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.2.tgz","fileCount":100,"unpackedSize":284009,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhvXCOuDTTIoSRQEmepIxIc5lUJ2IMOlWts0tIaEm6JAiAxSWoac5HnmdrZlNYx5sr7a3FIMqv7VAK1zmlbu6ReKQ=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.2_1519999383286_0.24260498666171082"},"_hasShrinkwrap":false},"1.6.2-alpha.1":{"name":"@terminus/ngx-tools","version":"1.6.2-alpha.1","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![NPM version][npm-version-image]][npm-url]\n[![Library size][file-size-badge]][raw-distribution-js]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n\nA collection of tools and utilities for Terminus (Angular/NGRX) applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n  - [Basic Commands](#basic-commands)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Test Helpers](#test-helpers)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributors](#contributors)\n- [Resources](#resources)\n- [Contributing](#contributing)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools --exact`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/edit/angular-ngx-tools-starter\n\n### Basic Commands\n\n| Command                  | Function                                                      |\n|--------------------------|---------------------------------------------------------------|\n| `build:lib`     | Build release                                                 |\n| `build:lib:sim` | Build release and start demo app in AoT                       |\n| `test:lib`               | Run unit tests                                                |\n| `test:lib:ci`            | Run unit tests and output coverage                            |\n| `start:lib:sim`          | Build release and start demo app in JiT                       |\n| `lib:sync`               | Sync configuration files (needed after any structural change) |\n| `lint:lib`               | Lint TS files and attempt to fix issues                       |\n| `lint:lib:ci`            | Lint TS files                                                 |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Library Structure\n\n\n| Import location                | Resources                                                                |\n|--------------------------------|--------------------------------------------------------------------------|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                                |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`, `emailRegex`..)                    |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchEvent`, `ElementRefMock`..)        |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types (`coerceBooleanProperty`..) |\n\n\n## Features\n\n\n### Basic Utilities\n\n**Import from:** `@terminus/ngx-tools`\n\n| Name                          | Description                                                         |\n|-------------------------------|---------------------------------------------------------------------|\n| `arrayContainsObject`         | Check if an object exists in an array                               |\n| `controlHasRequiredField`     | Check if an `AbstractControl` has a required validator              |\n| `debounce`                    | Provides a debounced function                                       |\n| `groupBy`                     | Return an object containing arrays split by property                |\n| `formGroupHasRequiredControl` | Check if a `FormGroup` contains a control with a required validator |\n| `isArray`                     | Check if value is an Array                                          |\n| `isBoolean`                   | Check if value is a Boolean                                         |\n| `isFunction`                  | Check if value is a function                                        |\n| `isObject`                    | Check if value is an Object                                         |\n| `isString`                    | Check if value is a String                                          |\n| `noop`                        | Placeholder function                                                |\n| `retryWithBackoff`            | Helper to retry an Observable stream (x) times                      |\n\n**Example:**\n\n```typescript\nimport {\n  groupBy,\n  isArray,\n} from '@terminus/ngx-tools';\n\nconst groupedArrays = groupBy(myArray, 'myProperty'); // {foo: [...], bar: [...]}\nconst isValidArray = isArray([]); // true\n```\n\n\n### Regex\n\n**Import from:** `@terminus/ngx-tools/regex`\n\n| Name              | Description                                                      |\n|-------------------|------------------------------------------------------------------|\n| `creditCardRegex` | Visa, MasterCard, American Express, Diners Club, Discover, JCB   |\n| `emailRegex`      | Any valid email                                                  |\n| `lettersRegex`    | Only English letters                                             |\n| `numbersRegex`    | Only numbers                                                     |\n| `passwordRegex`   | Between 6 and 100 characters, is a string, has at least 1 number |\n| `phoneRegex`      | Any valid US phone number                                        |\n| `postalRegex`     | Any valid US postal code                                         |\n| `urlRegex`        | Any valid URL (http/ftp/unicode/IP/etc)                          |\n\n**Example:**\n\n```typescript\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nconst isTrue = emailRegex.test('foo@bar.com');\n```\n\n\n### Test Helpers\n\n**Import from:** `@terminus/ngx-tools/testing`\n\n> **NOTE:** The three mocks currently do not work. They are currently being compiled during the\n> build process.\n\n| Name                    | Description                                                                                |\n|-------------------------|--------------------------------------------------------------------------------------------|\n| `ChangeDetectorRefMock` | A mock of the Angular `ChangeDetectorRefMock` class                                        |\n| `createFakeEvent`       | Creates a fake event object with any desired event type                                    |\n| `createKeyboardEvent`   | Dispatches a keydown event from an element                                                 |\n| `createMouseEvent`      | Creates a browser MouseEvent with the specified options                                    |\n| `createTouchEvent`      | Creates a browser TouchEvent with the specified pointer coordinates                        |\n| `dispatchEvent`         | Utility to dispatch any event on a Node                                                    |\n| `dispatchFakeEvent`     | Shorthand to dispatch a fake event on a specified node                                     |\n| `dispatchKeyboardEvent` | Shorthand to dispatch a keyboard event with a specified key code                           |\n| `dispatchMouseEvent`    | Shorthand to dispatch a mouse event on the specified coordinates                           |\n| `dispatchTouchEvent`    | Shorthand to dispatch a touch event on the specified coordinates                           |\n| `ElementRefMock`        | A mock of the Angular ElementRef class                                                     |\n| `expectNativeEl`        | Reusable expect statement to check for the nativeElement                                   |\n| `queryFor`              | Helper to query a fixture for a selector                                                   |\n| `rendererMock`          | A mock of the Angular Renderer                                                             |\n| `typeInElement`         | Focuses an input, sets it's value and dispatches the `input` event, simulating user typing |\n| `wrappedErrorMessage`   | Gets a RegExp used to detect an angular wrapped error message                              |\n\n**Example:**\n\n```typescript\nimport { ElementRefMock } from '@terminus/ngx-tools/testing';\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\nthis.directive = new MyDirective(\n  new ElementRefMock(),\n);\n\ndispatchFakeEvent(window, 'resize')\n```\n\n\n### Key Codes\n\n**Import from:** `@terminus/ngx-tools/keycodes`\n\n| Name          | Description |\n|---------------|-------------|\n| `UP_ARROW`    | Key code    |\n| `DOWN_ARROW`  | Key code    |\n| `RIGHT_ARROW` | Key code    |\n| `LEFT_ARROW`  | Key code    |\n| `PAGE_UP`     | Key code    |\n| `PAGE_DOWN`   | Key code    |\n| `HOME`        | Key code    |\n| `END`         | Key code    |\n| `ENTER`       | Key code    |\n| `SPACE`       | Key code    |\n| `TAB`         | Key code    |\n| `BACKSPACE`   | Key code    |\n| `DELETE`      | Key code    |\n| `A`           | Key code    |\n| `Z`           | Key code    |\n| `ZERO`        | Key code    |\n| `NINE`        | Key code    |\n| `COMMA`       | Key code    |\n\n**Example:**\n\n```typescript\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\n\nconst isTrue = DELETE === 46;\n```\n\n\n### Coercion\n\n**Import from:** `@terminus/ngx-tools/coercion`\n\n| Name                    | Description                                                                 |\n|-------------------------|-----------------------------------------------------------------------------|\n| `coerceArray`           | Wraps the provided value in an array, unless the provided value is an array |\n| `coerceBooleanProperty` | Coerces a data-bound value to a boolean                                     |\n| `coerceNumberProperty`  | Coerces a data-bound value to a number                                      |\n\n**Example:**\n\n```typescript\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\nconst isTrue: boolean = coerceBooleanProperty('foo');\n```\n\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Resources\n\n- [Angular Library Starter][library-starter]\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][dev-wiki]\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[file-size-badge]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js?compression=gzip\n[raw-distribution-js]: https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[library-starter]: https://github.com/shlomiassaf/angular-library-starter\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[dev-wiki]: https://github.com/GetTerminus/terminus-ui/wiki/Development-Workflow\n[package-json]: ./package.json\n","readmeFilename":"README.md","_id":"@terminus/ngx-tools@1.6.2-alpha.1","_npmVersion":"5.6.0","_nodeVersion":"8.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-8IpW9XmX/7ASeiN2ONDDJDAlbEb0YtVjFaNRCAc3v3GPgPoP6oVQ0cnXek+zM5MmZxxJIecyqmsftkPK/ltH2Q==","shasum":"5c08c4fda5e0c98403f54c8fce9964db4bb4f686","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.2-alpha.1.tgz","fileCount":100,"unpackedSize":285593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIElbDPzkcH6CeYEnLjxDUb/RJsSRMuY6Tl7iKUkDFhLtAiEAoncW1nrZSbuecvOGYLW8HGdi5zNINphxlzWIhnnZrN8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.2-alpha.1_1520622238706_0.024061086738944137"},"_hasShrinkwrap":false},"1.6.3":{"name":"@terminus/ngx-tools","version":"1.6.3","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.6.3","_npmVersion":"5.6.0","_nodeVersion":"9.7.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-GiB0jojiTRXhK7O3vN97QBvfJNQ+IuVJZsU1kOmwG5UsMBxJoHsXY4ibXtx6t+Z2MxW+BRkVjj/m3TK+B9CMeQ==","shasum":"2cbfeff401e7c696fcb3543c0ae061f247457370","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.3.tgz","fileCount":100,"unpackedSize":285834,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEymUpU1k93KPJoTW6XyqcOvzIRh2mzz7gqKAT/j1A+wIgZXQ1+rE/nX9Z9QAoCIZCCRmfgN9KoKRnqwe5Imas8EQ="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.3_1520623487554_0.9724038766974543"},"_hasShrinkwrap":false},"1.6.4":{"name":"@terminus/ngx-tools","version":"1.6.4","description":"A set of TypeScript utilities used by Terminus","keywords":["angular","webpack","typescript"],"author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","license":"MIT","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"lint-staged":{"src/**/ngx-tools/**/*.ts":["lint:lib","git add"]},"config":{"loglevel":"verbose","commitizen":{"path":"./node_modules/cz-customizable"},"cz-customizable":{"config":"./config/cz-config.js"}},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./scripts/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist_package/@terminus/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"main":"bundle/ngx-tools.umd.js","module":"bundle/ngx-tools.es5.js","es2015":"bundle/ngx-tools.js","typings":"src/ngx-tools.ng-flat.d.ts","metadata":"src/ngx-tools.ng-flat.metadata.json","_id":"@terminus/ngx-tools@1.6.4","_npmVersion":"5.6.0","_nodeVersion":"9.7.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Sn1Z38JpRk7RNjHaabBSzC4SxYqgp6thtzvOKqz/oGserpW8Aol2ZzvYLZCdgAyoSMxpf7vnXpPI/afnmPwANQ==","shasum":"e4cdd5c02dc066e2e5a43338aefdc90084797c24","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.4.tgz","fileCount":100,"unpackedSize":285912,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGl8UND7sAzrsJIjQIxy34lOtAWf6Rr0p+P0LxHb37LOAiEAvy28TeHonTkDl1lI/GoL3As9D+GWzB5Yw6NISTF10yU="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.4_1520624386340_0.10288702169344743"},"_hasShrinkwrap":false},"1.6.4-beta.1":{"name":"@terminus/ngx-tools","version":"1.6.4-beta.1","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"license":"MIT","peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"readme":"ERROR: No README data found!","homepage":"https://github.com/GetTerminus/ngx-tools#readme","_id":"@terminus/ngx-tools@1.6.4-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-vx5PHOWnk+truA1dIPhVUeCNb9k4A6H99H3WkJpE4sPTnv604vutw6dnkZHViNqstv0zCMWrU5Xtv4VtZ+MoXA==","shasum":"87de9ce99ca2a5ba8201810ec29f96cd1fb4fffe","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.4-beta.1.tgz","fileCount":99,"unpackedSize":295041,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAKjkUlwiPI08ElEwD+m1BZpOXTnKpybS06zUXUtfBuXAiEAv0hAVqYbCfkgeMyUKggPuoJnacHjGmMPad2M/eshDIo="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.4-beta.1_1520863367110_0.6101272369853876"},"_hasShrinkwrap":false},"1.6.4-beta.2":{"name":"@terminus/ngx-tools","version":"1.6.4-beta.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![NPM version][npm-version-image]][npm-url]\n[![Library size][file-size-badge]][raw-distribution-js]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n\nA collection of tools and utilities for Terminus (Angular/NGRX) applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n  - [Basic Commands](#basic-commands)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Test Helpers](#test-helpers)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributors](#contributors)\n- [Resources](#resources)\n- [Contributing](#contributing)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools --exact`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/edit/angular-ngx-tools-starter\n\n### Basic Commands\n\n| Command                  | Function                                                      |\n|--------------------------|---------------------------------------------------------------|\n| `build:lib`     | Build release                                                 |\n| `build:lib:sim` | Build release and start demo app in AoT                       |\n| `test:lib`               | Run unit tests                                                |\n| `test:lib:ci`            | Run unit tests and output coverage                            |\n| `start:lib:sim`          | Build release and start demo app in JiT                       |\n| `lib:sync`               | Sync configuration files (needed after any structural change) |\n| `lint:lib`               | Lint TS files and attempt to fix issues                       |\n| `lint:lib:ci`            | Lint TS files                                                 |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Library Structure\n\n\n| Import location                | Resources                                                                |\n|--------------------------------|--------------------------------------------------------------------------|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                                |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`, `emailRegex`..)                    |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchEvent`, `ElementRefMock`..)        |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types (`coerceBooleanProperty`..) |\n\n\n## Features\n\n\n### Basic Utilities\n\n**Import from:** `@terminus/ngx-tools`\n\n| Name                          | Description                                                           |\n|-------------------------------|-----------------------------------------------------------------------|\n| `arrayContainsObject`         | Check if an object exists in an array                                 |\n| `debounce`                    | Provides a debounced function                                         |\n| `groupBy`                     | Return an object containing arrays split by property                  |\n| `hasRequiredControl`          | Check if an `AbstractControl` or `FormGroup` has a required validator |\n| `isArray`                     | Check if value is an Array                                            |\n| `isBoolean`                   | Check if value is a Boolean                                           |\n| `isFunction`                  | Check if value is a function                                          |\n| `isObject`                    | Check if value is an Object                                           |\n| `isString`                    | Check if value is a String                                            |\n| `noop`                        | Placeholder function                                                  |\n| `retryWithBackoff`            | Helper to retry an Observable stream (x) times                        |\n\n**Example:**\n\n```typescript\nimport {\n  groupBy,\n  isArray,\n} from '@terminus/ngx-tools';\n\nconst groupedArrays = groupBy(myArray, 'myProperty'); // {foo: [...], bar: [...]}\nconst isValidArray = isArray([]); // true\n```\n\n\n### Regex\n\n**Import from:** `@terminus/ngx-tools/regex`\n\n| Name              | Description                                                      |\n|-------------------|------------------------------------------------------------------|\n| `creditCardRegex` | Visa, MasterCard, American Express, Diners Club, Discover, JCB   |\n| `emailRegex`      | Any valid email                                                  |\n| `lettersRegex`    | Only English letters                                             |\n| `numbersRegex`    | Only numbers                                                     |\n| `passwordRegex`   | Between 6 and 100 characters, is a string, has at least 1 number |\n| `phoneRegex`      | Any valid US phone number                                        |\n| `postalRegex`     | Any valid US postal code                                         |\n| `urlRegex`        | Any valid URL (http/ftp/unicode/IP/etc)                          |\n\n**Example:**\n\n```typescript\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nconst isTrue = emailRegex.test('foo@bar.com');\n```\n\n\n### Test Helpers\n\n**Import from:** `@terminus/ngx-tools/testing`\n\n> **NOTE:** The three mocks currently do not work. They are currently being compiled during the\n> build process.\n\n| Name                    | Description                                                                                |\n|-------------------------|--------------------------------------------------------------------------------------------|\n| `ChangeDetectorRefMock` | A mock of the Angular `ChangeDetectorRefMock` class                                        |\n| `createFakeEvent`       | Creates a fake event object with any desired event type                                    |\n| `createKeyboardEvent`   | Dispatches a keydown event from an element                                                 |\n| `createMouseEvent`      | Creates a browser MouseEvent with the specified options                                    |\n| `createTouchEvent`      | Creates a browser TouchEvent with the specified pointer coordinates                        |\n| `dispatchEvent`         | Utility to dispatch any event on a Node                                                    |\n| `dispatchFakeEvent`     | Shorthand to dispatch a fake event on a specified node                                     |\n| `dispatchKeyboardEvent` | Shorthand to dispatch a keyboard event with a specified key code                           |\n| `dispatchMouseEvent`    | Shorthand to dispatch a mouse event on the specified coordinates                           |\n| `dispatchTouchEvent`    | Shorthand to dispatch a touch event on the specified coordinates                           |\n| `ElementRefMock`        | A mock of the Angular ElementRef class                                                     |\n| `expectNativeEl`        | Reusable expect statement to check for the nativeElement                                   |\n| `queryFor`              | Helper to query a fixture for a selector                                                   |\n| `rendererMock`          | A mock of the Angular Renderer                                                             |\n| `typeInElement`         | Focuses an input, sets it's value and dispatches the `input` event, simulating user typing |\n| `wrappedErrorMessage`   | Gets a RegExp used to detect an angular wrapped error message                              |\n\n**Example:**\n\n```typescript\nimport { ElementRefMock } from '@terminus/ngx-tools/testing';\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\nthis.directive = new MyDirective(\n  new ElementRefMock(),\n);\n\ndispatchFakeEvent(window, 'resize')\n```\n\n\n### Key Codes\n\n**Import from:** `@terminus/ngx-tools/keycodes`\n\n| Name          | Description |\n|---------------|-------------|\n| `UP_ARROW`    | Key code    |\n| `DOWN_ARROW`  | Key code    |\n| `RIGHT_ARROW` | Key code    |\n| `LEFT_ARROW`  | Key code    |\n| `PAGE_UP`     | Key code    |\n| `PAGE_DOWN`   | Key code    |\n| `HOME`        | Key code    |\n| `END`         | Key code    |\n| `ENTER`       | Key code    |\n| `SPACE`       | Key code    |\n| `TAB`         | Key code    |\n| `BACKSPACE`   | Key code    |\n| `DELETE`      | Key code    |\n| `A`           | Key code    |\n| `Z`           | Key code    |\n| `ZERO`        | Key code    |\n| `NINE`        | Key code    |\n| `COMMA`       | Key code    |\n\n**Example:**\n\n```typescript\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\n\nconst isTrue = DELETE === 46;\n```\n\n\n### Coercion\n\n**Import from:** `@terminus/ngx-tools/coercion`\n\n| Name                    | Description                                                                 |\n|-------------------------|-----------------------------------------------------------------------------|\n| `coerceArray`           | Wraps the provided value in an array, unless the provided value is an array |\n| `coerceBooleanProperty` | Coerces a data-bound value to a boolean                                     |\n| `coerceNumberProperty`  | Coerces a data-bound value to a number                                      |\n\n**Example:**\n\n```typescript\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\nconst isTrue: boolean = coerceBooleanProperty('foo');\n```\n\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Resources\n\n- [Angular Library Starter][library-starter]\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][dev-wiki]\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[file-size-badge]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js?compression=gzip\n[raw-distribution-js]: https://unpkg.com/@terminus/ngx-tools/bundle/ngx-tools.umd.min.js\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[library-starter]: https://github.com/shlomiassaf/angular-library-starter\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[dev-wiki]: https://github.com/GetTerminus/terminus-ui/wiki/Development-Workflow\n[package-json]: ./package.json\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@1.6.4-beta.2","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-/pWpcd76/NTedtFkIVGH4WLVRsWefVKRq1NHFvMg6x4ZzdcQt0HUYqkKoR9i5SuVooNw7Ry0gazb/YoBh1FSEw==","shasum":"8e32b545cb448040d0484fe9ded476aee3c71421","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-1.6.4-beta.2.tgz","fileCount":100,"unpackedSize":309672,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWBotx4IUHOKCPLkZRSLwLOvhU2lTQnxBh0F+e/W21SwIhAMd4KN/LeELargoJVvDdKJ3GtZuYrm8VRwDYr5Yv5yy8"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_1.6.4-beta.2_1520900634424_0.31164458455299404"},"_hasShrinkwrap":false},"2.0.0":{"name":"@terminus/ngx-tools","version":"2.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-aoKsGt64C+s3fAGc7+RuxbOmRJPts53qY560rAhuD/RYtAUrIVHdg/9zFfoC/bXQ+WF614ZqqlHE2x2NUSbK2w==","shasum":"d69348837c4df225ffbe69eb7d28289d1df5777f","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.0.0.tgz","fileCount":100,"unpackedSize":309593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIqyr0vGuagSCnuSytA1rwMRus33Psjxt0uerGrdNM1QIhAPClcxJviYmL4nHLG41jXr+sNmt4Q3ok93jl7+GZXp9G"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.0.0_1520905465816_0.7824228819072825"},"_hasShrinkwrap":false},"2.1.0":{"name":"@terminus/ngx-tools","version":"2.1.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-TOeRVP1timMqzCzsoG40SJ613Eer3o84JelQrbPeURxaB7eTI9MVWv29K5UHSZUht4BPO9oZDIW3564ROpQ8pg==","shasum":"48f18d3cb307b1c0d03d2e5ad2c3b26970aadd01","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.1.0.tgz","fileCount":102,"unpackedSize":320322,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4fQyFtwAdaWpErV21LwTbF66Ng1TSPZYEA3+EnI3QgQIhAPGUQIlbQGXp4Jq3iah0jcM72Ev0c3bDu9Iz9Pm7n6ur"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.1.0_1520911195687_0.6903988553539502"},"_hasShrinkwrap":false},"2.2.0":{"name":"@terminus/ngx-tools","version":"2.2.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-1x1TbPH7qeQjxQvYCY8XT0a/Vqp7fvvhX9e8eXhbbmeZAjqsI4ZzupTGqTl87s1iJBrb55Dg41Irj0swfkID9g==","shasum":"8745adc9e8d0453630306a40ebf285c2128e89cf","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.2.0.tgz","fileCount":103,"unpackedSize":328271,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJaSEcWXlKBUcet0cCRgKaWYAPu9WOoOHzxaPuUgwMhAIgE3QpeD7UH1Ty6tc94FrTKaZcu7O2OvF6m5IlVivxp4Q="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.2.0_1520948414229_0.2924541362046875"},"_hasShrinkwrap":false},"2.3.0":{"name":"@terminus/ngx-tools","version":"2.3.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-JYuUZze0sD3IWkwTIq7TQeRlQ1bLsZNGOZ+iAJQYUwQYYRlaeYd7NiF6Yu6lDt9pFjaesxa0AxIg9ByisdvXSw==","shasum":"7b134f4c24c1fbd62ee765d9c50332fb888c8543","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.3.0.tgz","fileCount":104,"unpackedSize":335742,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICujNdKsevkBDQyhVQQCJba1l8RkIOt+qVN++nbqcg70AiEAqwe/lg5NQ28jVXR6zAzDaWW8+bvjvqfB9bo45+ZVmmc="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.3.0_1520955213153_0.7978287910071258"},"_hasShrinkwrap":false},"2.3.1":{"name":"@terminus/ngx-tools","version":"2.3.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.3.1","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-OheDiQBLCf4rHm70YsqSSyDk3THVZFlQQoPE5B8YzfAr6dljuCW9w21Nh7CltQO9ERa6KCn3s8NsO7xxk7w0fg==","shasum":"d4beb72cb4592e1db1ea16ee518b0af69dbaf317","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.3.1.tgz","fileCount":104,"unpackedSize":345079,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIN7MEtrSR3lruEm3Dfu0YH0iQJWrERyIdbJ9JTMtHIAiAe5oCI8ymYElHpn9OyvXsP4TN24bOIstyJiOAR8ZT7pA=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.3.1_1521155891225_0.3740496189762992"},"_hasShrinkwrap":false},"2.3.2":{"name":"@terminus/ngx-tools","version":"2.3.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.3.2","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-czU7gVthzrBOqn4/xEgsS/r8XpunS/Bgjiy7QUExI3Ob/4EwxB7Xlkmj0oL84u7HTx9qkZvtPY5gzwfPNXHXiQ==","shasum":"6ac52d5688f8af1b0cdd2c621e3086957acff9a9","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.3.2.tgz","fileCount":105,"unpackedSize":350415,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTPqD6D4lY3Vlwkl5QQ1MIdcRbwD217LXnMKD+tFO0pQIhAJ146+Wr67OIvivtrvm0ybjOC5kYDL1huZNNqkyycSbC"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.3.2_1521158241272_0.6866348750575322"},"_hasShrinkwrap":false},"2.3.2-beta.1":{"name":"@terminus/ngx-tools","version":"2.3.2-beta.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command     | Function                                        |\n|-------------|-------------------------------------------------|\n| `build`     | Build release                                   |\n| `test`      | Run unit tests                                  |\n| `test:ci`   | Run unit tests and output coverage              |\n| `start:app` | Start demo project                              |\n| `lint`      | Lint TS library files and attempt to fix issues |\n| `lint:ci`   | Lint TS library files                           |\n| `docs`      | Update library documentation                    |\n| `cm`        | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.3.2-beta.1","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-nIlGXpfuOrKwY7pL3h3iy3+E/UA919rNEKjBFSM3THVF25phc5379RjNY6MgNiD7Yt1yr21h3IiKD3HGrNL4/A==","shasum":"4a25e0510e8793a64667f4ac573596f1ddcfb210","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.3.2-beta.1.tgz","fileCount":105,"unpackedSize":339063,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+LTQNRpu6HK1v8AHijGluXlVyVGlF0wzIGTM/lGsXAQIgQVewOh1stK8QvTSt2BCfrFmsT4IC0LypeUnrrOalYQA="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.3.2-beta.1_1521554859408_0.7182004476447919"},"_hasShrinkwrap":false},"2.3.3":{"name":"@terminus/ngx-tools","version":"2.3.3","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.3.3","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-v26Nhh7dt4xFFmRZyCFp0y2NKgwoFSih4SO8UL0Lxu12lH+RMe3iXD5IB7Ffe5P+H9+DY3H5ZdCAt8Mft5Ai9A==","shasum":"8cf0a4e71b9f39267adf94400ef5988b2bdb7fac","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.3.3.tgz","fileCount":105,"unpackedSize":338948,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVOuDzgWjwXx/bHqhkmjfRphgTsLKatutr27+eAJ2oXAIhAIYf1cfHWsn5XChPnXZQBOLLNhq43viZlqQtkfy6bMBj"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.3.3_1521559662006_0.09294702379615671"},"_hasShrinkwrap":false},"2.4.0":{"name":"@terminus/ngx-tools","version":"2.4.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-2zKl3V91qUY0GEDCLW/aN7kCUm6bqEjPt9rtrJ99O/Ppt8VjNxamfyVJ3uHqkvaVfyfH8eCmgAY69ewwXAN1qQ==","shasum":"279de6a28afeb5b56b28f596d8ce9c2233c60455","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.4.0.tgz","fileCount":105,"unpackedSize":338954,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7uGSDlmwWSXabmzl/SJJ9UkR2mBaGHQbIQ9nw8SfELgIgaQ6ryW7rzH7IQvEpJtj+uGeTVt+Dom3Vp/VcryjXoBs="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.4.0_1522180536876_0.2599603888117752"},"_hasShrinkwrap":false},"2.4.1":{"name":"@terminus/ngx-tools","version":"2.4.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.4.1","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-weZiyv5+8oYrdXKIqUcuGmUUEtGths9t0IGrdYRE+ldMakAf9CFnN2kF5eGzJOc1pteb2GGQvXmU28MPTL5PtQ==","shasum":"008773aa99c4bbfa7ce8f41f2474fdb924e61695","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.4.1.tgz","fileCount":106,"unpackedSize":343759,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBrG6tKQJo86g9qGq0q/frVvVyuyuvINfAfcEvtkxtXcAiEAjxItXA7KInEmJiEIw+9IJ+OPMxZmUg5nstyQVqYLYyM="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.4.1_1522181122023_0.17277534694859864"},"_hasShrinkwrap":false},"2.5.0":{"name":"@terminus/ngx-tools","version":"2.5.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-vRwOphoboCKdmllUrd+D0CroarjvmcQQHKcY/YE9hN1iY/FLZXAATvYGHz4OMzp/fRmsPglUcyebuwUUQmLFZg==","shasum":"356d3718923e23bc04a2434ed445199b53c02211","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.5.0.tgz","fileCount":107,"unpackedSize":347716,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2Q5tBQxNwW68MYh+9gFqxIULMEzbZuz7JblNYRUOJ7AiEA0UqXQW6HcuV2nSSyegpWMJPZeRtLupBjuEhuSkrua8Q="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.5.0_1522333095360_0.8551536159664239"},"_hasShrinkwrap":false},"2.6.0":{"name":"@terminus/ngx-tools","version":"2.6.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.6.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-j19u0D1lZ9wdbcjDbVpeFac07lhDGQCHUIZySKNly6gyl5uiZ/QMjyOq8uQBubV/+p1uxk/F7QnoXI1ib+y1dA==","shasum":"6d8885b5aa06f895ce796d87f01844b6e8fd6fe6","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.6.0.tgz","fileCount":108,"unpackedSize":350877,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHDnE6+MGOKl4p16cRzRvq74/BDqA2LLsTDkIF9Ha0RIAiEAuynjf0Q6o6t7/bIOs6uVCOvlJiqGA+w18XHMLhWzK2Q="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.6.0_1522341112375_0.5302676625432134"},"_hasShrinkwrap":false},"2.7.0":{"name":"@terminus/ngx-tools","version":"2.7.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.7.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-/gZVKOZBfBi6nS0wje2wDpo6WSoDruvMzDkZWDGu78rV0sGyrjiMqsrk22uLYo8xvyLM+CNB1NknhPVhMNeMrw==","shasum":"97be39557d77ea0a5c497dd0772e53821b84bef0","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.7.0.tgz","fileCount":109,"unpackedSize":355646,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICnLFGIKw8LMqwo5fHQQ38Yyy5LFrnuqPr9RDK97UsTtAiEAtLXDxccHFAe1rvmwU2UFaGuJ5Vd5ia8+qy3RQvS47To="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.7.0_1522345275230_0.2580093083210213"},"_hasShrinkwrap":false},"2.8.0":{"name":"@terminus/ngx-tools","version":"2.8.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.8.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-sunp2SVUgeUstmBi3r11OjNNmUQ0ejRzNO5MqdQ9BIH38nidgvfH89qqBUN/1ab2aHtPk3K6v9JaMs7uQcQaRA==","shasum":"2f65d0de11ed38f35e05c1b24ff8b1bbf5b5594b","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.8.0.tgz","fileCount":110,"unpackedSize":360585,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnu3vE+DNDCcmwyZcSSelM/h7CHPx+ZYfhGta64s0JjQIgApJeuHBgqa8fFKSUL/1lPmWmR/vMYkO6Sf/dluwdrF8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.8.0_1522351249863_0.05465883618147438"},"_hasShrinkwrap":false},"2.9.0":{"name":"@terminus/ngx-tools","version":"2.9.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.9.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-YnxFZu4HgkvhSs25dUem7oMCjY9fOzQjnDGr5VXPc8BcXKgrjGFi5wx3+VqnNohMOO8tcMTjLfcYxOD38Om1EA==","shasum":"22c3210f151c3b26073d1d8b31ad64f053b51fad","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.9.0.tgz","fileCount":111,"unpackedSize":382906,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICWfxP00+RnfX27gxV7R0Yd1mR51q0GyPdlz0cfKAA92AiAPLVfoKjmYjuUyK6kM5KkYutMkH1QUnt6uNkNW/C5sKw=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.9.0_1522439774504_0.979266488893735"},"_hasShrinkwrap":false},"2.9.0-beta.1":{"name":"@terminus/ngx-tools","version":"2.9.0-beta.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command     | Function                                        |\n|-------------|-------------------------------------------------|\n| `build`     | Build release                                   |\n| `test`      | Run unit tests                                  |\n| `test:ci`   | Run unit tests and output coverage              |\n| `start:app` | Start demo project                              |\n| `lint`      | Lint TS library files and attempt to fix issues |\n| `lint:ci`   | Lint TS library files                           |\n| `docs`      | Update library documentation                    |\n| `cm`        | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.9.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-l0Mf8iKFXZQJPPGE8re+jZxbWFlBuO5WQTPEz4hdkLesvqBWZpdpBb4vUozW5rJDPtf0cem/g1pRYgYTbiIA+A==","shasum":"ce12d02ca8ecdb4f8fb96b728029958731cc6db7","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.9.0-beta.1.tgz","fileCount":112,"unpackedSize":392616,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJERqEBJwheNBbBaQ4wrUfiY/gd2ooDU1T/5XLrJ4ETAiAQLqaVaj5lahp9K5o28xFbI8aIodbXy98KijRu2DPOKQ=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.9.0-beta.1_1522678073897_0.918200301136745"},"_hasShrinkwrap":false},"2.10.0":{"name":"@terminus/ngx-tools","version":"2.10.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.10.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-scF0tMDxZgp2smpWpja55nhFnwufqDw/j6+rb8w/xsDGAOngkON9/EGjr6+u8t6t6rsU6g/MHDReNpUW6mbDWw==","shasum":"7aaef0a817c2bd06dea4cb37e2149e23ee5a6724","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.10.0.tgz","fileCount":112,"unpackedSize":392511,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVnhFsiewQ/aVj4xvtnEBKasLXH+jMhy8AvWAHFZfYVAiEApM9TQnCI0QR/HujoyPDuqRyVWP+vOGfln7E7THIziE8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.10.0_1522683211070_0.5009247871997837"},"_hasShrinkwrap":false},"2.11.0":{"name":"@terminus/ngx-tools","version":"2.11.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.11.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-HR3h/lwjnOuSAc80Bw0dPz8Qqab84Gx1/dDuzZhHADYT3nKIJsSRuowaHssqcrbMrcWuEjj8/dJOA5j3lrYcHw==","shasum":"c90ac6b8ca75b21aaf039a80fbf497313e207164","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.11.0.tgz","fileCount":113,"unpackedSize":400869,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDj8/D1R72VjbrsuTQXsOm+VRYRAZ/U5KXo/2WokACqMAIgVgd5MUu34HXQzv64PbiPe+uKAV4Xc/3sljB14uJ6/9Q="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.11.0_1522847877475_0.2773291334205674"},"_hasShrinkwrap":false},"2.12.0":{"name":"@terminus/ngx-tools","version":"2.12.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.0.0","@angular/common":"^5.0.0","@ngrx/store":"^5.2.0","typescript":"^2.6.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.12.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-9ZgN6Ev9w7kfXWemaYF5k+bPKuMDIwBtq12d1RU76q530sUOBcgmXpsLsVYZZNBDEF3VSYJVp5HVFm9Iowxe3g==","shasum":"07c0d0f1b50a2c278eccca1c7d1cba069a275868","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.12.0.tgz","fileCount":114,"unpackedSize":407111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYVKZbrngCydsmtJbU/uLY+4WtzQ3Ieyxciew+bWYLIAiEA1UbWK4UzLM775puMOzX7xtUExLG6pDCgr1SbValU4Eg="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.12.0_1522872404990_0.9255277592349529"},"_hasShrinkwrap":false},"2.12.1":{"name":"@terminus/ngx-tools","version":"2.12.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.12.1","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-uOXdLPAhGvE4dMz8lVGEoyUHF67Km0HXZrf7SdLP6Ni9V0h44VY7LkiBWR1Q/1TGeBeGLuXx1zrNGlv9Ql+/cg==","shasum":"4e5bb32b96b7dc38c8161b61b56366ff887d28b3","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.12.1.tgz","fileCount":118,"unpackedSize":416288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFnB3JeMVL2kVknKhCGoO5lYORWUoi9+P9sBhMhmDfIgIhANm95AZzslaJIc9g5gdYuqypqjDQlkV4VfJEo6qQ2UIY"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.12.1_1522873855568_0.13244910037432933"},"_hasShrinkwrap":false},"2.12.2":{"name":"@terminus/ngx-tools","version":"2.12.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.12.2","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-vFHLsC8hjWlEABG1BVkwPQfc1EfIqj9VBZsmuAq/YQpDCMzG84yZxDAm5CTsPY2rG0sMVCoAbwvghjMcUWdriA==","shasum":"25e698688e39dfd579554e0f3c31c2fc49d33187","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.12.2.tgz","fileCount":118,"unpackedSize":416320,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFeGM6AhKjiMKoVE+wpBA6IRgVhwCOYkgs9076fRcpUsAiEAmCblQ97L+zfG8xZ/8cDzM2VJC/F+hfvjsmCZDLYg+Eo="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.12.2_1522876129536_0.047678998930497984"},"_hasShrinkwrap":false},"2.12.2-beta.1":{"name":"@terminus/ngx-tools","version":"2.12.2-beta.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") |\n| :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command     | Function                                        |\n|-------------|-------------------------------------------------|\n| `build`     | Build release                                   |\n| `test`      | Run unit tests                                  |\n| `test:ci`   | Run unit tests and output coverage              |\n| `start:app` | Start demo project                              |\n| `lint`      | Lint TS library files and attempt to fix issues |\n| `lint:ci`   | Lint TS library files                           |\n| `docs`      | Update library documentation                    |\n| `cm`        | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.12.2-beta.1","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-aOyUoO/MIYI9wGmiu9rHRb4kmWlQ4oGIYPtUjRwK/+o2kCwCrVWWuswh0tQE1M29QyokbdZM9EufAl13EzajCw==","shasum":"5b55710d305cac8864903b8ea345bc37a3dd89ad","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.12.2-beta.1.tgz","fileCount":119,"unpackedSize":455191,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFuY2SQFunY2XBfLHzcR16kDwF16n/YTxqrrgyG1C4M3AiEA0JPiikbfOyd4lkqEa5T+gMynmmP5Gxi5asiXveNuX4g="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.12.2-beta.1_1522950650720_0.06501964018330542"},"_hasShrinkwrap":false},"2.13.0":{"name":"@terminus/ngx-tools","version":"2.13.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.13.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-3YXyy49eoLq3g9/ZEBeR9W99Z4J4HfY44git3T6v0KgjCJ2Di1xtrGR7fn9yBNDuocy6wNDfNNhnxF7EH/MhGg==","shasum":"9d88cff2f5a4b2e6ab54343b1d12bedc6604b97f","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.13.0.tgz","fileCount":119,"unpackedSize":455086,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqDAh+LJDl2ZoYJ/y25oB5n+QJPgpWx2F9M81oW366lAiAhz6WWTk5p7TZiOpF4B4VOlcP0+NyB6fYkD17J/vtwwA=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.13.0_1522956619001_0.29504719537527224"},"_hasShrinkwrap":false},"2.14.0":{"name":"@terminus/ngx-tools","version":"2.14.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.14.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-bxqxy5lnNHGwFp4OGHUayz8abtAyuvsBB1pbW8FIvvJf3ut4OkD0JLH6rCFgpWwTNznFulPLEgrNuDPJTDEIIg==","shasum":"eb84be914b9b8520d7b1a19b7cbf27a87cf10ca4","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.14.0.tgz","fileCount":120,"unpackedSize":461384,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPAKvFD1sH6m37+NjuDR0QKQlhIJ5DTqTvC11At6AWRAiA6ssf1j5F5ViWq2p30G2R0NuhOQpQqOOJNSjrMb4tH+A=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.14.0_1523544293337_0.5558728282953185"},"_hasShrinkwrap":false},"2.15.0":{"name":"@terminus/ngx-tools","version":"2.15.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","deepmerge":"^2.1.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.15.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-KpzmNb4t5wlXKjqxpaboJhWSLCpdE8DTIyUQIGBEf5VxCX+ZdMi9hTwRVXWOjlBWtwhptZm0CoA7fAxSERNPZA==","shasum":"024da581d55bcd70f4cbfa5f33469e580fdefba9","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.15.0.tgz","fileCount":120,"unpackedSize":463979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3f5lCRA9TVsSAnZWagAAGREP/j0MqXScL/Eq+AjI7Acv\nrBrFLwMjY9804SzMIMkBRZ4w3wuVlzCG31pL2bQGsFdj30iJhle4o028ZLgs\nDpzh7aGyCRBa4kqW+/j0LNXU59qAQVUyzMQNti5fadZQWsa99fO1qA/fuCx5\n30CoDpNfmWy58jdf02kWyaUL924YTI8KIe1Vzk5J3LXnOUKjsH5Vbm5ch9Bw\nCVHrMadKZRfZfsICWftKB8W9QPIssnfujYlDFMztO7V1MG5BbafYb5AiuMOD\nTb52yvd4Z2ay1jR/rqrYfIjixfFaU0EjUFI/A3JLao5moMcRZ4zPvBGy6boj\nWyOleKEvTsLudOHhx+8bqdsoxMtzNE5GL0arw5C/kejrDUN5Bo8i+/K3u01e\nlG1jaqu3ZCh4TSComMuUT2ZMerNbrO05drOwIwVUkpA2fPkALUVshGlxTJ8b\nwXG9RSOGTbJJqps847LTGI0P/uDuc4oZ2RX6X99l9y9r5IdInjcfJfbvHxmH\nhOXPpNFhKx8oKh6DBQrg3rKhjdeuqSOWb5IGD8NcjTwYZuGMjv1PwppfaRHW\njUNIpKGo+uKB3grHHG7V7V/2phIHrfoKNJW5jXcrnp9jD+bibwGMA1kGKP5W\nE0hzU65I7emNxcFbk8iztsRNGB3cvPdPLQWyZTjiM7b+5vXMBX9+asnodA+N\nKfFM\r\n=O5Ki\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDI++CJn7hZbib+BNqd+rk4j7TjCAUDeChJCEA/0S64wIhAOXyuamoGciElAcjEHjc369g0f+HP/iXoLM+y+lgGqNJ"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.15.0_1524498020634_0.1650334715711388"},"_hasShrinkwrap":false},"2.15.1":{"name":"@terminus/ngx-tools","version":"2.15.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","deepmerge":"^2.1.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.15.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-U+Z2afzMetWKcJoHGq/EMAQF9CbhsYlrvmcxVbvbO7ShCUM+PPslLYu2l4v2gN16ZcpjAEfc708eUyx4tq/gWA==","shasum":"f875c01178d83e2339946014b21ffdf01f5a13fa","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.15.1.tgz","fileCount":119,"unpackedSize":461661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8H7LCRA9TVsSAnZWagAAb/QQAKSs43MkaTbM+S+mU3Ct\n8CJLSd77Ywk9WT3U3CvPqMf05A5ricngU3vJZ5Bm0culFcQb8hLbj/26SiKK\npoOyx4lx6fEk2hWw6RtBUpT4HaBlVy1BjMPCQgcfQkOdlDqcP+gWsmag7GQ1\nXaJIju6z70d3sJtXUggCdOenhM1HvkFfyjY668lmKh/JRR4HqwGwH3StwMIK\nQ2JTFpa6SCsSdIY2Z78dE5b82/SN1go6WKwR9Hu7Lx8+1w/dX1EkPgwWWUdc\np9xDalnZJrASAEpZlp8iUYClgIUCK/DrIhOkjaOJADx/X9P52e6WBOhkrg+r\nPi4wF6tacTOiGc0JqiswYkNs+Tf+f7PWkO5zD3/X8zNSH05x9aMOOR6ngo4d\nN+t0D6KBQEVNy2OgqoY/u79o5EF5CsQsI6NcNZRiKDtx7KoIJ8P2qj0r2hrI\nSJvRFB7EOP1naiDl4jrGqxKcdpSgY7bJ4np+ho+j0S/TofObiaO8bWUPkSPC\nuwPKQiCK0I0RU3w1a5GGcKJIQk3J01dfsEOTyr/iT2mGxkTz17+qX/mQYnMF\nk1R3idU20fwlYPNA/Oq3QHZ6/Kiv3exlbbnEfVas7R9NjoiWJ0sYj103gynE\ntQAzsKnD2upNUd9azClr6ow0ACOKSYymfr41dnSGlMeH3kSDbITBk3z0KCrV\nFFIk\r\n=nYvB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvh4CbmKVz8jA1nSFvya1UvnVVK5eGEMsYXlzeB+MUoAiEAlCq0+91JaMv1/MR2CdB0zqDiKugZp6RsoR0z+X1pZsI="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.15.1_1525710538948_0.9955076013695505"},"_hasShrinkwrap":false},"2.15.2":{"name":"@terminus/ngx-tools","version":"2.15.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"release":{"verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.15.2","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-SITb71bX7Wy/C7hmF0LUv6zEMQBo0+AKqLK0ooBKWLvU2pLwIWiOui19oe1uHrwHf5wWCUfAHaU4m3xOhkakMw==","shasum":"efefa9e80c28a4d5baa36c1a59c20ca344d15dd7","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.15.2.tgz","fileCount":115,"unpackedSize":451876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8Zh6CRA9TVsSAnZWagAAQgUP+gKaYMXA3DrFHCP/IHpv\nWvzEl3EvUSwivtvZ//Ql4qFhOZds900wqwhq2pMAyaTScd/ulG4wgVvwgXVZ\nOX5vNbQjLdiz72wa25GGjCDFYJqJqRyrfljIMEpzW3oajYIH95FZ91w+0H/6\nyaey5Zo6YBjl1prl/Jn3Ak9tIqgJO4m7uZ3wi95iM3/6HF5I8BSQq/mx58Io\nGoto7hehMy8uzHCpxs5JuVLn5P1svG87nvSFULQj1I75bO/Z52+lrrUmmFSV\ni7+Y+zPVPy87NwWCgnKv/NUuU8u8wcaWEjolNB4p2QWMe0uMHZWG0gbaPBvF\ncFYc55Jsm7k+KqlLlR+Q8jhiSiNYWkEj/9LFlEuQ+chdiqzYOEGOgsUmHqGE\nwcSWxQ2qj8wKGC4D77l0M2vuTnpXgdPT4H5iWTKn9E0pEcLC3sb6NtukuTOb\n8Eq99WQh3R1yvqhAtN1RxemGuNjJHrtlN7WywU6iElkk5yn6utNqKoNZj73o\nxqb+1DHJZIJ7i6sk/CvCrFDuOuN612Jz97eYZb/QXPnUJnailLslQogd4zGu\nBLPDv2N3SxYh1R7DzVbKW7iDR65fPH4kaufiVRmurgwikh1DuT6KB0PGZ9rD\nU/pxfCa0q1VLk3+lC1B4UXNDQPfMA8Xs5477bGr2G/ToDOiSc+EEatIb7CdE\nyDJi\r\n=1xqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6jhJFPBD7ozEz2pGmPkdm5tS/vN38NlyNTMxoIc/dLAIgcIVjmphWcsByX2N/5yQ81/j5TWGttGfT+t4sMLKtmHU="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.15.2_1525782649162_0.32993735280273917"},"_hasShrinkwrap":false},"2.15.3":{"name":"@terminus/ngx-tools","version":"2.15.3","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.15.3","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-55uDBsNP3ojuj11/sPuqr0YTIZF0ZkjWR7UmvQzJvX5Qo3yuiwz6letBBVPzInC7UwStgVIYbgSYuob57CLdFQ==","shasum":"f973320d36d7bb56aa071400fc764d28a7049917","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.15.3.tgz","fileCount":115,"unpackedSize":451944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9DsoCRA9TVsSAnZWagAAa3AP/09ztLt5oQGbPrlsqrWt\n8QtDyHpXEdz2NbePq7Rpl7kypEYhWFMr1o8QrjUjsVj6jfSjGOUdN58NKB0A\na0cpDJknuxGj+d3h53BAr2Qh7odjvu5zHjBB+pHGeWy1xfTorqJlvIBsESym\n2P0PuuMogMt2+8fRNuYHVzQIOA+onkfNe/Yug+APt/rUMdLaCfb43DKZ1WRO\n5HsStjhl811KkJRGJs3yNddya1rjVikDS+eSNSRfNNYLj2H7Pn65aljzfr3H\nZ3PP/XgvmzyRbgtk9oTRXkEew0Blo7HeKue3rT0t//Tc0QOUFnLg/FjLKhl7\nIvw/s1g2ms+5JZ4RMdEESDyd6lR5PUXrf1ZLNgcMpIQGhKXsQ1DUtAcai1Jz\nSFzVCPoULxTouN1vm6ZFqW4sM/kpCggWNnSdZAwjae6xkAT03GJUn+OMEEMz\nCycflufO/rd87xCu/POHm++2e2/biFbfbm7y8iLbAhnmgCi1EpeO3JBQ91Sk\n2LVzMpYj8EOI2lPPcGhhl2aENyPsrkssc0xge1VvGfsyyMe7fsQYxzWU8aUk\nAlgV6VuCD1VXokaF5aVI0NSV1H2dnmLDM1G54YrqcYytuctO24yFP5VHmptR\n/RPjgQ+yaCEd0QFPRcQ7AzOM6TkaIhM7UHefvRl5M1pgRYNGw3D4aKpIlGm0\nMDq5\r\n=l22i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtNfFUnqcCJUfLYXEOFk/0v3vod/uckOG3A2KYiEakZAiBHWoSyfvRWLI/HDMTKku419beYRzj22TcV0NzRpjnS9Q=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.15.3_1525955367937_0.057032768502934594"},"_hasShrinkwrap":false},"2.15.4":{"name":"@terminus/ngx-tools","version":"2.15.4","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.15.4","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-wY419Tar+X7mLeVabUqMh3BS2vduiYCjBMWos6e/XMi9g1DGIfbI4Dp8NSLsHyDU71lG+G8x0s/i/HN/XSSOAA==","shasum":"2ae1cac6c3348317be157b21595b86a7ce55c86c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.15.4.tgz","fileCount":115,"unpackedSize":460465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9D6ECRA9TVsSAnZWagAAcsQP/RqRBEOP1tiHK9hXrSvn\nfknC/lrfHD3CpJmPZ2S0o2A5s0MuzGmxFpCDOhKuYjWYlvPet0yavCMrLI2L\nbiVqkXY0aLgutd+uYfZCnA/5amjyqIO0371o1dW96LBjzwEuwDla5k+VLzhe\nRzKCYCL11Ds/ugpRdMhVBrcqqNRGXGja8E44LkpNOtVPoN1Y9UWOI4XzGAET\nTiM26YTq721Jm98SXCu/kdsAzksFfNl08XlWr5U0TJVTLouQEfMix0HrVRL4\nJk035pD0wEC483/VmocxFSNUp4m91SAzfvSWDdm15BQvR1zSBW0LYCTc1w7B\nL7hNqVFiOGd7hbthRnc46bwoOTWaTRcnAYH3Lda8rv9lTodauzhyodHUhVeV\ndMCYZVmClQ/8BC+GmmuJQCvQ5qSjH/qKToEWFKHjfiWiJVaacjNQ0zavNd8g\n+aLEtV7Nb82XsEWZLf8oXx8E16wJtdgLtFMzEyC0vhL4mpTOGlbJQyXnrDOy\nP1GJ7reKuDcMBb2NTXfQ3TRO/6Qep1GlZe8MZeM61Y9+qCcpLJURF/LwioN5\nJ74slTIupYoJ4g3wrGXqEeYmAKgp+ftpas4Cu+pVKtd2gqX+KDclCT5uCIcG\nD7MSVmnTsMoLiuFZdFe4GL+66g5puDQYg0EP/Q2w2om0Vb7ld3uQzxyUHCzA\niG51\r\n=A0vg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwZDJAJJzGbnYrjsUR2V8MSQvHOiWeUXYMRGI7BIBVHAIgJv0F2O27Qhm7/JW59gYUCyfGErK9F+Nsy0ehhZ9LCvM="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.15.4_1525956227565_0.12492833980793994"},"_hasShrinkwrap":false},"2.16.0":{"name":"@terminus/ngx-tools","version":"2.16.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.16.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-DwHo5WjbsKTYbXqjCR2hMAfnb7GZ0MkNRImqJCGkDsIdmACBuHoGMM5B8iikE5XLjavMZdwVkRs+UT7jYqlgNw==","shasum":"7563811cb7b55aadd1f0a03c9afd7777e7879ddb","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.16.0.tgz","fileCount":116,"unpackedSize":464124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+ZkfCRA9TVsSAnZWagAAFGEQAJKIb7+zqF9ZfsgeW9Vx\nV6e5tfdvNucKzFteyvkLsRJBizXedJO6fiaSWzPPvHtCYHFb/LDoVpr0Anvl\nQUYeqBTtpmVPvG+QdPyLrRGxukD8Pgqo3CjK9eNuHmGNB86ndigkuH+VgW8c\nWI0gUenqXmwXHuXRzoQI/Vd0daSWD3vt209gJaUlfVkQDMcwPCI1N4SY49Fi\naPyt8lXWCuIh7cPnrOy3yglF8tInzJ+vlcAAvqZQXTUJpo143v96vs0EbTp5\nICfW/VdTN4pDv5YAjewOQtKA8qhEKb8oPH/g9u1YUglrFQsLFahHJSpql31q\nbHlJp8BFV22Av1z+ketZJBueuU07jtjCSwKHg63h/WLcpJT0VNl+DP8wDMti\nT8R5zGYYbYAmLMDGRCXrHv8+ABZ67LNfXV4JmN08PvWffH5azjSkbXce18gt\nyvAjrTgcIuAuxij8ZJWtWEdXvFktN2FV6gBAdDihCgsynu/rHIDQlBaoOzOX\nmy4sXUaTDos9hg8ETnmVUHFY52N5kwdBai0Yf7Dv0cztNlb42U6UvroHSCwB\nAcXgVXBDnWcC2o1vMj/QDrmJaxnerPmFrOC5Wg+rr4gvIPL4IYUJH+ud0LUg\ndmnhYYLiZASbqJhh6fNskpByXUQKb4HdVGyn7HwAQJylkKAF/ATN1tfFTHl5\n364T\r\n=qn7+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/c379Qe+vw6sXz1sITJH1o31e4/lgC6QTOolDQuiwzAiBQqxkPNfxdYawUkQaHEZpNiGPwqh7WdqFQBFxnrVpoeA=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.16.0_1526307102952_0.16622518776276718"},"_hasShrinkwrap":false},"2.16.1":{"name":"@terminus/ngx-tools","version":"2.16.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.16.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-HBSneo61tO23POBTf66fo6oMS4qOK2XPlolbfGEV7UmlDFvgil6befAqNvMTQmjY9zJLn9rCsOwpbqGxiyx2Yw==","shasum":"bcbe343fe62b70c261a5894129fc3015c05be047","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.16.1.tgz","fileCount":116,"unpackedSize":464096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+bwcCRA9TVsSAnZWagAAZ5AP/33P7MwzSiejTb9OhqId\nzkmdX+DNb9sJg0udtC3zn29W0DAsIHbiFJLZuxtJSkOvlLkpbGgWu17w6UIL\ngNrJYzsUZpBAvgJqUUTJsxFktSGi+fgFcn1KMMern4M72eYB8eURPga/fBbe\nhSuuu2LSzmJ3cO4Ka5Wb45fUGpgc/DtHrgZlUG9Dhr3lCkimD11qvAotnbFK\nYa8cSwOGTKOr0b03r6oh0z5vMxQlhR4tDFvQo1p+Th/zDWff0kN5VOd4vND0\nTGpbv13/SyYuYWjG5YBuNbtPODd7T6koJ6AC2E1n85X2CQwgY+Ft1NrMM2Vi\neOkOeLpBISQNDF5g6IJyHzcRA9ChrLZhVD2+qm0xu+my3/htK4oSTxsY2GG/\nHrLaTNZscRwr0pA+wleI6grmW3SCqZW2kYUOs3Ypm4dVVpQgVUDASOARr6Hv\nIFV1VZY1ujE19Wj6gwt/VzRZSsQ6UagryVpNM5hz3+8/LlC/bNI3H45vkeJc\n2Ts9CZrjGVcZDpzSHn9W9P9jbljueUwjDj1FrVkzq52JS1RON9MLsTWoZ0kh\nvcPgITQCpwUJ1FL5HrdoDHJCDyiTKCZeV0T1VCOBJxG779PHSMAIk0IIsIpM\n5sK3eWysPzqqB4yu6F3a2WIFbNjD/kcEd0zxlCjmh+gLINTRXSII9fpG0tfI\ngjx+\r\n=qaPc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICywBcXxmO9fL2bCGeVf+Yan6s4QPW5fCRtQ4/FxO1V/AiBQqK4CACQJbbwxLvh7naRuoJ6BPWv0bYhqAFa9nskLFw=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.16.1_1526316058845_0.12827585307099332"},"_hasShrinkwrap":false},"2.17.0":{"name":"@terminus/ngx-tools","version":"2.17.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.17.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-JgnJOZVYt8Sn/AMXJqPhdtopsf50Y6e2iS0YkC6MUU1RWyytWYmkqShuwxjEkNG06s3D7oOoLVBJOugFlelCtg==","shasum":"ec5c06e41a54bede8bf6c5b34dcef95203db056f","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.17.0.tgz","fileCount":116,"unpackedSize":464096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+cikCRA9TVsSAnZWagAADHgP/3Fkc14irvIe735ja22X\n6Gf5aHx/4Q6FTagKinCD+5JOM6ghWoLMniS6r3VdqenQjoEWc18RJBxHKoGA\nClYyuWlHqw9XfsN6jdCPNJ3UnvRFbTIT2otAcPAMZVH8+lgM0dHtCWW+600F\niwMJ1uWkRDlUZJaddwvpAspBNLGBU12TCZHw0O1HW/ozkzW2DtpXkJU8/6C1\nVEWd9vQWp9LHyTrjre3LgaV+62cZqnU+GEaAezf/msonxt2WZCTMgMm0rHev\nQcsjez2HONSnXTdtOROL0mbJFdD6cmFVaLAdVGA1dQj/Q50Ce/F3hnPdVMqg\n043Wsk4oBV1+6plFlW9p1vGm/KepbWt99Ki6I/yIP1+2OHaiBAtTiomWFVpd\nb75usbSh/7GAb0RQhYZqf3h/hzmz/mWI0/KU77nZOB9p5ey/KmEArHdLNz6D\nFc3VdeeJcJvWeFlJjLo1p9QTmMEPb69TzPFLAz4xJrZwPELpqq6VAP4KodI2\nW636dwontBMn/dne5W6pW2rSOwzy5jz+ThnssmCCxZw7ueMnEdir5ippPIR4\nO7NpvGpqhEYJOjlBUFuDJSsusuYZL0ieZqDisZsecH1ioTySppjOoFbk7BqX\nyFbqbIMMbbaVSMAGO8N2ho0bmBRwtehUH9DS98KzWb6VMeQndRf7DVKGqUkd\nu4xN\r\n=ejBA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsCujj6eo/nYMEN1Rl3/gx/LJLEjIz/n6obRJ6kv7zVAIgXh4fHPci66SfCk7T8cRQQhDLte3dvzbKMawg6WMQ9q4="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.17.0_1526319266876_0.45792636030774503"},"_hasShrinkwrap":false},"2.18.0":{"name":"@terminus/ngx-tools","version":"2.18.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.18.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-0C4K0wjkrh13djGPM6R6NgdLcL4FQMP8dKUlibkbSgiknL6aQdd6V3VZrfQaoWOlYtqQ04QFhrZR0HLS3u+AyA==","shasum":"058b07ff6e257e4a8b2e0bc78dd5a6be17ed702e","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.18.0.tgz","fileCount":118,"unpackedSize":476844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+eZaCRA9TVsSAnZWagAAn7UP/0GI/pH8bMQ27VIl75/f\nb2D5WJ7/S1nDAP2NDHm2vKzKAWViQ5BQxO5dKSMw4XiczFblCjrq8nCkHWcr\nWpybm2vdaPWEA+kxQug+R/f8S+H7OO9jqEJ48DDjHdSml11FXuXcxIBmRW26\nndVDzIiAE2C9K4hbsO7tQCDcUR9p4IKF2cCq73MJNlldU9vhEGgwrzcPvWos\nYbgCxI47JcrVtxl2P6d42i/B7Maavs6hriFNPnE31XrIhC0XGaqoXp6E5A0i\nPHozF+D83jIyVEqHBOtAI5PqJaEFKIJlahqA3oX828RvnizTFsMBAV21KHr2\n5e5V8MJWvR1G249GJvHiJiwfkuDHPbU/c89qnHQTh6c9Cy6uXZoNJW0kYc++\nfUjsvNJjZ6zFNOM3ptIWIKCMEJ5c/i4uX6kbB61ClrVwPf0NJYOspRlfK7Ik\nJIDmQP7JZnOIfsf5zE4cMWa40IoVhRY2CYf8+mnn70pTMtCwq3AzvbWdIXUI\nZwb4YiC/35K80+MoKjdmUrAJDYGfGzIddIOLg9tFWE0Gfwe1fHYOn/MSXLX6\na65+XMJHJ/FQ0clNjXaicFSYkfG9OTaIl3NaHEW4LImVEW116R+Kc63hX6ne\nQQ3ooliA/uU0D/nTq50tglEedXKEteZC2QGIRJjpF28qbfXG/AMVI2jwzH+k\n1aea\r\n=3IJh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5HUvzK41D0h7X+qMmF67Cx1WfbGNTvCZ/60Lb07J7bgIgS13x+CikGKPEfekvzXvr606LAnteQX+B5uKycViowGo="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.18.0_1526326871665_0.8156066416894103"},"_hasShrinkwrap":false},"2.18.0-beta.1":{"name":"@terminus/ngx-tools","version":"2.18.0-beta.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.18.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-CBx8JXI1SY/juflmfJAotnG7COQeY3GokyQg0FaavLQzYzLmKwvsZr8AXCw7YZ/wieI6QHHyXiZ7XJt3NpU04Q==","shasum":"69502b3931e37903780ac86f51b2b7ba296e4e33","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.18.0-beta.1.tgz","fileCount":118,"unpackedSize":480090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/cmXCRA9TVsSAnZWagAALxAP/At6YakCb8LDoYs/uJNK\nWOux1MkXuokw2lPFRGV4FcQtezgi1pBaUiFzO5ypao0TJi/nKVIOOZLLtQ7h\nBPfkTb7sMWQLKoYGvuT63ORzHPQg+H3LA0yCXgSgqZbZGAibyrLTPXCeQWKR\nq6YWZbijzl7ma1njJVRaWnuAbuFQbVa+wzgOQLfFXBRBwquy5vvTCo1LhDCm\nQuqDVNefc4leQMFjnYBv+GsJjP5elU7Ht996mPavvW/xU0+vSK8cKAs5UX4b\nH+6fggdWhEqbw1mc+4VDrsYkDamP2kSI7Un2Dptpt2YVI0A9djuFUAeu0AU3\nctTjxt0Vh4vE/vX4F6Hy/X3HlZxL70f2Vwbd0wzdUjaZcZ0a1/W0U3PYoH4U\nA4pxKRfXmaZAOtj2DsGr4M3WIZeUCgICiRI0Do660a6HZqsbAaew1VD/jY4a\nKyOhe7tJjabsKS9n0NZXNXL9VuUcqkSE1U7YfjBzcGjrG+S0m7SvwTvL8Rmp\nuoS0CxiX8cL+lPaMpTqqQ733xo9FwNylW0gytYBYhK1Tdt+eBNtWlOkJkv56\nZxK0mnbSI2YqlrLaG5Ww2RxOXn9oGwSpYSj4xq2dsJNp3POY+kNzc9V1wK3F\n+GzTdXXCHrq/b/7dKnXE/ZtWGNThdD85lSTji09lKiUjzTi1pj6ovZYd3n+l\nDV6R\r\n=GvNd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl8MX2tkEE8xkSKjjRMoiQIx4QZT8ueTjYpnt5fl4JRAIhAMTPHoobq8NK+kUjdNsM87nkg+voQohRGvKyrbtyoa88"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.18.0-beta.1_1526581654739_0.6357055045649886"},"_hasShrinkwrap":false},"2.18.1":{"name":"@terminus/ngx-tools","version":"2.18.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^5.2.0","@angular/common":"^5.2.0","@ngrx/store":"^5.2.0","typescript":"^2.7.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.7.1"},"description":"","_id":"@terminus/ngx-tools@2.18.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-is16Ni+pIUDTkZ//04VLs5SaMs0JAZ69H/jIisAAeUuXT1ZSmsneyvOL+J4ju5vo1X/9Y94svAcEcFmhsU8M/Q==","shasum":"d3061b9021dcb5ffc96adaab2b0ff21cefe760a4","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.18.1.tgz","fileCount":118,"unpackedSize":480877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/xyVCRA9TVsSAnZWagAAqdEP+QHl58tkCJKjsTT0yA5k\no/1nSG/MCXuampIiIJtZUAfhzQaNaxnZ1w3vebr4K9nYtrBDVIbeLNSwCWQ0\nwLYmIACCfoa3GfV/xDvsA6HnEY0lL+hmWsGPr/XHfu3n6Ynk5Bd464eBN+Tp\ndzZOgrgq9rdoEccp+MpBI7fQWdUt3WmYEYfwTshoZbsbnSWO/cdMjjUYBa92\nWGWCQM447BUd92g55YXx09ohPt6eEKSIH5yIbyn9LsRGnL9ItHUkAP4On1jh\nV45iP36Xq0GP2UaZTXri8u7XX4ck7RAqLkpdTNthFlZCmGKqTOg6dhPWzh9Q\nMBSUyeN+lxt12VH6On+VuNVE18zw4aGaDV02Efl5xR3i2/xGAGMk0uNajQ4C\nvgYpmNWK/67yP9d62osVLqWJP+xNzZda4agsKX2qoSKzQIaWr+AecbGxfCMU\nxsnkDRP+9Z3A4oCq0cxAjQG1Jc+f2jr+2aadEk4CaikZc82m4/4uAr+gR3gm\nyjJ4oe2iAFLSENHrEWuIo0O4BIjcgJS6Yd59tPXbO99u8ffScG8eDXpgN4rW\ns29rvcp9WVG36aQn+oGj9FC7UNfYLAkOesZRNrnr7u9GHkr4aHx84JmFy7og\n8eaMbjGprmRQFtxVi7zaykE/1Y/azTfEmEDR6gj4pQcQ9LxHrvjgmtEfa7hv\ng8/u\r\n=RkMu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcJdhiw6FDJpbj2t6qD7agJ0NEVY/w9HTxp7JzA/IXwgIgQ9VqbTo9KZLv4WrnMGyaX/H26NpE4n+7uLuniFe4e8Y="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.18.1_1526668437111_0.3951907085364623"},"_hasShrinkwrap":false},"2.18.2":{"name":"@terminus/ngx-tools","version":"2.18.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"esm5/terminus-ngx-tools.js","es2015":"esm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.18.2","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Xheh69D07vb0ydfkADJyGUTn/D+bAGUZwTlU3gmdrVp/zNz2VYDSqmyptgKshbI3MtgSWk/aB0h46lH0AM0MNQ==","shasum":"ad205c274d39e727058ae94a8c7e263351931e15","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.18.2.tgz","fileCount":118,"unpackedSize":479601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBwnaCRA9TVsSAnZWagAAZdcP/Anq5bOdfBuNGxPyMGv1\n0BukQOLKjYqZrC5wTovZSJSNOa7UZiHyI+tpz3FiTWF9Z0C7KO75PpxyZuVY\n8NoXwp4rzNG2zwil6Lp6Fgj0WNEegB9HqYMRyi2a7Xmz2n5rfYBZsiNv+tMQ\nuIOjfWotmkSGNxwrlhLNaYQYhVV2j+Qc7+rktDhHSCW9iRYfv8Ypl/hPb1Yt\n+osLxH9X4CM3XHBV+blOwcllhi1D9nrn1dMFpanhBr1WN231yy4xONuw8Ad6\nrYeaO93vDiBhzbv4i+GFzCzQd+yf+t4ldpIt5gfAetoDkoNITdhiwWq/G4Tj\nz5SdbsaWHQRjjL/Wu+gjFqeCMulPREsbnJE3Bbv/Vk633BEOvsVCDRExbDPc\nzhWyB/HMJLw47USEoFcrDKpBxNdPlzZ5rchxU24GZojY5HH7GirXFNcMjnFw\nAH03fdi/NoOFWYoYQzAHYJMSfvmUnizKQMAgZCRt3kOeAC0NDPygtsourVmn\nohuoWwix7HKZHAB3nF1CWp3LIauq6rxaZHs5psNpDmAFyHNI2pme3Q/KRNe9\nOFI6bbMKOPl58B4vUvm0mHJl3hcxE5ksoZ3no2mZeD9GV6MiWE4M7tAvyfCh\nUVPn9h0DLG8UOebQbGWOEmw0kDvae7EOwmPYMEt7l8qKK3RaxTMf5ObgD9ML\ng4Ii\r\n=nU1T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD621OUTDZVoK/B6vPmuOXfkitP/7v5P/Pb+0pE8EnP6wIgVP9cZV9IqtXQuIUpb68QA7DkEIQ5gDBDGGbattBAaj8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.18.2_1527187929128_0.31119983608922563"},"_hasShrinkwrap":false},"2.19.0":{"name":"@terminus/ngx-tools","version":"2.19.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.19.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-wHvLO+6mDwJDrJX4+4nLJ3tVW4P+CrqFp6E/GPNpqp8LXVoe4w8X9ZIs6vekajc+Ju2BQhkypt3S8ISthK6EpA==","shasum":"5ff26479c831e2170693abd6fd7b3b094a30afdb","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.19.0.tgz","fileCount":253,"unpackedSize":1199781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDYnQCRA9TVsSAnZWagAAbAwQAJmqWOhh9mSsPNWl6oRz\nKmfeNEl4uOid/M/OI2s24tgNiPvuh2XNdT39pflNm7WEMp5j57nOVvsC8Cwm\nzopqR8hnInVElh8YmnW6vUZ65sM9OiY9Snr6w12MF89mYghYwmW2Qizta9fr\nDVY1+t/thsR5XcYV/0dmhH6wlq/jZd079htOV3hgGsbAHkKLB2rBRdTh8Zw1\nvdVM59SxvMLG8+bSGUX3P300x8+RDh3kzTkg6St/VCnVRBfmYuBbtnekbSik\ndPoL9UOT1i1xI5aiTD2ffIouR7WoI7G4lvxyA5I3bge35cLA8G6TjzYZaMAc\nlAIcqjgFN9LMjhZdXFIFyqpX9yk+vPdleHDQTL/LtaZfSFGYG08G0nurw4Em\nPwj1giRH9JJcmZe/v3Mr17Q/SgtcwbU6/HSe6ZELKyTkbhBfDkIKBaeCGttx\nbpo+l/VCObV/OJFTts397yYy9/fy2q+jX3e2iaKXNWgatgj4BbhPeHINXdHl\nv9bqSO5FVPFqonmNCuNzl74p12I7hNTjyfmMqVnzB0RomlOTIwXSZvIz01AP\na1jwG1r7r9m72POIgqvuKIFeqQnHa3eZgGk79ZbgKTAsTTT7ZmngjdJOADnr\nveYKrpNen02pfz80xf9al43ANvHIkfIxODr/FF3/3WP1NQiq3pbO2QCvrLVl\n4q6S\r\n=c/h9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIgEvibGV224iBXHOadgDyOHe54GwC/k6WsrgVvDNntgIgWSViMX8sRakgC/d01AIRSLSuOhDFXhmjj9Yk7a7koOM="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.19.0_1527613903413_0.8789459956650554"},"_hasShrinkwrap":false},"2.20.0":{"name":"@terminus/ngx-tools","version":"2.20.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.20.0","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-qZb9BIg6wO7b6/nBY4ZDPRqr94yH73jn8FjcMDbUwnnDFIJ1SAq0uDPJP+bX/hN8XFL5QhRqIZfIJqQf0UwQOA==","shasum":"7089a496a7ccf4eed02e956908f9a5264500ef5c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.20.0.tgz","fileCount":268,"unpackedSize":1297795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEE2rCRA9TVsSAnZWagAAKmEP/0tgPNurxMOnwko9JTSq\n4X1enhpqlyrfZjTS9w0sd5Xa3a2CjPWbNML9Gf1csI3KdOgY5+GeLHNt48KG\nvgpBsI5cFCDnqOmgVBR95JYBqZLZ1GMfwXYn2D463DSA0N18pWldc49IJw/k\niLfJgC4SCaxmrWD+JIyyYzmf0kmxqhp+HF9o4ZJ1/B9HSr1U3iUXpYZSVySx\n+Fe7s9KC8+gIkaldq77kFlztRpoBbHhfdeq4Wzd7qk2tnFKzWMxzZ6/omJ78\nhLod1TXazE5WtFCzHUuJAWDr4nmqrtuLeH4lPVyW5jOCfHyN/TsUJOJCSZsU\ndgXN2LRyvWgYm4WdjsxMGC3Mc1/eJgDe12vsxv3gCV/O0VCdHkQj0fakDhCu\nV3xDHwImE0Ra58s7XDlAOrW+XUw0r9s2bKwsba6ZpKRmok7t+DyqgCvFz+1P\noBubqF9Z7nz4cF6k6HT6E2CIULlyOTd1mwxGeW/bdEJvsyQC7ThmYdpO5vzh\nagHsqYHIJrQjwitgPU5HL+yrqrw2zdGCAHN6yrsU59KYmbRIe1bu25Rf1iUP\n7fHYtOyQ2cjPRliQ3K+zAagWHpSoKjLNlWSuJShn+bOculWq5CjkA+ynCV3o\nCYJm/xZudh8u6EG7BMyP+eyIz+1pMqJdK7YMMkXXbR5L0Vx4KQmskCxY79k5\n+vON\r\n=Ffv6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEo3bqjf1JWqajrngl/IdNC8v7m/0ZLrvCxUfOs40EcAiEA0dGae+FxkBvlUad8NL6bVUCyA5ACtE4x/5Zz7RYrjFQ="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.20.0_1527795114620_0.00480092965392287"},"_hasShrinkwrap":false},"2.21.0":{"name":"@terminus/ngx-tools","version":"2.21.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.21.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-u+YjA0vpX8p5YfeI58Ra6wRGnD991EshAWraQg6TtUDm3qITM53cH6ukdPf19SEJoUosEgHEGEx3YDhXdJBPww==","shasum":"bebacbf2079a9ff0664c13e4ec909c2a4abaf848","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.21.0.tgz","fileCount":328,"unpackedSize":2014047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHmLxCRA9TVsSAnZWagAAzfcP/31JqBcXHqEDSfk/p+v2\nIHRx+TR3v85/FfOdM82OKTZUFMrzHUpXN931GET+BkP0sdLGGuPFxRG7KoBg\nTck17TYmOiKcNwZFWRxBge3ve5mjLUQRZZE4aT9IVu93OQboR/PVuaadVPVU\nsP9kuIBLWd2WNPTh2uz40MipSnXyf33gkN+zMCZoSoDvHGwU2u7Hjsd/4HM3\npJHBG10p4Le7IDGjLC90m2nYqwWHncPChIVs/85QLK56H6n6eQSA5aCdZAcM\nWirSc7RIbsbGflCVXoKz1IjJAWVrn4jHYlBJtCBYyJD7IgPLYY9/uHP43DLl\nLIUY+fmZRfxW2vUxO71l78daeCLlV9gtPKvwub0YBJ+tcknXNCHNIq+2vhpa\nF5RlNYjVt+sUUAXnfc6tuTJ7I5bFWDP4iBN7Fl1wr/0BO9wA0Q75mpq+VR62\nl65zS15FioBO1DIGaEnYAaSQ3/xwlEmLEH3T70F8O3CDddm3HHt/gCQDLndB\ngutit6S62WrhZcFjpGXIOfTuY9lBvKkR3BiZpVD5mqLA3xK4Jto2qqOoAFPb\nHK5nhVhL7Dg4nRDFPdjdkxKh7ipkpp1y2U4C0Lf9ce8EeqcuOc7qjkEiZWA8\nCzbuvjbHJV55AgOSjdWAQjScGHEIRNr7HxRKc660OGtnYDiGFVMKk5sEu1iX\njvsY\r\n=tqtt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGzFu48K2QdQ6BT4/Ql136wXv/QFtuV+ASiGR31liE99AiEA1cY3NfXGncpAShWQ97BFz3B9c+f+Ex/W8FyBhqwmfh4="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.21.0_1528718064311_0.012578689582363856"},"_hasShrinkwrap":false},"2.21.1":{"name":"@terminus/ngx-tools","version":"2.21.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.21.1","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-GV7CIOZ9DfHQujF+h8ZqoyQUQ54vDJ/xaxi7XABnU+I4irLK0TQMlJSpsD4g2A7Ekp81xJAeEl+4gsCBpwSz+g==","shasum":"df24b6506ebef999b3c264c2cbdd82ff55754b4d","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.21.1.tgz","fileCount":331,"unpackedSize":2078400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH9KRCRA9TVsSAnZWagAA6L0QAInhTu0ng89pmdv0KLqr\nHj0zAtclhd08l8HJGMFOBmUEAsVpRLWTMszdY4PgvlLyItKDrGcO/4JGn+0z\nreJ1s+Rf8wGhCTRH6xK/v+7//EBH5cB8pWBHxwNR5Fd6KRsuub8G0VcP4jtn\nM/Io/TkNPwKt/hBV9HUaI0Na/HcKX0rtIowuinaQeRFW9fd39YNnnKt6oq3S\nzespZmYOM5xQhH94Gj5697Cpb4wtAmkYtSCLhPRkUMpbVEYSNJhMNU3XR6LX\npdJV1zokh9km7mkTXPM9yXYIMQcdNC4VoRZgriC1lXhFK78o50hPR5IPj8HD\nveOK9mKJdKoprUNnIJya4irXPAu6QAsuZ7ThjsSEurDp36NZygqKuSXwyLEb\ni6xieJRA1twjyPNiHiR0KvDW02GAgykvjGiFoKeCW0ZgdYzBFwkrt6cRXfo8\nYXNtXCzLcYzQ3krZYBTvwAM4ScBPLSKcBJ4TS7TdafPMUEomq9cWr70xL7Ty\n5AmwJPxzRu1Umk4yCeVmoehTVXrlA81AYnwsu95eTXhZiCdwXpsrxOBAWJiB\niW+nkwlyEZsY8gt/wp0T/AqOKN2a3XpFNxL9uBeUEmInlZ0cyFUwGRq9bxAm\nRouL9rykz1r7XIY8bOxgCZ6/sw9OmjMIz9fDCBXCkUW/lhquyRdOs9hLEQ+A\nJlhE\r\n=BPBt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2Yxf12xmPZI7k2vTuKzuxJiobRBf2nshIKfFig2FTtgIgG91dV1Kqh0LVcjBAcBHlYVDmpxWxEZwWITJWjk2eAmU="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.21.1_1528812170867_0.48970501321198867"},"_hasShrinkwrap":false},"2.21.2":{"name":"@terminus/ngx-tools","version":"2.21.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.21.2","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-OxVochm18iVt6plbtDKF3Zre26wr+VAvGpG2Lq6kFrb03qOwswdqhsWR3n0DHG8LeknI98+r6pgaFerlEPov1A==","shasum":"3c28f7e896eb8bd3cbf5953d1c7a1cabc526a2cd","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.21.2.tgz","fileCount":331,"unpackedSize":2079878,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbItojCRA9TVsSAnZWagAA7SIP/2fDYnjz5u2eRHJGN1A4\nUK8l6x5afXttngzoTsMc/PEN6rJ376uNxrkoPc0VUyqrQcmACUUG84NFjp00\nEyf6PS1TzDOmoETMcNvdkoj2xe/2cDTMqXt2u5papizUiLC0/O0noQDEEtwU\nFMbacDWCN9zNTvwHnFUZCBAS1RZz5pcrRFIxtvp0CbQeApyB0UJxj7MYRYnF\nSlltumizrHEZeRZxqLbe/Nz/xOrgQbBa/uCHXFHB7RK27tcttnQ5hlRjWs24\nbEr6W7Y/AZjhkpHIgogfJ7tR+f2HzZkbkoHv0BGfOwTWnOb4AMNmT9Kh4jxI\nS4ww5zPwkJgsKTsPunQIk7aduHpf5LHKHkfzMU3P/rD2PohAjweV6mNMi3OC\nQG3AxoqerYnd9vMs+Pv8w3EYeSbBdtsE73aJd2PSi1tfJ8ViPkIya5+y6tIL\nUQw6R9P+4+BZZoxJ80L1y7tB9s9tOlhnjuXZfeVa6YPVJoRb7u6ncAC3+RId\njEYPLgeL5qF7ldhTSXns0fwiIopqsZG9kc6m1JJdGa8smB/JiXZVhTu5QZzY\nCs7kVpZ7If9cabEhSLUUavmUm4fvtdjI9zm8i9km99BcXJae5n+jsj4yQAlr\ni+k70u/3Pz7c/AxtPTPBtzcV7FCyiP5CaRJYsInJpd8JBpF0o9dy8Wx/2Ejy\n7mbX\r\n=iSxE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0IBXebbMHbTbA5h1QJ7KtoFEwdPXt0tqTknxodPewGQIgHpvQ8uyhUK0dz3XU5i40VkNVS00u2YBCtCOh8Vhmsy8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.21.2_1529010721863_0.23081824859304967"},"_hasShrinkwrap":false},"2.22.0":{"name":"@terminus/ngx-tools","version":"2.22.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.22.0","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-b60Bp9ecCl1v3NAVjA6Ca0lLNtlzyo3ZyYPgZ61TUI+xFLsV2ZTdfjGRUib7LCZ4ocayl/SzJ3WOo8UTM9HaFA==","shasum":"44b042d1b2d6b4e65c39c86add964dd7ebab42ff","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.22.0.tgz","fileCount":331,"unpackedSize":2079878,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMUJACRA9TVsSAnZWagAAth0P/3VemqGDpErMhRnVY+mU\ngpbDelbmWSRqDl6BkXuzTSfJ8pqBFNT4YAHIQl+KKA8O0PL8wXzsteRuo4k3\nFDwK7oUUq4/xQcmLZV4vXWb8IAc+6UY3PEgJRGQRoGZCSvovJwVKHODyuanM\nn4ot70iBAgRxpCMvH4SHMhRH37T8JBhF4DWJooHeXsAo5DJ6QNUwGW/6O9Hs\npIecc+ZHUoAoeKNRje/m/7+ZmFhdKDS8rpvEXnXuIx7wtIPpet0pAleEZ9Ds\n4tnAzhjkGSvCoICOVZidO31bqoGgER8Dr5R2K+mHJ2pxejQBvcoe4KcyIRVK\nWNSHM67W7QiIX5VbUZtCWBgcInKnUlt3RucDUirbrU/1HY/KtMbr6d16DxCs\nDAwArWu0Dv+xYfHLgBZxwUbD1aDnsyupKS8C+NC1F9Iih0POraKMDgfegt2W\nPV/kUwwJVNc27tPBAkJktiztoJQ6hWZcGm56Fsld/NXb8OQXBn/2Dm4b0EFO\nD02NTdSl9Jf1GIK0bJAkeP5t660LGJ07WN04aG9Tbpdgoy3QsH9ydiLfSfon\nTcbyQllQGf9YujX6HMdecbTd4JCTEPFNbWRT/KDdXNetpdSBQsxfQYjBMZEo\nghKNi54FukL5EheNkT4UXMB5TVdPiDdaQGk30/SEc+9feLAFQ++F1+fe1hKn\niYqu\r\n=GbS2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjWxHhD25AFDPkJYUB9F+wJgLq1bt4y//Asbu4NX1nJQIgdwPJx/JgQBPznNQf7eZE+9eARd6dVjpQ33WitTIUSmQ="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.22.0_1529954880216_0.2964806291881026"},"_hasShrinkwrap":false},"2.23.0":{"name":"@terminus/ngx-tools","version":"2.23.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.23.0","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-pERvRmgTYF86ihy64a6ZpxG5CI0Cyz3SyvUDPoq/Zi29uCkhTkc+AyIa5KHXy2+nrFrT1JtHlXGDiGwwflYLlA==","shasum":"c451cae1c0ff047df03acf7473ce22f259ad84b8","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.23.0.tgz","fileCount":331,"unpackedSize":2084459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNA7gCRA9TVsSAnZWagAAmHsP/2Tb96CeGyLd6mgDxIfw\n1bD5LQ7sbWzNU97SIk8fwO3GFajCG0XYQrvtajMZV5WWsE+6ci3sH1OOGp8v\nDLN4MnrvhVaOeCQz3UKhHrobCkZ+N++26V2GZ6kdmtl0dDPBgZEWtJMRmXzL\nVx1rhZTh0jykfg5WXyDElhtpVsyR23oPP+ir/wHPBa+90fNE9oCa8O8Hv73b\n/FTah6TYwH5RU1YST0/Y3OKaJnHZ9mXNJ9pBVsi75Rvlc6lar2PC33HY9cyD\nxGmYPwqTYLaTTobWE+aDQgs3fpb1ET0oyk1oHH4oy10P6N2jylCqsgprxUns\nOC9U5DL3JUbUpf9QRcaXXgjZ1jrjZgBZ9/9QKUgZrSk9zCvPILEFiYIlb8O2\nktT+6kLvtygptlxI1EAW5owcMat4SKfd1GEDxann0XhECvGo3vM2xXFa5vmb\niX8vekGZwVaHQw03bFW2T432feKC8nIpdMy8RjcjNErQHo74SNth1+TFYsgM\n2Kqa+AjyK+S8E17YxS5l4zTYW4Xov6T2aK7xDUv7HQjL3fpKEVMWI466mwP6\nZg4WqdcmzINu5Q4Jd6G2SwOwiEIuHKA7OKWjG5dd0o9/72AtuS3Ie/Cx/EOK\nd12CdTQV4UyVGuAdvNiHLvlIzBJ1LbtEmFtBbFap6PhP/ifu64509dFagr4E\nsnO3\r\n=ehQH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9xv4uyF0BAHNFyOx6Qx3cN/b7PIgBJUGOAISM/4jcRwIhANiA55Uz4kOZ/nD9HEp4Gj/n79dBEWpQSq91KVinr0Un"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.23.0_1530138336232_0.14140835616973213"},"_hasShrinkwrap":false},"2.24.0":{"name":"@terminus/ngx-tools","version":"2.24.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.24.0","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-/0U3/JsfeDUNhKd7iRWlVxnvuu01UsynRX5saSwwB8Hjt8Y2dkddjIhBmYkBbuNGAIw7VpO694fgXSiHLqJ+oQ==","shasum":"9f2742bd428940e81bc835071f97a17ccfe59cb5","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.24.0.tgz","fileCount":337,"unpackedSize":2154237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbUgQICRA9TVsSAnZWagAA0zQP/AhP7hUMp/uA7C4ZIlnV\nzTSti5WKck/PcG9epyeQPbwH/ifX4NSNFeValnvBwFkLOTeT1PEwvg1UW+a6\nC8GDR1IksggS11FbuwZ64SyQRT34NHFETuvN0wzc0aLG9oAvq1oHcQdPZ7Zo\naHT+0L/nV0ixa/1g34pwSuFjbPfnKhB6d2c23XjdW8jq2gM+2bgBhg+0q+8n\nLKUSKy/uXYvc8APm6KyNz+oPTBjfAahrDJjijAHsy4E7O+IhELyuSIdS3+KV\nvRdbAyxuGhTHI1GS3BiSiNtQQPw6GDZC2lsxjzDbQ/c0jesAhh4ImBIcBtp3\nqDQ2Gc80n9AecSMDb6Nr8v9WWsysvmx2+SnZIsIn3fqUsFik3uzjVpdw80RC\nfD6UuZgYF4htKlBeefx8g90nKRkHx3gdKyGCTjRwyA9Gs5u29YrdtN67TJYW\nmoG3KjytVDuVqDcGeoBku3KSyDFRLpLDFiXP9ZX+GlSS8oW/KTQ1wLCce1ls\nTnKYscCnAYG+WDUwtO6T5cDA/ihek7dyigc+pQ4SWulgqG4BBfAUhi3M8vxG\ngqa/BC4VC8uNL58SxdMJOfIBD5uaph5YMUVbzK0NKz0Jll8CQC2N9F6+Coaz\nGr4zrVyBRSV/saCu8+9d5/FqiQWyLhywDJr2/TGKqyxlNyiuVvFdDIlyTNuQ\nN0N4\r\n=qJll\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH6Gcyb2Y7GleJuu3a59J0QpTlsu2uTwzvBJOrTuYbBiAiEAve6N/LIxF84rEI/WAMY4h0qvZ0VvvuumMAUI3wWCnU8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.24.0_1532101640427_0.6544616111136001"},"_hasShrinkwrap":false},"2.24.1":{"name":"@terminus/ngx-tools","version":"2.24.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.24.1","_npmVersion":"6.1.0","_nodeVersion":"10.7.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-hCt6nCVC0q0ZBQvZbO0in3ob5mkoJWvxAFDWG6R/ZLOTdzZ84CaA1Dg5PHXVjwOQrQ4SgNlvikq822zvY/D1VQ==","shasum":"2294c6b13ece5788e9271d22dbf191f38d3ac512","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.24.1.tgz","fileCount":337,"unpackedSize":2155526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVhv7CRA9TVsSAnZWagAA1uEQAJ0KTeqUomxxiuMn71VS\neql8P47/WztA0kPxjrwzQEqQtYyR6MC97t3n76Ntg5zMt9ta9EDSEmAVX/gR\nZxvYhIH1fEezP+cI4P7jDQqOQXUR0+DNe3oJoi/9pGgwTIshycaA0yR1UJ0T\niFe3sLz48PLGZPtwzZ526+WsymRZr03s+Q1SLa7PrOJTay70XrL3UcSf8llp\nP2LbJfT9sfUDAFUl6nD36QqswZUQ20EVbTFq5qZjqxa/3szGKb+D7MoOfjpD\nYIe0hnc/Wfbj7yW5v5gIVcPiE3Sbum8dNsYtLjJaEmq2EqHn7aNQUCogD9Ve\ntZDycBraXkV60d2iD7Mj9Hz/fmO9amBuePdrtpOvh+hJJPM7s5taL+Rb51KF\nD+KsRHraGIvp6QL70KPS65Raik+0MaGznwPDa9Us0Ra7BDN970hsh4qeTKCF\nu2jS3MI4KTmiCbZAZKvF+nR5EmJu/PALQwGv+4ykduTBrNN76Yywq0QWZ0du\nGVZwr2GrjhH3zfaaI+8CtdT1IJkJlIXbffDyF3N0+V2oetFOGYi6ewVKeRtz\nu0/4uA3RgpWXXTOHJsZqog1jima7t9k+zTWLvxqjmw4biRL3sRzewZcdPYyk\n9nF/lYi0REQgJ6Q43QaI/0BT+dkaBnrJ54ULXY8V0tRWmc1M/gcPDzfkcWqh\nOjGL\r\n=/fZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8NokJz1nbI0RgsbKBlmPa32U7FeEH4rhzVkWcAO4BoQIgVEvBdwfcBu7PSxZUNenmFWUOQptMqAb0P19IY14q/ww="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.24.1_1532369915012_0.04900098639119843"},"_hasShrinkwrap":false},"2.25.0":{"name":"@terminus/ngx-tools","version":"2.25.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@2.25.0","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-o9Ec6syrLaC01buDy47u2PK4NagDfn7ZSUds2P9i6Ws2eFhrW+N3mHFGTuj7vs1VIGdJj6mo2GJ+XfMZ+VeqhA==","shasum":"3cb1a2ffa2a07731daef2abd8fea818a20f27ce1","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.25.0.tgz","fileCount":340,"unpackedSize":2161486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbawXHCRA9TVsSAnZWagAA3mMP/09+t74FEEgOFmb96BkJ\n29lDKIICDevCS0lij+sBgjnp6C+x+AoTDKwqf7NYoTD+LxJVzwPNkQB5ygvS\ndMmiz1PRrqmxnf1ZZ4vEmtcbGj2f3OcBD+yGEMMBGMmI8uvhAvEQy77qKQTo\niq/Z9yDoo5xus3jjT9YKJGYyrzXadzMHi/7fVg1YCj6lozGDgRbDyWRIhxx4\nQsWEX3egfcFZ1vGPqXfXuvnDGFTvstNk8+1WcTz5X7NUZQkIHhFbJpbvIoTf\nmuS8CrU0664UlbIlY2p5PQQI/R9qIaoDHtuQyRxQjMORjGNOhGwnEAKIssQp\nTDuF7QAUWPLIZDGu/euhx4lH1zUa/0y4kTtHIVRgFu+QuG4R9AxNrgA+LxYm\nGak0UCTCcxlok+JnfgsIM9/g+qtkAOIH9xtB81OOTfUQx5ZsyYMf1kAyn1Zy\n6akZ+8WC0I3x4mdkQO9YP706PMedtc5s+V2Ccy8jSgBR4Jrm+hv1rmCsqOJt\nE1Qhi/39T5Ge8Evax2X9uYDZSQTV1gAA3GLDryLDc9vmuUV+2zTEJ/TsBIMH\nRlT+k7kI27JZnP/pah1faZS3hSsa43yFeCfLXMFjUebkBCn2Q4llDXW96EBz\n+sEJgYJoiIiXdWvrQHMvCwhM7AlEu40DidY5nYZA5CNBjgS5+qhwY5mZRd10\nt3m1\r\n=6n2K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzRUjBGJiSvZqRn1Xnk7dE5wxNyxoIG0JrWnojCq/6qAiEA33Xj2OeXMg+Y+J/cV5N2dSOh00o1XrGUZWfwHlNaEr8="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.25.0_1533740485619_0.13684189626945154"},"_hasShrinkwrap":false},"2.25.1":{"name":"@terminus/ngx-tools","version":"2.25.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.25.1","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-mVyjFkFQypA649YJ3tCUA7oaUUhSNrQlA282u4Dvbl6yK4DuwdMuTxt8z0LYIB0KgQ1qjuc2ZN5DsfpLxWq61A==","shasum":"538f49626568a1d9defb535115c6ae2ad056ca9c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.25.1.tgz","fileCount":340,"unpackedSize":2162746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdDrSCRA9TVsSAnZWagAA+ZUP/j8rWZcDXMSEq3a7ILD0\nuP9lcuT/cJxBMv/i2xs15ykeIddwsxaMPJiOID9I20slPfpnw1naWpb/pBy7\nkYgsWGo9oIt/u8S/NN0jwbrKjMVeQXCUSlQ3JfdTkKdUjZ/CRK58INhtkwFN\nU/8PNPDYLRV5cy9dYHLiPSmaieTjyu8AnjjjsyqoOgEMmAcKiYyVJ0rBRz4z\n4wJNcpxU3uVnUnmDEHJdFYBxe4f9uZ1fLIO+lbGy8z2VBjeayGnIpaivmeb0\nDPYKOPiIOVFokibIAzKFGFy4V9xOZ86IQJoTLAamBOY8ZRbBBdLS4+SD8VFx\nDUF4ON6WY5qZRbffv78Z0q9IG7ggqK83rMp1MElXHK8nUYxCX77y5IDU4FJN\n/iuzBAizvnbzd5egUeRoQx/dgMqtJb3OmBxVRQgImU9nrwRjftfj43mEvWVB\nSmc9MVrCLEg1J0B9lhY2x3wUhdvmBKvefbzKnRVV4o1YyjKdzoSprcenQGSk\naygRJu1gKujFrEvS4sLgNkWav694qFp1DobZqmBbDAxZoskBu07kY3sLU3Eo\nMX15PuAYYq6ZK3bUUAo0BdPsKAA/VbpCXDhzFQWRWAtOhekx3szQEKVBizgJ\nXiy4neoXpOBwZntn7bPaLWf/PJ3ksl7QgNpVnp+SqONuCx2M8qZKs2TIv808\nW5pq\r\n=TdZl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRNDAyZaDADt+iv3aD68uZ8BhvM4SKJ93zbofZftbmKAiA8piic/QO/BYqy+YR6YEHvcIJ4r+LFQh6qX6YSaSMLYQ=="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.25.1_1534343890671_0.49718623789101035"},"_hasShrinkwrap":false},"2.25.2":{"name":"@terminus/ngx-tools","version":"2.25.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.25.2","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-j/M3HcrK9ylkZYY22GQ0SRmh2nXHQvd7aMJW/JCd7w/cLs30LNvesaTWNPfYuugEiNq/P9+lCtIbyXFlL+d8OQ==","shasum":"b9d1faee9d8cd77d5e3bf0061e4cbbc09430f585","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.25.2.tgz","fileCount":343,"unpackedSize":2179149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfEMPCRA9TVsSAnZWagAAhOEP/A0i8qhDbxsjLP1wX+ql\n8rj2NVkdX3+sfDzDns+nudx5PTsqo+qnVRQDPGb8fxrrsrc2KsgnErUxQRJ7\nfHfr4AJHtjmfEVjaYMTr9Ffb1KZqBUz913weK1066xl9F6AWOTsBA0jaomAC\nFW5ir3wRJ8RluIPGMWF+2pWzJs2ZH54cZk8PGcOfiT5EduoxbOf3KVaJLZx7\n6taM/C3ujrdZQ7DLbWfhYFKotEDV3C7R0TF60TrQbKgEqduhJf/5vY0HfjHj\nXnDAQFALj++yUaY7R8DcRE+Aq2R4APxx65xoMHQUcK/fL6qan9zgvVS7AY3Y\nFARE7iADkW9a3F7SddWkMGCSXkS8BJ3ajhz36iWDPQUwpNboFL2rWgrTp7rq\njsS0YEEww2QTzQBYLoCqRYuuXTw/rxZRsa+LvNZjV9NkZkIm7WDcJ03Q1fN5\nzejCTwDVb9vPt2W74O3RLvuzoXisu1a2sS/EUGlsh8eMlayV/bZMqWsLR9/G\nEkWz7ykGqpSAjrg7mGGYyqMwmQI4Pj9cRhkIUI7MM18mo0xEZe8JF0mLvhqR\nOoykYMPDqBW5VZbaisLFkBnfY2YtziIWm1g1aKo4yDoJHNsi1B2sPF+tXbGb\n/cJyCt9ekqObEJQW+Ggk8W7YSbgP1kFfch7Q1g92UuV5J6cneZZFMC9BqklJ\nB1kX\r\n=dpxQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqpAoWuVGMlPkOx7MrJwretj4rNqAWMlR2AHsgjNh9egIhALQcB/SC6j+g6Do3ha4p8iV7D9neCJgceg6nu0Pk/ifh"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.25.2_1534870286609_0.46869166402856965"},"_hasShrinkwrap":false},"2.25.3":{"name":"@terminus/ngx-tools","version":"2.25.3","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.25.3","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-tDDUtI0uVktznE+ujVOlGYjcYLZP74NwbGGiqPfgqIgqEGEIa7gD6ZEiXLQHnmhEBS0o3pWePq5tl6x2yVITXQ==","shasum":"220e525e9266cd9e8cd540997c39541dd1c8080c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.25.3.tgz","fileCount":343,"unpackedSize":2183779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgB/2CRA9TVsSAnZWagAAc10P/265X6EJKq6h2Gk4fOjv\nsIcQbxJrV4IwQKZP62iDZA+S9qRF8ODnTJ5gXInxLSeENeHPt24ofJQYc6un\noWbPL2ybGppU1yClCUMiySN4KCmtkURNSwEaFyrOZUh3h0e6URy0hZ/fSvNG\niKeovQP0N/Wh53Z4aGHAQ2zrEA+9pS+FsMMhDtR4266a8PRUpoNSIdSTLqki\nC9fpCycVFDMJ6G0K80C+enV4rNvmJk3kKuPJ3cjsnR5/u2PUyqv6GhEMT6aw\n/TXB3gMVa3NRnzMnSvJ6FiuCaM4ktZ5WxXjcb2pjF0m/QUkayPCOS9QKENOy\nT+GTLvI8hoMzGL5Qxj8rziuU05OvVoixpX3HCE3bVmic9biL7kUzyTmsx6UH\nULF1g3++Hdg2GuUDjm7oItY3pTdjvotpKdZJBr8jOhg06nrf30+xRgnLIUm7\nLpTvsgTIQYLQcdvC0NhdBRerkW3Y1tBhXa2reDh2Ul6E1mw2Lp24lQegvFAN\nL4cdCp0a85eEsYXWrd/8P+0nnm9NrL14p+rm8oOXF19CidKfy7mVywfXWgVi\n7Y72okFgZ8ra/LRxWbmtrBaZuKO+OEb53oL5RbsDH8i1BGdyKBAqQojcbohJ\n/A5M+dkjvsvaXHoHZhOt33GrbA5H6Rwe15Erjbe8pEe9W3Lt562bLRWGCIw/\nIdTj\r\n=FlK2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEmNLtgld3w2Poimued3NG4r/se6lb/xxMD1j6ViZjxwIgCxY6AvE/vvnlxd0IVIAApwVyZIbTWGE0VQOOarraXpk="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.25.3_1535123445691_0.2076224404713214"},"_hasShrinkwrap":false},"2.26.0":{"name":"@terminus/ngx-tools","version":"2.26.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.0.3","@angular/common":"^6.0.3","@angular/forms":"^6.0.7","@angular/platform-browser":"^6.0.7","@ngrx/store":"^6.0.1","@ngrx/effects":"^6.0.1","rxjs":"^6.1.0","typescript":"2.7.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@2.26.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-77pQhKnCpU4c52bDB8AZojmTZqJ0xIEX6Jzy8bxrun9okb6hA52dOvKSIDTPvwOVJyiFBmpMEO+o77sXR+YhLw==","shasum":"cb83e7278b5a45785302d6b9928345760f83adaf","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-2.26.0.tgz","fileCount":349,"unpackedSize":2223004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbl/HXCRA9TVsSAnZWagAADH4P/1mQ6s/B6eQ/K2A+8Tmd\nOjbjeMZMv0F0lSaGIK5liKbfoVsVV8kPCG+UEz7YKFwhIOu304Ro/8h1Q9XB\nBLJy9EWv/lhedcCM7p89WOr4KsuL84nTOCeZ1OzUYK0doD+B6OdgdpCGGpn5\nQiZyz8oBO2POiYeBxzCLPJIk+P6XtA3deD85ThgrMLc/SZ7dAPW7G6/kMA6z\nfmQhHGwEY74tltRWCT01Ak8rXrurEEz6UehQIAEQdxov8M1egynPTNL5XMQf\nG6QmSjr+twxtHGfgwBeL732EmDhp8Twh2U56m1PsbVvrL3LdAvM8CWbj9keZ\nyqvGNULzWY1CalLTHU+KmyRcFv9nUr6zrtibWeda3MAYN1mK/qH+UPSWKrs2\n9ltU2JhwM6zbzJheeIjQo+gj4fLxTnDeRkeonsmWDyvbAxtG3H+T0iFanZgR\no76StfSVSSx4Ra9BGlr2NavuEaUWCYwfA3JS3eqewU9FhcAcWeMfUE3OvEPp\nkOwJi9vtkZx/RPxrnuZgFvMxljCXaTQHyreKtVX+vQo7K5DdShQd4R0oB+uz\nxI2VHfeLWlQmi0qmhv+5pzdqPjFkcxnIlTs3GLt3akyvWJeh9WHh49s7Z9fX\nVkHo0FJUgrfct6TuQQIlc4Vh4Gx8/vBM2lhT3xap+QKxKikBeIrMkKGqWlEw\n/7o1\r\n=23dV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHRgU/ioUhkuuc21DGzoYhjB7XClOgcQb9ffkPpGomVBAiEAvJrDBYqShAG+JFxEVGYrFwUpzhV2seAHMOibHScz3c0="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_2.26.0_1536684502323_0.5635637656186132"},"_hasShrinkwrap":false},"3.0.0":{"name":"@terminus/ngx-tools","version":"3.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.1.7","@angular/common":"^6.1.7","@angular/forms":"^6.1.7","@angular/platform-browser":"^6.1.7","@ngrx/store":"^6.1.0","@ngrx/effects":"^6.1.0","rxjs":"^6.3.2","typescript":"~2.9.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@3.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Drg7O88MwNPXg3M1KqQROFRxbcUUid01T80V34icinY89BSBKHBtVkx8n+IZ6NfcdCCAOScJ4X82In8Em/GKBw==","shasum":"5072d3e3f63b09ab4cc1a88167e3ef6c0d941bf2","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-3.0.0.tgz","fileCount":346,"unpackedSize":2229853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmW6iCRA9TVsSAnZWagAAQA4P/1jui0nIzUn5xf/hohP2\njaeKPRgSD0wiHTiqQCe5thNqnlparrrN/dwoX6xj+qkjrwTfXOfr3dm15kw6\nvLvDWe21Haxge5nZUJWpS1LP7tEn6z5G0peObjsVftgXTbHf2aANgVzKL0qQ\nTzCiY8FlXDKUf8toCwjDeebxN3lfmD8m+IJBmb+KUW73bKeMIscvJOTnp9pg\nMIwkfcq+8YKAyVdsNpD6eNnBHhbfiZL2LSTc3tJ4SG2z3/FjGZdlyndPq7hb\no/zhH59b3KW/BMKApZfqgbO2RQRT9OTrAo/QNAmtmEN+jH/stlISqWy7UDTE\nDuFeKFkTrAOjMrfYbTMWhAXSCUZl1ojjT9QPBKzNQcvAXYmT+hNRvbov49RK\ndmL5w5CphwK1ExQUavQuYw4FLIcrRgXN2HkfDf2JkZbKQXjnAWnt5b1DKNhK\n3LFn/Zz1NCGWCSDrnW1hzfVSEuJCtJFmEtHuJMh0eJtAWUdsIqeh1B4eAJs+\nMwLAfNlDlet4KLKz4Bm3Kqme32DbjuAyt5PmRYS1dadGb5JGfIEefHtOMQoa\nxfURGgvdVGIRPalYsQArIgvvmqi83GsqO9KPxWk7BOc6/mqQERlmSmN4ZBOz\nxcEDa9eRs0WxsjMzlkunPmw2bZqhibVWuBA1ud8JyFk7NGyhFYXYhgyGG/Bk\nQOo8\r\n=CoKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF4a6ZN5n6XlZR6h+dOd0g0K3xxqnoJz2SOqeopjgFxQIgBGwvUfmjCHz9V3/RWwG7VZ7lI9bagmW0wAB+R3rhcCc="}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_3.0.0_1536781983810_0.2994766106106679"},"_hasShrinkwrap":false},"3.1.0":{"name":"@terminus/ngx-tools","version":"3.1.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.1.7","@angular/common":"^6.1.7","@angular/forms":"^6.1.7","@angular/platform-browser":"^6.1.7","@ngrx/store":"^6.1.0","@ngrx/effects":"^6.1.0","rxjs":"^6.3.2","typescript":"~2.9.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@3.1.0","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Ed+GMB8a/Q+IuWH/Lf+/ixHgWnmg4Jx/AuP5RBOTQDetEtT4syxyMZkt22nVQJPMUuZvHUlr2fdPFIphgPFJbw==","shasum":"9542229553b047a1ea13994b08f3d0c4e54a0e32","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-3.1.0.tgz","fileCount":346,"unpackedSize":2231113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGPeFCRA9TVsSAnZWagAAJBcP/08oos4xETcu75r/2vUU\nc9UuxQIHz0cw8QBm9qH9LlSY0YMIW63ifp9mBE4nUVmUxedkEEi5QRM5LOzs\naau6XcZXd4tUEJEk6itw7MmfBGySKgnAp+VEweNlsmJasNR9W3Gujh0v0dn2\nJKpQ/eI2YJY5y91hors88vC+/IXOpQmjS54xzb8e08gDhh37D5LvCtTH+KKU\ngtO2cgDoQKBNwA1Z9KjBYVsLH+ni6v2uUghKYL7z/CBM2zRFUUvIWMhHdy7P\nB1BZ5n0FlbpCe7hzOper+T1T2J3N+s58CaYA7l+I74VEoltEKWhfxEDEp6Is\nk7TP9ipPrlEuxQ9fIPdR6eEeR25wqoAVdw/eGSewz0HqUkts/ksaOWCyfBPE\nnrUxDPlkALCPS21Q6KJrN1fWO40uMfQNAcPWOPgN2kKG7f5dVacM1ooVuPOM\nD12V6wLj0H8NF4avY4Pvgd8cC6Qp1Jk9juqPxaerK4PiZuOyNGHtSa/SOlpB\nhpIHO5qs/wQ2uUzu14G3wW0hp41Leb9MlnJMGy9mZMKQvJ2nmym4jLtwucar\ni8cGuOxkUZJuiRO8dCB0zcLC5ss/5+w86v4DCyjyRr4JZc9adDtrYkr+ASJ3\n0lPQmjVDfFFpUf2JdF7IyPJz5W5zzbN7KmMTH5XGeu7zUezoW/E/4SjWIUkY\nqvis\r\n=Egal\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWKOwldVG/Cz4P8IlyfzsuVfKf5shsXY/2WboH9+watwIhAOF/PANd7ZU3e7wWBqR8KbT76RsAV3uN07AOouGvw5Lc"}]},"maintainers":[{"name":"benjamincharity","email":"ben@benjamincharity.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_3.1.0_1545140100587_0.8948868002662775"},"_hasShrinkwrap":false},"4.0.0":{"name":"@terminus/ngx-tools","version":"4.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^6.1.7","@angular/common":"^6.1.7","@angular/forms":"^6.1.7","@angular/platform-browser":"^6.1.7","@ngrx/store":"^6.1.0","@ngrx/effects":"^6.1.0","rxjs":"^6.3.2","typescript":"~2.9.x"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@4.0.0","_npmVersion":"6.4.1","_nodeVersion":"11.6.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-j5MzHKxURCtMjQz5mSoRGUYgLSqPDf8pyR9YX5uqbt+IVjYDp5nERLvLrgnPUR48DEWrN4eJgFsHrgxIRLBSDg==","shasum":"dcc190ae62344cb0be5b27bf8b1b5418c9a8d931","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-4.0.0.tgz","fileCount":346,"unpackedSize":2231113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP2X7CRA9TVsSAnZWagAAdZIP/0aq1NO4QUUz9G1RE6j3\nIUvbwFlDBu44kOGYeuQooflRtQutwny3Piu++8Av32nLv3WgP6irMpmCsuo/\ntIXZHVgN0nk4VYOJOjUGO/RvbRCR1FPCr8gV1h31L331wRxbPLthJs8jIbMn\nG4bfRxv8BbdHKmaH9TCQisCImTHMuUiWhUvdt7pn2Wte9UQnHsDs+3fQEMvv\nyYjh4hW022PdipdFMDYBb1EIdbYDrJfR+Acf6Yiu8fsPCW4AawwIZchY/yHR\npXxVQAH0YN6TqLeUyCk18+CrYGm5g2hVgYiCSJzVbfcUNeWhbA6fRC/JImrm\n89js5j0hlVPSjKL/f6JmEjrjQp1q2AzanqM9OnQ/Ou+OpaLIC7RlwL3iSv9z\nttkmfopkPw5bLIQMrcv6htADaWbo94ttBhl8wf8vEbMIubOCm0FGk1PsbN3p\n68vWM3dfURsQUAFYbZgZOnfWbYUSo91G9NFHipLRTKoaZTsKwdjDmYsV9ho8\nKrfbFYu8TFK5uXpBHrEWaGXfw14QJ7i+zZPPlL5Z+vC+DcIyjHeyoAGd43Ua\nVz2RqO8pxNFGYZvDAOTQFdzvdLKnfMYBRBZWVifDDGovAPYH5ak+sypy0D0T\nYo14pmehKCbSzM6mauEJ0Vkaiq78mQEzhB3QxZR7gA85a9Kl8R383gIbiI7s\nytVq\r\n=TWo7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRoiB3w2P74LSPBK/hdtaWSvLlBV/X9UZW6NpEc5BIPAiEA03buDJRRnanUW2EDe5ZG27zS4Aj5zSdVZH3V5p3te4I="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_4.0.0_1547658746659_0.9191753661216078"},"_hasShrinkwrap":false},"5.0.0":{"name":"@terminus/ngx-tools","version":"5.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@5.0.0","_npmVersion":"6.4.1","_nodeVersion":"11.6.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-70tF7U/HDI/iH4m7RjTvHz26q4N/XGPjREHgv999Xa4KcXVzgoSQVmS1v2I8sdTds5biEXPU3asEJdD3OmSbKw==","shasum":"2a845d247ad7d8f8ff1c6bd3fe4d316643642497","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-5.0.0.tgz","fileCount":346,"unpackedSize":1721426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP2lACRA9TVsSAnZWagAAYJQQAJcUwbqVIvujQSPOnMdT\nO6J31fng1lzLKZBiirQ4RpfNqDt8knkSgtvl0oQ0fedW8nqJR73CJHr83Jlw\nBXPL5VleXJXUsx3PJiMGOoGDO4Bf18GnwfGMG8DOgfJUAEjaRNWM4Sto4eIT\nrXy2JIznujj7kEQxhpAM9cuXvs7G99nRKcfDVn+qZnoO88z3TiwEPr38etwU\no2+LHpaFAw73yO1wFrjxd9RRfZkBa85Y9pRExBH8S43azbbQ21xCRIcyR8gL\n7bzMjYUVaEX0e3b/W2ghuQz1uY0mGVZpkwJLXZ0YJ0grjhkLP65MIKrHGjiW\npnUEoSWp0Lx5eajIQLsVLqfDNI7M+aq+QQCFkDzIWjew8xYb+SOodpwKyzdD\nXwm0UJwtmIDiOn90KBti5/FMZsaphYqqX9Ai76GHHcIHRnyk983KFpo7p3TJ\nNhHN6b6pruIvk3aumq9fJOlooj+aRlLUGqHzWSNNR7JTE7MR1z4lytB2VNkt\nh+b38gwuYnb1RG574JTOG6AuVYlBg6f1hpnRGhmUjrejcgSN7wzwGsNwdVJo\nc3BlrG6evVjgrHTxoqp1roQKMLa1TcnsIERjG0NIvNivDVhfc9oi/ePvNAJl\n8um8YgWxJHJbA8LpD9meqfeWGkBi7h1WzqgTvgnr4kFM+63exKlPzKBz7QHh\nucR5\r\n=rWOI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKQUPh/qRRQ1iXGSUE/Qee8TINupp7RIx1GEzD56u0cwIgIuoY2TOgRcPhVyevh3paxDwHwUGXSm5+l7jeeEmjLss="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_5.0.0_1547659583523_0.15055307338021273"},"_hasShrinkwrap":false},"5.0.3":{"name":"@terminus/ngx-tools","version":"5.0.3","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@5.0.3","_npmVersion":"6.4.1","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-2Tq5kyl95tYxMIx7db3b6DW4dROAxaWrOyLXqVojt+UOU0tuv2apvu3F4b9CohduiSRM2e/GA+ei2kRhKc4eDw==","shasum":"fcc45129e7670106cbc4dcf417270950c2b220d9","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-5.0.3.tgz","fileCount":346,"unpackedSize":1721294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWaMiCRA9TVsSAnZWagAAJmcQAJS5Ii8ijX2LUgSFIssJ\nsj715JXjndoowXy3w+oaoV2SHYj0b6fw4FbMsXOz5aUzG+6bfHj/qnl4nJiE\no6A7OKgi721aDAxH0mSzXFSMSyHRvJ+nbNaJQJJ4ba/XACSm1w2v0C4yIAXr\nomywZm3yqO0xhEl16gS/D5HcYr90/MF+93KHBBZjNr+qZq8c1spp9+MvShOC\n544sMLhmtVOlmrAqvD5YDVS3iwo8iunCfxikWKsBxm/wSY5wnjjLGlgp87MG\nrgCGfX4Tab+67yx+bdIN+gwjBcuLnofwDaP6Ceg6hA4/VFsihLpiOW7Ijz2i\ncxDN2ehPaZg0tQbj3kWBI+2MszkYM2u+SVLUZaxWFQrNbI8JguTeKras6fb4\n1qOOpSltdt2oL2FMXAnwwK2ZBYie9arHvsaCxbSVQZAoLYgnCUFGnt4ZDCBf\nyCIHAjrq7e+wkAxRsEk+PWuCZjXAPcoxBqt721l7T6n2b1kKkW9Mf1jLA58n\nh0Oir/ckAabdX7cjsBJyLltFhFcrffZnz4Vc3RLclpg1y85nVAkOSG5pykfI\nW2U+dhD8wtHWhJT9TCObRPKdZ1MfCqxDoyABFezvrQm/iB3fkmpBbyfogB30\nrixCmhHcQqCiZKTN4YV9ERJqYGiPeb1roYCiV6c5gSr08aUAtlulYP9KvDYm\nTmAO\r\n=Np7E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERIacK1tUkKfUYu+HBuFwIEFfiWcG7KwCPgfOTMRpmXAiAf4gs0Vp0bcbahaVzHE6u4mxzRCCPQi+1hLXHroIYc6g=="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_5.0.3_1549378337164_0.019820282912964338"},"_hasShrinkwrap":false},"5.1.0":{"name":"@terminus/ngx-tools","version":"5.1.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@5.1.0","_npmVersion":"6.4.1","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-gOptqpr2hLyzmjIff2b8veoBZ8azHpGDi62wCo9/KTYnehX3uzReTjJEPkQAlKgobty9qh2NqEgvDhc+RpWwIQ==","shasum":"287665b8ee30c157e53e638712028c8c3ff93963","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-5.1.0.tgz","fileCount":349,"unpackedSize":1744927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZcICCRA9TVsSAnZWagAAv9oP/3IojVTa1W9ctMq8TGo8\nQRraIitoUC3C5sme69qOAgVZ6UR29mguxGfdR1+uQHLWEMijD2zAhv6628fC\nOQBfd4OpCr+8edAFI/TSoqZAj0Eel3HQdcbvdFHdh+gfOlvBD53Fc2VpXYp8\nYcbmmS040FqrovyFFyX/X3hO0II84Q2vuIq0VDcckpfB9F/W986jSlgftyyx\nuN0Lxc3NYnN+395wLooL62+XDmdHF6n8ZR/u5pDWAXRomJ5CONNJtblHVuE0\nutvNnAlLjnbDrn/RErgIkTerEE5E8MS7AjuFlU9XRPcvp+4MgqBkyHaZLZWZ\n70VweOKhWTXZZduJ1NtYSMgJB6PCk0SYqVQ5h13YU5Ez86VOjoQ4ftTIR8ql\n4v+6FStOFfnI0ohatfnCX/w1jaHrjQ3D2uF6zyQmxp3R2UvE8k8nkRo5v594\n2yMRdO8RJp8av1yTMVePTPm7ImCTt4zAyPBfwq7KXcsWvOmAGJelCPbtkRuy\nxIbshZX6q2DvxeH3wKc1rGmTd2iCzxqmYOB+BrDGZa3Pd9N7r2RA0vv9oap7\nEaX0ErGx5RqhO6NnMT1PgJQ8Vrr2kjsl+wFZWnLbC5U0RPhFt316GVnWQjXB\n6WH7W+mADFWJfcfL4nWmlHhOh9uB/t7srp72by1nqnQLuPgnh39UJfp6ipWd\n7PD1\r\n=khL3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDN28LP9XH9qSm5eVEcyLKBMsYyBaS0RoI4xMGkfHpGXAiEA7Wn99MOJEvjLEnqvLqpbzg2kgR07jwK3vJMLJSVSMLk="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_5.1.0_1550172673320_0.9577139478557415"},"_hasShrinkwrap":false},"5.2.0":{"name":"@terminus/ngx-tools","version":"5.2.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@5.2.0","_npmVersion":"6.4.1","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Ltpat8DSDHHeGJqIRwsJOAZOwRIV5cNldQbQcyJBAOkVDyaUVtyrere8x3AjxJ7x5g+e9tbgKfoPw75GlDEasw==","shasum":"c33605951bf4f3a74bdb74d2cd033159e349ad27","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-5.2.0.tgz","fileCount":352,"unpackedSize":1852956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZxcNCRA9TVsSAnZWagAAlZIP/1SvqLEzBs2PdSghax3w\nO5ul2PKcmqgXTCV/21lTrNx0NdJ+DVgHUWDuBQBnDUIuDc0hy63CgjzdCOx1\nuVNgHXwlNoAAkmRWvE6dLig/cyJ7keLTY4h7f9ReYmWRO7Y2ynmVsgwCwD08\nIFTAWOxDjkTHtAkyk0ZHoKbm9DvlXQiDHmmedtoy8ByfjTLKHLuO736vN/bV\nksolXLpPiFEbjyrYRMhbo1MwnCQmMYV+ZT5CYxbVu1pjmUxmDUYmQTC+IGnc\n64ZX7fsvgVDjNJ9bNW2qQNceOdFcrzPOp3jsSweLniE5wnNnzO+gSEWJViGl\ndEMhuxQzCT7oeOq0msTk2D0MbtHn7/+zhUGpQG7EzLW7SRDyR33B+w+vLkxs\nADlf2FDtyFymwOOAwoZhbbS/lGBooFgpUSZIo8TzwXsOrsD/PTey/DQVz7yV\nEkQtuxJ+TS8yfx7ShB9gWVbd/Ytee/e8+IYu/pTu6jizqVRTFsJX+8bL3kuP\nOgnsGo/9IYgk8fqpz5+Fpt7BUu7qdKB+CjqaMjI55WU2njX7pwrGFK9hxmHT\nKBQTS0XEb6K9G2Zy2CnwdIkn9U6KgIgHl5Szke9y/coiYuScwnDoyLqwm7qV\nRtysDjxrO0Zi830MB1DDu5GbAzY6aC/8ZPxQXy+Ef0+2rCGWJLCJO2fofVg7\nScnf\r\n=8+4i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnAlymbIqVuhpZjdXMRZqwFhhn5BgQmE1QALH+BGe9bwIgPNJW8lVk4JrhsEvFZO3WH0rrXOt97F+5x8NaYPUnCuA="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_5.2.0_1550259980324_0.4185473229780339"},"_hasShrinkwrap":false},"6.0.0":{"name":"@terminus/ngx-tools","version":"6.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.0.0","_npmVersion":"6.4.1","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-HOEJxjl6ozZUpJm+Tfe9DHXnLD9br3zxbE4rew78No6e8SbhS7wrF0pCw+vERmlp2CjBhsHk1WDIKg/mikxY9w==","shasum":"9fd5c33b5b1a1e430cd014335d812d26b2369ad7","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.0.0.tgz","fileCount":358,"unpackedSize":1938684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbAEsCRA9TVsSAnZWagAA/jgQAIXM78AdNKowGVRmNoIN\n5cNl+Cqcxf97M0tm7w8zeHtbDhXGhkzuD15qDtsB6pLsxRmdaZmkYkDk64yL\nlonlYKPQhyRrflg3NFGlJirJZaB1Q9/E4iYORwvZ6UpFXq1uQmGpYEbdIi/n\n4YoKztNyd6I9HkX/KQ0HpQRCK7ExnQVP1lYbVZqnigX6pYROFHB2y/Qb7+SB\nk1xz1sybdSAqd3h2zLnirX1bNYSUgXxeWSeUsRqH1yBe9f9bmNYwr0yfnNkc\nPSCU5ObsV/RjAjBtOtUeVE1KUa87jBBS9KYGXYsdEva2R2LHvP3IjiOQZDPq\nUBipiWw1EeErSqcwzZCCjKF5SPuGfcavXdqle5O6SNX3SzEu4LZrS7J15ydh\ntUWSWMaewukEMzL1EV3Ay45KrSZpdAoaqR0FjZSBx/NBaE7y92nTODbNiIP5\nFseEcRL0/IIJyyxVjD2HQUyjD7RxhowRuGec2IuF21efXtDMLZp+cqMtxNNE\nrrjQznXSNBgDEsJkYmopxOUx1wI3fOgVv0rd33WXf3yj7BdP+B8jAVY6+1sK\n04xUkJ/hsoG4Z4L7v85ugwfpQP10+O73dfVFmuljfjlSrkPJpGw8cL5VygTf\nam2WMSu4z6eZ3L+GzJcu/bCH+SHXsU12J6ApL8YJd8foMNVYZDDG4tJVezTl\noK+i\r\n=4E+W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSdzyFSFDBTpuEu5/xwbyHJp4upgoZ9shBkppGyYGDEAIhAN0B/JbIiu++w880N8MtOk+QK76oP0pUvYn4aM4K8Wnx"}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.0.0_1550582059489_0.5132483368762071"},"_hasShrinkwrap":false},"6.1.0":{"name":"@terminus/ngx-tools","version":"6.1.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.1.0","_npmVersion":"6.4.1","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-bW8ch5/n7PpSkj//00SBmbW+iJi78uTEYM67oFd4J6+enqK8CKZWe43w5f+GKhl7k0hzVyllfJ53x+7SS77rHw==","shasum":"34f4935879904c7630118bb2df131eecd12e79da","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.1.0.tgz","fileCount":361,"unpackedSize":1953119,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbqSPCRA9TVsSAnZWagAAbOUP/iQ6mITA0BGLHkea8FNF\nZC9jiFHdRJZEu/H62xLr6qv8yjy6yvXBE5jQuKvTZYJ+3ewrzG13WcnRhktG\nClfnd62e+knqtY9B6Eozusa9ccZfp98ZSM4wzgOCPoc0ebfsbozwPI8jzv1A\nKsPwuZLlu+NS2mXaVjDvZlVvc9gByqbeDBWQh3I6EO2HJo9i9LJZk0Tr9F/y\n3JQmMSiYl+mN8SjBbtP/j6Y5i35ihmgIS25kVBxHPSdjwehP8ukfz56TGdJ4\nx74uRUWUFAYE4uv8V6/Q9yEwds2DB66Ulb02+TQQVOt24Bn375F840q233ax\nStkaspmqJPEqvedJtFN7E/d0qbu7KvF4ke+dAtcOdvgLFWK/2tRyS0E/LDt1\nuDomtRX7mPR1njMglfrqzeJHxopmGCDMEMg3Yle/ajCgzPYW3n+2Q4PE9lxy\nwcOHXWiFHLiDxlQtXWF0kDVIuVCA2/udJkgz3sTutV0wWtZG4qLVZTHY8NU8\n60nVDLQMoz5AXS6eSBWWrjpNf2kDHGdSJgcWVxlWTF4Pyq9IRW1ESARrIT5H\nyNCLPSDcAfLntPflZHbNsEwcVjJREZavX38ZYqaTMcBc7xsOkH5Isl3USArY\nehHk6NWB4phi0ch0QAgjLTTmQG5Yxojl1lKxESehsZgjb5cs4amS8SiHN4sk\nspCx\r\n=TO7q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnh0DOUm5IDcPGi1+qZGbmHFeYuDPlglwgNFwetBq/FQIhALIcJMdYZ9NLHWGIKzoWCml2UZdLlZhCDB2Y8ovv+HAl"}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.1.0_1550754958775_0.5938325148755201"},"_hasShrinkwrap":false},"0.0.0-PLACEHOLDER":{"name":"@terminus/ngx-tools","version":"0.0.0-PLACEHOLDER","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","publishConfig":{"tag":"wip"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@0.0.0-PLACEHOLDER","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-Z4TNXzO78JJh0w4SFsZvuDIA6x2EifqCFQN2z+En39lOUCAZ1ETLu2OujQ2MMiJOGQRIJMC3MN5XZqU+fLtU+w==","shasum":"fd0d2265f5e57dc691b7f491dc6dbfad51ee0bbc","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-0.0.0-PLACEHOLDER.tgz","fileCount":361,"unpackedSize":1953438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchqA2CRA9TVsSAnZWagAARCIQAJIeNEtWO2BRlzMSHve0\nhTngqya4CwbYoMz7S7bSCDFloE2Zr/DmrHUTjeUs2CM7K9Cxf+b+bHZHmpoU\nK3dhY3i3ZYcggrLWb4pXqr8wssQElwDhARd97ADGRjbvSnBSN592Bd54ixZT\nFRZkJ+G4e4r7RKURGdbShk5cRyc40en3NQjP5v3O/Do9Izb313I0X53TZCHE\nbtRB+aqL5t85DGVV0cYeQZcn32QUXhF4diK1IWw0U2W4uv8GPtgz3M7IxNt2\nFPIAaGCPAp3uUESUj0j0vff1HyYv8ixqLOHdqeeq+sNLkSpGv7Khrniobods\nALQ9CCnOTmp66IdQmaiLrANb9QVlpAu49oM+wLZfYgZtEdzZun6aCaiG0zlv\nTc3TM3Yn5J/1vxI3BZLC4CAaVkBwzETAMh9gIx58rSn/AwHBaPygsmnXyDSm\nlK8aF8JIs/1SsjUySd4oLSo03eyedre+THFteSOBrlCdBsbIwHVObg/JzQLt\nbWaVGU8kmhPIPwJbI4yqMr8xr6RWOezqZiPOZA1f87TNLfFrcgJS0Hobb93+\n4rHMeyZ7MUCbKdPlntTRd2F2toR6rSZy/PL2qr7vR/BIFpPZ/34JyjaM6NNh\niaprB+G3mMKCfotDOO6Y3Jp9XZlkxQzCbU4BKHOpC+VNPi/lUoCzaDUuYQj2\nVg7l\r\n=PQK1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnZg5NjKL4aMwLLpmmnsxJeR8y8N6ClmrEwNl/lHm8bAiEAkCKcATSMm0txZCfVrJlELFI2rh7XyM5BriiAUG8Nwx0="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_0.0.0-PLACEHOLDER_1552326709582_0.33470837231102335"},"_hasShrinkwrap":false},"6.1.0-beta-1.0":{"name":"@terminus/ngx-tools","version":"6.1.0-beta-1.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","publishConfig":{"tag":"wip"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.1.0-beta-1.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-AtPJwdSXPFoIVyYuzpzGwKH0zJRgJ/KhjCw/oXX8NPJgyzqW+7Qp3w6UA8EaDPqOIcvpf/f9PqDoA88MpwjosA==","shasum":"ee198fde02d6d2ef42f318b660c20d7ce2cf8973","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.1.0-beta-1.0.tgz","fileCount":361,"unpackedSize":1953435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchqBpCRA9TVsSAnZWagAANVIP/3wDJbe4+lwUUTwEO63x\nY1cYJR91ILtE2q9QSEylBhE7U/UU5XGzP3kTg06ucRartnoRZkT7ZF29w16m\nKUFhJ3Q92Uq58s3Xll3LPZ0dObMGU6Whv4G/CP/8bp1dSAekt1bwcX2gxifj\n8v6oaTN86IU1MfG1K7ACTpaMmvjXUQ4QPqtGnY/8P1yA6aOGeZOeMJMU1z8x\nONyhsnf76H4jFOgi4lmRMhn+gVB34kVUaTzH15BKftj7bdv6AxrxNft3hd6C\n88vD1NIwXQGwObbv0/XMg5qwfCvxGMKWKa5hONjFiuj88eDLFe5E8ThDA7Ie\npQD+Yp5Tcn7KPgOoEYmlzCfCBQ3IbB7y0EvsgD6HtFQw8zE6ptVermQZ+17r\n9t5RCYRftHdCIzysEvEMki49IIlD6Wt8BTdrh+VxU0bnKgOgpGA8Mg8tx2JI\nCTiWlbV4lR11zmHdia6J3t+kEK568dmIKZ5odqfL8c2RKUpPGzbacjDq0+08\nvag5y0NFQhq1Pb5+ffVv9SD2TF8KYUfUeEoL9iJDo9X1EnBZ+9Dq/8Aw29Vt\nrT1idXQ9e7Pr0HwcwcGAYUqUYLmqIGW46SodoGxeVmUwZf+/ruQ0+/Hyk4vf\n/BT9EZLwFSuCo2Gz9ys4jDIOps/Je1qg4U1wS2wAGuYzI2Lkf5obay+6rvI2\ngPIA\r\n=0aOn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSzoEtDwkErCqrRcuUad0KfIecMFWGoboR252W0+waVwIhAI0IkX9hbDlozxkU44AurX/ZwkxRZcofSEBRP3cq2cSa"}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.1.0-beta-1.0_1552326760803_0.7984892884438022"},"_hasShrinkwrap":false},"6.2.0":{"name":"@terminus/ngx-tools","version":"6.2.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-uxT5IrDi8vDfFzGaaNDczLrJ07/WmovYFDBdKBFmvHzKC1RzOp2mUec9vm3AwMKcGkE2pfExBz0hqdtGIPNiCg==","shasum":"144de174caece503bbfac36b5715c9cba4e17cdf","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.2.0.tgz","fileCount":361,"unpackedSize":1972503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckjBaCRA9TVsSAnZWagAAngAQAJ3nrJ8pVKF8ZFz7xDvG\nPZFjQe5W3MvbL4j6pSv88LIpsyTiTSnuiK9/DVF2olvLC/UGuvCHvAaMhxN9\nAPN+7ZaVYhDn5wbbWkTCG/XJW06QeJXH/LV5XIBu39iwhCjuzp6JB4z8icQf\nxgTUhckhWHEwN6RpZxqf0pQ1Y8jWTRyhWleuWZwJJ3vyZ846NP31qJTPPTdT\nMxuqmXd3ts6P5605AoRSgZ4OwYgTFZPKPhAS3kHqWB6wXDc0vv7vn6Xh/qXJ\n1wCDgqJ1ad89kFJ2R34IWsO7m1x5y/6egiCUjzpYXki9EO8M5fnsBQHSHbke\nkFOXvPTR/W7k6YHBqVY78jVWMcAa7+wNFdrsRAmdC622cLZDMeTZAFfNwpda\np/EsXrOze0er8pnoZMQeclOH2nFAHprKkYVpftldbsno5oaXt+8jRzSkRhra\nZc9ZsnfqXXpW/3WraRdmjbiEnAxfgqsILMZHAGW9z+he33Zf16Ebv0+u5j5X\nVb/ia1tvWbHVLQHcf7GwqFYf0CwR7khLncxFWEZh8rVoipOtFCN31wyzRc0A\n04gj8CGyz1RIHWYpRwYenN84qObV8sguDiMoIprKNwzBlgUATcNq8hCbY1fG\nSwcx72+TTaBrffhbquQGbI37G1WAeyboFOaaB4Jcqcgg/cSnyNaU570BIElB\ns5SY\r\n=M9yT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF4HIHBK7xxUq0PLKG6N1X526DsO33jIg8Xb5WoREyT7AiBDZYhwGD/y6afNhvwVEo3YTgvDf1VYMi16ip3isiDBPQ=="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.2.0_1553084505867_0.8126742281888559"},"_hasShrinkwrap":false},"6.3.0":{"name":"@terminus/ngx-tools","version":"6.3.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.3.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-4V4zC/Ctg5GPzb+gUdpUJf3yx+C4j2EAFDFaEaBNUGgoTSIynbVSqFgJAQOz3iVgqAvXNi/FpiJbsDs+kdNafA==","shasum":"146b7cdadbc21bdd8d3cef6ff9c6d1b89fc98f22","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.3.0.tgz","fileCount":364,"unpackedSize":1974835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcm86QCRA9TVsSAnZWagAAQAEP+gLb6i0mxWCpa4gCWTYI\n/dub19yJNDgl3bf0w8o5Zl8T17Oy5WctXvbJe36vQoA6Gn6TiLMxZsI3YCKn\nK1/n9kDx8fOTpiSAj/FXg430zBFj6ygIkF6rrCcWuk1vFx0VOKUauFhexn4b\naifwy3vENAHwpm9KboAod0SV6SSLF+LFwxRw18kinQFUvPYfSnPq7/vttKzC\nlHfg0LvnRKAadExFwg/migdHbsC64o6Ff+iW0OVS3HdV48lvWZX3ZiSP7ohA\nh5pHSQVftC9kVCvrENwWyc3AuOQNzLskZpGE5dYfiy5otA+MGlfRQqUDbVGT\nkpi2WmpbteIp4gsIkN8Nd30oYlVGw5aM3zeSBVkhgf5IWIEdwDgMGqzj5Xdj\nwIGR4PfxZHjEHCNCdBa+UxEjQk83NjD9O1D3oxebAfUCKnav1HzmyEcYSqW1\ntK2YyNruUoe3v4w2fZyxjVQPZnyp4W/rtu3F5Fuph7nBaqVqLIiBw0RaeEIR\npDO6txvE2iNYrcKQAUG55CtmQwTFtluHKg9IoV5nEb+fNseFCsoAL9pFC6dL\nCkn5H3/PzQIxIyP4oA7X2EZSE+XC6zJzzxIJl52OmXVr4IvXJyQN8Yq0VkNi\nrZJw9AYfrDzyz3moGoJ9xG6v95TmDJD32icDBXDEA11wy1UY825ZHVffiULm\n5Pt/\r\n=St7Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEVjXe63yMwVxZlr/WnC/pK0XMP6zLZT/eLYzaCoNcEgIgcrMnCSumWuE+Hr9Ti1GxjD9ofHo9tZocONIvDa9RNRk="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.3.0_1553714831703_0.46578972838450894"},"_hasShrinkwrap":false},"6.4.0":{"name":"@terminus/ngx-tools","version":"6.4.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-lOuLwQrHX371gkH3MJBxK14qLrRROFANyAlBnAJiH1e3eFzi3q84wS57gzTWgcGcZjT1vWJRQbch1VQ20OeRBQ==","shasum":"1f4e2deb8d5eaa42ce7b4def7cb7461e01a2f787","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.4.0.tgz","fileCount":364,"unpackedSize":1979356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpO3ZCRA9TVsSAnZWagAAKBMP/AxMM83tYMQhGWHg1Upc\nUQ+97yuuq+24j7uW8KtO+qmLkBliJNdTGnF8bv51Ifd7xRyayi8WT60DJU5r\nzbssPiuWD/mS9aqq8MAtKejy/U+Gl63YJia9NKTt5qHmaGXlaHm9EW2MOfuW\nZqm/URVPjjclO4oDCizTMAmjXdqtF/h6BPLaSYdqXRKEzkjAAH8KVxF50v5J\njgFlStSR2e079qcPZ+v++TN3JtVjM+ItP0TTqa6E84er4Gd5UR0NBz5bTZWQ\nkS1ThQL7PCn6zxTqoOPPhcmF7Gj8eojw+ONctxpancjHu/PJJ6Q7YLFSAKNA\nzBDgSdjFJYw/H4e3EAmNFIOeILjYA+BFaZ6T6e8fGgl0bR1m2Z1IPufWBdMj\ntBPf+bkztwEdAUgNec42/sOau8bcYBxox+gXWXJF3E/vqpVl+Z0gV9TUhm4D\nuyZRDIQ3zan40tFpj51hEknBV+XXOrMUrJnJvWJJDLyv4u24uWgfstAnmOLn\nm7PoKFJH3M3yMZTq9LHZuz5uVQnQsjIgWGO8fv9a3hqc8ykpFAkTTaWX3eRN\nfmym/JEk/TvkzHaC2zfPxuhjmkANctMYb+bnoxII5hxqBcthZywgI0YIcMa8\n+g7eVeDJUJykGOOrEfKyqH/8Bx2iNzFXDS3sf2IEdt4KltoFYRMwAPB/5jID\najxz\r\n=HHEG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSI0xdtrXxIQcAPrmFAMA03xQItaPYglqNoTnGEvDW+AiAVo8sP1VV4UFjAK+24xyKp5GrKe5waBwepAB/dNU3ImA=="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.4.0_1554312664500_0.23868691916111873"},"_hasShrinkwrap":false},"6.4.1":{"name":"@terminus/ngx-tools","version":"6.4.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.4.1","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-0myEme72ct3yfX6p0XmEPVl7WM7C9rvNwQPRoQyKYTWbDrkpB3cedxgDlkfQmXvoW4RSKT/65jafj6goiDyjig==","shasum":"601ba88e654d0b1cd49f492bb3b49de1dde2244d","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.4.1.tgz","fileCount":364,"unpackedSize":1977423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwIOdCRA9TVsSAnZWagAApwQQAJZfrKoT0GhQDWbhZ4qK\n+hzT4ccxdgYXjwVv12JIoRb1VTmU3JaMoyXNmsGhpz4luYZuHXs/Vo6wiv0w\nLQWaVw75LF+RR/n6dfBeZHDPdb3//KwxpYfxHZAKrQzkNrUbBAbVymNcWGRX\nr0FKBCwsRjz4G4o6IOWBCLwtz9LzCq0UpeFbxtxuEZHFtGw4Eoh9OpY+Edi1\n3wNftMeaNWZhZ/tzWKXUEWTOBXRrhbEouaKZtXSy7zH5FMVjXTxVvRD/2M/D\n8445NukG5sJvtxkxcSBPX6yBcYMVOxq95T43P+U0rf3HccuKlEuz+4vJgyRu\nDbKOvwrv9NbKcoSTS81hRbFGrLLOh7b34Pu/O6LBGEysH4FlAseoRuFy2kSY\nH+V1t84Dg4VhEvTqTWNeDGHPdweTzGvDR7rqq3ooWj9gchIuDqAY9VS1mgn+\nfXm73LL67dA2Tc23Rco2cuKvncOmns01PvybstTgc28kQTpOUc0eSYNAI0Pl\ntqef9AzWtLlza4+yrox+qG3xXSDGIBy+AbZoOMlijHWeEVIFVlE4LyqSEQF4\ntSRcbqkzE/gpDSaHTYBj/tzjcEF/htcfz9YCxXtgMbbatKcuMuu0oAV1Ben9\nGshPG5VnpuG0hSDDy1F9uMdY33ej9VKJLnpW/1tdnFPLcTxHS10ZAleR9YC6\nNjZo\r\n=/Wsu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVNQrNY7Ws9ff4CmU/NSgpMVEk20bt1+j+ceP5z6jZVwIhAOIO2o5x1YtCzekxiNsA5Ev8PMlK/mUUCshGJIYQp8Cu"}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.4.1_1556120476376_0.3420368434602743"},"_hasShrinkwrap":false},"6.5.0":{"name":"@terminus/ngx-tools","version":"6.5.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.5.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-MSRs6cPrv1NoZUD7G8NR1ot9RkHnerXYSPZPQfhSatW6MXMQG0slS8zukRaM9CWZ0HOSWKktniiCq7Dv93V9jw==","shasum":"786d7b80a7520e5de0c636274f7ebfa36473f4c6","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.5.0.tgz","fileCount":364,"unpackedSize":2029131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwKoUCRA9TVsSAnZWagAAUsEQAImMFXZQVBO4zb7D1IUs\ne8Um154iaq/4XJ0qT0fPCwZV7oNCwIgo2NPojz6NOu/7/IYp8qytLk7diLKT\nDCIVRvQshG0hQiAP0NiJmNz6Z/jSj37RSapar0dW15BusIoFFHblji3SQm9N\nB+L4wfPW5Zpxmtp8yzcyGctNPfcM30CQ+8TXboXcymp0e3N3NggqvY4sLGkk\nWDK+hL/vKBRkA8LlLKBpB3UOiMSgd4yFCRnBtGMR3QoTPFBbN1+1anErGH88\nHu19Kp/bVRAq/fMOJPQxql/RZl0CMwUgUpfTD0gWZSiDNxVso/xR/gTHVNn8\nV/n3uK3KkL4rrvSbaytU9n2K6XXCDOUHkaYK46Qg02TCgyEc37zywAtqgNQG\nfjCJMjMSEfFmzUlUbafxj5QdUiTiKydx2N2qViv8g2sSBsC+b1MaOjiqbvtL\nItcY71mXwTyKrXCF7IQNnkvgrxWVEAA88JTO9ohHguo7WyCEZF7iByifgQNX\nRTzLA68yxAcCpTScGSwOUnV8d+F8IBto5uHY3iRvxb2FLUTkoewrJsFl5n6Q\nQ2bDzG939H1Bd+VKoz3RHtQm/I6IlajkvPVCFR9u8d+EiAx1MWsO+A6JazmV\nfZEdrSRKp8Diq6uSHQhBh976jeISzn8UWCF+FmEqE+8nKr5nrDYBASj6X5LO\n/UU1\r\n=8uSw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn+JPB7PHMYHyJsTUGxsexaud0F7JIT/LP6W/Gkzo/hQIgBQHMD1lbE8bdQ6YRxTcUn6DxpiNmWPlIed01Y+7dt4s="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.5.0_1556130323968_0.96526534278612"},"_hasShrinkwrap":false},"6.5.1":{"name":"@terminus/ngx-tools","version":"6.5.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.5.1","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-GY6a9i/5Ac2St62gaNyRyREX4cMZktvL8TX/+pT2+6Tlijhaht6rc4hIaOyTm6hmnlAPshlMNTkUDnTmZJHFYA==","shasum":"057285e775680ee208c689e499d9732cc59aefd1","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.5.1.tgz","fileCount":364,"unpackedSize":2027657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwd2fCRA9TVsSAnZWagAALC4P/06KKbiDfVRoHrrsHGYW\nDiBWQylyA6vb8rMVIdwDa/Q2Fo5OX+8KzZJJqDwZ6gnHaT+CmSDrCXqguqYk\nO3daKTc6A9Lj9Kpr0iQcI0kFg6kMVeyAn0FPX29ACR8ccgQiiNzWmej86iVw\nFpBZQaCjpU5SIIfYN9RKw1imtLkJfLbVmTdSAw+ZMlMDLfUgNzycugn4cjWp\nfWg7kq0f5RZqQpMCcksHmCEtZP/ALGNo33E3LNkBVcmjD3duHS5czJwhfgLR\ntIED6x/LlWg02SQDdq8QCzFtBajWEDrQUClqd21Fi/ndmSJ6VGR0XF8/YXnz\ngwJeNq8ow/Ee8TA6dpDNTs/H5GTO5E3ph1M5QMmsb0xWsmQDhCsNz/252H0L\nRKeK9/LE80r8GzRYkaE4p8KIRwFRNzQ1XDE+1HDAPGMlqTFkc6BMtZiG8sUK\ng0JDWXNVemO/fUNAjU+QtowVyUHPUK9ODombL3qxlbgsCPI2jfIMrkytnHVC\n5m4NNaiwD8E5LTjNfaH+oTI0mKbl6FSewB9egiySdNaINEI7P/gU/WN9ozpc\n7sHYdqBpisVVXZFThwFLSF+sBeNAlR+utPmUKv3rOubyLppXh/Vw8Slo6p3R\np6skzpp8S71/mpAdIdoyM3A29p4h1TI2TQNw4wVTN5lTiHmRLqVhmF6H69Hz\nV+We\r\n=hCMA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHE5J9Hf6g8X827cfx7mIAfth8IZZ/wmWnTHpGA8x6vMAiEAtlutf1goVwJGdojDE4Fy4WBD4D3IZKcG9JeBesK3MgY="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.5.1_1556209054513_0.7241508942831325"},"_hasShrinkwrap":false},"6.6.0":{"name":"@terminus/ngx-tools","version":"6.6.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-2hn9lgNys/UwCiTSJ6Q4LC8rm7KfF6Hb0saYHsYiCWspq3xSZ7zf8PNZPX/SHVB2XZm6/gy5If9vYQQ903rtsQ==","shasum":"a824c8adbeef2a82ccf57c763a4bacd72c55c97b","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.6.0.tgz","fileCount":364,"unpackedSize":2027657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwfG5CRA9TVsSAnZWagAAI7wP/3PnW4gCf2vJCQO/UyaE\ncbSTbIQp7mHUYQNU24bfhPmqx7INiIQ/4bFhgp6VxBrxJhwSDkYf5+DP6QZS\n5ycS0aQ7TefIAe6sPKbCnzt2HzgR4jPkXLEP2gpvNo5qQR4do/UyHau7l74G\nu8zSeWgrJUs5HBIwMjdcRV6zk97vjW4kPy0B/xHaKMD7wX+j6dFVb4IMCESB\n1iz/DCGrJ0vvxXlVc00+Nrg7ecX08PyZGEiNzOZmoapeArJBWJUBIsIFMd7f\nO+/cp0pIqSmhd73uqsgCS0A8MPQE0RfGIBeM//ze/Ir1UEJiZZq5apux5LIu\nA89lcN0qDCY5ir0oLkWzy7OOh/EaqHoHci24H/EKNbWlF7/hHV3vIz2iZK7E\nsLJOUKjtjrfNThvHQ/pTBKe7KUmpR+a5ngy3MZKUpm2qE6CMyv1fuiGfnsQk\n4oPD7hvd4f44Uff1j5GslsygRgRO9aCAJtEm3M4RThpMv0x1qvAHIVE54lpe\niAh5E2Q8+kPur1CC1RwlfA1RbDhUuT6lK6HUEpH+Mnvr6m/cYU2FMlbtbd4t\nbD9yUgUoGcaIyA5VGeWb4gTvikzbgdxvgXaRVNrRvDHhmRK13qqqOZ025Ol2\n+Tz7r8UPqxcSkjOhD0dUmXMeeYzjjWRNwqfzynuLfuLGKXCetLUtX8v1BdNV\nA74X\r\n=lYQ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHD3gceeOD/bixbXzH+ecoRuC9aaHOf9ah5Ky8wcOoaWAiEAxTQG3mk9REzo7JvMIxGZOLI3Qxxtc0QJbKB0yZl3oNQ="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.6.0_1556214200204_0.15681554576489076"},"_hasShrinkwrap":false},"6.6.1":{"name":"@terminus/ngx-tools","version":"6.6.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.6.1","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-P9E8bduXYmz/blB2k6IjtEdZoHbFCjs0Pn1So3h5BS1iXvmZcJC0S6gwSLsRbLRVzrA+KZ1ArsesWPJpOsRqsA==","shasum":"afa28f0bc22fa812942e46f55219f23578e6f0dd","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.6.1.tgz","fileCount":376,"unpackedSize":2051352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwwPpCRA9TVsSAnZWagAAl4oP/3BWg2Xz73TvWJeCELWV\nYPFshV4ipzdC2AucXEMIErjnMWKNzOdYCvl2wMaCk2+TDfMEs7TGOu+G/HMx\niFmjMOzbI/qT8ye4aivJ8nBQviv/LERbJkIeK8nLEgqMwyWA5jNKHFrAvSlU\nTUsjR9KKtNT6+YLt/t4r/9lnXby/unF0avfAwqo8dknIDgLVAyf6eeBdaiqv\nCKqsx03SEihPq2TVzgt7w/J4GYOraZFXJDxLL5gIQ5SIDuIBQkl2MK90/vPE\n3R6YSC/Y7jKA4QnxgbrOojc5nqGGJG03fSOXmLPNaA6acmgHT4D8gB59n5Sk\nDP6W5utphOzfwebk/9wdtnp4ZR0hyDkuvhXkWfvPyczFtO402wjPoD8AgR/z\nHbwYh2vn8XyzYP51TQHLKzfpgdxI3RnwvXAVIPzv1PMwVVun/fqi8ZRyGSWc\niAfqEOBtGhax2cXNYoM6+cexWxJvBo4FEhZKURGkIe0VgPa4UswWXoOAaeP6\nvzt4JqYPrDiHC2EtvHXq4Im6NmqZI1GUHT07+dpYNM6qI+4ClsZtAuNe+wiG\nHTCQfUAwdzL/lEYZ8mNYQP/j65boM0MWbDMLyjvvSARZYTUdxBerwuJ22VdP\nfSfzPaVjLusZnebYPKRlmr3b09gk03ll9yXG/9J5bia3tI7au8SbQCW6tlA3\nkl3q\r\n=yx4e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICeXrMO7JGeYzx9epC4AmY007ZYgb5Kxlh6fkULnX+axAiEAlJFjASjEtWx53bDuB9m5IS/mOUxUHZ2UGxcELmfOtj8="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.6.1_1556284392247_0.5939025161906497"},"_hasShrinkwrap":false},"6.7.0":{"name":"@terminus/ngx-tools","version":"6.7.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"","_id":"@terminus/ngx-tools@6.7.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-bytDD9w6Rl6WilBRfvUwnp76HIB/U6LKYcycHJRlA3Fs98QRkSXgyPuh3uhN/yGxBB67JEGs78w9Uuxe79dcXg==","shasum":"6a5bcc41b9d8802669f3e030d3de835da2d77a17","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.7.0.tgz","fileCount":379,"unpackedSize":2059397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcye9uCRA9TVsSAnZWagAAw3gP/R18G0DlIFBlDEVuW/BE\ngThWrbTs5k4bg9n+M25WUE/b4c/0xEGUDEk8zQboD2GmDi/YX4v4iMf7E1tU\nt93Aak++G2mWSxQl64dRcpFvrOURvZmqY2IjjNCdd3mRpJh+frjVCLWR4cu2\nLt85e0P4InBB7CCyZErXHc9yoWBNiJNNU8QfkQ0PvEBNLVA6x4GiY/K2D9SD\nEc5FGig+m9i/y6ZjhOmm7TJXo2QtHX1XbQM+MCyiwW+Ju1Q0b6Qow8iae2gT\nttG0rELjB6QcoHG2+2dt5OJfSsBVSIHh5cT9Vc7rwaf5lGwp+ApN8LalpYh3\nlTwUa+YJiNMbE8/61Vw+Vl7I4YeJnMGwclygpHWIeP+s3E+lMmVEiN0vMTQn\n4uaNv3VY0ZBanTVX0l9Y9MsCIxdag0w+ifara+rXuskq6U3P/q6U2EKw9QTt\nN2p1ia6Rpz6ihEniU1hIVkKpTFRvdRKvoB4kNmXbZ1npuip6ExQZ/Qzg8Nfx\nSNwftOd+dk7MqZCBRNiswSSr0EWk8pq2ogimXVUZMQUYIDjIA49R3m+d3Lqz\nwq1FNkh1+NW/iYodfwP2bX6e8NfZQG/cKCE4EgrZPkjWaJ1X21f7ciFG0MJy\nvGRMJDlFPLJfYEFzOPeMH56FhhyMBiSb2ZfgffwexcRjR1wRoxJRJQa+Cwmy\n6c1W\r\n=7oVC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCax6ogI+QIIHjZlwhpKtMxu97dMzB5O5RCdA0v9ITJkwIgS8rwCZmgTUY94oVxJGELrv4uOVfg9yWjSajOZns8VJE="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.7.0_1556737901660_0.2549716569491154"},"_hasShrinkwrap":false},"6.8.0":{"name":"@terminus/ngx-tools","version":"6.8.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"master","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/master\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/master/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/master/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/master/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.8.0","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-2mgSLpzpwS5aWcE4YhAt2jc00xoxisSk3q4yCDH97dzZ3T6HowKPFgwepNmlT+LGfz2dgSEo2X5e2c96qkh4fQ==","shasum":"c642cb8671609f2a10216c374e1933a987166457","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.8.0.tgz","fileCount":382,"unpackedSize":2069257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyxeBCRA9TVsSAnZWagAAMAoP/Aim51yTvhZwef9cmnmj\n1ZT9Y+IpDxYBaFY8PWoVPXty1DKv2fQyTT5Qp7oe9A3nBWbtQd7hsQJccmnt\nf7R9F1QvZC+7WxPUQrlHmGEJ/4a4TpA0O/Tz09Q1jYg+HBWFUgJq+hcpMHGq\n6cr47lfmtmfJVUiybZB4j0Ia3Ew15BKYngVavgNsrvixhOZenkLF3g4bfFEv\nSL7kKImoudoB/ilyM8RUtc4P8ZTS18pMXi8ov8WbSxq4stNi6dv6WPYWvPT7\n1qrsId02o6k/unCee/n8ygt9+qARQ3+VWeQ1I7hHP2pU4IQOQVmK9iPN+l2n\nSaWPG8IvGyZXML2f2yEPJfbdWm1DCEsFhk2eKgwA7eGGDOC2t5PgepzS0hw0\nxKVMjhIO5KjTi1EAcCO8W7qXfPGGbTaeE9Ck9JwhsbMtV3nEcCScMxFKoWPx\nn/9EMk5nwgbNGVqNgsaUIEUPs/XQ149mGUrROARDwVEfFiC+bYlJyWhE3ixu\nfc7M4oJT/OhTJiVONac4Mw/JE5Mzw8tTQ8zcHwk56GIVFDvkyZAMrNgx3FhB\nIaD7AXuBclrgojA7sGle9JhG1KJIUMnnTvshEY7njDdgdqFYHqMTxu9Pzg8m\noBINEZewO3Vhv8wzLKFTyls7T0B3KZbTzdSi2oU0HohRyvXvVgYdU2DynBUJ\nB3cr\r\n=nmnV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFG0D6s5QO9y4ICnnVthbMpG2JrUXCR3QmkwfYu7WfgRAiEA9mjhPG9mXVthOWEURSoIAYvTuoiiRd4W9SnryPzZdYw="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.8.0_1556813696579_0.8148516998027546"},"_hasShrinkwrap":false},"6.7.1":{"name":"@terminus/ngx-tools","version":"6.7.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"","_id":"@terminus/ngx-tools@6.7.1","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-g/YFxuICNPiDjL1MxLRLAZ9LK55/punw3FINKOKXLLF9xY0v++JehS5XEuJXsNx6kxIxL2fbRT71xHBQ6RG53Q==","shasum":"364ad5664f42047d2155d5deab93cb7609403670","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.7.1.tgz","fileCount":379,"unpackedSize":2059200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1BdgCRA9TVsSAnZWagAABm8P/1CS94BAlDNojv5ZhITD\nAr7LVuR+K26evt2MBON8Knv+bHO59soBC/8bOVMErQC7WrL64Z8vTzzbsUAe\n+OSxzPul/bpYtFcACptjIc/vhZXtcDOpVr16PB6gSEdiSDYSMAfTU7tNWMRb\nUjYPDRuts6LoaJp0bRLz6xzi/NRbdync6zy0gvOCvgAjDnfeVsFNlT0Sd+h8\ngQIa1/6jitHqa5byv8mZ9SPNTs5xQftL09TKow8PSyd/omJQdUsN6p8Jl/Ji\ngwNKFXpHZb5EOc1SUk9EOT3NBecnHaOACKi0W84Nq5r1N1dSIuI8TJaR0Kdb\nBzj6KXFTj/k/ZEVMmiqM7Diaf2aom8Z09JKVwSiuwzynBmZ8cjeYvhxqvnVJ\n0itfyAgAtN0m8aAEWk09ZyAx5PfjZJu2GY2CuGoTE3znLUqH99SEKSySeqPT\n98/ayYeQ47K+Ula8HdIp2kBH0CfnWJPu1T2xxtixA4GqdRtOjiieW6zmjajZ\nq3ThBo5H2YbSNER8q+VPW1ul3bVKFrGk+imJIW7x1jaUzRGRYkNxJ2Dh2IzP\nKaxpuxutLeBU/FSVleeanK/fuX1mKN+QqQ8AtngKnGNp48rO5p3FajNqHxLX\nSXTh8DYxQ+TXwWiU4M+X0WU5YGNZQ6srJ8JneKN6o19xHE9jNjSDEF1+yE82\nLrxU\r\n=mUP1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVtw2jpa82tvpyjJ75oCwqNaf6cqbNcNTD0k5D794Q6AiEAsjdlHIXocFPeEQGuTBPUgUMXltzSeExX0BjSlM6JCqE="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.7.1_1557403487220_0.09190152560605291"},"_hasShrinkwrap":false},"6.8.1":{"name":"@terminus/ngx-tools","version":"6.8.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@6.8.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-cFOML5MGD7zgpaPzmPJtFZRYQoAYdHF3/WsnZ8iTe8orx6FUNYJqc7VlzAsDf1ZxCAB9Dt6rynF52/8mncz7Bw==","shasum":"ea3474585ade605514c9a02bd5a2ecb6f42485da","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.8.1.tgz","fileCount":379,"unpackedSize":2107276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1BuvCRA9TVsSAnZWagAA2YYP/REpzp5SWJ2/+X3xrr9T\nzmbVN1ik8Kic46vVQ3o8w36+49MGz/FV1HEFoUeOtbwySqdjRi2K4yRE83iM\nKPlzdSYFCLnPn+9coBOpuEg3GMUsWCvNPQE2D2x49XnRAcQHbMQUUK3cD6u+\n252HOGD+AJCMpLLdAYpdOtogb+yGKr+JS205FXqqi9bLuyN3zTy3c6Nq02SS\nlgzmE4rywizqMo26gToChw+h2eI28yma0Vk+wzETjPPtjMDlzTOydQ/pui8Q\nqnzsK9Uha3oo6lFQqCQlB7XECKlYwvK9VGvxUsJXH8aKnN6/MI1L7IoAs2Rq\n4Y1zxRWN2O37Sr44eNP3k6I5+Me/KSJqSpOKWRHJ9dG3iwsxomSlvBBbqrSB\n31LLstw+ty4uYb8cvBCPHB4Qof84RXlnd5ynkPBFe4lEZ6gJHjb9M3+DyV5l\nD/+DoNjlaOzG1ljALrv7TUnSMyickhOmj88itlcPE8tVu3/LRYK5ECk1dV09\nO++YVFRBI5m1mCtvaldinHkHo3qqZXPxO6kvKkIej3eBEA0JWP7kK9gJhpnO\nG5VDcrIIcEXsbzbyFxA8FVqQqmbxz0zlvWxWokzdCj+Ydc/a4ZU/RU3AKzrn\nvkuKTfiEPYmQKwV9eJl7ZJ0xlD+/407I//CI68OVV8DEnLdhW5w+vQPgLif0\nH++U\r\n=pBd5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGxvbas+f7aZCHyWsFR2CspJF8lwxA6hZTnLj2n5C4jOAiA0h1mYi3qyneb1h+yvns0DK3h2qmbUQf4F7fLD7gW2gA=="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.8.1_1557404591167_0.0678332805087618"},"_hasShrinkwrap":false},"6.8.1-beta-0.1":{"name":"@terminus/ngx-tools","version":"6.8.1-beta-0.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [NGRX Utilities](#ngrx-utilities)\n    - [JWT Token Managment](#jwt-token-managment)\n  - [Basic Utilities](#basic-utilities)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Key Codes](#key-codes)\n  - [Coercion](#coercion)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n- [Resources](#resources)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Usage\n\n1. Install: `yarn add @terminus/ngx-tools`\n1. Import: `import { debounce } from '@terminus/ngx-tools';`\n\n> You can also play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n\n| Import location                | Description                                               | Docs                      | Size                                           |\n|:-------------------------------|:----------------------------------------------------------|:-------------------------:|:----------------------------------------------:|\n| `@terminus/ngx-tools`          | Basic utilities (`debounce`, `groupBy`..)                 | [:books:][docs-utilities] | [![File size][fs-badge-utilities]][js-bundles] |\n| `@terminus/ngx-tools/coercion` | Functions to coerce values to specific types  (`Array`..) | [:books:][docs-coercion]  | [![File size][fs-badge-coercion]][js-bundles]  |\n| `@terminus/ngx-tools/keycodes` | Constants for commonly needed key codes (`ESC`..)         | [:books:][docs-keycodes]  | [![File size][fs-badge-keycodes]][js-bundles]  |\n| `@terminus/ngx-tools/regex`    | Regex definitions (`creditCardRegex`..)                   | [:books:][docs-regex]     | [![File size][fs-badge-regex]][js-bundles]     |\n| `@terminus/ngx-tools/testing`  | Test helpers and test mocks (`dispatchFakeEvent`..)       | [:books:][docs-testing]   | [![File size][fs-badge-testing]][js-bundles]   |\n\n\n## Features\n\n### NGRX Utilities\n\n#### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: Utilities Documentation](ngx-tools/src/jwt-token-managment/README.md)\n\n\n### Basic Utilities\n\nImport from: `@terminus/ngx-tools`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { isArray } from '@terminus/ngx-tools';\n\nisArray([]); // Returns: true\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { DELETE } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\ndispatchKeyboardEvent(myElementRef, 'keyup', DELETE);\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") |\n| :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                        |\n|-----------------|-------------------------------------------------|\n| `build`         | Build release                                   |\n| `test`          | Run unit tests                                  |\n| `test:ci:local` | Run unit tests and output coverage              |\n| `start:app`     | Start demo project                              |\n| `lint`          | Lint TS library files and attempt to fix issues |\n| `lint:ci`       | Lint TS library files                           |\n| `docs`          | Update library documentation                    |\n| `cm`            | Commit with commitizen cli                      |\n\n> See [package.json][package-json] for the full list of commands.\n\n\n## Resources\n\n- [Semantic Release][semantic-release]\n- [`ngx-tools` on unpkg][unpkg-tools]\n- [Commitizen][commitizen]\n\n\n\n\n<!-- LINKS -->\n[circle-badge]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]: https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[npm-url]: https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]: http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[unpkg-tools]: https://unpkg.com/@terminus/ngx-tools/\n[commitizen]: https://github.com/commitizen\n[contributing]: https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]: ./package.json\n[gh-release-badge]: https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]: https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]: https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]: https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]: https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-utilities]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[fs-badge-regex]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-keycodes]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-testing]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[fs-badge-coercion]: http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[js-bundles]: https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-utilities]: ngx-tools/src/README.md\n[docs-coercion]: ngx-tools/coercion/README.md\n[docs-keycodes]: ngx-tools/keycodes/README.md\n[docs-regex]: ngx-tools/regex/README.md\n[docs-testing]: ngx-tools/testing/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@6.8.1-beta-0.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-y5vB+KDqLxpUAfxUcWShbbEDAMAplLUFrU70l8RFxoaIO85xTboS1Apo0SXDjN50d7VvR63TYWUW/vJRv9INiQ==","shasum":"243da8ab61d2758ca612ecb093514d119f881485","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.8.1-beta-0.1.tgz","fileCount":379,"unpackedSize":2190852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1FCuCRA9TVsSAnZWagAAeeIP+wYYu1qzmmgN3/v/v8la\nuc87C0dpd17LwzlDnv7cP5RIF0+/oH02FkPgwaUWujDU/xtEmH0MeLzkLseu\n+jyCoKQgUWiAfKc0SXKTIs7Q09Q2Di+2soAaq5nJ8bcWi5KhP+sZ17d05gGs\n7VDUoARElxh8bsip2p5uxBxrW5W+Vxim5nznjfg7/gB/srCzxxwnJFqNvjC9\nPLIjiucIZp71PzlVCwyPUwHnr0lD7lqBCG1vx9ta6EvZETiyDh+nfXTSPGwG\nye0ANLsnT+rjh9Xcx8vU/wmkJhK62KmukHeZPnMpeeJD/dTmWcXe1gMoiytB\nb0J+XR/stSB8TolQS+T23V57oWHuQKURZ9TaxlTtxiAn3u4HFfPa00a9MKFb\nEDPLUR+IefnUPMI12cz2I7u/XlYBJAfUXwJntNQXACMOry9HqrV/Wmq9SGbY\nhCpPXnnuaTDH5esv94OOueJvbsdB5i8nqj9lZA0XZgh2+irzZB3DOMBUuuLW\nPVNce2wF3fNbmQqpTxbemUO3eEzaAp+DYQ/ysOCu5MZjhVRvmf6h2AZ6VNH5\n48PVokpMU5XHlb1SJmLuyE6g/Jcut+vSTvNn9yZD+tqFKhkAyXTjZaiEn9md\nvWMcoA6355nbjSRcKWT4nFWAaTLjGXuFnTLejKMQplUwWmIE2IZxAy39crSc\n3O9f\r\n=DC8D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEvktjFLyiU9qoG8nI3utAAK50NubzlvYzXuz0GFKqIzAiA8l0ObLhvL3eBe6uOQQgVvsWx8ICsd3HSrGbRj2XhyGw=="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.8.1-beta-0.1_1557418157019_0.033658599447975446"},"_hasShrinkwrap":false},"6.9.0":{"name":"@terminus/ngx-tools","version":"6.9.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@6.9.0","_npmVersion":"6.5.0","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-khaM+acPhS4LvY95wkXJDdgYBc1sTtM8prDwhNHM1tK5H/cRzioLgeD74+5kD9Lqb8caLGJgGQcvecOFTGnjNw==","shasum":"bd45635794c1698a98173deb72de15e8b242c14e","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.9.0.tgz","fileCount":379,"unpackedSize":2190654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2aO9CRA9TVsSAnZWagAAdJMP/12qfHT5VlzuL6gjON1r\na8s5qm7ZIUmWL5UEEMgCtlQKiyIZjQrX7o8O0ua5D9aSyZOu30zQ1C/wnKYu\n940vBhsN2oncJR9THuBtdEQk3/1OJhhLZCycdNFAjfxaNbZpoIi8Keornl/4\n/ZfV8FiZnayotFBiW9lZRLlUUek1klnj2H/JzyfUe5nsdKMAbuW1F8HFgHDg\nIDAmHoHY4xcXgrHeHkEFCiOrzaeBocho223sdCcVrfxS7eTMeJz8DnJpFNp7\nRLOJlCOU0oxjKJxUc+Lb7bT6AVL3ocHaCM1msKzIPxmlT4ZuV5Vm7knYDOlj\nOW6yAOSCqdp8l0xTkmPsHeE5SIhRd74uNUy/NEr6w5ayFnZ5F3KypdL/IrGt\ncGHwpGeC5MyMk/Z9Gw363OOuDeRKta12401q6DbAvKipCNNBMFljntkIHsSq\ni8EnH/Fv30TM3jA89/LRxLdQrC4P/Wlj8wHDKegKvjXPLVh/YPwQpfhaZzm3\npXWFJ55ZQhcZGey4oAQunevgHd1IEFPmOX6/asxDMMoFtFqbxeU2RemCeTo4\nBCXrFcQKmXIrkYx6pdVfET5exsWG5styvsqo0QGdhVYp9dzb6EBUCJnJp6zA\nca4yYOpFpiAB1FqRqQEh4z4EXTmFQrJcuESxpv0UvljE9NbH/Jjg0cdw8Cvq\nMwrp\r\n=h5t8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJSCq1eLUPCwoqXA7DesXqYMS/wrruxf5oeKtTIDTN0wIgWse3iGR25uUQl1oucrutkOm7a+en4f9QrRyRrwmEl+E="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.9.0_1557767100504_0.45446783617373954"},"_hasShrinkwrap":false},"6.10.0":{"name":"@terminus/ngx-tools","version":"6.10.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@6.10.0","_npmVersion":"6.5.0","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-qxXupnVfj84gxSzk2AV/GvpS2EmGaA78mNiMlwhaY3s/CwB/3Bfe1+zCrhVBRzgyPUk0VDRcK3OSGng/efPHUQ==","shasum":"d19da4e78ca489c189c8576f9db981cb0f7ce735","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.10.0.tgz","fileCount":382,"unpackedSize":2197400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5+RbCRA9TVsSAnZWagAAbjcP/0eZorgQ9G1AzmIVkq9F\nOeAWqYQqfX+4SniHh0RtNyhZRvrJN9t3ROWJSOHtY3hyPbx1HfODVS6SCz9H\nrnMd6QcKkIn815gfwnvsntp/jJoccB/W7kYNMpKT263FLi3WBJJTGUw3inoO\nSw0br7bBIi+s93UitVqpXrKGPx9xe54B8wCuCFBSi+/TIY813CWM7H4e7fuJ\nfKT+vTISm9K8UMeigbUcQ79y5iptbLW6og204uIcMHzP8rZFCAWcyP7738SX\nO9KUdZsauqswNz1+Wf3iAO5QEjaSk0KwecwRUwzlN85Ae4pXjJVBOoADgrqL\nrUIQoGriGYCvH9Qbv4RDUaa0lVGp3yli79FziUslCIIotWJ2JEMc7wjlBAYt\nxm3HGLk85SOKjfVkpShq+ogIhVJhaSfqG2oc162s8WvBViHJ6Ls9eWvqGzkn\nLntotC7MCpLXSshYgC6T6Pm/xrU+gH/x5AlogIx+Skfjph4VVv1mpwo71D9+\n44MJJVZ//AAnq+GZ13uuzxDek1PVW7vBwQ98eUipPJbXLSImev897TYdZ/9B\nL6zBi5QKmn23qUotDeU8+4rZmjrw070AyAdFGPGrR5fFwc76UntX/7C78HSL\nIedvXAyktnDfsDw+9TIpL7vxcT+d5ZqNvuR0rSAi/zM+E6W3tqerDm3S44eO\n8t3m\r\n=tw/c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUlt/oNZuweOomrOEUQn5Q5STxpN1NnEyL+y+cES9dcQIhAIfOemZtFaW2vRNQEZDj9vOw1j7setAUahp7kuSVBQeV"}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.10.0_1558701146541_0.350553044286936"},"_hasShrinkwrap":false},"6.11.0":{"name":"@terminus/ngx-tools","version":"6.11.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@6.11.0","_npmVersion":"6.5.0","_nodeVersion":"10.0.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-kb5Huyw5VkNRZAhteNu2EERrL+s7MLsueERDal7ApRnk0obxSLJgsun4kHJb9Hu8nTbNvCy6ftPdcrIt8/TPJg==","shasum":"ed14e5eb7d70aa637e36ff3302c4c089dd130bf7","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-6.11.0.tgz","fileCount":385,"unpackedSize":2212553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7VgTCRA9TVsSAnZWagAAcN8P/3eiNTM+5CR8RLtUG36w\n5p5ZDNjJZQGMbN0YWQJ1HLDQ4OXkgLOR68/dum2L0re2DfeXWQuu/iiWjb6m\nKhRlaJsieFShQTAT1lYIGrtscFKTEkwV1liYQ2C6C7rGsri+liZwJhx8fDx4\nWe4+lvkWvYjHX4OEg2Jd0+p69uUJ2hecgxxCgpwN0XRA5A5pykPJo5TlpYIa\nu17WpEeoz19pTpuJbWFfpZNkLy236fDG6w9UC91obSgcJ0Tbr3ouiQOL2eMS\np0l4GsnnPV4m+/S8gFkjzA9O0cZkJ195HxZLhtWk5fKfQB3ij6ymZimuPmDF\nmYTLRCv6sv14t6sJJeIcTbp+kQHtWIog943hALahPzzGR4L4EjOf5XEgyQSQ\nlQ+aqyrBy5Uwdrw0JtuesMJ0lWwTwkA0N8XWCt5RFOfNUSLmTzQebvrHKITe\nbp8VQwUwm2yelMcTJSRD3X/MSqSa2FNv1YYeFpjy1gtP0VGjwtB08mB/UieH\n+orDJe/fREif68dzp81WJQK/whOxM+OUvKFYTwC8X3+Osk4493YwV95WJCNY\nLWNnFk1RkpLlnuuOE4cQtDwYrDbiwopDWmlv/veX5qdj9l7mNIWtw8JyeL/B\noko8bKQIKc+Lv7o93xsu/loJvN78w05BqoPq3PVhhb7BPB4KJG2FOwR3Pkt4\nSseM\r\n=EDEJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuP/HC6NNefm0BWB5zBT22ALaZJ+2y3Uoini9UWmyN+AiEAoN1F524WwUaOU1mTh16fN4T719Te1mgaGulyCd9jD38="}]},"maintainers":[{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_6.11.0_1559058451055_0.9838013975693021"},"_hasShrinkwrap":false},"7.0.0":{"name":"@terminus/ngx-tools","version":"7.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^7.2.0","@angular/common":"^7.2.0","@angular/forms":"^7.2.0","@angular/platform-browser":"^7.2.0","@ngrx/store":"^7.0.0","@ngrx/effects":"^7.0.0","rxjs":"^6.3.3","typescript":"3.1.6"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.0.0","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/UifRzIJkHEHzkFRQGILgxrU5ADO36sYoy1jogvEXznqFAisMHzMPg9s2V6k/O6y6XnmseiK94yISMaL5Ng5Tg==","shasum":"b3204d1e4c53c7bbe62b69bada0f7d649be53fcb","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.0.0.tgz","fileCount":385,"unpackedSize":2003672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAozhCRA9TVsSAnZWagAAFvcQAKLaiGHQosx6bmzcLwJg\nvd/w/zu+SLFos221XKQu+lE4LQ1T7bWjoIaqjGS1DkmR/4NF3pBYRSB7OKrU\n7Yo3tYar7+pOGOeS5ossM1QvWYzmE8g8Rl6mfGzy8MHvi3b28S9BCOGkoqsn\nq2I7iKe8cdz58jYSr1zmNY/d6fKl26Ghw1WV0uvkl6u6I2fC0AvFKDK7dE0e\nDjPTq02P9cQp2i3z5Z+hZEfdUUcg8D5yLKpWGFCIf2kAZM/5gg0LWVEkyYRs\n1pwVclAL0COe3FxXUjzzXhRVrEjxK3XYFLA+FZk0XpovYXxtQNO/fOPvsoKG\nmAaVMBWEC97VcU85fNhvQ75FMCWA6gtMYsOuui12V87YEoK7wua1JjESrz5P\nLR1fnq1UBDYZK+HGJh/TgvEPXX60yOrQGza3uWvmBe7+yiU+ghbDDMc7OMD/\nwSnYPXdv4Apl1Z7qKTw1bRPA4UP4WN2g6LUgUPlwOvoFf9xOD511hxozhohM\nwsAWYPeSJgaBPzXSRvA0y++THAR4EyBSADjHCZ1Qib5xzRsVXCAKj3paXOeZ\nLSa1c/NDT57QVajTXsvY0CFBlRsD0ruJ091+qOFGuqUL55t4ABbs0t2AbMUO\ngyd9R/cUtM1vZwGUchv8/l9z/dstDWoX2x8bWrHMkRtAVmxW/jDV5zns/+wu\n3d9g\r\n=frHq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5IaPMje97IiVVpL2DvUbH+llXyku5XEFz0NhTF9aF4gIhAPXWK24Vgyez1V5oaCGTfMNncdwTtJ74kdnK8J+tedSd"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.0.0_1560448224254_0.37441122984558994"},"_hasShrinkwrap":false},"7.0.1":{"name":"@terminus/ngx-tools","version":"7.0.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.0.1","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-MfIDWria42TvGQOX5WNSHCuix4Zbd5sBsqXdJoRvry9773WnCMr90/FKS5ZD0ySoQoAgwOAa1oVEaKuWvRY3Yg==","shasum":"ca1f709c1a093c225cef23e9c851d76fb547dd10","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.0.1.tgz","fileCount":385,"unpackedSize":2003673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCPB2CRA9TVsSAnZWagAAf5sP/jYFiLJTAmTAj/folJob\nn/Kwq/3zJfSV9sgK/gXYZnaBOuB0GpGsT9sD5r+n6GoK1TMVRoT2UApALHzN\nOddL4l0OZNEkzDedXzuWxQqaRo9XJMNlt/Ed6B3oLvIAVIC7c8rZFvMc5nSX\nT2vKxpp6oW7sOb7//nP3L53EhibqVVZf/TcVCtfKqpuni1a5HQPMwrF3jM5f\n4J9L+eG8NKQMjaGEtKf/vVe65sixVWYJrgKfZlJhZiI4SiM70TcTAUPMXc2r\nAcpLN3hTs7YxRg3+qVUW12nkpZYbOi5YTd2b4LzY4ECUeZteBXCiEPWiepIC\noX6muz52amsQTO3mHLYr4sP5HHaWHcgnFNJm8t8wMejS9iW/pThkhMYIUIgm\ngBlv0Ap8xuWk9Luy81P3bFaF46fWNkJhfyG51L6RLH5OAhfUtTC8ObcQxAR3\nMMiBhaML0iLuCk1mvAHbgGtlQd0NbvdK8T1zviuj9Uo1gotF6RSDUe9Vwtre\nw3vHLGLLzn3J+gr6kFkq98uHj+hqcxZWpxuP/Zyg5Yct2qa3JYXSOfggwGML\nY6Oe5Gw6wsutItWPTZB0fGbS8FTmAyDYF6+M3mMoKEpTH70mUPV+yHfp3qcB\nmhD1Qrc1X2XLD5dZb5OXL6ZTF7Sp2KFrDZZJImXRZczBwmokz9GIbeQt2wVm\nuVRg\r\n=gHdY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7HB0yi7BqdXTIORP5uhy+1T0aJx3bjaZxiCxfMNXBLAiEAj0MQ+iMWO9Wh9IgNIF/+/u7wc+DOhnH5LKaGKnyPaAA="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.0.1_1560866933861_0.00850253964607628"},"_hasShrinkwrap":false},"7.0.1-beta.1":{"name":"@terminus/ngx-tools","version":"7.0.1-beta.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Usage](#usage)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Code Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.0.1-beta.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"dist":{"integrity":"sha512-2LIRUVUSjo2JFQDn+cZLoV/D4iOKeCu50ANCrjP2+fmv2TTnvAMw15klngqwSfCfIPwg7jwkw5+lhgzvI7wWLw==","shasum":"159b199e56826695f5b4cdc8dfb29e725575a929","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.0.1-beta.1.tgz","fileCount":523,"unpackedSize":2372253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOLxICRA9TVsSAnZWagAAhfIQAIFV+Q8g4jTsczufvwHZ\nrNctv9Hb6QCpmeOpKMIdljKSj7I4oVRVA2H9GMRBlYQyRNljrxktequRH8uu\nQF4kt7IS/x8TUY4dmelAjYLhOcqGGo1190QDHxWhGDcVwknqkxzda1HvSw3R\nQ8ZTbEPD/kOas7jibpmldTxYSXRue9F+Ah1Q3bVXYZCcUgFlkzvW5rkcff0G\npptxzOLNmw6al9o5Lj+JWE6Ej07ABT25etBkFrSumdQmVAv50kNToCg8DBm8\n2bX2M3tPeuTo3lqvyWRuQZ7uUq78kDSnFqDyJr/8H8lUMgJv2/pW1gSNZYEv\n2mdvin/GmJfyqz0ujQVWOvKZEvXscewd3RMMSDkCA3x2dzpofY93cGZkESRf\nRJx/KdW3q2RfXzhsRscUPpcubO2sDmJ2t4+yl6Z5Dq3VkF0WXnM68Rfx+3ed\nnIJuq2citR1seagN5jyYFcs39QBsm+4iUl1ZmkMBFZDCxsM25ufYEwcK//sO\nDoSxxEXo1vX2wqtXiEKyGoCLARlY0UNz6ziI0G35KxfRbJC4cDlB8P5GxuCS\n5THFKQ2agjwjRjegNufY5Em/Apte3Rnu397uU6GrNMOwwQeguRsYZrB7vEaU\nd4RJ2dsJvOuCQO9hEF86F1eyvyKSqLeDrQ9tvffS9/N/lgU7DAj33jwuRRmH\nDZ2q\r\n=+CfK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrWvoeusQ57g1WQ8gtMIud4sVpoxYDbLnji+YqXFZOhAIgZXJivJJ4cePpwlJGFwat80JIVGKju0uyQnwEn31+vB4="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.0.1-beta.1_1563999303359_0.2685101590240344"},"_hasShrinkwrap":false},"7.1.0":{"name":"@terminus/ngx-tools","version":"7.1.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.1.0","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-vMqEyiFSYEl1OJe40pPq1Doaymd7L8yv4OWRQaIEKS/H1a79dKcjBR/jHbOZY098cTk8kMoB1ynFiCK71l+ThQ==","shasum":"06cd9a69385411b5ca88d06ba2c0c1fecda4e6fd","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.1.0.tgz","fileCount":526,"unpackedSize":2392293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOxfcCRA9TVsSAnZWagAAFtkP/jNWnP33WeqBFmZT/hNZ\n2/oyDmrCkQRDZkT5PkGbaDQwrF7sFNIakFCxINaCYCZNZbuUAIZZD2x0O8dK\nJHkxW/tiFgTX8+qkvvXWpKtpSuSlvfuZZOg1tnzK7azgNF/GNbjc6R+rh2NG\nKN2jwZofBWkGuEplruDERUYVoT77kQNpayzv46P2zb8ogCQPfDTtp5OIYd5J\nx8pdlDV8UVVtl49Bdzlhb/4+bLYgURduYoby2EV3RNPJFyGX6Wyuksupaqeh\n1bRb1vHSunS/RiOqqHJacXsDR2Q8KWR1qycg6YExirFOuVcXYD3SSf6uRLyn\nzguIBR8rKhlCKqPB1O9YcE+GYMB1M9F60IeWQeBvrDHE0RBhl13lDISXZJRJ\nJWrAJ5jg6LoNzKI1n910rJvFDH0jso7VxFtHCKxWLR/SLlo2aOD9RpBGBDmJ\np/yNJKez2gkIAP7itFdbPH/rcm634P+hiWQohZEqEvX6gQGEneH96Ypr4rGd\nLnqK2I62qLRHW8Qc4Ss/I/bTG4rwjjYrveITAQ3gwK90gV84hseKTots092Q\n/8JFc5t1jhCA3nas/YRUgGEzFuoY+VShBtc3bjVjGHVVpuSwK+WxoiVNCWd1\n1CVLTnLyBI/ZR9vTH3DD6PbA3dMbM2RkmaDYkGwVXbUmQkFsreOuxVuVcbBK\nCiMo\r\n=2hs1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDZLlFr8xFxziJchfB4dwV0KWUlmgR7IXwD+PRJaWAPvAiB7O1vtpZSwsjU0bfZjc9JILbeTkoxZuxVs7kIryFrJYg=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.1.0_1564153819786_0.9800335749806643"},"_hasShrinkwrap":false},"7.2.0":{"name":"@terminus/ngx-tools","version":"7.2.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.0","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ilbJAYZZAeSiewhENJNhXIpeB4lfpsxK1IqVRpWaIeLaIqs8VBQBvcryoK/xnHfB1lNv+eu9PcSYCv7fxe4i5A==","shasum":"624512a0cfc1493c584b84c0c94ff320db7020da","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.0.tgz","fileCount":526,"unpackedSize":2392435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTAIKCRA9TVsSAnZWagAA180P+QDkdhzudcnZPX791CRw\nXurk05xsi0iF0OveVKqCkoLEZHQsMYRTlU2G6Gpcu3/H0CJ01Mdih7s/b4zn\nblOotq2a+r8EfmJdy5cKsbZze3gichUxB8kf4/5taEPYXmoZ3/wWicu12pqo\nuCQ32PS1oZFXl5KBULva7CFuLOZFRCAQIbGufVbO14CkUoIvHKJjHKsFn+mb\nbkjhlg7r9odzxxCIswdeZ8Aiot1NMQ3MVHyAI962f3mQFXBPaWQetSnZb1qQ\nMbZ9/P4jRR9vTZGIeB1LVjKluEKgQwvWaSglpdnYRooNnDcwIZkHhucIL7Hc\n425tYMkTEAyex69rcKCERvwvF1O2qq7GyjTAZIkxVKStoZtc52913sYNjXA7\nZ6EllkjckgwU9hJcFVfPQXxNwOwcntVQzDErJj1GMZRelaPMJK+QlmDe8saX\n+WB9HP2/n9wJ9IbhvVi+JJCoxquTlTVwrM7+by3dJJU0EO2MtZe/EZj1ycBN\nw1OqN0ZnjXak45pBmooZDKgOPLIza8u5da+lh8sag5c2lu9A/kPD9Gf8sdsa\n/pSP7q/uZAvGLV+hmEaih+D66yYe2xwtYtxPCvkraah3ngZQtnI5PUjjzyY/\nCP1jlisZG4sHTwGA2pNGHUclAKvspTO4IjKIFTM4CB3L5o8jZqNO4oo47o03\nbFZ7\r\n=1KS+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ7Xwa1DwC/Hp6B2i5/d+2bzHY299T7iqPMoBLqbNuDwIgKCS+IZG1jbhDmoyNXWxPiDdQjyNs0ghi1Jenn3kp5RY="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.0_1565262345703_0.06673006576527007"},"_hasShrinkwrap":false},"7.2.1":{"name":"@terminus/ngx-tools","version":"7.2.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.1","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-PeucpKoMbLBUOIGSXDHwl8+stAqS4JPx3XxgJQXs06oEnlJl1q0koUUsjkcpr00WWfw23sGJ8dy6+qa+j/ZVNg==","shasum":"ce702c928b0aeac6be5e9cc6642e96cc4e94c457","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.1.tgz","fileCount":526,"unpackedSize":2392545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTDfdCRA9TVsSAnZWagAAZUkP/2nSGQY0qLVZXUJpUJmS\nWW529r17P5T10wavcTYWbZuVGN/8cPKdZQeJ41xLNQMkv8mSXz80W9orZEzl\n7gcAP3GsS/HNXdaGcngx23C5yHv8kczMtqNEgm4Vd5V34cwnIQYdIjRdeMnl\nRKKr76+TFCGA6XEvZrqX4SvtTFdhKaP8DZS6J4If3dUMHsQS4Xf2jGgnLL1c\nhJo5foh3pI9ds7uyZ/i1wU2BmF1tI+gRq280KBqWYwpB+91vrA7nO9BTwSdQ\nwr6AguuWzOkbU8J2JLLyBtPJv1Y3cLUEscwhZ9VufJdAkEM/0g9mWBSEprbN\ngz2HUrOM6VwfkI8IeZDB1oF0Aj7wDUr1gG3vrYcSPkLhq20bo480mpTv58lR\ntsKfhyStkogJaR4sAJGUmypI6Gdm6HOf7DT5ERW4NyPcUIYQh4cLtuNLArlI\n6NQ3iq4Nc51n+pNlQLl3jj4gwEsr31EMA06Jb3Mzof7vC1tO09cEDkrLPaDS\nhpsptBdQvTP5wGS8u309+RxFco5qg4i4RWVW42zFv51quuoKcP1nQvRWcFJ+\nWucCB/Z3r2BoZ2wZzMZUbU+DroH+WpAzXla286JKgoaISVX10LBo2TpZRmbx\nd4m80+d0Jvrc7ASKUUhFa44oluNlPfRa7utwIg74THnS7UkByFsVIe26U4z7\nQ/ul\r\n=mkKO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/Dq7OPQQHdStU9Jkapf1gFdyN1D156aGrGQ3/KXL9xAiEAyX51PrTuBAC1N5jUmfhvJiE8Xk1VwdNqz/zuEuxfgcw="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.1_1565276124513_0.26431985325271046"},"_hasShrinkwrap":false},"7.2.2":{"name":"@terminus/ngx-tools","version":"7.2.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.2","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/ZVFwBpOwPAaWUJjhMrjC9vRia5OzhdkjgYSWVmWEKk0whrh03fdyKsfyPKbgvVg6sm3Hzd9NdCWQUdLbnBK/w==","shasum":"5795f0cd6cb22f05d7bf8b42c919e95f0b9f0b0b","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.2.tgz","fileCount":526,"unpackedSize":2392545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXuLbCRA9TVsSAnZWagAAuIwP/1gmLKtqW+RAEuo/eA92\nmf4xrsTxl+pB2ZVDg0oMlzRV5pRh4U1j4jLSNeGKJHocPPA14CgXR4gnDs0y\nQ6/sfrb6a0TKmaBLmQrOy2nGn+VOqAyBVrnSJD9s51lsT7mvNKuB67AXS44r\nOuK7dmFoOAbFkGL55jUS0JXY5WiibImNY3NZzq1fPcGU8DCU9PEWkkvbTa4S\nAjN0ZolA53Mi/gvGNvg9mYxg7kkNrBOjj1am/ojhUGyYvAJloXe6TXTuod6V\nlf4FcB4YdyqHO0RlojV38wBXMZkDR8Q7P3FJ1kHmHbkSOCQC1sygHodVXc70\nJdy32M65IUDN4lNQ7NFBaRywukjENT4VicSDMKBXqhPmbw5SRmDl9NzjhBoc\n716vr3sbrQYqyZSQICw1Lg8zcWx9G+lG2GZ2++3inH47+JHdXlDwnseU8RrN\n8riBDI4HkyM35ztRp91BqyzVJBE9yMSot/XCOQh+RVBLjvZy/lki60gDRh00\nISN5dIiD3SqGfhX5Gi/mW2+0uT8D7uVrXlbwjIon1yBXIC2XFW/LQX+HeSlJ\nuJI4q22bpdM8HmbCrZJVseUfN/RIuaOnXHnVYal3FWNic4be9QoSA6OQ/bt6\nUL+2zyRlTLeShKK3LUZ4zzI4EDYuFRkFCyNYbtuXfOz35Dwsm7DVW30sdNrJ\nHHPE\r\n=q7H9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOWs/55U4P8/74ZbyzIggTeaFud+Z8Fb+vj0Eof7aD7QIgfTNH+2O27TnMSmtZ+ZyqhmTUPADg7alREx9hkOMh/Q0="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.2_1566499546765_0.5594045620367014"},"_hasShrinkwrap":false},"7.2.3":{"name":"@terminus/ngx-tools","version":"7.2.3","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.3","_nodeVersion":"11.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-18ngu+QM8jx6+TH5b/J4B+y3nx4zs/1Nwkms4UEmQ2P84PhzMneVHBXsvb8C+r/EJKiBmsz6An0GBVYFj+XuXQ==","shasum":"91f625e98dcad6cd865ac0ce572eee5c90da466c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.3.tgz","fileCount":526,"unpackedSize":2392993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXu2cCRA9TVsSAnZWagAAM0kP/1w1BZKoTav+Oz6hZdix\nRJC5R4e2NZJpUdYhMbtN3zlSilIlI2ACpyNeeFkIg5pod7TurVEOiRWpAA7U\nTNZsdu+9S8JT1Rj529dxQNSOxWnhW8arW52ZYFkmPuB4Ex60XnOy8jNX1aDu\nT9b84efgN+YuixO1OdpD3aKlIEKtutkSH3xxPsLLqxPgURryEiQe/e2yVP+S\nzu0Os6MCCZpnzlgPDGI5LszuJI5gBicJq6jgFKE2J/z8sytgooFF+kT2U/df\nI9fIfPgtE/w7Mm8AJ3yy2i02S7h6lJxkOYt8Y+o3hqizscTy1JeaytokGD1a\nhwtHalgY0mQ44Q9wAR6Qt0c1vibdbxRJgZ45XnnOOQ8nh5cTESyta6n/rV6k\nno3jPVWKq5U3YYYI8i1kIpCjWqeAjVRnW4gy5kwTFeWxGqpqBaTsNcmTR6hQ\n3Thm4mErEWKo8nA9TV+1KQE0iH89RekqXtyLbBwbpTUUEgKkiCpg0euKEFXM\nCAdTVjYCnrsSsWdMyiiV+aLQIDimirAYc7cm+25X3FPf+mZSZRjdcqXc7day\nrHqZpskVDiIgU679sDT0R4IBXUb/ayS2Isu/sn3hMaY1Nl9rNTTulZPkwUbQ\nTYMRkAKOkEbDrJXRaz4B8eDhpJxKU28369Ai/f0Hpq7bPqLVRzmV0IAdjkLJ\nm6vu\r\n=GahI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErpIHRcDDiNYAq1WRo73SL6uTrw8fwUkNnhTuAcACxsAiB7leiEWqW0BUnV0mNLQmTVoguaQiMPLz3zkbW019owfw=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.3_1566502300254_0.2510514018776828"},"_hasShrinkwrap":false},"7.2.4":{"name":"@terminus/ngx-tools","version":"7.2.4","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.4","_nodeVersion":"11.11.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-E7uYMpVjTGDT2ZQHLpCkM5V+arrjqax9E5CqYovvPTFzoj5w7QFdd6BaqKMkfoSSnXnChGyhRCHaZhX+CG5gog==","shasum":"aed4d97fadc314a313ebffd7734f921c5c6088e0","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.4.tgz","fileCount":526,"unpackedSize":2530195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbmW+CRA9TVsSAnZWagAAHLkP/1tG8UbZQYfkhrvZ91xG\nuqeW525ZXyOsQ7xrTqzZz6t7yDRbnn0pcfSCr32rkv9ENtmgCJvWGf5aFpT0\nI0nUnI1Uj5NFDeSKHZcsvKcv4O3LoEvbM0kQ8Ieh4KM+C5E4sbAuIm1I7He9\nltyclWu/RpUC/3QegRH5wQ0GduzLp3I2B6og4Y1uqiwnBMS1vHVrkO9chrgx\nOagQ9L8vsFeLXf1yVIAERS1RiD7meouSwYELbA6lYAL5yV5yEl2YEAL7an8g\n2llcdNTpXmSo7hwz5kbxHzH/QIy/qytpt8sMWOXPK78V2wdoYNbWsGRje6SJ\nbjhtNMQYmgntQ5Y9tlGvUxtD+rUHmz0B88SAKla/9LwLqPa49IUgTfaIdbir\ncPFlOyn3nSVX0kbLJtGE9pITvmetqZDUmCWN7lXbpBsLQDpggPY+GrqdiWm8\nOkwhIfGU+1y4ZJXjM3r8f71JRA8c+NHzLEja7i2azVyIYA9I2O44Az9Ok3wZ\nZr/ZYKCP7hr4+SD47vS4ZWVnq5FLyn11XF3fo+uSwK0facqvkr9dbWMIdjyV\nGtNyOrn/tJdNecBWgmQQ7UZxbBXlf0WLoU4zYNMiBj1kyrqyXnZVzWRstCnw\nGMfk/m1WjCx44yEMnffx1e5YanJYQYT9AykOHKB1oyWpsoukZ+lTkXmr3yy1\nqQWb\r\n=gwQ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkA8dAzum3XomlW+Rl/XCCnlheUkgNnk42UhWK1qhwoAiEAwTYNN2bogIZ04Tk1zpJMbMqU29JWujJyc8uEcfOcpY8="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.4_1567516093274_0.24357796406750176"},"_hasShrinkwrap":false},"7.2.5":{"name":"@terminus/ngx-tools","version":"7.2.5","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.5","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-QuBSqmxyOtONFLimf2GeCHL0tf3/y6arfugm6x2oetKXsV7XNvTRs99XxDemtOWsgsi+kU99GaU7BCUEutatWg==","shasum":"b38e910a8f2648d19da2b577c4fb07e8b5fc8796","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.5.tgz","fileCount":526,"unpackedSize":2533033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjNaACRA9TVsSAnZWagAApkYP/if9coCrJcXIuuYGOpjv\nDVUrMYtcdMdbtkthpX8lpjGguBhj2hru04mdOxB+K1hYSAGWSLX58jtZ8WUf\nV2RrbCzwv3LCsymOMNjwzn/DVK1sK2PHV59hXxz/LyB352UfTiKqXA/4EXjF\nEwjevJ0T8Y15h4DXPT71EoUqwnaeDr6Q0GO3NVU4WSPocnfJHaLX4XVcFyKX\nY3UkzReylw/O8Gn0e6WPXsmrtT/rvL/t+nN4JKfrHibzbnfYD7uyX06ypGxf\n9SXzy5kz2rZ4siAbNRQfT0NYeLAl6/lZ1+F6kTpHmNGJqNSEGYKPZcQz9rqv\ncTPoXH1Jsd0iWvT4aFQlvKGpCZi+cq/86klksz8E+lPRDAgwO6LVku0XIzi7\nFXsVI846Jesxx3DrnN2TAVNT0DW+dSqz7Z7clp1uBWs4sLFuYzjxc9ePrw1y\nehkg3GzlfJZ/2vycKqogkpbTcr49HfQZ2wfW6JJFCNodh9DhT5Ngww0oAatF\nTM3cJfXWb0qTbBvtm7NjXqZ8/bLfQvpYypfjU92zPndjxoBxzEUwuR6qFQqZ\n2DQFBYxnzPa7bcH+h+lMW5lzJYFy4Ys9rZqGbG1XdN7R7/+r5rEdumMocjD1\nhdwFQvm8YS6PSMfq6HlPLuwDztFZsqBi5g1RhtRPNCDnWwmuzHrYq2B+k8vw\nnvj8\r\n=PMXs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAoVD1YDMC5Z3EUJb+SWHT+TVg9nXz3lRiZQvSghtGafAiBn4VGkfHCjAVYHIAuj66BGnYzLWxMV5Sg79NB/LyZhXw=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.5_1569511039880_0.21906221439467988"},"_hasShrinkwrap":false},"7.2.6":{"name":"@terminus/ngx-tools","version":"7.2.6","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.6","_nodeVersion":"11.11.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-wP4o9BUp1Ejceaew5U93I/stHt3KwF15N0kE/ZvknxTSLeAgHkyIbfV5XE5VhDBgCBej8B0rI5+kng3c26TkQQ==","shasum":"b5f975befb787265cdd13d680fa921c9060d9b55","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.6.tgz","fileCount":526,"unpackedSize":2534683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdl3+uCRA9TVsSAnZWagAAwbMP/0QzXYVcfl7bD0bwedxS\nayFXkL2qC/MnU+zFapPW3mLd12owNSbBxJfyAuNcw4Y4V5NFNNsz/sv2wOev\nRTEaxA8nKSrDEn+D7qCrfwG4uW/kpTodWCkuEV+qXlX6dT2NjiGhaInjTOq5\nPdlmwgGujVqAOpySeTxXE+IyNSosvlUob87qRhv7++GzuZGNUQDlhM/PM4jl\nS0tHBQlYy4kUoOsOlHQ8p/tYCbu2DPMNK1i8tO8Plv9o8+B7blmgQOPRmlAu\n5rRK/IUTgcD3ZAfFbuMQWBc3B75IyNGgghx5OMO0lK7Hnamd43ROrmwZufPL\nDwEDGzK31J6Ch5/qvYnFocGxpDts6KMvef6aJvZxSzIP/KLaPNNMuI31YmgS\neQjNmGA99Coa8LkmUiOGvteCx24GTg4snF7sX3xbq0iP2ZT7s1CvoFJct+6i\nFrPPQ1c9pm1bxkWRkMq7mHVPdyfgHdn60cN+iM00EwmJhsURFzRTjT5Kiu4C\nYdzw9BUrj4AfZRTxOnzAsGJHGVGNMit52X29fgrPMZDda3qGe7erxW8JNpU7\n9uho2S6Z++k+zmG9+Kzy4sFEBhfzZnwWVTcuCY2KpklhRlyMzW13xzILdVZF\nfAfT3jEAMGkd8BRrKcrkyeHNHOFxhRxOdJJ3yrKTgFwGgkehs56ZsdWcBadf\n2pBC\r\n=A3fQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWchQEdimcc8xjB27ZQ2GsCiYnCyJjOocqK1GoYa3jaQIhAJGedwUfd+kerJ2HhZtcnHCPrYlwsop7j8CfQk/TYaQc"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.6_1570209710040_0.3343684440135928"},"_hasShrinkwrap":false},"7.2.7":{"name":"@terminus/ngx-tools","version":"7.2.7","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.7","_nodeVersion":"12.13.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-EyJ4hqLocevOm0uWeRfWlBlWtK08PgMCRXxvQZrLbh3T/HwOkCuw//lRb43Ja5lq+1OH5l8FsVn8sqLHDjpCYg==","shasum":"7a638584facef1ea68c83961dbeb31d72bad29c4","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.7.tgz","fileCount":526,"unpackedSize":2534683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+No1CRA9TVsSAnZWagAAyIoP/Ra+EeertVG6XV43NeaA\n5Th6Ro4M6JvZ/+v021k6g85uJmj1frOBnXk1xaf2aqmXXoOww5D60miRF+Am\nD55D9+6wDT51CvEu5JazWij+X6FJKZZCOJhX6zG79eqZdxZ5lehxlNd162yp\nlXP6dwG4CJCB+qpzJxSqMZPMQDDHPrw4X/m1Mz5xAf8dGk+8dKYUb6WBY67D\ndQaXKLsSXka1be5nP6x0GVnjBKmmcOQ0TvhYFJbGvpw1MEbUP4SEo2LGd9Pg\noK9F+B16AuTynH55p84HfYt2oAggRPT2EpII0frNyMp/ZxIEF6kGiBc6wUQc\nm8wWpVAYjzC3fHmH2ppyrW1lOWf+WD1xAu5CyVXocJgoJ+x2zyZ8L4Co6VSN\nbF51r9sCs35C8uMO1uK5AGYB3SvbwP2kwk+VRevwnhdC6XTOb/g/r94liHJV\n8Qp/puqehC6yt+F3Pb8xM0iEzq08NQpSJKbuOhM91x9DpqGmySZD7yzNWCGs\n5uUiksFJj44WbGWV2haNgOud0Dwji/YYWYjLf1SxQU5YNoc0MemGLPtxlVO0\nhvDFNaUQdAo3yIWn9dOcjyEa2A5jGawSd3yM3WCLxoqGTuJ1eKEYT1dhXm0X\n4Hl+ZrGdafdy2K1hWNkJTt+n6/DhjiCrc7oyvffheZ2XP4ytwOkoTDEEoFuO\n2460\r\n=rJPn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEMyVCDa/T6wdIHJMHzfnubLfiaXI6RO745wd/p5sXhXAiEAzqywRZxhLaLsTW9t1oxU0GnNhmFpaJC3tK/0PfIgSws="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.7_1576589876635_0.5994455572407309"},"_hasShrinkwrap":false},"7.2.8":{"name":"@terminus/ngx-tools","version":"7.2.8","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.8","_nodeVersion":"12.13.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-uh+yE7hM73nGNgQT+NmUNgXOT0DUSNUvubHIlqOxzOID6zMGqb1P1W41jBJz/AkC+IQ4SjynEIfUpNq+Ev0isw==","shasum":"cd9a5f28a007b7304b7fe9d1d5da1ca9575ac4b6","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.8.tgz","fileCount":526,"unpackedSize":2534683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+PBmCRA9TVsSAnZWagAAZE0QAJOLkV+L47/ZW3zm9L9x\nYzSDtVJ/s2Blj5xK+1h8toyTb8uulEyToX1+nfKg0N2y5YHhCfUoEoJVc6CR\nWQWuYVRhHB95czNnvO0FUEinCpgh9eftsVCFTbrKAtBJ4FsZSFDsIxgdnNQN\nYl70p1gzfB5bj5ZUyZPwK58z08OwS68ZuJa3QNOs1sUX4qx+A7NtXN/OSbrA\nqJhWH86WiK3HERPfqzuI5OiWnjqW8EQktk7McBAoveaeeH5R1ZR4fYNEknFh\n/tCkIy+3na60T7OcyGVe29BJZhfa/kFvgLaIXoiEhIqVvWVhH/k8wTz1yNpN\nrxHssvKFyTKoTtzXkLClmF9INoeFsO25YiFC3d7VQVaDPrnY7r30n/yL/iYu\nKPv1SNN1kimcstVZcS0E6FQZLhqHLSetxjOHHRWTZwV3mmnjVBAoNPsiegnZ\nFMVXNR4ysf5lriDHWAerXm/WuK64saYRnv70/y650aMjwaj06pQe8IJRsY3q\nQ4YTfVPfYnIEbr45g8/cF80lRw6DqLHXiKIS8C/id+Nvf/3MDsQmeHaLIsiI\nThE0gBGNI3XsWNtdQbeP9lXeaF2eiZXrupEEXYlU/0vQSyxWKW6UKSE1o4gi\ndDwGs6Mo1aFlQTkP2qhV0IFgjO+w5LWSHow4f/ceKNn9y6Jl/Gopnloe+3e8\nyjHP\r\n=Xf7s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7uyv1g+uKimUsZ1Qr0aALnZ0sYcK69UrTlDxjfcwmcwIgSVyf+2iLiFrn+4dy+3cXivWLd7dYLXusYBaM+mgAT1c="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.8_1576595557668_0.8980092581594599"},"_hasShrinkwrap":false},"7.2.9":{"name":"@terminus/ngx-tools","version":"7.2.9","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.9","_nodeVersion":"12.13.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wUhceoF+yRRi8epwxQUfvootGjq49WEMtXJmeUCZwWHRdH6wElENSuwpXp7n1M8Fj67+Xec1pMSswxasiYEpUw==","shasum":"ac2a3403b99fa979a13c61fa2a8efd9f82ebdcd5","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.9.tgz","fileCount":526,"unpackedSize":2534683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+Q7RCRA9TVsSAnZWagAAyfoQAJAyzyehZQPpTHaATcMD\n/TJUx+whB3WpD1wpoIGgOWv7YAiVbNWdVwwmDTA5VALFtwEbySLG3BJS5dMI\nY35W3vU1x2d/HqihaxnmJhDbJXy2DA/78aoketNgg73qnPxLRgzsrXfOJYTD\ntDg8JqLP3aguWE0c9v4DxcCB7nAzumSZM2bHhRA8iOEjE4ko1AOqBPe9Bmhq\nMh7x10lGda47u4g055vj+sjM/iW24hNd+fzbE0A8dcgCVk1MyYLd8pdn9PNf\nWlRAxsYyBqngFaG1smgjG9HJnTEX/DhSmi5+ml0OmpxPT9wMCTK07IBJZu5M\nM5iF0gFdvK1uj8nzXwnPMDlYXWDgq0DTxS4zlaQDdsF0LnXZ83DAQXiicsau\nL9qBJzaAc8g7XHPK93kBKU2N0L4f0nVb5IuDYbMScQ4dtVo8F5MbqJhWRYi6\nLYTgWYyCKBi2zqYQd7hoVC3PaNqu2PODX2xrQixdAnFtR7RMvRpzSKgLg9bW\nCU9LRXkrWjEWOgMoupkE6EY7cySEv7uUNQcK637dLKyQ8nHw9CF36NhsZbdp\nZM+WWICJa+k/aRI32Z52mo5OlxUFUo+eRTjt5OYfQ7B5cEnE9xz4Z64yKe9y\neFPf3YVO8GF0V1yNOMofH5T/3vL4Z7Ex9WUs95byC8E9NDZmEtcamWKx1kz+\nFGtQ\r\n=Ip0L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEbtMA05hcCplz0KDZImwMbxmTzF48oce3CT9Tu/ycHQAiAQ5943K1DOithCB3qf7xFJBAiLgk8xIhI55vyquHp2FA=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.9_1576603345412_0.07613384677211732"},"_hasShrinkwrap":false},"7.2.10":{"name":"@terminus/ngx-tools","version":"7.2.10","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.10","_nodeVersion":"12.13.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-5/f0WGpq4hQEAZeXla4pmalnHBmPjsgRggSXhVOuZplNmVxuIUYEYqoUDZEMS7JE5rp+2ZRIKUDhwuLlpr143Q==","shasum":"d830a52a56c891bac514d429e9909201ee1ef570","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.10.tgz","fileCount":526,"unpackedSize":2534695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+RxZCRA9TVsSAnZWagAAaBcP/1iYKTW4nMqwKo2Qmn3u\nWkaAWXRE0ZDeWbC1yy3/kyUDC1XTJPXaKV8Zy1vj7I/1ayt6l02QTgBPEf/M\nTxWomWLOn1jkGuX/gbcJrmPMFOq81ZR3/jF9/4drWyOphsv7cc+84JPd/Tp+\nD/lhn+lfVqWXI2ANMYuxyKGBI97UwHVlzTWniCipIqWKjbl/Dzzt4KJdSUze\ncHExcIOPkUgNeEquj0g8J0fBKHFMokbKqt5SXcQNg0Z9bFpFQ7TWWZhpPYis\n3PhqqJ8OzpS3uiIQ6fcKXlkGpssYwvdMsXgdUzRvcf1jR4Dzzb113EODMb/G\nW0UoXzshE7LAxcQ3A1/rtsC1wALIJf8+fSlvHxP4WZ9w8qRoxeaWLwdWOZaZ\nyIlJnthhigfpEhapbBhmxaI7p1+Td/YuL6ARGgrerTcnNMO5poxg0WtSz09u\n8Q8i91F+J32DJoG/M1c6yOWFYAuAHeuj/9xcS3IvFrCCNOJdwXULDsPunT4B\nhBfX5O40KQoCqa5+HWQMZOep2+5nKhhECfpYFWuzeeGF8tWz6e7KHVP3fygU\nmNWjuEgixGb60y6uQRp1xzo2QVF4J7aTk0+VApLrU3Y3RjzrQgBlHtlNixF6\nMrVq0vSBVwbaj7WhtyfjsXaNbe6o+TthIN4l8HDMzFhfu8hE25HYSOfhCIu6\nwpTO\r\n=Zv1a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEAt6AvuA4dz/B2G7TsX4iy1VArGwLwVyO5EbHMOSkUAIgY5oSsaZtcd1zuC2E9+2otTEaWpJtyxxQ5PlsMmsq3b4="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.10_1576606809036_0.6152110050566186"},"_hasShrinkwrap":false},"7.2.11":{"name":"@terminus/ngx-tools","version":"7.2.11","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.2.11","_nodeVersion":"12.13.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-AdydPNpFrk1LxUHXfAhkFBU0W1mrdqcDvQyJ6vLn9k0wAeVBFUX2R18G8jugHHYY3gTgqTdM1/C/ieZrNPTj4w==","shasum":"1f20c4679a62d291243b58df5c589bba5e6ca926","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.11.tgz","fileCount":526,"unpackedSize":2534485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+TxnCRA9TVsSAnZWagAAN98P/RtEm/pzUog8s8FJEx26\n7QXqlLZqKW2iUIZQxYz0nmFLbuBD9JZ5rCQ/MzjEaLt9q3Qq5B13agBhkqtw\nAy97/NYndBvWj8EUypPGbCloTRhxF5rQS1u+iVX+YaQCMWJtV4wgwZOAiQ70\nFZ/QIM/zdwoKI4E0tPCoOQk3AqYl52vix+serOr/aXdOOnQPaZ+KJoAfnCNk\ngW2c77Tkj1IxoNJ3tfjdoKDHy19qBdULqvQzGMk7dRlb93F7vXUTOF+e5otC\naK8QvcM892sKeeBOmjYfhU3mGboUetkYfgcbtnZUF9lwzWODZHKS5rnUtwf7\n2Efd0YK+YPMJa40IoHA/O57+1peYw99pHP1XOQh44JH1HSL90OLyep0ri6n/\nqsY+SB5/dHeaQLULHNDKiik45isCkUZCgdz5LbVonAlHLUglg5J0hG8Z4vVA\n3sRSj1gYcwKoulmRv25VKQOOWs5TYU8Zyz7qwE2zl8a+V1YDQINpus7evfVH\nje6mYvKCuwdb5ywAkaIlnJjDgpcXvjhUbtnvogBWRTmdRJPFQia6uThw/oU6\nrJs6z0NrX2PYfMTHAezq2OSQrt0/ipdQ2VzVJ4QwwWE1F1GwosQUTXht/mVQ\nnA5lIEPNJd2roJmewtCmRVH0tIKUDmfNxSN4khsaCmaX6NyXQs7DNXmU0E6L\n7kxX\r\n=0xx/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC84CEbJ56K0vgWObpNhsFbwf0S73Jzi1h7IypO0gcrmgIgJwUQSASMF94fsNPAJkkKlgcTkapC2YjPjmkZD+Bu/aQ="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.11_1576615014875_0.374344260860602"},"_hasShrinkwrap":false},"7.2.12":{"name":"@terminus/ngx-tools","version":"7.2.12","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.12","_nodeVersion":"12.13.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-JQfgv8D3oY47rWG2L6/O7Bm4FoaqxdhQHK1uaISeryzmnwZkk6029P+mrcz7S2BjsRdl9vPIYX8olS3k7JtDwg==","shasum":"1884289db6fc449c3fc7777d958fcea8aa649540","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.12.tgz","fileCount":526,"unpackedSize":2534485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFffkCRA9TVsSAnZWagAABVAP/if/e8i8a5Z2ASA4Ue9F\nMNYviWMJiLJpDfVten0bTztADRGzr8eWh+mDvIFtjFhJBBVae0SfXWz6SXlu\n020Y1XwXCYAVXOJOKoSrVpPox69QtQfUJrYhdL6IdwFwA+4553IposQxMBRc\n4KsG0q0mQ8VhiQ/agvMVcFwOXZilhVrCkoRoPBTfR8nFW7YM/KmeKEXkNEkP\nA0NLwMUEKkE1yIs8dabF1Iz86g+2NRr+ndm0bpEpJi21qKS+58C7m+GMn+XK\nxneFs/yq9AX5AIq+MAhs9TOCipWtEJNMythwjicGg1pIbAHfkPpIDAgnQ9PG\ntst13e9aZVxA8nIGXLoBCt2ZURi0sUNjYgmhBFf7QHDDozis2AGQ5YSUZrKT\n5AtZNHHpgTpTYRe1JJ++yQwT7kA1iA7XwL1Mo2VDrALrsC7FCnoQ9tJnl5ps\ncZxxr6LyxOB39Yg5jqLQuu9qfz1uSUMyRntwIGoUy6M3eWJouKGbl+y4DQiR\nLxgvo9vAkahbQ/C+dLOAHtC8NqA4xkZ53InndmpNHyuFFdVQNGqWDB3BipVz\nF1rwuDOC7Y1JTH2+PcTlEUqBXj4SQs02GYmHbwEVNPldrJs4wFmlXxSanjWa\nZ6wcWDBmo0/xJt/+ZD72+E9fFc6xfd2TIjb6DK/pYzVRsJ4ksC+65GgD3bh/\n6a9s\r\n=KlK8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE5nrGsUEkMbnc7zUdFdlCjhuvGq2/GZBsjE07TJXgnzAiAeE3C9PIKxsJFpv94mwo57ioc1RIMiXbS/sIBz6trEtA=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.12_1578498020333_0.3985698309904202"},"_hasShrinkwrap":false},"7.2.13":{"name":"@terminus/ngx-tools","version":"7.2.13","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.2.13","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-MvCZ+kHJOZFk4cGEGPowfdnwaar/tcDtcKlOvJ6iy74+jQmfSjYbzwe3osM0aGMteL4nh/rOzOj/JJp339p0cQ==","shasum":"208c0f544da634a20b45d6b18677854c47f38838","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.2.13.tgz","fileCount":526,"unpackedSize":2534485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGK1hCRA9TVsSAnZWagAAMvwP/1h9HeC/3V/hF5zzL92O\nyJztxsiVE++AVeOKek0ywy4FdCWwbrp1FE326BbP02LWb2DTfS8Q5qOYuJjd\nGh0UShSbtDL2+gKEeA4I0V6pRQ2nIKBtPGhwYntfKC9f/q1bJyV7YUrFmAgd\n7Pfx2WKP5PX4neaLmqYI+qvyCWA4PCTkkTNjwGMTFib2BTGNSM9MApLkxDZF\npfqxI0is32Edxj8EdTxPyJ863S4vJlIPFTxQUMkvLNI8bfC9hO+Mdsf5LVua\nqRLp4VlawfZlCVK+fFRBQByHz5lo1DYwx5PYxn7551YH19/oS0rIlec4CNW4\nJXLqcof+SuyRL1j0lLAgvkr09ozi5wYKhlcZJlQItRhry8iXGkhgFPz6ya39\nBTwv32tN7c3baRjCouQDYtYITHmwYW81ohS7Hmyna40YKH6ortpGwK/vx7UV\ni93GDu2VRbOeLak0Y6ebbkDg2aH8TgILiX36A++/8KwC4IRsRdWHLl8hVRIW\nLf7t1RiSwX5/SMPSNnrVNwdgQS24OCvmhGzqx/e56RxRzulyRan0f4BM5985\nuILBMW2ktYQgiy9W9b5DYQEMVQ0bnyHRhUhgYUEj3K0MPadvdRnJy+OhS6ZH\nxr0xxiBh/uLRqzrKzd5l+Dq19jEmuRYckb/ICKmhmZXUUyTAQ79tarL0w6in\nCesz\r\n=5GLs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0EGivry6ZRBdRMdoz4d5w/WihBijqrV+IGxLm8N9RCAIhAL8nsiSTWGoOlLMscE3qsVCdDyNEiI+FlyRg5IgG49A0"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.2.13_1578675552835_0.20814884562518943"},"_hasShrinkwrap":false},"7.3.0":{"name":"@terminus/ngx-tools","version":"7.3.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.3.0","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-vYqVlPLJCJdLdr901988b8Jt3JHdqJ707gelioD4VHdR3dpec6Gz6FG2Sro2akgX98/DJfnAYKf0OatLfbu3og==","shasum":"4b9e5ae5de067fc6ce48d575d929a727e228e05a","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.3.0.tgz","fileCount":529,"unpackedSize":2555069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMB7rCRA9TVsSAnZWagAAZ9IP/RWO8XLtF9ITv1qYYhZ+\nH/7G7L1C5tWin8F6P3S+2G//wYSRCmhltBfkE5vjMdSnxe707fsZd9OPZvWQ\nk5VjI1LBtzBgAijtp/qDQQh+ySzComAETrh1ThJg2sDWWTLacLg34gdRyo8X\nD0OXUWlcbatoRtvg2aQYURsF2eRa2CeOFu49uh0uvdmJlNc+y7TLpSjnFblQ\ncyQTPLxKZZbTSQKnRiiiZmGDr4gJpOpm6C/KUgkD7GlS1UWaFvBEmcqfEkha\nIWvdHSCkFnHx7APTShUpo8f5leuvoZ/aDYfxcVeShdWc5D8RqB6m+/TdfgTR\noUVkfqRAcmZsifiUucSr+5zotcDopaxijjJJ/VMlAmBFzjJsWmh6fhNAxjC5\nKTXx1Fs8O7FwDV1xn0FOFBGQYkUBchhhLQMeUbf9mAwK0wbL3tCHS5VWJw+E\nld87ygjEq5wfFmyN57Pr9PGAKly1qpfnZESk7TM02uY8Zu5/eLAttAQjEMr4\nw2y+lAIFfKIIn5yZeypH+le+D0F23RjauhGpftjPQ7ionmLII465hRwUyoTd\nEEDmFeqpHMptYUGMlLhZrpmcrWBPSAZh6cl1WxtqZABLElIWezFzOp9kwkys\nT1C/sNK1djtqOOg3oEAueq86J6ndzGNBojPVwFhN1Z82IpUr2hiqkOnJfsER\n1TxR\r\n=UySy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBoARULGGWoHuzU4hoEhyHMRuy6lIxh7VC/2fIGtTeBiAiB1TZxIRQUFQsn41IXW34U005lIhP4Qlb8QrXbshClyvQ=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.3.0_1580211947067_0.4444690233008637"},"_hasShrinkwrap":false},"7.3.1":{"name":"@terminus/ngx-tools","version":"7.3.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.3.1","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-0f9qh8qOTsC7tBlTqZfMeM/2SKxf2jjGEbCb/dBZMjDymnmRRpAXj5TbRhBkLwJ+/bndC7v/6LDdUxAO+7Biuw==","shasum":"aed4ab64e18dff9b6f1638a38e50dcd3f2a9be47","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.3.1.tgz","fileCount":541,"unpackedSize":2590454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePW7ZCRA9TVsSAnZWagAAVlkP/1lPMJBe/k5vhQAIxXp9\n5GOMhaph1HLEUAgyxQIXnLRDZsWWNCocz407awDEoUBGVjN+CdZ99np3+xlc\nm7UH7CCjWCM9U9vaWQQLn3KoBw3JKjf0FM6MAIv/ysgFO1OMaH5BmABcHEpC\nTDJHr1g8Y5PlEz3YyBLh9Q9M+iDUAT8qpG1LTjX8yoYjK7UcVWh1UJfjEoos\n/hHOvsLaia6npICwSMBoVjkxOvNz0QK8GtjIgGFmV2qXK7GaB8IxkCLY0vc1\ncENOUMpf1ZInpmbOtMNSD6/hbCMRgn8W/KUt/wCVmbc06vq/Qbh06eKCzvT4\nkATo2P8QiEUuSU5vBTvl2WKRanuOnNVX1tYtsETms+IIQ4utlJj/cBhcLd+S\nTLjNjjTTawYbwju1P1RmCyZyEKYvPXQKhPLDw92u3QwumiR2lv1capGU2eYC\nXjQ6ppOgJzv5VC8YKxpRmWRryXdP+oNBnxE2Ek7GlLP8THoyNtvj49qcksUL\n1dUE16KBmCwixPi3/SrHIWX9iFwDKGZOtv3Cwzmfs1Bh1MHHdL6V6xRz+IkF\nZjtux5abmkzDF7ZXmWrVyUy8bdX1NX3MYGVEi0DZlovmiE0+FpqYbkOMYkOC\nh/Z6M6r8xfRUca4uO/9qNzfPAVjo3baw+WoZsMofRBLHqQyG8Om3gxsYqz/2\nwvBN\r\n=CHqe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeFeCpEV4LLWL6s4tnFtIMC8gUl5O3WIVx1PNLnm6KkQIgQbtte1IAWJq7lDHyS+xsd+XfqIFb/+jW4b4Zl0sbaac="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.3.1_1581084377013_0.0817591131645592"},"_hasShrinkwrap":false},"7.4.0":{"name":"@terminus/ngx-tools","version":"7.4.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 8.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^8.0.0","@angular/common":"^8.0.0","@angular/forms":"^8.0.0","@angular/platform-browser":"^8.0.0","@ngrx/store":"^8.0.0","@ngrx/effects":"^8.0.0","rxjs":"^6.5.0","typescript":"~3.4.5"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"dependencies":{"tslib":"^1.9.0"},"description":"[![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 ","_id":"@terminus/ngx-tools@7.4.0","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Xygd9Day8qRlO+r4nZsqkJbReu/ryqyR/Z8s8cUACXJ4q4h5aEcqqviCAqsIa7bKvCAzATJsZR+E1Hx57ehFFw==","shasum":"b84a8e274bccc95839cf60155e9daaee430d3a58","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.4.0.tgz","fileCount":544,"unpackedSize":2598422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePZnlCRA9TVsSAnZWagAAXTMQAJ4q6OcH5WpG4ZB7rN2k\naw0yqxr4dQp01bL79cHCm6WNFdgYVOaRPdrcYHtF0s4pXI//jlnoNVgSQZUV\n16RyCm9K170oiW9JX3Dh5UDIsWcr54TlqIDfExWaVNHvAKuUugiHqQ/4HM48\ndJdmvRTV3EvKAyGB9SVdBr+mRDrdVFzoVpYr9udHoAmzaFjTjqxilNBo1sXu\n9eTDYjq2y5CY3tyLkmeQjIgZ8UpBwd2GexfwgNyiAhGTOwhJLrriLrnxBZfm\nMqyrXK7c7zUnHqu7KrzWgnC1CVRp+Vdpoz6dJJrD1LKcvK2cr2j3vCziUjjp\nqSmIrOdugV2At/7nOmErOUVNW3Mjc0xbyHC00JbD4of1G50Teuh8xozjENAT\nyWB7ubggC/IQz4tsOE32ppIWFiNF5cPYF2pzoVG8n3Obp2gkecHE26cc474c\n7ZUOOqH08tOplKlxd2Ey+UmiQKFS89HwhHgO5UbgbuZHS4WjdUpH+QDPP94r\nEkgnSn/Xfdu9S2IM31VAVFT8eUVzmbSdW7brGXpi/mrmp+rqVq9p/pRljnqC\n0iq5Wj2P4dAtRsMcwaS13kVhLSQDswsts+OwVZfj5E8l+Qz5841lm2EgnRiD\nU2IdQ3kYQP8ZnCBUYEbd20ivydgEpiZJqch/SPgfQeGuA7Ka9IDzzexmjET6\n3jJg\r\n=66zF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpRipHy0SNyKMPYFTqh9NP+XHSF9ubPUMGB9U6585AowIhAMc/4W4pIGIatqu9ldLqQ1X3YgRlH+h8gg1KJw+o32Xh"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.4.0_1581095396597_0.4036550525121376"},"_hasShrinkwrap":false},"7.5.0":{"name":"@terminus/ngx-tools","version":"7.5.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@7.5.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-M6kVWxmc1nhcYd0PnHKtaS4ZI3iMaCH21BxxuuPI6tG+TVxt9j4/upNaUrEIANFGMbmCkKgj1yCwhYbSsq1AWg==","shasum":"ffeb8bad1cd7eec3e8b6b301c4fc6559c8500fd0","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-7.5.0.tgz","fileCount":529,"unpackedSize":2462282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejyCWCRA9TVsSAnZWagAA/7AP/A9D1e2hNPYtnDzv507t\nvoX2B7sND49q9CnHb8JdH6opFgI9NIlmzB7TtcvtEdKKUlR9lCOMfCqs0nZW\n7QFyNBG39m0xFwjOt5v0rAu74EqRFgAJGSSdwlPablrEPrsXesulbBj4Ckcz\nCT1w++yYkppzZIOcqs61xOBVEjU+1xRBVFULIbofuwvQax2w4KGFtD1C+DzN\niW+puAifJh6SzACCfAx1QciZ1eHYL2gAfLwyKvuaTk2OzyYgMRzhbPLPNGE+\nKc/l0Z35rE4PlnllNnz6rdMmQs8Q3HEQr4m1NN9W/8wJNUB9n7F8EJgc8UKK\nqn5cC6y/9Sq2pzQdq0eBxjgStmPbxNgo7SytEm7vn4zx+/5kaoWyxVkpZ5/N\nJp+lJYAw03VOb6o2T9qPKIcI+dqauFz3n8tep8YvoqP7ZIu5IwGnRGI3X/dz\n5HRH7gBA1jGeQH+GA1UZNhV+L1IoZ+weikBptW8izMmtBse6so54WYnHYL5I\nuV2AdjmMEZdnDQvS1LILhshx6h1jerj5/VDgGj1+1AM9LTMzK+9+0Sj8bGdl\nE/HBgq0eB+P/StHmUleQxVz9WzGUgxHG9eligfMf81ifFWGuqpr+CWsZ3L3q\nMe3Uoy8X91Rd5MjskdyYprIZR3sCBU56g3nOgFUCQTX2csDKvoXBHlp9DQMv\n0T53\r\n=TTVG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw23wxBbBNF0mU+mt4+DVqSX9AYI+4aOArUPlzxZCqtgIhAJ9gBbkP2qRLNMUdj78HsR3trFSBkx91hKQ7bHHCxo1g"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_7.5.0_1586438293672_0.36128561559221195"},"_hasShrinkwrap":false,"deprecated":"Incorrect release. Please use >=8.0.0"},"8.0.0":{"name":"@terminus/ngx-tools","version":"8.0.0","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@8.0.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ss4adh3jsx7Vv0JU0X01tuvVzoFbUsdom16Wfm+vRMW2X6R2/HF91jzOGUzbDd0FcIQYZDxxgxUBBBHsC6cqKA==","shasum":"3487c4136ef6400bfbb2b481beedfa9fb7c2d690","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.0.tgz","fileCount":529,"unpackedSize":2462282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejye4CRA9TVsSAnZWagAAZn0P/2lYAoS/DX/xpLCN6xGy\nm8ibB17fOUNvjn1cMDie8g7bmTQrxNucLaU6ebD5A+d1sAz4Gc60+N8WYg3b\nPL4HBLE17Wop7hyzZ4bs36OZvulxIe5lj31qdGSaQUrOE1k41Aydm42f4k1J\n7Eiuv4tVLpt6OodhCZ6QFA0oUam8lMoVDacPFJJzAg8MXiolQojUNUp6FRFR\npUuajyfj4L1QyLqy/dWk5y8ph+yzqNdlF2BzmJExdWoAllBNR0ShWH9Czm+X\nTfqqK8r1x/eE2g9FohVUD4CxNXszldniHhtG2UxmA0JN0Sbdwn7dE8uxb8Mt\nJ7pwxceiP6TN1s/iA9lOg+aEGB9MVuoIhMHMLPu93Jl9PJNnmicLun7gGkIl\n+ywO50PgFQ+fYF5AEikb7iGm+VobxCLHTCuqllt9ohoG6gAIS+giNNHryzJd\ngsA5Q6B+7hGndsayaYETW5Tumq1d9F30CmdL7J70gqmik6FZnRgzJpz86lhi\nU+DwJF2lQQy+dPICxKBi71tKbZs70N8nKnL1B3LTbmE1bpPD+3ataOgo7tKg\nQE4FEKoKpigUfvQ7NwTGZ/fW12+1ZLcVuTzYk2azUe2ola21J4+9WpnFVY87\nnpWH+iQ/DWMWKmb/ne2rLIwFpxmjKQEUYn0ZT0eYsxq4MgGh50xSyVRdGhTc\ndRnU\r\n=Fozj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6ZsX3S0ucCSFZ8/7QUscKVDLUpADrkhrUdlti850LFQIhALn4WPp+XElWK97lOiTBDmScuxIDWv/AGyUKN7YI3rYb"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.0_1586440120315_0.6364746309131284"},"_hasShrinkwrap":false},"8.0.1":{"name":"@terminus/ngx-tools","version":"8.0.1","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"description":"[![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 ","_id":"@terminus/ngx-tools@8.0.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dUPXk+z9naI8kXB5aDw9ee13o9RjCzK2bBQVvW9NLKm98x9c4vTkGH7r8gEa/gXxJqJIVB/liz+VvzK6AUdnlQ==","shasum":"14443bb3ccc5b1ee0bcd975a55ce71b0cdc14568","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.1.tgz","fileCount":529,"unpackedSize":2462282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejy3QCRA9TVsSAnZWagAArBAP/2lBcwIUMMXN/VexRg3a\nb6UMJHiQpVYXBJzELgv/5bw/FMcqEKIqIjZKfBozb/1uFDLib1jTgu8Dbp3m\noygcMMTtmIc8eXWuIGUzR4W7klqKIMUC1bD4+fDpbg5q7Mp5JUKGbU5q2lOS\n/bowTp8hWedRepsBboaJzGuIjMh5Ahu1hfWpGwUw3FGZ04XVEMWQU2SJhRNu\na4eFAzP13nFYSGaQOGDkKgwPaZ4VreWgTPPLoDCQrdVrN4mVJlzEuG4P7Yzm\n/Pf3JIeQiNN5SeVYjuoI6bGRQHWc7+NJrHrhmhhuWrdY+anmRJfyssSTAenH\ncsmVMmgwUbcH3qdR4fEbRJrX7Wx+i1iT07bYCet+6NF7Ss9HpznvWjkRYARZ\nfqW83zor1u6aAJIFiS19HXGMofxIp2ZNrmVT89XxKXV/zjIMXHDKsJmW2KzE\nT6SD2iBk2eUux2XxIcso/fm/USTW+DXxpLb4ZTBMSEOPqT1Ub8whpbJyT8ya\nFT2bjhzsy1GZmfFcC5iy9RlR9DlXwttKP+4lk68kcivXMhXFJfFq3sePX2qr\nC1kp+DYsPRATyYNUvfvnuXxEWoVENOge0wTX4NLbynG7u111y0X2MHCPu25b\n/WBTEkqf704ZcFynDvgLPY+viJHXkSEhuKNWilB9AQCJxk5YrPTVEEQ1rh2n\n8NJ+\r\n=OVsq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGcfs3XJSIdm7Ynguvz3M5FQw170wLV0NlZA2nIQmB6lAiA2LQ2meKEjkQSjs6s3mh1YXVsD0Hp7Slrgg3SjccPCVA=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"benjamincharity","email":"ben@benjamincharity.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.1_1586441680165_0.058710350672316336"},"_hasShrinkwrap":false},"8.0.2":{"name":"@terminus/ngx-tools","version":"8.0.2","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"description":"[![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 ","_id":"@terminus/ngx-tools@8.0.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-+7SW6+JrUjqyh7oqvUpWh/k1aM2hACjEh/I/5PnLqL1+WqQh+csloJ85ong0bngyn2jQv2GEcMcIILxlhfVSUQ==","shasum":"e72dc88b610a379ebad3e19209b164006c6df2d2","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.2.tgz","fileCount":529,"unpackedSize":2462282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekMyDCRA9TVsSAnZWagAAewYP/j/8X2ZNhNEbXiBnokwE\neBvZ1EDCTmjPJBsWGXhHj8egpxHY4fZRq/S/WKSwbgnvWnEjXh0ZP3yJDxef\nJ6EHl37IHZhzeoufSN+nusWzaot+XmAS6CbAEl4tqVjZZc0juYj9zBtPcJJ7\nGqXEhUjclyRL0mUMU7jDpRLRG4O6o8PLcmToJlA8Qf9WS9Q1CslgL20CT28/\nHEJe7mwV49JUaNeRBxUc3UKjkSWM/d5SbEcvil6g6YfQ7t1sJ4QOBrXg9uma\nJQnd1qImNXr2wX8F2M+s9WLNK/LmkMQ5kVcbW/TaRLYxLWR7P7VR9W1u41cL\nsmpxn3MgEXysqzzWdY9nLVrJgWoOcPJ8thCHsL3B83jT/CLdQ0ZkUrby20E3\nxKqIS8MggP4szFbZoMTOUTmlRzCUOXtmJ1Y/CIoDPNxaeoqV7g+KIsemH5cf\n8QCY3ZasZpBpRCFQXImWutMiCXaqNfSba0VPFU5aO22nnESRCAARtkSosHFe\nU9+7bUA17V8Qkha/r9/2MevDIuSdkrr69Jj84OW6Q7RaMkMBKmruaqjj/ClX\n2YrJ4Z8+k9BYyl5Cq+ZAJSSJ5QjIqLnpvSgBd+e5v7UDlgCK/7CHRmQvwEtL\nP6XiehQr4TI4O0fTXOh4Sk73sjVLSjKuSvvqDrEgQ+15CCYbRU4cqkq3R3SH\nyGE6\r\n=t2EV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5XM1HoPYXNsaBoezJYCgOmv/T8WviWdExnl9YRxeEkAIgfKmE45Y76ds/VABMyGWPrXEtDXghYW1vMrDmckh8cBE="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"terminus_devops","email":"devops@terminus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.2_1586547843247_0.10330139659256088"},"_hasShrinkwrap":false},"8.0.3":{"name":"@terminus/ngx-tools","version":"8.0.3","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@8.0.3","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-iXnIukn/Tsm0GwwBdH0vgTQd/bG1F6dd3J1vw81ZvO8en3mWGpIdSsX5qG1vzPHPwIokTmOiPcD8qk8QQffKfA==","shasum":"75bd88a597303e8f50b83d512e48612991565580","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.3.tgz","fileCount":529,"unpackedSize":2462282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqB2/CRA9TVsSAnZWagAAfmgP/0usKXSQvMh+yaEKCcMg\nX01I7oulGCoqf2QZIq7Mb+OsahWfX0J1p1PTM0X8dvO0YZZ7BKADnCKHU0Mc\nEt9yRZRcvCF4/2BPqEH+OgyUu0frz14++1ti2tkLbM6FGTrp4g5GOghGvxJ7\n770auVdmHgmDrUCaeN/wcqlHIc07iCWgEioTUAx6cQz3z9eInzsS1qxaHAyY\nBPqyGRODRpL239qX0iYvMiIdPdaj5CldfrcWv22+u/uDnlwacIc54bAvsfz+\nBZFhG4yki+szjghN1P3dTsNyAVKwuFaDb27EzoiECBxC5TkecP2iq0N/6EgC\nxPvl5zCDbj1iyv+/YREpZTNzj1YoFOTzzRMd83U37EIv6sukRGwnp7WxiOoh\nJhUJyeQsNqsg3P//16mrjhyXqttZL0KlroiyFUayz62fPUpnNz4jsk8c6RIL\nHpo01KoBz6bCLDoIR9fzB1ZzWH4WtMzlgGUmZYeRxriYeRv/xHQCy3EvT6GO\nzSkL+epxHtwEcB4I8Kq/b+Mp3z1oS1L06WnsEk2O8R3aBMxjYLY48vH03Slk\nUkW4zhkQ50PLMYdNXtT3oA6xfR5jHjI9GirH9dFs8Meqvk8Bkslfigij4ZuX\n9z6NrssWwQyCMHcBrxoWF2gnmdPWEJXPL26GqzbAR9FCTjG/fDoh1WkXhfDG\nIFKN\r\n=w2mB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8i6HNpIQdR/7dbMEHoBihTP83aFSdbg661L0VvFt5dAIgfM51kuRA+IBNokYu3RdfCWzaInbMPm4MOFx6oaTbBs8="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"terminus_devops","email":"devops@terminus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.3_1588075966515_0.3615596045210234"},"_hasShrinkwrap":false},"8.0.4":{"name":"@terminus/ngx-tools","version":"8.0.4","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@8.0.4","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-SF4vg18Z5X5SgUhoQVWm9J9ljxXMIEiplK8vGtV9/M5m9F9JGhqtq1IV0YaDn9eBUr0AgK/9lYoEIyBmnD3Weg==","shasum":"6a2be806512eacaea5ff7d6f1e659c0af8f2e20b","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.4.tgz","fileCount":529,"unpackedSize":2462252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqIQ2CRA9TVsSAnZWagAAQx0QAJ395zT41CGlIKUtGtyn\nW/DJMQugpuUobY7lHeL/TpsvGzMUYi8UFRL+wrIBZsXmiRHy5uYkKnOqiXF2\n5LG4tRPPUmdnWUSUiFFa/1wge0+8FOFwKwOuWzTuuNr5W3UzOLFc7hj67s5P\n6HwAU8Jv7Dou4Chey3zK2Ie27EAmOMOyrTOp3+Bl0elwEvNKFrxK5fIprokD\nBCyE7XTuG+HOQ5tAGs5305tkxAPtWh2OFdXMphTIQ1gFIMYvZNPwFErAy+4h\nsmEap5ZeB8KlFj3SWXn+i7akv2tmRPig5qbypfppuDmZrtXquA/ZSpmGOi9H\n2uFg5u7SANzwqOxwiKzHf+2KVU7WDNsBST7njbZ+jh8pPTxDwNbBXcAwrtht\nfb24BMP0m2WT7RdnpNIvcyzr1E9VhxZPSB/ui3luE+EtoxavyW8lGa9BSBJm\n0wtBS59IEnzg4aB2yCBnsLXUwO0oN+vbBMV8F7u4psaaPgAxzB41peRXpHfv\ntRzX4l2n2eHWR/wFIXDKOs8TTkRnf70iScEJHw9pZLfsle2y3W7Fq2qCCrmb\n0LlLbqKV2JpjnH2bG8JutLEOlUNocGxzJ1ewq47TUsK2Mt/9kEq08jXl+hvI\ndVnLmnTx0wLQWjhWaYWcAAGnzZf5Ocx0N7A2XJX3/4te4S1C0CiKstHJxQRN\n1od7\r\n=ZyGH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEcMrRNbkmZx6jdmnTECobYCADuoFR6EO2ow1gWuus3AIgMoBG+CJLgfUyEeh/34Q+mAb4IWZqIas8RHQsRV23wRI="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"terminus_devops","email":"devops@terminus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.4_1588102198374_0.529904285337965"},"_hasShrinkwrap":false},"8.0.5":{"name":"@terminus/ngx-tools","version":"8.0.5","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"description":"[![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 ","_id":"@terminus/ngx-tools@8.0.5","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-cidf3d+yA5HVpf2XETih1ALrokSecFBHtYZwU8g3pE12bvaN9TgEmgE3t+qRQ1v+4c+CrSq7z3/X123AhEUwdA==","shasum":"89440101ad99c155beecacc02412c4a454c3f600","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.5.tgz","fileCount":529,"unpackedSize":2462168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeubC5CRA9TVsSAnZWagAAvGEP/1ZSiOiWwtQlzL+m7YHG\nraR10Gx5EvwiIkv3sNExQfCs3h05M9L0PeursJytuoQIZpG2sMCpIYly3DU8\nmUvjZILpXdwpBEnUh89LaazdZ4ayr2WJTHUlK9H5evg5DZEG5hH6bCR4scHI\nD0c5NORUpQxwQ69GfFP7qg1GV01h3ankvr8ifq/qjFY55yAbKn7GyqKA3ZzO\ngaFEiWGzi5PqIw8Z9rsxzmBJlgFHNZVY8/eOoyjF+MJqmAETiOx1/heFyepb\n/v/ZPXO0mLAdCwy3Js+lDPSswshXZlSS30pfX1XWaKUa3MWsjp5seYgPv+b7\nBm6+y6uXRE6R9NteuMrqolj0SQNRcRW1owxjy7g5OPja73QqzsYjgg+awNbf\nPMgMpknYzCSTn9k2YJLN3F/nHJBQCSs66luqPYhEHQ8DMooaUQpmUSzKwlu9\nhLxyycOV77mnfgnYZx2FaPn5pW2QLlCZ54epKspeQoPDXUiFb3QhINaSKsd/\nMbRBbmpvL3gVyzUEQLfgAtlcO4fuB4/qOHmVxa8Si2at+8I/AZXlX+niGMji\nGfEMLiloqtmRE/57AwzL4SPf/SSbaeaFGzetmcVfQsvrw/YSQxBaT/6qlkpt\neiOkZaM4fU9J4npLAl8FM92ahoMfUToaGk0G7WshcXpl1MjpDWcZXFChdIV+\n+Khi\r\n=A0Eq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAv0pneAUQ5RZ0H0JvkTdKWC7aXWh+vua6l9ni9q2qXEAiBxRVNbWyLOfLyj6w4jhlvuC4QAnsM4Pp2BwN44oh8xcw=="}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"terminus_devops","email":"devops@terminus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.5_1589227704934_0.33502148343811866"},"_hasShrinkwrap":false},"8.0.6":{"name":"@terminus/ngx-tools","version":"8.0.6","license":"MIT","author":{"name":"@terminus"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"publishConfig":{"tag":"next"},"release":{"branch":"release","verifyConditions":["condition-circle","@semantic-release/npm","@semantic-release/github"],"getLastRelease":"@semantic-release/npm","publish":[{"path":"@semantic-release/exec","cmd":"./tools/inject-version.sh ${nextRelease.version}"},{"path":"@semantic-release/npm","npmPublish":true,"pkgRoot":"dist/ngx-tools"},{"path":"@semantic-release/github","npmPublish":false}]},"engines":{"node":">= 12.0.0","npm":">= 5.0.0","yarn":">= 1.0.0"},"peerDependencies":{"@angular/core":"^9.0.0","@angular/common":"^9.0.0","@angular/forms":"^9.0.0","@angular/platform-browser":"^9.0.0","@ngrx/store":"^9.0.0","@ngrx/effects":"^9.0.0","rxjs":"^6.5.0","typescript":">= 3.8.3","tslib":"^1.10.0"},"main":"bundles/terminus-ngx-tools.umd.js","module":"fesm5/terminus-ngx-tools.js","es2015":"fesm2015/terminus-ngx-tools.js","esm5":"esm5/terminus-ngx-tools.js","esm2015":"esm2015/terminus-ngx-tools.js","fesm5":"fesm5/terminus-ngx-tools.js","fesm2015":"fesm2015/terminus-ngx-tools.js","typings":"terminus-ngx-tools.d.ts","metadata":"terminus-ngx-tools.metadata.json","sideEffects":false,"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","readmeFilename":"README.md","description":"[![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 ","_id":"@terminus/ngx-tools@8.0.6","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-q37GMgHpam34TVsRFqwN0RDEtVdh2gf4Di1ZWXaBlZS7+iTw1c8BZCUZxsfpqbjTXPaL3D3EpiDKX1yxCt/dGw==","shasum":"36977e9083b26c34ac86422a94ff1f9958effb3c","tarball":"https://registry.npmjs.org/@terminus/ngx-tools/-/ngx-tools-8.0.6.tgz","fileCount":529,"unpackedSize":2462168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuq+oCRA9TVsSAnZWagAA2AoP/iZ1dpvwCpANLE7E444z\nGTYYEfAwoIVhWk9j8IapRb+Snz1aY2L6w57eZ08QS2Ls56N3204g2b1nQbI7\nLbzemfvAAiQ3v+ci9aw4oQg4EMTjqMsmheq+9sCcpbbz5Z+Xzrs0UW//k3ly\nEfyRAr1Ov1t4l1TwUUAFsrUrwWWzeiXK2bFwwF3/qiCqyLU6dsFDWwBLDB3f\naf+qjhDdtG0dE39dCayvqL/T2a+qE3fyoU3m5BCf2f7nXzTEJkqJEjDHFgkS\n6gMw5q7LoH0PTcWkw3LpA2ExXbZ4tEuxPZhc7jL7FxxrFr+hJiXqAidlgGuy\nDAuV3ZwVSRmWsoxf/rfBLnvEPCQRN4ZbXripH+z4hI1iwXhg6G1Klnn2QC4d\nTWTdO7vwJbD/Id/oXFBTcNAf+X2NtmwOCdzpU0iPz6ex4ANyk2rGy3KtN+zG\nqU+846N+ipoPN3R+Ek5ElpbnwPwWjt/3G6va2sw7UaTcyBhBh9C8MAFfpXNv\nPIDyTwGW9jVpcJDbNYNq1JXG3L44neXIcyHZRGnGIqaNtvZW5ILJT2fyVR7n\ncGD6qfHJISy50kKbL1+De3vzlNS5WHDRcS7RCkd3Ro/egtJLUGQDfzbc0Iex\nRcyKwwfS84vUmA/EciPYm5aj634q7t3iVVDk5JxezSvZrKDxum7Jktd+7grJ\nm+kf\r\n=fa3n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCp7kzxgTOZhJGinEmoFFb3pviXhIb6CfiD3i6sGiQ+dQIhAOGlWln8GUJCzq80GUJKdoEn+kWrsf5l3u7WWfq/l2yT"}]},"maintainers":[{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"ben@benjamincharity.com","name":"benjamincharity"},{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"devops@terminus.com","name":"terminus_devops"}],"_npmUser":{"name":"terminus_devops","email":"devops@terminus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-tools_8.0.6_1589292968215_0.5876086070247835"},"_hasShrinkwrap":false}},"readme":"# @terminus/ngx-tools\n\n[![CircleCI][circle-badge]][circle-link]\n[![codecov][codecov-badge]][codecov-project]\n[![semantic-release][semantic-release-badge]][semantic-release]\n[![MIT License][license-image]][license-url]\n<br>\n[![NPM version][npm-version-image]][npm-url]\n[![Github release][gh-release-badge]][gh-releases]\n\nA collection of tools and utilities for Terminus applications.\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents**\n\n- [Installation](#installation)\n- [Library Structure](#library-structure)\n- [Features](#features)\n  - [Browser Utilities](#browser-utilities)\n  - [Coercion](#coercion)\n  - [JWT Token Managment](#jwt-token-managment)\n  - [Key Codes](#key-codes)\n  - [Regex](#regex)\n  - [Testing Utilities](#testing-utilities)\n  - [Type Guards](#type-guards)\n  - [General Utilities](#general-utilities)\n- [Contributing](#contributing)\n- [Contributors](#contributors)\n- [Basic Commands](#basic-commands)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n## Installation\n\nInstall the library and required dependencies:\n\n```bash\n# Primary dependencies:\n$ yarn add @terminus/ngx-tools\n\n# Peer dependencies that need to be installed (you will likely already have some of these installed):\n$ yarn add @angular/{core,common,forms,platform-browser} @ngrx/{effects,store} rxjs typescript@~3.4.5\n```\n\nThen import your item from the associated endpoint: `import { debounce } from '@terminus/ngx-tools/utilities';`\n\n> You can play with the library live on StackBlitz:\n> https://stackblitz.com/github/GetTerminus/ngx-tools\n\n\n## Library Structure\n\n| Import location                   | Description                                                   | Docs                        | Size                                             |\n|:----------------------------------|:--------------------------------------------------------------|:---------------------------:|:------------------------------------------------:|\n| `@terminus/ngx-tools/browser`     | Helpers to deal directly with browsers  (`TsCookieService`..) | [:books:][docs-browser]     | [![File size][fs-badge-browser]][js-bundles]     |\n| `@terminus/ngx-tools/coercion`    | Functions to coerce values to specific types  (`Array`..)     | [:books:][docs-coercion]    | [![File size][fs-badge-coercion]][js-bundles]    |\n| `@terminus/ngx-tools/jwt`         | Utilities for dealing with JWT tokens (`TokenEscalator`..)    | [:books:][docs-jwt]         | [![File size][fs-badge-jwt]][js-bundles]         |\n| `@terminus/ngx-tools/keycodes`    | Constants for commonly needed key codes (`ESC`..)             | [:books:][docs-keycodes]    | [![File size][fs-badge-keycodes]][js-bundles]    |\n| `@terminus/ngx-tools/regex`       | Regex definitions (`creditCardRegex`..)                       | [:books:][docs-regex]       | [![File size][fs-badge-regex]][js-bundles]       |\n| `@terminus/ngx-tools/testing`     | Test helpers and test mocks (`dispatchFakeEvent`..)           | [:books:][docs-testing]     | [![File size][fs-badge-testing]][js-bundles]     |\n| `@terminus/ngx-tools/type-guards` | TypeScript type guards (`isSet`, `isArray`..)                 | [:books:][docs-type-guards] | [![File size][fs-badge-type-guards]][js-bundles] |\n| `@terminus/ngx-tools/utilities`   | Basic utilities (`debounce`, `groupBy`..)                     | [:books:][docs-utilities]   | [![File size][fs-badge-utilities]][js-bundles]   |\n\n\n## Features\n\n\n### Browser Utilities\n\nImport from: `@terminus/ngx-tools/browser`\n\n[:books: Browser Documentation][docs-browser]\n\n```typescript\n// Example usage:\nimport { TsCookieService } from '@terminus/ngx-tools/browser';\n\n...\n\nthis.cookieService.set('myName', 'myValue'); // Sets a cookie\n```\n\n\n### Coercion\n\nImport from: `@terminus/ngx-tools/coercion`\n\n[:books: Coercion Documentation][docs-coercion]\n\n```typescript\n// Example usage:\nimport { coerceBooleanProperty } from '@terminus/ngx-tools/coercion';\n\ncoerceBooleanProperty('true'); // Returns: true\n```\n\n\n### JWT Token Managment\n\nStore, escalate, renew and use a named set of JWT tokens with ease!\n\n[:books: JWT Documentation][docs-jwt]\n\n\n### Key Codes\n\nImport from: `@terminus/ngx-tools/keycodes`\n\n[:books: Key Codes Documentation][docs-keycodes]\n\n```typescript\n// Example usage:\nimport { KEYS } from '@terminus/ngx-tools/keycodes';\nimport { dispatchKeyboardEvent } from '@terminus/ngx-tools/testing';\n\nKEYS.ENTER.code    // 'Enter'\nKEYS.ENTER.keyCode // 13\n\n// Example usage:\ndispatchKeyboardEvent(myElementRef, KEYS.ENTER.keycode);\n```\n\n\n### Regex\n\nImport from: `@terminus/ngx-tools/regex`\n\n[:books: RegEx Documentation][docs-regex]\n\n```typescript\n// Example usage:\nimport { emailRegex } from '@terminus/ngx-tools/regex';\n\nemailRegex.test('foo@bar.com'); // Returns: true\n```\n\n\n### Testing Utilities\n\nImport from: `@terminus/ngx-tools/testing`\n\n[:books: Testing Documentation][docs-testing]\n\n```typescript\n// Example usage:\nimport { dispatchFakeEvent } from '@terminus/ngx-tools/testing';\n\ndispatchFakeEvent(window, 'resize');\n```\n\n\n### Type Guards\n\nImport from: `@terminus/ngx-tools/type-guards`\n\n[:books: Type Guards Documentation][docs-type-guards]\n\n```typescript\n// Example usage:\nimport { arrayHasAllElementsSet } from '@terminus/ngx-tools/type-guards';\n\narrayHasAllElementsSet<string>(['foo', 'bar']) // Returns: true\narrayHasAllElementsSet<number>([1, 'bar'])     // Returns: false\n```\n\n\n### General Utilities\n\nImport from: `@terminus/ngx-tools/utilities`\n\n[:books: Utilities Documentation][docs-utilities]\n\n```typescript\n// Example usage:\nimport { groupBy } from '@terminus/ngx-tools/utilites';\n\ngroupBy<MyObj, keyof MyObj>(myArray, 'a');\n```\n\n\n## Contributing\n\nSee the development workflow for the `@terminus/ui` library: [Terminus Library Contribution Docs][contributing]\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key][all-contributors-key]):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore -->\n| [<img src=\"https://avatars3.githubusercontent.com/u/270193?v=4\" width=\"100px;\" alt=\"Benjamin Charity\"/><br /><sub><b>Benjamin Charity</b></sub>](http://benjamincharity.com)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Code\") [🔧](#tool-benjamincharity \"Tools\") [🤔](#ideas-benjamincharity \"Ideas, Planning, & Feedback\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Documentation\") [💬](#question-benjamincharity \"Answering Questions\") [🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Abenjamincharity \"Bug reports\") [💡](#example-benjamincharity \"Examples\") [🚇](#infra-benjamincharity \"Infrastructure (Hosting, Build-Tools, etc)\") [🚧](#maintenance-benjamincharity \"Maintenance\") [👀](#review-benjamincharity \"Reviewed Pull Requests\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=benjamincharity \"Tests\") | [<img src=\"https://avatars0.githubusercontent.com/u/19909708?v=4\" width=\"100px;\" alt=\"Brian Malinconico\"/><br /><sub><b>Brian Malinconico</b></sub>](https://github.com/bmalinconico)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=bmalinconico \"Code\") [🤔](#ideas-bmalinconico \"Ideas, Planning, & Feedback\") | [<img src=\"https://avatars0.githubusercontent.com/u/377552?v=4\" width=\"100px;\" alt=\"Wendy\"/><br /><sub><b>Wendy</b></sub>](https://github.com/atlwendy)<br />[💻](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Documentation\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=atlwendy \"Tests\") [🚧](#maintenance-atlwendy \"Maintenance\") [👀](#review-atlwendy \"Reviewed Pull Requests\") | [<img src=\"https://avatars3.githubusercontent.com/u/44702601?v=4\" width=\"100px;\" alt=\"shani-terminus\"/><br /><sub><b>shani-terminus</b></sub>](https://github.com/shani-terminus)<br />[🐛](https://github.com/GetTerminus/ngx-tools/issues?q=author%3Ashani-terminus \"Bug reports\") [💻](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Code\") [📖](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Documentation\") [🚧](#maintenance-shani-terminus \"Maintenance\") [⚠️](https://github.com/GetTerminus/ngx-tools/commits?author=shani-terminus \"Tests\") [👀](#review-shani-terminus \"Reviewed Pull Requests\") |\n| :---: | :---: | :---: | :---: |\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n\n## Basic Commands\n\n| Command         | Function                                         |\n|-----------------|--------------------------------------------------|\n| `build`         | Build release                                    |\n| `test`          | Run unit tests                                   |\n| `test:ci:local` | Run all unit tests and output coverage           |\n| `start:app`     | Start demo project                               |\n| `lint`          | Lint all library files and attempt to fix issues |\n| `lint:ci`       | Lint all library files                           |\n| `docs:toc`      | Update the Table of Contents in all files        |\n| `cm`            | Commit with commitizen cli                       |\n\n> See [package.json][package-json] for the full list of available commands.\n\n\n\n\n<!-- LINKS -->\n[circle-badge]:           https://circleci.com/gh/GetTerminus/ngx-tools/tree/release.svg?style=shield\n[circle-link]:            https://circleci.com/gh/GetTerminus/ngx-tools/tree/release\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[npm-url]:                https://npmjs.org/package/@terminus/ngx-tools\n[npm-version-image]:      http://img.shields.io/npm/v/@terminus/ngx-tools.svg\n[license-image]:          http://img.shields.io/badge/license-MIT-blue.svg\n[license-url]:            https://github.com/GetTerminus/ngx-tools/blob/release/LICENSE\n[semantic-release]:       https://github.com/semantic-release/semantic-release\n[contributing]:           https://github.com/GetTerminus/terminus-ui/blob/release/CONTRIBUTING.md\n[package-json]:           ./package.json\n[gh-release-badge]:       https://img.shields.io/github/release/GetTerminus/ngx-tools.svg\n[gh-releases]:            https://github.com/GetTerminus/ngx-tools/releases/\n[codecov-badge]:          https://codecov.io/gh/GetTerminus/ngx-tools/branch/release/graph/badge.svg\n[codecov-project]:        https://codecov.io/gh/GetTerminus/ngx-tools\n[all-contributors-key]:   https://github.com/kentcdodds/all-contributors#emoji-key\n\n<!-- FILE SIZE -->\n[fs-badge-browser]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-browser.umd.min.js?compression=gzip\n[fs-badge-coercion]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-coercion.umd.min.js?compression=gzip\n[fs-badge-jwt]:         http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-jwt.umd.min.js?compression=gzip\n[fs-badge-keycodes]:    http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-keycodes.umd.min.js?compression=gzip\n[fs-badge-regex]:       http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-regex.umd.min.js?compression=gzip\n[fs-badge-testing]:     http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-testing.umd.min.js?compression=gzip\n[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\n[fs-badge-utilities]:   http://img.badgesize.io/https://unpkg.com/@terminus/ngx-tools/bundles/terminus-ngx-tools-utilities.umd.min.js?compression=gzip\n[js-bundles]:           https://unpkg.com/@terminus/ngx-tools/bundles/\n\n<!-- Docs -->\n[docs-browser]:     ngx-tools/browser/README.md\n[docs-coercion]:    ngx-tools/coercion/README.md\n[docs-jwt]:         ngx-tools/jwt/README.md\n[docs-keycodes]:    ngx-tools/keycodes/README.md\n[docs-regex]:       ngx-tools/regex/README.md\n[docs-testing]:     ngx-tools/testing/README.md\n[docs-type-guards]: ngx-tools/type-guards/README.md\n[docs-utilities]:   ngx-tools/utilities/README.md\n","maintainers":[{"email":"brian.malinconico@terminus.com","name":"bmalinconico-terminus"},{"email":"atlwendy@gmail.com","name":"atlwendy"},{"email":"devops@terminus.com","name":"terminus_devops"}],"time":{"modified":"2022-04-07T05:15:55.749Z","created":"2018-02-05T19:13:11.310Z","0.0.1":"2018-02-05T19:13:11.310Z","0.0.2":"2018-02-05T19:25:26.514Z","0.0.3":"2018-02-06T20:26:08.705Z","0.0.4":"2018-02-07T14:03:42.702Z","0.0.5":"2018-02-07T18:46:44.726Z","0.0.6":"2018-02-07T19:21:07.912Z","0.0.7":"2018-02-07T19:59:51.629Z","0.0.8":"2018-02-08T01:49:32.988Z","0.0.9":"2018-02-08T01:51:39.735Z","0.0.10":"2018-02-08T02:38:00.189Z","0.0.11":"2018-02-08T03:09:33.136Z","0.0.12":"2018-02-08T03:50:49.891Z","0.1.0":"2018-02-08T14:05:46.341Z","1.0.0":"2018-02-08T14:51:00.487Z","1.1.0":"2018-02-12T14:47:17.986Z","1.2.0":"2018-02-15T15:08:48.996Z","1.2.1":"2018-02-19T14:03:11.180Z","1.2.2":"2018-02-19T14:17:33.639Z","1.3.0":"2018-02-19T22:30:38.456Z","1.4.0":"2018-02-21T14:54:33.690Z","1.4.0-beta.1":"2018-02-22T12:57:48.105Z","1.5.0":"2018-02-22T13:12:05.725Z","1.6.0":"2018-03-01T18:58:35.118Z","1.6.0-beta.1":"2018-03-01T23:44:23.395Z","1.6.1":"2018-03-02T01:32:01.998Z","1.6.2":"2018-03-02T14:03:03.354Z","1.6.2-alpha.1":"2018-03-09T19:03:58.823Z","1.6.3":"2018-03-09T19:24:47.624Z","1.6.4":"2018-03-09T19:39:46.413Z","1.6.4-beta.1":"2018-03-12T14:02:47.762Z","1.6.4-beta.2":"2018-03-13T00:23:54.513Z","2.0.0":"2018-03-13T01:44:25.895Z","2.1.0":"2018-03-13T03:19:55.789Z","2.2.0":"2018-03-13T13:40:14.379Z","2.3.0":"2018-03-13T15:33:33.356Z","2.3.1":"2018-03-15T23:18:11.288Z","2.3.2":"2018-03-15T23:57:21.317Z","2.3.2-beta.1":"2018-03-20T14:07:39.555Z","2.3.3":"2018-03-20T15:27:42.065Z","2.4.0":"2018-03-27T19:55:37.269Z","2.4.1":"2018-03-27T20:05:22.207Z","2.5.0":"2018-03-29T14:18:15.459Z","2.6.0":"2018-03-29T16:31:52.568Z","2.7.0":"2018-03-29T17:41:15.449Z","2.8.0":"2018-03-29T19:20:49.987Z","2.9.0":"2018-03-30T19:56:14.638Z","2.9.0-beta.1":"2018-04-02T14:07:54.014Z","2.10.0":"2018-04-02T15:33:31.178Z","2.11.0":"2018-04-04T13:17:57.660Z","2.12.0":"2018-04-04T20:06:45.059Z","2.12.1":"2018-04-04T20:30:56.421Z","2.12.2":"2018-04-04T21:08:49.648Z","2.12.2-beta.1":"2018-04-05T17:50:50.835Z","2.13.0":"2018-04-05T19:30:19.177Z","2.14.0":"2018-04-12T14:44:53.670Z","2.15.0":"2018-04-23T15:40:20.728Z","2.15.1":"2018-05-07T16:28:59.113Z","2.15.2":"2018-05-08T12:30:49.424Z","2.15.3":"2018-05-10T12:29:28.029Z","2.15.4":"2018-05-10T12:43:47.665Z","2.16.0":"2018-05-14T14:11:43.053Z","2.16.1":"2018-05-14T16:40:58.914Z","2.17.0":"2018-05-14T17:34:27.027Z","2.18.0":"2018-05-14T19:41:11.759Z","2.18.0-beta.1":"2018-05-17T18:27:34.791Z","2.18.1":"2018-05-18T18:33:57.174Z","2.18.2":"2018-05-24T18:52:09.223Z","2.19.0":"2018-05-29T17:11:43.710Z","2.20.0":"2018-05-31T19:31:54.771Z","2.21.0":"2018-06-11T11:54:24.438Z","2.21.1":"2018-06-12T14:02:50.966Z","2.21.2":"2018-06-14T21:12:02.048Z","2.22.0":"2018-06-25T19:28:00.292Z","2.23.0":"2018-06-27T22:25:36.362Z","2.24.0":"2018-07-20T15:47:20.562Z","2.24.1":"2018-07-23T18:18:35.166Z","2.25.0":"2018-08-08T15:01:27.822Z","2.25.1":"2018-08-15T14:38:10.782Z","2.25.2":"2018-08-21T16:51:26.940Z","2.25.3":"2018-08-24T15:10:45.884Z","2.26.0":"2018-09-11T16:48:22.531Z","3.0.0":"2018-09-12T19:53:06.115Z","3.1.0":"2018-12-18T13:35:00.776Z","4.0.0":"2019-01-16T17:12:26.997Z","5.0.0":"2019-01-16T17:26:23.667Z","5.0.3":"2019-02-05T14:52:17.320Z","5.1.0":"2019-02-14T19:31:13.541Z","5.2.0":"2019-02-15T19:46:20.519Z","6.0.0":"2019-02-19T13:14:19.694Z","6.1.0":"2019-02-21T13:15:59.024Z","0.0.0-PLACEHOLDER":"2019-03-11T17:51:49.778Z","6.1.0-beta-1.0":"2019-03-11T17:52:40.995Z","6.2.0":"2019-03-20T12:21:46.157Z","6.3.0":"2019-03-27T19:27:11.873Z","6.4.0":"2019-04-03T17:31:04.665Z","6.4.1":"2019-04-24T15:41:16.586Z","6.5.0":"2019-04-24T18:25:24.106Z","6.5.1":"2019-04-25T16:17:34.724Z","6.6.0":"2019-04-25T17:43:20.404Z","6.6.1":"2019-04-26T13:13:12.477Z","6.7.0":"2019-05-01T19:11:41.798Z","6.8.0":"2019-05-02T16:14:56.848Z","6.7.1":"2019-05-09T12:04:47.407Z","6.8.1":"2019-05-09T12:23:11.330Z","6.8.1-beta-0.1":"2019-05-09T16:09:17.315Z","6.9.0":"2019-05-13T17:05:00.693Z","6.10.0":"2019-05-24T12:32:26.766Z","6.11.0":"2019-05-28T15:47:31.279Z","7.0.0":"2019-06-13T17:50:24.497Z","7.0.1":"2019-06-18T14:08:54.114Z","7.0.1-beta.1":"2019-07-24T20:15:03.701Z","7.1.0":"2019-07-26T15:10:19.971Z","7.2.0":"2019-08-08T11:05:45.904Z","7.2.1":"2019-08-08T14:55:24.699Z","7.2.2":"2019-08-22T18:45:47.002Z","7.2.3":"2019-08-22T19:31:40.402Z","7.2.4":"2019-09-03T13:08:13.492Z","7.2.5":"2019-09-26T15:17:20.113Z","7.2.6":"2019-10-04T17:21:50.318Z","7.2.7":"2019-12-17T13:37:56.933Z","7.2.8":"2019-12-17T15:12:37.886Z","7.2.9":"2019-12-17T17:22:25.617Z","7.2.10":"2019-12-17T18:20:09.271Z","7.2.11":"2019-12-17T20:36:55.140Z","7.2.12":"2020-01-08T15:40:20.590Z","7.2.13":"2020-01-10T16:59:13.056Z","7.3.0":"2020-01-28T11:45:47.337Z","7.3.1":"2020-02-07T14:06:17.244Z","7.4.0":"2020-02-07T17:09:56.831Z","7.5.0":"2020-04-09T13:18:13.930Z","8.0.0":"2020-04-09T13:48:40.579Z","8.0.1":"2020-04-09T14:14:40.379Z","8.0.2":"2020-04-10T19:44:03.525Z","8.0.3":"2020-04-28T12:12:46.901Z","8.0.4":"2020-04-28T19:29:58.603Z","8.0.5":"2020-05-11T20:08:25.101Z","8.0.6":"2020-05-12T14:16:08.441Z"},"homepage":"https://github.com/GetTerminus/ngx-tools","repository":{"type":"git","url":"git+https://github.com/GetTerminus/ngx-tools.git"},"author":{"name":"@terminus"},"bugs":{"url":"https://github.com/GetTerminus/ngx-tools/issues"},"license":"MIT","readmeFilename":"README.md","description":"[![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 "}