Skip to content

Commit

Permalink
remove readFileSyncTransform
Browse files Browse the repository at this point in the history
  • Loading branch information
wardpeet committed Apr 18, 2020
1 parent ec74c23 commit 993382a
Show file tree
Hide file tree
Showing 2 changed files with 212 additions and 204 deletions.
339 changes: 174 additions & 165 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,170 +1,179 @@
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');
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) });
}
function convertTransformOptionToStream (f, args) {
if (typeof f === 'function') {
return f.apply(null, args)
}

return f;
}
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];
if (/\.json$/.test(file)) return through();

function resolver(p) {
return resolve.sync(p, { basedir: path.dirname(file) });
}
function convertTransformOptionToStream(f, args) {
if (typeof f === "function") {
return f.apply(null, args);
}

return f;
}
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);
});

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) });

if (opts.readFileTransform) {
s = s.pipe(convertTransformOptionToStream(opts.readFileTransform, [file]))
}

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) });


if (opts.readFileSyncTransform) {
stream = stream.pipe(convertTransformOptionToStream(opts.readFileSyncTransform, [file]))
}

stream = stream.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();
}

if (opts.readFileTransform) {
s = s.pipe(
convertTransformOptionToStream(opts.readFileTransform, [file])
);
}

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);
});

if (opts.readFileTransform) {
stream = stream.pipe(
convertTransformOptionToStream(opts.readFileTransform, [file])
);
}

stream = stream.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();
}
}
};
Loading

0 comments on commit 993382a

Please sign in to comment.