arc-lib
A convenience wrapper around my ARC utilities
Install
$ npm install arc-lib --save
Wraps
Exports
{
is,
ArcArray,
ArcCheck,
ArcDate,
ArcEvents,
ArcObject,
ArcRegExp,
ArcRouter,
ArcHash,
ArcScheduler
}
Random Utilities
- arc-is: Is a simple type checker that honors inheritence, checks most native types properly, and has two modes to check between strict types vs soft types. To use simply:
is(val) === 'array'
- arc-check: Is a complex inclusion/exclusion check.
- arc-events: A relatively standard on/emit events model, with some additional features ie.
.once
, .catchAll
as well as a mixin to turn any object into an even emitter. - arc-router: Is a very thin functional router, for complex URL/Path mapping. It takes a map of urls or paths, and is able to take an evaluation string, and map it to a match while also pulling appropriate variables from the path.
- arc-hash: Provides a very simple but consistent approach to generating md5 and sha256 hashes for both scalar and non-scalar types in javascript (objects and arrays in particular).
- arc-scheduler: A scheduler and task manager for recurrent tasks. Supports both event based reaction (ie. NEW_HOUR / NEW_DAY / NEW_WEEK) as well as a fully managed task-scheduling suite (ie. Fire a job on the first Monday of every month at 8:00am)
Type Utilities
- arc-array: Is a native array wrapper with a number of convenience methods such as:
.shuffle
, .rand
, .pMap
(asynchronous mapping) - arc-object: Is a native object wrapper with convenience methods such as
.copy
(which performs a deep copy), .freeze
(make it immutable), and some array like functions. - arc-reg-exp: Is a native object wrapper around RegExp that exposes some convenience methods, such as
.matchAll
, .matchAndReplace
, .replaceCallback
- arc-date: Is a very thin Date formatting utility
Example Usage
const {is,ArcRouter,ArcEvents} = require('arc-lib');
const SomeViewController = {};
ArcEvents.mixin(SomeViewController);
SomeViewController.on('validPath',(_path,_id)=>{
console.log(_path,_id);
});
const SomeRouter = new ArcRouter({
'/some/**path[/]/#id':'validPath'
});
const routeData = SomeRouter.travel('/some/resource/path/75');
if(routeData.match){
SomeViewController.emit(routeData.match,[routeData.path,routeData.id]);
}