Show More
Commit Description:
change logger to be limited by file size
Commit Description:
change logger to be limited by file size
References:
File last commit:
Show/Diff file:
Action:
node_modules/brfs/index.js
| 152 lines
| 4.1 KiB
| application/javascript
| JavascriptLexer
|
r789 | var staticModule = require('static-module'); | |||
var quote = require('quote-stream'); | ||||
var through = require('through2'); | ||||
var fs = require('fs'); | ||||
var path = require('path'); | ||||
var resolve = require('resolve'); | ||||
module.exports = function (file, opts) { | ||||
if (/\.json$/.test(file)) return through(); | ||||
function resolver (p) { | ||||
return resolve.sync(p, { basedir: path.dirname(file) }); | ||||
} | ||||
var vars = { | ||||
__filename: file, | ||||
__dirname: path.dirname(file), | ||||
require: { resolve: resolver } | ||||
}; | ||||
if (!opts) opts = {}; | ||||
if (opts.vars) Object.keys(opts.vars).forEach(function (key) { | ||||
vars[key] = opts.vars[key]; | ||||
}); | ||||
var sm = staticModule( | ||||
{ | ||||
fs: { | ||||
readFileSync: readFileSync, | ||||
readFile: readFile, | ||||
readdirSync: readdirSync, | ||||
readdir: readdir | ||||
} | ||||
}, | ||||
{ | ||||
vars: vars, | ||||
varModules: { path: path }, | ||||
parserOpts: opts && opts.parserOpts, | ||||
sourceMap: opts && (opts.sourceMap || opts._flags && opts._flags.debug), | ||||
inputFilename: file | ||||
} | ||||
); | ||||
return sm; | ||||
function readFile (file, enc, cb) { | ||||
if (typeof enc === 'function') { | ||||
cb = enc; | ||||
enc = null; | ||||
} | ||||
if (enc && typeof enc === 'object' && enc.encoding) { | ||||
enc = enc.encoding; | ||||
} | ||||
var isBuffer = false; | ||||
if (enc === null || enc === undefined) { | ||||
isBuffer = true; | ||||
enc = 'base64'; | ||||
} | ||||
var stream = through(write, end); | ||||
stream.push('process.nextTick(function(){(' + cb + ')(null,'); | ||||
if (isBuffer) stream.push('Buffer('); | ||||
var s = fs.createReadStream(file, { encoding: enc }); | ||||
s.on('error', function (err) { sm.emit('error', err) }); | ||||
return s.pipe(quote()).pipe(stream); | ||||
function write (buf, enc, next) { | ||||
this.push(buf); | ||||
next(); | ||||
} | ||||
function end (next) { | ||||
if (isBuffer) this.push(',"base64")'); | ||||
this.push(')})'); | ||||
this.push(null); | ||||
sm.emit('file', file); | ||||
next() | ||||
} | ||||
} | ||||
function readFileSync (file, enc) { | ||||
var isBuffer = false; | ||||
if (enc === null || enc === undefined) { | ||||
isBuffer = true; | ||||
enc = 'base64'; | ||||
} | ||||
if (enc && typeof enc === 'object' && enc.encoding) { | ||||
enc = enc.encoding; | ||||
} | ||||
var stream = fs.createReadStream(file, { encoding: enc }) | ||||
.on('error', function (err) { sm.emit('error', err) }) | ||||
.pipe(quote()).pipe(through(write, end)) | ||||
; | ||||
if (isBuffer) { | ||||
stream.push('Buffer('); | ||||
} | ||||
return stream; | ||||
function write (buf, enc, next) { | ||||
this.push(buf); | ||||
next(); | ||||
} | ||||
function end (next) { | ||||
if (isBuffer) this.push(',"base64")'); | ||||
this.push(null); | ||||
sm.emit('file', file); | ||||
next(); | ||||
} | ||||
} | ||||
function readdir(path, cb) { | ||||
var stream = through(write, end); | ||||
stream.push('process.nextTick(function(){(' + cb + ')(null,'); | ||||
fs.readdir(path, function (err, src) { | ||||
if (err) { | ||||
stream.emit('error', err); | ||||
return; | ||||
} | ||||
stream.push(JSON.stringify(src)); | ||||
stream.end(')})'); | ||||
}); | ||||
return stream; | ||||
function write (buf, enc, next) { | ||||
this.push(buf); | ||||
next(); | ||||
} | ||||
function end (next) { | ||||
this.push(null); | ||||
next(); | ||||
} | ||||
} | ||||
function readdirSync (path) { | ||||
var stream = through(write, end); | ||||
fs.readdir(path, function (err, src) { | ||||
if (err) { | ||||
stream.emit('error', err); | ||||
return; | ||||
} | ||||
stream.end(JSON.stringify(src)); | ||||
}); | ||||
return stream; | ||||
function write (buf, enc, next) { | ||||
this.push(buf); | ||||
next(); | ||||
} | ||||
function end (next) { | ||||
this.push(null); | ||||
next(); | ||||
} | ||||
} | ||||
}; | ||||