k2hr3-api
Version:
K2HR3 REST API is K2hdkc based Resource and Roles and policy Rules
191 lines (190 loc) • 7.04 kB
JavaScript
;
/*
* K2HR3 REST API
*
* Copyright 2017 Yahoo Japan Corporation.
*
* K2HR3 is K2hdkc based Resource and Roles and policy Rules, gathers
* common management information for the cloud.
* K2HR3 can dynamically manage information as "who", "what", "operate".
* These are stored as roles, resources, policies in K2hdkc, and the
* client system can dynamically read and modify these information.
*
* For the full copyright and license information, please view
* the license file that was distributed with this source code.
*
* AUTHOR: Takeshi Nakatani
* CREATE: Wed Jun 8 2017
* REVISION:
*
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.dbglogging = exports.levelSilent = exports.levelErr = exports.levelWarn = exports.levelInfo = exports.levelDbg = exports.dbgLevelMap = exports.LogLevel = void 0;
const util = __importStar(require("util"));
const k2hr3apiutil_1 = __importDefault(require("./k2hr3apiutil"));
//---------------------------------------------------------
// NODE_DEBUG Environment Values
//---------------------------------------------------------
var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["Silent"] = 0] = "Silent";
LogLevel[LogLevel["Error"] = 1] = "Error";
LogLevel[LogLevel["Warn"] = 2] = "Warn";
LogLevel[LogLevel["Info"] = 3] = "Info";
LogLevel[LogLevel["Debug"] = 4] = "Debug";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
exports.dbgLevelMap = {
'LOGLEVEL_DEBUG': LogLevel.Debug,
'LOGLEVEL_DBG': LogLevel.Debug,
'LOGLEVEL_INFO': LogLevel.Info,
'LOGLEVEL_MESSAGE': LogLevel.Info,
'LOGLEVEL_MSG': LogLevel.Info,
'LOGLEVEL_WARNING': LogLevel.Warn,
'LOGLEVEL_WARN': LogLevel.Warn,
'LOGLEVEL_WAN': LogLevel.Warn,
'LOGLEVEL_ERROR': LogLevel.Error,
'LOGLEVEL_ERR': LogLevel.Error,
'LOGLEVEL_SILENT': LogLevel.Silent,
'LOGLEVEL_SLT': LogLevel.Silent
};
exports.levelDbg = 4;
exports.levelInfo = 3;
exports.levelWarn = 2;
exports.levelErr = 1;
exports.levelSilent = 0;
//---------------------------------------------------------
// Logging Level
//---------------------------------------------------------
let currentLevel = LogLevel.Error;
const customLevels = [];
(() => {
const dbgEnvs = k2hr3apiutil_1.default.getSafeString(process.env.NODE_DEBUG).split(',');
dbgEnvs.forEach((key) => {
const upperKey = key.toUpperCase();
if (upperKey in exports.dbgLevelMap) {
if (exports.levelSilent === exports.dbgLevelMap[upperKey]) {
// default level is error. if specify silent, we must set silent.
currentLevel = LogLevel.Silent;
}
else if (currentLevel < exports.dbgLevelMap[upperKey]) {
currentLevel = exports.dbgLevelMap[upperKey];
}
}
else if (!k2hr3apiutil_1.default.findStringInArray(customLevels, upperKey)) {
customLevels.push(upperKey);
}
});
})();
const getCurrentInfo = () => {
try {
throw new Error('INTERNAL_EXCEPTION_FOR_DEBUG');
}
catch (exception) {
if (exception instanceof Error && k2hr3apiutil_1.default.isString(exception.stack)) {
const basedir = __dirname.replace(/lib$/g, '');
const stackLines = exception.stack.split(/[\r\n]+/).filter((val1) => /^ *at .*:[0-9]+:[0-9]+/.test(val1));
if (2 < stackLines.length) {
const curstr = stackLines[2];
return curstr.replace(/^ *at /g, '').replace(new RegExp(basedir, 'g'), '').replace(/.*\(/g, '').replace(/\)$/g, '').replace(/:[0-9]+$/g, '').replace(/:/g, '(') + ')';
}
}
return '';
}
};
const dlog = (...args) => {
if (exports.levelDbg <= currentLevel) {
// [NOTE]
// We want to use stack trace, thus using console.warn instead of console.debug method.
//
console.warn('[DEBUG] ' + getCurrentInfo(), util.format(...args));
}
};
const mlog = (...args) => {
if (exports.levelInfo <= currentLevel) {
// [NOTE]
// We want to use stack trace, thus using console.warn instead of console.info method.
//
console.warn('[INFO] ' + getCurrentInfo(), util.format(...args));
}
};
const wlog = (...args) => {
if (exports.levelWarn <= currentLevel) {
console.warn('[WARN] ' + getCurrentInfo(), util.format(...args));
}
};
const elog = (...args) => {
if (exports.levelErr <= currentLevel) {
console.error('[ERROR] ' + getCurrentInfo(), util.format(...args));
}
};
const clog = (section, ...args) => {
if (k2hr3apiutil_1.default.isSafeString(section)) {
if (k2hr3apiutil_1.default.findStringInArray(customLevels, section.toUpperCase())) {
// [NOTE]
// We want to use stack trace, thus using console.warn instead of console.info method.
//
console.warn('[' + section.toUpperCase() + '] ' + getCurrentInfo(), util.format(...args));
}
}
};
const dump = (obj) => {
if (exports.levelDbg <= currentLevel) {
if (k2hr3apiutil_1.default.isPlainObject(obj)) {
return util.inspect(obj, { showHidden: true, depth: null, maxArrayLength: 1000 });
}
}
return obj;
};
exports.dbglogging = {
dlog,
mlog,
wlog,
elog,
clog,
dump,
};
exports.default = exports.dbglogging;
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noexpandtab sw=4 ts=4 fdm=marker
* vim<600: noexpandtab sw=4 ts=4
*/