UNPKG

mj-pkg

Version:

A Node.js library that abstracts away differences among popular marijuana POS providers.

69 lines (51 loc) 1.55 kB
'use strict'; var version = require('../package.json').version; var url = require('url'), request = require('request'), Promise = require('promise'); GLOBAL.MJ = function(options) {}; MJ.Errors = { 'InvalidDriver': require('./Errors/invalid-driver'), 'InvalidCredentials': require('./Errors/invalid-credentials'), 'MessedUp': require('./Errors/messed-up') }; MJ.getDriver = function(driver, options) { return new MJ.Drivers[driver](options).connect(); }; MJ.utils = { forEach: function(obj, fn, binding) { Object.keys(obj).forEach(function(key) { fn.call(this, obj[key], key); }, (binding || this)); }, map: function(obj, fn, binding) { var arr = []; Object.keys(obj).forEach(function(key) { arr.push(fn.call(this, obj[key], key)); }, (binding || this)); return arr; } }; MJ.Drivers = {}; MJ.Drivers.Add = function(name, driver) { MJ.Drivers[name] = driver; }; MJ.Drivers.Base = function() {}; MJ.Drivers.Create = function(obj) { if (!obj.run || !obj.connect || !obj.init) { throw new MJ.Errors.InvalidDriver(); } var fn = function() { if (obj.init && typeof obj.init == 'function') { obj.init.apply(this, arguments); } }; MJ.utils.forEach(obj, function(val, key) { fn.prototype[key] = val; }, fn); return fn; }; (['mj-freeway']).forEach(function(driver) { MJ.Drivers.Add(driver, require('./Drivers/' + driver)); }); module.exports = MJ;