@naturescape/nslibs v0.0.23
NSLibs
Project that contains various packages
CacheManager
Class that manages the caches created in the servers, primarily in nsapi.
Usage
let cache = new CacheManager({
prune_interval: 60 // allows cache manager to prune caches at this interval, seconds
auto_start: true // when CacheManager is instantiated, will default to auto_prune
defaults // sets default opts of each child cache
});
cache.create({ ttl = 60 }) // creates a cache
cache.stats() // returns array of objects with {name, ttl, size} for each cache
cache.start() // prunes cache on cache_interval prune interval, default 60 seconds
cache.stop() // stops pruning cache
cache.pruneAll() // prunes all entries older than cache ttl
let myCache = cache.getCache(name)
new Cache ({
name // random numbers
ttl: 60 // default
clone // uses built in clone function, unless you pass in your own
})
myCache.name() // name of cache
myCache.ttl() // ttl of the cache
myCache.get(arg, fn) // gets a cloned value from the cache, using arg as a key. will perform function on arg if there is no value in cache, returns undefined if no function
myCache.set(arg, value) // sets a value in cache under arg key
myCache.del(arg) // deletes an entry from the cache
myCache.keys() // arrays of entries
myCache.size() // how many entries
myCache.reset() // deletes all entries
myCache.prune() // deletes any entry older than ttlLog
Class with all the basic logging functionality for most of Naturescape's projects
Usage
let log = new Log({
base_dir: undefined, // Hides base_dir from deprecated and stack trace outputs
log_dir: '/', // Directory to put logs in
console_lvl: 'error', // What log level to send to console
file_lvl: 'info', // What log level to send to file
});
// Name is what is deprecated
// Replacement is what it should be replaced with
// Will output code location as well
log.deprecated(name, replacement);
log.info('message');
log.error('message');
// ... etc
let l = log.getLogger('label') ;
l.info('message');
l.error('message');
// ... etcChat
Class that handles posting things to rocket.chat rooms (mainly used for code errors and standups)
Usage
Can send stuff to rocket chat directly or through the logger.
let log = new Log({ // posting stuff to Rocket Chat is done through the logging interface
// other various opts, see Log section above
chat: {
level: 'error',
host: 'https://chat.local.naturescapelawncare.com',
token: "INSERT_TOKEN"
channel: '#it-itbackground',
username: 'NSApi',
}
});
log.error('bad stuff happened') // will get sent to the rocket chat channel defined in the logger
let rocketchat new RocketChatClient({
host: 'https://chat.naturescapelawncare.com',
webhook: {
token: deps.config.rocketchat_webhook_token,
channel: '#it-itbackground',
username: 'ITBackground',
},
api: { // must be set for rocketchat.request
user_id: 'Ycczyer8ucwpmaBoM',
token: "INSERT_TOKEN"
}
});
await deps.rocketchat.send(`some text`, { channel: '#it' })NSApiClient
Class that handles requests and authentication with NSAPI
Usage
let nsapi = new NSApiClient('https://my.example.com/graphql', {api_key, session_id});
await nsapi.login('username', 'password');
nsapi.request({
query,
variables,
session_id, // optional
api_key, // optional
});FileLoader
Class that manages adding files into memory to track code dependencies
Usage
let loader = new FileLoader({
cwd: `${this.config.ROOT}/src`,
args: [this],
});
// opts: { preload (boolean), pattern {`**/*.${group_name}.js`}}
loader.getFiles() // returns array of objects containing group names, names, loaded (boolean), and filepaths
loader.get(group_name, name) //gets a single file from a group
loader.addValue(group_name, name, value) // adds file to already existing group
loader.addFiles(group_name, opts); // requires and adds all <name>.<group_name> files to be referenced like app.<group_name>('<name>')
loader.loadFiles(group_name, opts) // defaults preload to trueErrors
Class that extends the node built in Error Class and adds some formatting
Usage
throw new NSError({
code: 'SOMETHING_DESCRIPTIVE'
message: 'Something descriptive happened'
data
})3 years ago
2 years ago
2 years ago
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago