UNPKG

twreporter-react

Version:

React-Redux site for The Reporter Foundation in Taiwan

82 lines (65 loc) 2.01 kB
'use strict'; var path = require('path'); var assign = require('object-assign'); var through2 = require('through2'); var gs = require('glob-stream'); var File = require('vinyl'); var duplexify = require('duplexify'); var merge = require('merge-stream'); var sourcemaps = require('gulp-sourcemaps'); var filterSince = require('../filterSince'); var isValidGlob = require('is-valid-glob'); var getContents = require('./getContents'); var resolveSymlinks = require('./resolveSymlinks'); function normalizePath(options) { function normalize(globFile, enc, cb) { // TODO: probably move this somewhere // Ref https://github.com/gulpjs/vinyl/issues/80 var normalizedFile = assign({}, globFile, { path: path.normalize(globFile.path), }); cb(null, normalizedFile); } return through2.obj(options, normalize); } function createFile(globFile, enc, cb) { cb(null, new File(globFile)); } function src(glob, opt) { var options = assign({ read: true, buffer: true, stripBOM: true, sourcemaps: false, passthrough: false, followSymlinks: true, }, opt); var inputPass; if (!isValidGlob(glob)) { throw new Error('Invalid glob argument: ' + glob); } var globStream = gs.create(glob, options); var outputStream = globStream .pipe(normalizePath(options)) .pipe(resolveSymlinks(options)) .pipe(through2.obj(opt, createFile)); if (options.since != null) { outputStream = outputStream .pipe(filterSince(options.since)); } if (options.read !== false) { outputStream = outputStream .pipe(getContents(options)); } if (options.passthrough === true) { inputPass = through2.obj(opt); outputStream = duplexify.obj(inputPass, merge(outputStream, inputPass)); } if (options.sourcemaps === true) { outputStream = outputStream .pipe(sourcemaps.init({ loadMaps: true })); } globStream.on('error', outputStream.emit.bind(outputStream, 'error')); return outputStream; } module.exports = src;