gulp-banner-footer
Version:
gulp plugin for adding banner or footer to file.
45 lines (41 loc) • 2.53 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/index.ts
var _buffer = require('buffer');
var _path = require('path');
var _process = require('process'); var _process2 = _interopRequireDefault(_process);
var _logger = require('@ntnyq/logger');
var _pluginerror = require('plugin-error'); var _pluginerror2 = _interopRequireDefault(_pluginerror);
var _through2 = require('through2'); var _through22 = _interopRequireDefault(_through2);
var rootDir = _process2.default.cwd();
var PLUGIN_NAME = "gulp-banner-footer";
var logger = _logger.createLogger.call(void 0, { time: "HH:mm:ss" });
var addBannerOrFooter = (options = {}) => {
function transform(file, _, cb) {
if (file.isNull()) return cb(null, file);
if (file.isStream()) {
const errorOptions = Object.assign({}, { fileName: file.path });
const error = new (0, _pluginerror2.default)(
PLUGIN_NAME,
new Error("Streaming not supported"),
errorOptions
);
return cb(error);
}
if (options.verbose) {
logger.info(
`${_logger.c.yellow(PLUGIN_NAME)}: ${_logger.c.green(_path.relative.call(void 0, rootDir, file.path))}`
);
}
const contents = _buffer.Buffer.from(
[
typeof options.banner === "function" ? options.banner(file) : options.banner,
_nullishCoalesce(_optionalChain([file, 'access', _2 => _2.contents, 'optionalAccess', _3 => _3.toString, 'call', _4 => _4()]), () => ( "")),
typeof options.footer === "function" ? options.footer(file) : options.footer
].join("\n")
);
file.contents = contents;
return cb(null, file);
}
return _through22.default.obj(transform);
};
var index_default = addBannerOrFooter;
exports.addBannerOrFooter = addBannerOrFooter; exports.default = index_default;