scalra
Version:
node.js framework to prototype and scale rapidly
177 lines (143 loc) • 6.09 kB
JavaScript
//
// global.js
//
// global definitions of common variables and helper functions
//
var NODE_version = '4.4.3 (LTS)';
//-----------------------------------------
// define global variables
//
//-----------------------------------------
var BASE_DIR = __dirname + '/./';
var CORE_DIR = BASE_DIR + './core/';
var EXT_DIR = BASE_DIR + './extension/';
var VAST_DIR = EXT_DIR + 'VAST/';
//
// define message formats
//
//
// define apps
//
global.SR = {};
SR.Tags = {
EVENT: 'E',
UPDATE: 'U',
PARA: 'P',
GREEN: '\033[32m',
RED: '\033[31m',
WHITE: '\033[m',
YELLOW: '\033[33m',
RES_ERROR: 'SR_ERROR' // update name for error responses
}
SR.Tags.ERR = SR.Tags.RED;
SR.Tags.ERREND = SR.Tags.WHITE;
SR.Tags.END = SR.Tags.WHITE;
SR.Tags.WARN = SR.Tags.YELLOW;
SR.Tags.RCV = SR.Tags.GREEN + '[RCV] ';
SR.Tags.SND = SR.Tags.GREEN + '[SND] ';
// wrappers to node.js modules
SR.net = require('net');
SR.sys = require('util');
SR.assert = require('assert');
SR.fs = require('fs-extra');
SR.path = require('path');
SR.http = require('http');
SR.https = require('https');
SR.mongo = require('mongodb'); // node_modules old version
// notes: authenticate method will no longer be available in the next major release 3.x
// Please authenticate using MongoClient.connect with auth credentials.
// SR.MongoClient = require('mongodb').MongoClient;
// SR.MongoServer = require('mongodb').MongoServer;
SR.async = require('async');
SR.promise = require('bluebird');
SR._kit = require(CORE_DIR + '_basekit');
SR._uuid = require(CORE_DIR + 'uuid');
// main settings
SR.Settings = require(BASE_DIR + 'settings').settings;
// basic tools
SR.Callback = require(CORE_DIR + 'callback');
// in-memory state access (may be needed by other classes)
SR.State = require(CORE_DIR + 'state');
// objects
//SR.Queue = require(CORE_DIR + 'queue').Queue;
SR.AdvQueue = require(CORE_DIR + 'queue').icQueue;
// the following relies on SR.AdvQueue
SR.Log = require(CORE_DIR + 'log_manager');
global.LOG = new SR.Log.logger();
global.UTIL = SR.Utility = require(CORE_DIR + 'utility');
// generic API interface
SR.Handler = require(CORE_DIR + 'handler');
SR.API = require(CORE_DIR + 'API');
SR.File = require(CORE_DIR + 'file').icFile;
SR.AppConn = require(CORE_DIR + 'app_conn');
// APIs
SR.AppConnector = require(CORE_DIR + 'app_connector');
SR.AppManager = require(CORE_DIR + 'app_manager');
SR.Component = require(CORE_DIR + 'component');
SR.Module = require(CORE_DIR + 'module');
SR.Comm = require(CORE_DIR + 'comm');
SR.Conn = require(CORE_DIR + 'conn');
SR.Console = require(CORE_DIR + 'console');
SR.Execute = require(CORE_DIR + 'execute');
SR.JobQueue = require(CORE_DIR + 'job_queue');
SR.Require = require(CORE_DIR + 'require');
SR.RPC = require(CORE_DIR + 'RPC');
SR.Script = require(CORE_DIR + 'script');
SR.Standalone = require(CORE_DIR + 'standalone.js');
SR.Storage = require(CORE_DIR + 'storage');
//SR.DHT = require(CORE_DIR + 'DHT');
SR.REST = require(CORE_DIR + 'REST/REST');
SR.REST.Handler = require(CORE_DIR + 'REST/handler');
SR.Event = require('events').EventEmitter;
// following needs SR.mongo to be defined
SR._storage = require(CORE_DIR + '_storage');
SR.Load = require(CORE_DIR + 'load');
SR.DB = require(CORE_DIR + 'DB');
SR.ORM = require(CORE_DIR + 'ORM');
SR.DS = require(CORE_DIR + 'datastore');
SR.Schedule = require(CORE_DIR + 'schedule'); // depend on SR.DB
// the following relies on SR.AdvQueue & SR.Handler to init
SR.EventManager = require(CORE_DIR + 'event_manager');
// following needs SR.Conn
SR.Socket = require(CORE_DIR + 'socket').icSocket;
SR.Listener = require(CORE_DIR + 'listener').icListener;
SR.Connector = require(CORE_DIR + 'connector').icConnector;
SR.Frontier = require(CORE_DIR + 'frontier').icFrontier;
// extensions
// objects
SR.MsgQueue = require(EXT_DIR + 'msgqueue').icMsgQueue;
SR.Stream = require(EXT_DIR + 'stream').icStream;
// API
SR.Location = require(EXT_DIR + 'location');
SR.SocketIO = require(EXT_DIR + 'socketio');
SR.SockJS = require(EXT_DIR + 'sockjs');
SR.Notify = require(EXT_DIR + 'notify');
SR.Stat = require(EXT_DIR + 'stat');
SR.StreamManager = require(EXT_DIR + 'stream');
SR.Sync = require(EXT_DIR + 'sync');
SR.Proxy = require(EXT_DIR + 'proxy');
SR.User = require(EXT_DIR + 'user');
//SR.NotificationHub = require(EXT_DIR + 'notification_hub');
//
// define flags & settings
//
// how deep recursive ticks can be (default to 1000)
// see = https = //github.com/LearnBoost/monk/issues/33
process.maxTickDepth = 1000000;
// NOTE = this will limit how big a cursor item can perform toArray(), if # of items returned by cursor in
// DB query exceeds this depth, then recursive process.nextTick() will happen
// default to be verbose in log messages
LOG.show('all');
// show debug / warning / error messages
LOG.setLevel(3);
// define & show Scalra version
var SR_version = 'unknown';
try {
var data = SR.fs.readFileSync(BASE_DIR + '/package.json', 'utf-8');
var package = JSON.parse(data);
SR_version = package.version;
} catch (e) {
LOG.error(e);
}
SR.version = SR_version;
console.log(SR.Tags.YELLOW + 'Scalra ' + SR_version + ' (Node.js ' + NODE_version + ' required)' + SR.Tags.WHITE);