UNPKG

@jitesoft/audit-for-gitlab

Version:

Minimal application to convert npm audit report into gitlab-ci vulnerability report format.

119 lines (113 loc) 3.18 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default; _Object$defineProperty(exports, "__esModule", { value: true }); exports.writeFile = exports.readFileJson = exports.logger = exports.hasOwn = exports.getConf = exports.fileExists = exports.LogLevels = void 0; var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/promise")); var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/includes")); var _fs = require("fs"); const hasOwn = (object, key) => { if (Object.hasOwn) { return Object.hasOwn(object, key); } // eslint-disable-next-line no-prototype-builtins return object.hasOwnProperty(key); }; /** * Fetch a value from the configuration. * In this case, the configuration is fully done by environment variables. * * @param {string} key Key to look for. * @param {any} def Default value to return in case no key was found. * @return {string|null} */ exports.hasOwn = hasOwn; const getConf = (key, def = null) => { if (hasOwn(process.env, key)) { return process.env[key] ?? def; } return def; }; /** * Check if a given file exists. * * @param {string} file File to check. * @return {Promise<boolean>} */ exports.getConf = getConf; const fileExists = async file => { try { await _fs.promises.open(file, 'r'); return true; } catch (e) { if (e.code === 'ENOENT') { return false; } throw e; } }; /** * Write data to file. * * @param {string} file File to write to. * @param {string} data Data to write to file. * @return {Promise<void>} */ exports.fileExists = fileExists; const writeFile = async (file, data) => { return _fs.promises.writeFile(file, data); }; exports.writeFile = writeFile; const readFileJson = async file => { const data = await _fs.promises.readFile(file); return JSON.parse(data); }; exports.readFileJson = readFileJson; const stdout = async message => { return new _promise.default((resolve, reject) => { process.stdout.write(message + '\n', () => { resolve(); }); }); }; const stderr = async message => { return new _promise.default((resolve, reject) => { process.stderr.write(message + '\n', () => { resolve(); }); }); }; const logLevels = { fatal: stderr, error: stderr, warn: stdout, info: stdout, debug: stdout }; const LogLevels = exports.LogLevels = { fatal: 'fatal', error: 'error', warn: 'warn', info: 'info', debug: 'debug' }; /** * Asynchronously log to stdout or stderr, depending on log-level. * * Available log levels are: * <pre>fatal, error, warn, info, debug</pre> * * @param {string} level Level to log. * @param {string} message Message to log. * @return {Promise<void>} */ const logger = async (level, message) => { const logLevel = getConf('SECURE_LOG_LEVEL', 'info').toLowerCase(); const keys = ['fatal', 'error', 'warn', 'info', 'debug']; if ((0, _includes.default)(keys).call(keys, logLevel)) { logLevels[logLevel](message); } }; exports.logger = logger;