UNPKG

gulp-banner-footer

Version:

gulp plugin for adding banner or footer to file.

45 lines (41 loc) 2.53 kB
"use strict";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;