From 4a8df9c12fbb8e478f6c6a17d4d76dde38963434 Mon Sep 17 00:00:00 2001 From: PhilKunz Date: Fri, 18 Mar 2016 17:34:31 +0100 Subject: [PATCH] tests running though, can now handle local and remote files --- dist/index.js | 11 +- dist/smartfile.local.js | 69 ++++++++++++ dist/smartfile.remote.js | 54 ++++++---- package.json | 6 +- test/test.js | 94 ++++++++++------ test/test.js.map | 2 +- test/test.ts | 108 +++++++++++-------- ts/index.ts | 8 +- ts/{smartfile.read.ts => smartfile.local.ts} | 6 +- ts/smartfile.remote.ts | 49 ++++++--- 10 files changed, 278 insertions(+), 129 deletions(-) create mode 100644 dist/smartfile.local.js rename ts/{smartfile.read.ts => smartfile.local.ts} (89%) diff --git a/dist/index.js b/dist/index.js index 9ed3a9d..35ef456 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,15 +1,16 @@ /// "use strict"; var SmartfileChecks = require("./smartfile.checks"); -var SmartfileRead = require("./smartfile.read"); +var SmartfileFsaction = require("./smartfile.fsaction"); +var SmartfileLocal = require("./smartfile.local"); var SmartfileRemote = require("./smartfile.remote"); var smartfile = { - copy: SmartfileSimple.copy, + fsaction: SmartfileFsaction, checks: SmartfileChecks, - read: SmartfileRead, + local: SmartfileLocal, remote: SmartfileRemote, - requireReload: SmartfileSimple.requireReload + requireReload: SmartfileLocal.requireReload }; module.exports = smartfile; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0Qzs7QUFHNUMsSUFBTyxlQUFlLFdBQVcsb0JBQW9CLENBQUMsQ0FBQztBQUV2RCxJQUFPLGFBQWEsV0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ25ELElBQU8sZUFBZSxXQUFXLG9CQUFvQixDQUFDLENBQUM7QUFHdkQsSUFBSSxTQUFTLEdBQU87SUFDaEIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJO0lBQzFCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLElBQUksRUFBRSxhQUFhO0lBQ25CLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYTtDQUMvQyxDQUFDO0FBRUYsaUJBQVMsU0FBUyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuXG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5wbHVnaW5zXCIpO1xuaW1wb3J0IFNtYXJ0ZmlsZUNoZWNrcyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5jaGVja3NcIik7XG5pbXBvcnQgU21hcnRmaWxlRnNhY3Rpb24gPSByZXF1aXJlKFwiLi9zbWFydGZpbGUuZnNhY3Rpb25cIik7XG5pbXBvcnQgU21hcnRmaWxlUmVhZCA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5yZWFkXCIpO1xuaW1wb3J0IFNtYXJ0ZmlsZVJlbW90ZSA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5yZW1vdGVcIik7XG5cblxudmFyIHNtYXJ0ZmlsZTphbnkgPSB7XG4gICAgY29weTogU21hcnRmaWxlU2ltcGxlLmNvcHksXG4gICAgY2hlY2tzOiBTbWFydGZpbGVDaGVja3MsXG4gICAgcmVhZDogU21hcnRmaWxlUmVhZCxcbiAgICByZW1vdGU6IFNtYXJ0ZmlsZVJlbW90ZSxcbiAgICByZXF1aXJlUmVsb2FkOiBTbWFydGZpbGVTaW1wbGUucmVxdWlyZVJlbG9hZFxufTtcblxuZXhwb3J0ID0gc21hcnRmaWxlO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0Qzs7QUFHNUMsSUFBTyxlQUFlLFdBQVcsb0JBQW9CLENBQUMsQ0FBQztBQUN2RCxJQUFPLGlCQUFpQixXQUFXLHNCQUFzQixDQUFDLENBQUM7QUFDM0QsSUFBTyxjQUFjLFdBQVcsbUJBQW1CLENBQUMsQ0FBQztBQUNyRCxJQUFPLGVBQWUsV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBR3ZELElBQUksU0FBUyxHQUFPO0lBQ2hCLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsTUFBTSxFQUFFLGVBQWU7SUFDdkIsS0FBSyxFQUFFLGNBQWM7SUFDckIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLGNBQWMsQ0FBQyxhQUFhO0NBQzlDLENBQUM7QUFFRixpQkFBUyxTQUFTLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5pbXBvcnQgU21hcnRmaWxlQ2hlY2tzID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLmNoZWNrc1wiKTtcbmltcG9ydCBTbWFydGZpbGVGc2FjdGlvbiA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5mc2FjdGlvblwiKTtcbmltcG9ydCBTbWFydGZpbGVMb2NhbCA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5sb2NhbFwiKTtcbmltcG9ydCBTbWFydGZpbGVSZW1vdGUgPSByZXF1aXJlKFwiLi9zbWFydGZpbGUucmVtb3RlXCIpO1xuXG5cbnZhciBzbWFydGZpbGU6YW55ID0ge1xuICAgIGZzYWN0aW9uOiBTbWFydGZpbGVGc2FjdGlvbixcbiAgICBjaGVja3M6IFNtYXJ0ZmlsZUNoZWNrcyxcbiAgICBsb2NhbDogU21hcnRmaWxlTG9jYWwsXG4gICAgcmVtb3RlOiBTbWFydGZpbGVSZW1vdGUsXG4gICAgcmVxdWlyZVJlbG9hZDogU21hcnRmaWxlTG9jYWwucmVxdWlyZVJlbG9hZFxufTtcblxuZXhwb3J0ID0gc21hcnRmaWxlO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 diff --git a/dist/smartfile.local.js b/dist/smartfile.local.js new file mode 100644 index 0000000..84cc279 --- /dev/null +++ b/dist/smartfile.local.js @@ -0,0 +1,69 @@ +/// +"use strict"; +var plugins = require("./smartfile.plugins"); +exports.toFS = function (options, cb) { + if (cb === void 0) { cb = undefined; } +}; +/** + * + * @param filePath + * @param fileTypeArg + * @returns {any} + */ +exports.toObjectSync = function (filePath, fileTypeArg) { + if (fileTypeArg === void 0) { fileTypeArg = undefined; } + var fileType; + if (typeof fileTypeArg == "undefined") { + fileType = plugins.path.extname(filePath); + } + else { + fileType = fileTypeArg; + } + fileType = fileType.replace(/\.([a-z]*)/, "$1"); //remove . form fileType + switch (fileType) { + case "yml": + case "yaml": + try { + return plugins.yaml.safeLoad(plugins.fs.readFileSync(filePath, 'utf8')); + } + catch (e) { + plugins.beautylog.error("check that " + filePath.blue + " points to a valid file"); + } + break; + case "json": + return plugins.fs.readJsonSync(filePath, {}); + default: + plugins.beautylog.error("file type " + fileType.blue + " not supported"); + break; + } +}; +/** + * reads a file content to a String + * @param filePath + * @returns {string|Buffer|any} + */ +exports.toStringSync = function (filePath) { + var fileString; + fileString = plugins.fs.readFileSync(filePath, "utf8"); + return fileString; +}; +/** + * + * @param filePathArg + * @param options + * @returns {number} + */ +exports.toVinylSync = function (filePathArg, options) { + if (options === void 0) { options = {}; } + return plugins.vinylFile.readSync(filePathArg, options); +}; +/** + * lets you reload files hot. + * @param path + * @returns {any} + */ +exports.requireReload = function (path) { + return plugins.requireReload(path); +}; + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5sb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7O0FBRTVDLElBQU8sT0FBTyxXQUFXLHFCQUFxQixDQUFDLENBQUM7QUFFckMsWUFBSSxHQUFHLFVBQVMsT0FBbUMsRUFBRSxFQUFZO0lBQVosa0JBQVksR0FBWixjQUFZO0FBRTVFLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ1Esb0JBQVksR0FBRyxVQUFTLFFBQVEsRUFBQyxXQUF1QjtJQUF2QiwyQkFBdUIsR0FBdkIsdUJBQXVCO0lBQy9ELElBQUksUUFBUSxDQUFDO0lBQ2IsRUFBRSxDQUFDLENBQUMsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwQyxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osUUFBUSxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCO0lBQ3hFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDZixLQUFLLEtBQUssQ0FBRTtRQUNaLEtBQUssTUFBTTtZQUNQLElBQUksQ0FBQztnQkFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDNUUsQ0FBRTtZQUFBLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQ1IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUMsQ0FBQztZQUN2RixDQUFDO1lBQ0QsS0FBSyxDQUFDO1FBQ1YsS0FBSyxNQUFNO1lBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUNoRDtZQUNJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUM7WUFDekUsS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDUSxvQkFBWSxHQUFHLFVBQVMsUUFBUTtJQUN2QyxJQUFJLFVBQVUsQ0FBQztJQUNmLFVBQVUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNRLG1CQUFXLEdBQUcsVUFBUyxXQUFXLEVBQUMsT0FBWTtJQUFaLHVCQUFZLEdBQVosWUFBWTtJQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDUSxxQkFBYSxHQUFHLFVBQVMsSUFBVztJQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMiLCJmaWxlIjoic21hcnRmaWxlLmxvY2FsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuXG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5wbHVnaW5zXCIpO1xuXG5leHBvcnQgbGV0IHRvRlMgPSBmdW5jdGlvbihvcHRpb25zOntmcm9tOnN0cmluZyx0b1BhdGg6c3RyaW5nfSwgY2I9dW5kZWZpbmVkKXtcbiAgICBcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aFxuICogQHBhcmFtIGZpbGVUeXBlQXJnXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5leHBvcnQgbGV0IHRvT2JqZWN0U3luYyA9IGZ1bmN0aW9uKGZpbGVQYXRoLGZpbGVUeXBlQXJnID0gdW5kZWZpbmVkKSB7XG4gICAgbGV0IGZpbGVUeXBlO1xuICAgIGlmICh0eXBlb2YgZmlsZVR5cGVBcmcgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBmaWxlVHlwZSA9IHBsdWdpbnMucGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaWxlVHlwZSA9IGZpbGVUeXBlQXJnO1xuICAgIH1cbiAgICBmaWxlVHlwZSA9IGZpbGVUeXBlLnJlcGxhY2UoL1xcLihbYS16XSopLyxcIiQxXCIpOyAvL3JlbW92ZSAuIGZvcm0gZmlsZVR5cGVcbiAgICBzd2l0Y2ggKGZpbGVUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJ5bWxcIiA6XG4gICAgICAgIGNhc2UgXCJ5YW1sXCI6XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwbHVnaW5zLnlhbWwuc2FmZUxvYWQocGx1Z2lucy5mcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4JykpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cuZXJyb3IoXCJjaGVjayB0aGF0IFwiICsgZmlsZVBhdGguYmx1ZSArIFwiIHBvaW50cyB0byBhIHZhbGlkIGZpbGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImpzb25cIjpcbiAgICAgICAgICAgIHJldHVybiBwbHVnaW5zLmZzLnJlYWRKc29uU3luYyhmaWxlUGF0aCx7fSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5lcnJvcihcImZpbGUgdHlwZSBcIiArIGZpbGVUeXBlLmJsdWUgKyBcIiBub3Qgc3VwcG9ydGVkXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufTtcblxuLyoqXG4gKiByZWFkcyBhIGZpbGUgY29udGVudCB0byBhIFN0cmluZ1xuICogQHBhcmFtIGZpbGVQYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfEJ1ZmZlcnxhbnl9XG4gKi9cbmV4cG9ydCBsZXQgdG9TdHJpbmdTeW5jID0gZnVuY3Rpb24oZmlsZVBhdGgpIHtcbiAgICBsZXQgZmlsZVN0cmluZztcbiAgICBmaWxlU3RyaW5nID0gcGx1Z2lucy5mcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmOFwiKTtcbiAgICByZXR1cm4gZmlsZVN0cmluZztcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aEFyZ1xuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBsZXQgdG9WaW55bFN5bmMgPSBmdW5jdGlvbihmaWxlUGF0aEFyZyxvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gcGx1Z2lucy52aW55bEZpbGUucmVhZFN5bmMoZmlsZVBhdGhBcmcsb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGxldHMgeW91IHJlbG9hZCBmaWxlcyBob3QuXG4gKiBAcGFyYW0gcGF0aFxuICogQHJldHVybnMge2FueX1cbiAqL1xuZXhwb3J0IGxldCByZXF1aXJlUmVsb2FkID0gZnVuY3Rpb24ocGF0aDpzdHJpbmcpe1xuICAgIHJldHVybiBwbHVnaW5zLnJlcXVpcmVSZWxvYWQocGF0aCk7XG59OyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== diff --git a/dist/smartfile.remote.js b/dist/smartfile.remote.js index aea2d7c..108ccf6 100644 --- a/dist/smartfile.remote.js +++ b/dist/smartfile.remote.js @@ -1,29 +1,45 @@ "use strict"; -exports.toVar = function (options, cb) { - var bodyString; - request.get(options.from, function (error, response, body) { +/// +var plugins = require("./smartfile.plugins"); +exports.toString = function (fromArg) { + var done = plugins.q.defer(); + plugins.request.get(fromArg, function (error, response, bodyString) { if (!error && response.statusCode == 200) { - bodyString = body; - console.log('successfully requested' + options.from); - if (options.parseJson = true) { - var jsonObject = JSON.parse(bodyString); - return jsonObject; - } - ; + done.resolve(bodyString); } else { - console.log('could not get get remote file from ' + options.from); - return bodyString = 'could not get file'; + plugins.beautylog.error('could not get get remote file from ' + fromArg); + bodyString = undefined; + done.reject(bodyString); } ; }); - return bodyString; + return done.promise; }; -exports.toFS = function (options, cb) { - if (cb === void 0) { cb = undefined; } - var stream = request(options.from).pipe(fs.createWriteStream(options.toPath)); - if (cb != undefined) - stream.on('finish', cb); +exports.toObject = function (fromArg) { + var done = plugins.q.defer(); + plugins.request.get(fromArg, function (error, response, bodyString) { + var jsonObject; + if (!error && response.statusCode == 200) { + jsonObject = JSON.parse(bodyString); + done.resolve(jsonObject); + } + else { + console.log('could not get remote file from ' + fromArg); + jsonObject = undefined; + done.reject(jsonObject); + } + ; + }); + return done.promise; +}; +exports.toFs = function (from, toPath) { + var done = plugins.q.defer(); + var stream = plugins.request(from).pipe(plugins.fs.createWriteStream(toPath)); + stream.on('finish', function () { + done.resolve(toPath); + }); + return done.promise; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5yZW1vdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdXLGFBQUssR0FBRyxVQUFDLE9BQXdDLEVBQUUsRUFBRTtJQUM1RCxJQUFJLFVBQWlCLENBQUM7SUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQ3JELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUN0QixDQUFDO1lBQUEsQ0FBQztRQUNOLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsb0JBQW9CLENBQUE7UUFDNUMsQ0FBQztRQUFBLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRVMsWUFBSSxHQUFHLFVBQVMsT0FBbUMsRUFBRSxFQUFZO0lBQVosa0JBQVksR0FBWixjQUFZO0lBQ3hFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDO1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFBIiwiZmlsZSI6InNtYXJ0ZmlsZS5yZW1vdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5wbHVnaW5zXCIpO1xuXG5leHBvcnQgbGV0IHRvVmFyID0gKG9wdGlvbnM6e2Zyb206c3RyaW5nLHBhcnNlSnNvbj86Ym9vbGVhbn0sIGNiKTphbnkgPT4ge1xuICAgIHZhciBib2R5U3RyaW5nOnN0cmluZztcbiAgICByZXF1ZXN0LmdldChvcHRpb25zLmZyb20sIGZ1bmN0aW9uIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHtcbiAgICAgICAgaWYgKCFlcnJvciAmJiByZXNwb25zZS5zdGF0dXNDb2RlID09IDIwMCkge1xuICAgICAgICAgICAgYm9keVN0cmluZyA9IGJvZHk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc3VjY2Vzc2Z1bGx5IHJlcXVlc3RlZCcgKyBvcHRpb25zLmZyb20pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFyc2VKc29uID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBqc29uT2JqZWN0ID0gSlNPTi5wYXJzZShib2R5U3RyaW5nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ganNvbk9iamVjdDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY291bGQgbm90IGdldCBnZXQgcmVtb3RlIGZpbGUgZnJvbSAnICsgb3B0aW9ucy5mcm9tKTtcbiAgICAgICAgICAgIHJldHVybiBib2R5U3RyaW5nID0gJ2NvdWxkIG5vdCBnZXQgZmlsZSdcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBib2R5U3RyaW5nO1xufSxcblxuZXhwb3J0IGxldCB0b0ZTID0gZnVuY3Rpb24ob3B0aW9uczp7ZnJvbTpzdHJpbmcsdG9QYXRoOnN0cmluZ30sIGNiPXVuZGVmaW5lZCkge1xuICAgIHZhciBzdHJlYW0gPSByZXF1ZXN0KG9wdGlvbnMuZnJvbSkucGlwZShmcy5jcmVhdGVXcml0ZVN0cmVhbShvcHRpb25zLnRvUGF0aCkpO1xuICAgIGlmIChjYiAhPSB1bmRlZmluZWQpIHN0cmVhbS5vbignZmluaXNoJyxjYik7XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5yZW1vdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0QztBQUM1QyxJQUFPLE9BQU8sV0FBVyxxQkFBcUIsQ0FBQyxDQUFDO0FBRXJDLGdCQUFRLEdBQUcsVUFBQyxPQUFjO0lBQ2pDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQzlELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3pFLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUEsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRVMsZ0JBQVEsR0FBRyxVQUFTLE9BQWM7SUFDekMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDOUQsSUFBSSxVQUFVLENBQUM7UUFDZixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3pELFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUEsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRVMsWUFBSSxHQUFHLFVBQVMsSUFBVyxFQUFDLE1BQWE7SUFDaEQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDIiwiZmlsZSI6InNtYXJ0ZmlsZS5yZW1vdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5wbHVnaW5zXCIpO1xuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gKGZyb21Bcmc6c3RyaW5nKSA9PiB7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBwbHVnaW5zLnJlcXVlc3QuZ2V0KGZyb21BcmcsIGZ1bmN0aW9uIChlcnJvciwgcmVzcG9uc2UsIGJvZHlTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFlcnJvciAmJiByZXNwb25zZS5zdGF0dXNDb2RlID09IDIwMCkge1xuICAgICAgICAgICAgZG9uZS5yZXNvbHZlKGJvZHlTdHJpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cuZXJyb3IoJ2NvdWxkIG5vdCBnZXQgZ2V0IHJlbW90ZSBmaWxlIGZyb20gJyArIGZyb21BcmcpO1xuICAgICAgICAgICAgYm9keVN0cmluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRvbmUucmVqZWN0KGJvZHlTdHJpbmcpO1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59O1xuXG5leHBvcnQgbGV0IHRvT2JqZWN0ID0gZnVuY3Rpb24oZnJvbUFyZzpzdHJpbmcpe1xuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XG4gICAgcGx1Z2lucy5yZXF1ZXN0LmdldChmcm9tQXJnLCBmdW5jdGlvbiAoZXJyb3IsIHJlc3BvbnNlLCBib2R5U3RyaW5nKSB7XG4gICAgICAgIGxldCBqc29uT2JqZWN0O1xuICAgICAgICBpZiAoIWVycm9yICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgPT0gMjAwKSB7XG4gICAgICAgICAgICBqc29uT2JqZWN0ID0gSlNPTi5wYXJzZShib2R5U3RyaW5nKTtcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZShqc29uT2JqZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb3VsZCBub3QgZ2V0IHJlbW90ZSBmaWxlIGZyb20gJyArIGZyb21BcmcpO1xuICAgICAgICAgICAganNvbk9iamVjdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRvbmUucmVqZWN0KGpzb25PYmplY3QpO1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59O1xuXG5leHBvcnQgbGV0IHRvRnMgPSBmdW5jdGlvbihmcm9tOnN0cmluZyx0b1BhdGg6c3RyaW5nKSB7XG4gICAgdmFyIGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gcGx1Z2lucy5yZXF1ZXN0KGZyb20pLnBpcGUocGx1Z2lucy5mcy5jcmVhdGVXcml0ZVN0cmVhbSh0b1BhdGgpKTtcbiAgICBzdHJlYW0ub24oJ2ZpbmlzaCcsZnVuY3Rpb24oKXtcbiAgICAgICAgZG9uZS5yZXNvbHZlKHRvUGF0aCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbn07Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 diff --git a/package.json b/package.json index cf6e7d7..49960c3 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "homepage": "https://github.com/pushrocks/smartfile", "dependencies": { "beautylog": "3.1.2", - "fs-extra": "0.26.5", - "js-yaml": "3.5.4", + "fs-extra": "0.26.7", + "js-yaml": "3.5.5", "q": "1.4.1", "request": "^2.69.0", "require-reload": "0.2.2", @@ -36,7 +36,7 @@ "vinyl-file": "2.0.0" }, "devDependencies": { - "npmts": "3.4.1", + "npmts": "3.5.0", "should": "^8.2.2" } } diff --git a/test/test.js b/test/test.js index cd6b95d..5188146 100644 --- a/test/test.js +++ b/test/test.js @@ -3,33 +3,7 @@ var smartfile = require("../dist/index.js"); var beautylog = require("beautylog"); var should = require("should"); var vinyl = require("vinyl"); -describe("smartfile", function () { - describe(".readFileToString".yellow, function () { - it("should read a file to a string", function () { - should.equal(smartfile.readFileToString("./test/mytest.txt"), "Some TestString &&%$"); - }); - }); - describe(".readFileToObject".yellow, function () { - it("should read an " + ".yaml".blue + " file to an object", function () { - var testData = smartfile.readFileToObject("./test/mytest.yaml"); - testData.should.have.property("key1", "this works"); - testData.should.have.property("key2", "this works too"); - }); - it("should state unknown file type for unknown file types", function () { - var testData = smartfile.readFileToObject("./test/mytest.txt"); - }); - it("should read an " + ".json".blue + " file to an object", function () { - var testData = smartfile.readFileToObject("./test/mytest.json"); - testData.should.have.property("key1", "this works"); - testData.should.have.property("key2", "this works too"); - }); - }); - describe(".readFileToVinyl".yellow, function () { - it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan, function () { - var testData = smartfile.readFileToVinyl("./test/mytest.json"); - (vinyl.isVinyl(testData)).should.be.true(); - }); - }); +describe("smartfile".yellow, function () { describe(".checks".yellow, function () { describe(".fileExistsSync".yellow, function () { it("should return an accurate boolean", function () { @@ -45,17 +19,67 @@ describe("smartfile", function () { }); }); }); - describe("copy", function () { - it("should copy a directory", function () { - smartfile.copy("./test/testfolder/", "./test/assets/"); + describe(".fsaction".yellow, function () { + describe(".copy()".yellow, function () { + it("should copy a directory", function () { + smartfile.fsaction.copy("./test/testfolder/", "./test/assets/"); + }); + it("should copy a file", function () { + smartfile.fsaction.copy("./test/mytest.yaml", "./test/assets/"); + }); + it("should copy a file and rename it", function () { + smartfile.fsaction.copy("./test/mytest.yaml", "./test/assets/mytestRenamed.yaml"); + }); }); - it("should copy a file", function () { - smartfile.copy("./test/mytest.yaml", "./test/assets/"); + }); + describe(".local".yellow, function () { + describe(".toStringSync()".yellow, function () { + it("should read a file to a string", function () { + should.equal(smartfile.local.toStringSync("./test/mytest.txt"), "Some TestString &&%$"); + }); }); - it("should copy a file and rename it", function () { - smartfile.copy("./test/mytest.yaml", "./test/assets/mytestRenamed.yaml"); + describe(".toObjectSync()".yellow, function () { + it("should read an " + ".yaml".blue + " file to an object", function () { + var testData = smartfile.local.toObjectSync("./test/mytest.yaml"); + testData.should.have.property("key1", "this works"); + testData.should.have.property("key2", "this works too"); + }); + it("should state unknown file type for unknown file types", function () { + var testData = smartfile.local.toObjectSync("./test/mytest.txt"); + }); + it("should read an " + ".json".blue + " file to an object", function () { + var testData = smartfile.local.toObjectSync("./test/mytest.json"); + testData.should.have.property("key1", "this works"); + testData.should.have.property("key2", "this works too"); + }); + }); + describe(".toVinylSync".yellow, function () { + it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan, function () { + var testData = smartfile.local.toVinylSync("./test/mytest.json"); + (vinyl.isVinyl(testData)).should.be.true(); + }); + }); + }); + describe(".remote", function () { + describe(".toString()", function () { + it("should load a remote file to a variable", function (done) { + this.timeout(5000); + smartfile.remote.toString("https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt") + .then(function (responseString) { + should.equal(responseString, "Some TestString &&%$"); + done(); + }); + }); + it("should reject a Promise when the link is false", function (done) { + smartfile.remote.toString("https://push.rocks/doesnotexist.txt") + .then(function () { + throw new Error("this test should not be resolved"); + }, function () { + done(); + }); + }); }); }); }); -//# sourceMappingURL=data:application/json;base64,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ZXJlbmNlIHBhdGg9XCIuLi90cy90eXBpbmdzL21haW4uZC50c1wiIC8+XG52YXIgc21hcnRmaWxlID0gcmVxdWlyZShcIi4uL2Rpc3QvaW5kZXguanNcIik7XG52YXIgYmVhdXR5bG9nID0gcmVxdWlyZShcImJlYXV0eWxvZ1wiKTtcbnZhciBzaG91bGQgPSByZXF1aXJlKFwic2hvdWxkXCIpO1xudmFyIHZpbnlsID0gcmVxdWlyZShcInZpbnlsXCIpO1xuXG5kZXNjcmliZShcInNtYXJ0ZmlsZVwiLGZ1bmN0aW9uKCl7XG4gICAgZGVzY3JpYmUoXCIucmVhZEZpbGVUb1N0cmluZ1wiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICBpdChcInNob3VsZCByZWFkIGEgZmlsZSB0byBhIHN0cmluZ1wiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLnJlYWRGaWxlVG9TdHJpbmcoXCIuL3Rlc3QvbXl0ZXN0LnR4dFwiKSxcbiAgICAgICAgICAgICAgICBcIlNvbWUgVGVzdFN0cmluZyAmJiUkXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKFwiLnJlYWRGaWxlVG9PYmplY3RcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgaXQoXCJzaG91bGQgcmVhZCBhbiBcIiArIFwiLnlhbWxcIi5ibHVlICsgXCIgZmlsZSB0byBhbiBvYmplY3RcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgdmFyIHRlc3REYXRhID0gc21hcnRmaWxlLnJlYWRGaWxlVG9PYmplY3QoXCIuL3Rlc3QvbXl0ZXN0LnlhbWxcIik7XG4gICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTFcIixcInRoaXMgd29ya3NcIik7XG4gICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTJcIixcInRoaXMgd29ya3MgdG9vXCIpO1xuXG4gICAgICAgIH0pO1xuICAgICAgICBpdChcInNob3VsZCBzdGF0ZSB1bmtub3duIGZpbGUgdHlwZSBmb3IgdW5rbm93biBmaWxlIHR5cGVzXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciB0ZXN0RGF0YSA9IHNtYXJ0ZmlsZS5yZWFkRmlsZVRvT2JqZWN0KFwiLi90ZXN0L215dGVzdC50eHRcIik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdChcInNob3VsZCByZWFkIGFuIFwiICsgXCIuanNvblwiLmJsdWUgKyBcIiBmaWxlIHRvIGFuIG9iamVjdFwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgdGVzdERhdGEgPSBzbWFydGZpbGUucmVhZEZpbGVUb09iamVjdChcIi4vdGVzdC9teXRlc3QuanNvblwiKTtcbiAgICAgICAgICAgIHRlc3REYXRhLnNob3VsZC5oYXZlLnByb3BlcnR5KFwia2V5MVwiLFwidGhpcyB3b3Jrc1wiKTtcbiAgICAgICAgICAgIHRlc3REYXRhLnNob3VsZC5oYXZlLnByb3BlcnR5KFwia2V5MlwiLFwidGhpcyB3b3JrcyB0b29cIik7XG5cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoXCIucmVhZEZpbGVUb1ZpbnlsXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgIGl0KFwic2hvdWxkIHJlYWQgYW4gXCIgKyBcIi5qc29uIE9SIC55YW1sXCIuYmx1ZSArIFwiIGZpbGUgdG8gYW4gXCIgKyBcInZpbnlsIGZpbGUgb2JqZWN0XCIuY3lhbixmdW5jdGlvbigpe1xuICAgICAgICAgICAgdmFyIHRlc3REYXRhID0gc21hcnRmaWxlLnJlYWRGaWxlVG9WaW55bChcIi4vdGVzdC9teXRlc3QuanNvblwiKTtcbiAgICAgICAgICAgICh2aW55bC5pc1ZpbnlsKHRlc3REYXRhKSkuc2hvdWxkLmJlLnRydWUoKTtcblxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZShcIi5jaGVja3NcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgZGVzY3JpYmUoXCIuZmlsZUV4aXN0c1N5bmNcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJldHVybiBhbiBhY2N1cmF0ZSBib29sZWFuXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAoc21hcnRmaWxlLmNoZWNrcy5maWxlRXhpc3RzU3luYyhcIi4vdGVzdC9teXRlc3QuanNvblwiKSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgICAgICAgICAoc21hcnRmaWxlLmNoZWNrcy5maWxlRXhpc3RzU3luYyhcIi4vdGVzdC9ub3R0aGVyZS5qc29uXCIpKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVzY3JpYmUoXCIuZmlsZUV4aXN0c1wiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcmV0dXJuIGEgd29ya2luZyBwcm9taXNlXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAoc21hcnRmaWxlLmNoZWNrcy5maWxlRXhpc3RzKFwiLi90ZXN0L215dGVzdC5qc29uXCIpKS5zaG91bGQuYmUuUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIikpLnNob3VsZC5iZS5mdWxmaWxsZWQoKTtcbiAgICAgICAgICAgICAgICAoc21hcnRmaWxlLmNoZWNrcy5maWxlRXhpc3RzKFwiLi90ZXN0L25vdHRoZXJlLmpzb25cIikpLnNob3VsZC5ub3QuYmUuZnVsZmlsbGVkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9KTtcbiAgICBkZXNjcmliZShcImNvcHlcIixmdW5jdGlvbigpe1xuICAgICAgICBpdChcInNob3VsZCBjb3B5IGEgZGlyZWN0b3J5XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHNtYXJ0ZmlsZS5jb3B5KFwiLi90ZXN0L3Rlc3Rmb2xkZXIvXCIsXCIuL3Rlc3QvYXNzZXRzL1wiKVxuICAgICAgICB9KTtcbiAgICAgICAgaXQoXCJzaG91bGQgY29weSBhIGZpbGVcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgc21hcnRmaWxlLmNvcHkoXCIuL3Rlc3QvbXl0ZXN0LnlhbWxcIixcIi4vdGVzdC9hc3NldHMvXCIpXG4gICAgICAgIH0pO1xuICAgICAgICBpdChcInNob3VsZCBjb3B5IGEgZmlsZSBhbmQgcmVuYW1lIGl0XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHNtYXJ0ZmlsZS5jb3B5KFwiLi90ZXN0L215dGVzdC55YW1sXCIsXCIuL3Rlc3QvYXNzZXRzL215dGVzdFJlbmFtZWQueWFtbFwiKVxuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 +//# sourceMappingURL=data:application/json;base64,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QUM7Z0JBQ2pFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLFNBQVMsRUFBQztRQUNmLFFBQVEsQ0FBQyxhQUFhLEVBQUM7WUFDbkIsRUFBRSxDQUFDLHlDQUF5QyxFQUFDLFVBQVMsSUFBSTtnQkFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsOEVBQThFLENBQUM7cUJBQ3BHLElBQUksQ0FBQyxVQUFTLGNBQWM7b0JBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3BELElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDSCxFQUFFLENBQUMsZ0RBQWdELEVBQUMsVUFBUyxJQUFJO2dCQUM3RCxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQztxQkFDM0QsSUFBSSxDQUFDO29CQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztnQkFDeEQsQ0FBQyxFQUFDO29CQUNFLElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFBO1lBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi90cy90eXBpbmdzL21haW4uZC50c1wiIC8+XG52YXIgc21hcnRmaWxlID0gcmVxdWlyZShcIi4uL2Rpc3QvaW5kZXguanNcIik7XG52YXIgYmVhdXR5bG9nID0gcmVxdWlyZShcImJlYXV0eWxvZ1wiKTtcbnZhciBzaG91bGQgPSByZXF1aXJlKFwic2hvdWxkXCIpO1xudmFyIHZpbnlsID0gcmVxdWlyZShcInZpbnlsXCIpO1xuXG5kZXNjcmliZShcInNtYXJ0ZmlsZVwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgIGRlc2NyaWJlKFwiLmNoZWNrc1wiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcIi5maWxlRXhpc3RzU3luY1wiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcmV0dXJuIGFuIGFjY3VyYXRlIGJvb2xlYW5cIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHNTeW5jKFwiLi90ZXN0L215dGVzdC5qc29uXCIpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHNTeW5jKFwiLi90ZXN0L25vdHRoZXJlLmpzb25cIikpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkZXNjcmliZShcIi5maWxlRXhpc3RzXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZXR1cm4gYSB3b3JraW5nIHByb21pc2VcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIikpLnNob3VsZC5iZS5Qcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgKHNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0cyhcIi4vdGVzdC9teXRlc3QuanNvblwiKSkuc2hvdWxkLmJlLmZ1bGZpbGxlZCgpO1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHMoXCIuL3Rlc3Qvbm90dGhlcmUuanNvblwiKSkuc2hvdWxkLm5vdC5iZS5mdWxmaWxsZWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH0pO1xuICAgIGRlc2NyaWJlKFwiLmZzYWN0aW9uXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgIGRlc2NyaWJlKFwiLmNvcHkoKVwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgY29weSBhIGRpcmVjdG9yeVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmZzYWN0aW9uLmNvcHkoXCIuL3Rlc3QvdGVzdGZvbGRlci9cIixcIi4vdGVzdC9hc3NldHMvXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIGNvcHkgYSBmaWxlXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUuZnNhY3Rpb24uY29weShcIi4vdGVzdC9teXRlc3QueWFtbFwiLFwiLi90ZXN0L2Fzc2V0cy9cIilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgY29weSBhIGZpbGUgYW5kIHJlbmFtZSBpdFwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmZzYWN0aW9uLmNvcHkoXCIuL3Rlc3QvbXl0ZXN0LnlhbWxcIixcIi4vdGVzdC9hc3NldHMvbXl0ZXN0UmVuYW1lZC55YW1sXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoXCIubG9jYWxcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgZGVzY3JpYmUoXCIudG9TdHJpbmdTeW5jKClcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlYWQgYSBmaWxlIHRvIGEgc3RyaW5nXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgICAgICAgICAgIHNtYXJ0ZmlsZS5sb2NhbC50b1N0cmluZ1N5bmMoXCIuL3Rlc3QvbXl0ZXN0LnR4dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgXCJTb21lIFRlc3RTdHJpbmcgJiYlJFwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVzY3JpYmUoXCIudG9PYmplY3RTeW5jKClcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlYWQgYW4gXCIgKyBcIi55YW1sXCIuYmx1ZSArIFwiIGZpbGUgdG8gYW4gb2JqZWN0XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICB2YXIgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9PYmplY3RTeW5jKFwiLi90ZXN0L215dGVzdC55YW1sXCIpO1xuICAgICAgICAgICAgICAgIHRlc3REYXRhLnNob3VsZC5oYXZlLnByb3BlcnR5KFwia2V5MVwiLFwidGhpcyB3b3Jrc1wiKTtcbiAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTJcIixcInRoaXMgd29ya3MgdG9vXCIpO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHN0YXRlIHVua25vd24gZmlsZSB0eXBlIGZvciB1bmtub3duIGZpbGUgdHlwZXNcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciB0ZXN0RGF0YSA9IHNtYXJ0ZmlsZS5sb2NhbC50b09iamVjdFN5bmMoXCIuL3Rlc3QvbXl0ZXN0LnR4dFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcmVhZCBhbiBcIiArIFwiLmpzb25cIi5ibHVlICsgXCIgZmlsZSB0byBhbiBvYmplY3RcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciB0ZXN0RGF0YSA9IHNtYXJ0ZmlsZS5sb2NhbC50b09iamVjdFN5bmMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIik7XG4gICAgICAgICAgICAgICAgdGVzdERhdGEuc2hvdWxkLmhhdmUucHJvcGVydHkoXCJrZXkxXCIsXCJ0aGlzIHdvcmtzXCIpO1xuICAgICAgICAgICAgICAgIHRlc3REYXRhLnNob3VsZC5oYXZlLnByb3BlcnR5KFwia2V5MlwiLFwidGhpcyB3b3JrcyB0b29cIik7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVzY3JpYmUoXCIudG9WaW55bFN5bmNcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlYWQgYW4gXCIgKyBcIi5qc29uIE9SIC55YW1sXCIuYmx1ZSArIFwiIGZpbGUgdG8gYW4gXCIgKyBcInZpbnlsIGZpbGUgb2JqZWN0XCIuY3lhbixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciB0ZXN0RGF0YSA9IHNtYXJ0ZmlsZS5sb2NhbC50b1ZpbnlsU3luYyhcIi4vdGVzdC9teXRlc3QuanNvblwiKTtcbiAgICAgICAgICAgICAgICAodmlueWwuaXNWaW55bCh0ZXN0RGF0YSkpLnNob3VsZC5iZS50cnVlKCk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZShcIi5yZW1vdGVcIixmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcIi50b1N0cmluZygpXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIGxvYWQgYSByZW1vdGUgZmlsZSB0byBhIHZhcmlhYmxlXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0KDUwMDApO1xuICAgICAgICAgICAgICAgIHNtYXJ0ZmlsZS5yZW1vdGUudG9TdHJpbmcoXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHVzaHJvY2tzL3NtYXJ0ZmlsZS9tYXN0ZXIvdGVzdC9teXRlc3QudHh0XCIpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlU3RyaW5nKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZC5lcXVhbChyZXNwb25zZVN0cmluZyxcIlNvbWUgVGVzdFN0cmluZyAmJiUkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcmVqZWN0IGEgUHJvbWlzZSB3aGVuIHRoZSBsaW5rIGlzIGZhbHNlXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLnJlbW90ZS50b1N0cmluZyhcImh0dHBzOi8vcHVzaC5yb2Nrcy9kb2Vzbm90ZXhpc3QudHh0XCIpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGlzIHRlc3Qgc2hvdWxkIG5vdCBiZSByZXNvbHZlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pXG59KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== diff --git a/test/test.js.map b/test/test.js.map index 379fde2..d2a299c 100644 --- a/test/test.js.map +++ b/test/test.js.map @@ -1 +1 @@ -{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,IAAI,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC5C,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACrC,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAC;QACtB,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAC;YAC9B,EAAE,CAAC,mCAAmC,EAAC;gBACnC,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACzE,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAC;YAC1B,EAAE,CAAC,iCAAiC,EAAC;gBACjC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBACxE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBAC1E,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACpF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAC;QACxB,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAC;YACtB,EAAE,CAAC,yBAAyB,EAAC;gBACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAC,gBAAgB,CAAC,CAAA;YAClE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,oBAAoB,EAAC;gBACpB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAC,gBAAgB,CAAC,CAAA;YAClE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,kCAAkC,EAAC;gBAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAC,kCAAkC,CAAC,CAAA;YACpF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAC;QACrB,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAC;YAC9B,EAAE,CAAC,gCAAgC,EAAC;gBAChC,MAAM,CAAC,KAAK,CACR,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,EACjD,sBAAsB,CACzB,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAC;YAC9B,EAAE,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,GAAG,oBAAoB,EAAC;gBACvD,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;gBAClE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,YAAY,CAAC,CAAC;gBACnD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,gBAAgB,CAAC,CAAC;YAE3D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,uDAAuD,EAAC;gBACvD,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,GAAG,oBAAoB,EAAC;gBACvD,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;gBAClE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,YAAY,CAAC,CAAC;gBACnD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAC,gBAAgB,CAAC,CAAC;YAE3D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAC;YAC3B,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,GAAG,cAAc,GAAG,mBAAmB,CAAC,IAAI,EAAC;gBACrF,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBACjE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAE/C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,SAAS,EAAC;QACf,QAAQ,CAAC,aAAa,EAAC;YACnB,EAAE,CAAC,yCAAyC,EAAC,UAAS,IAAI;gBACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,8EAA8E,CAAC;qBACpG,IAAI,CAAC,UAAS,cAAc;oBACzB,MAAM,CAAC,KAAK,CAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;oBACpD,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,gDAAgD,EAAC,UAAS,IAAI;gBAC7D,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,qCAAqC,CAAC;qBAC3D,IAAI,CAAC;oBACF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBACxD,CAAC,EAAC;oBACE,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAA;YACV,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index b136950..7c5983a 100644 --- a/test/test.ts +++ b/test/test.ts @@ -4,39 +4,7 @@ var beautylog = require("beautylog"); var should = require("should"); var vinyl = require("vinyl"); -describe("smartfile",function(){ - describe(".readFileToString".yellow,function(){ - it("should read a file to a string",function(){ - should.equal( - smartfile.readFileToString("./test/mytest.txt"), - "Some TestString &&%$" - ); - }); - }); - describe(".readFileToObject".yellow,function(){ - it("should read an " + ".yaml".blue + " file to an object",function(){ - var testData = smartfile.readFileToObject("./test/mytest.yaml"); - testData.should.have.property("key1","this works"); - testData.should.have.property("key2","this works too"); - - }); - it("should state unknown file type for unknown file types",function(){ - var testData = smartfile.readFileToObject("./test/mytest.txt"); - }); - it("should read an " + ".json".blue + " file to an object",function(){ - var testData = smartfile.readFileToObject("./test/mytest.json"); - testData.should.have.property("key1","this works"); - testData.should.have.property("key2","this works too"); - - }); - }); - describe(".readFileToVinyl".yellow,function(){ - it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan,function(){ - var testData = smartfile.readFileToVinyl("./test/mytest.json"); - (vinyl.isVinyl(testData)).should.be.true(); - - }); - }); +describe("smartfile".yellow,function(){ describe(".checks".yellow,function(){ describe(".fileExistsSync".yellow,function(){ it("should return an accurate boolean",function(){ @@ -52,15 +20,71 @@ describe("smartfile",function(){ }); }) }); - describe("copy",function(){ - it("should copy a directory",function(){ - smartfile.copy("./test/testfolder/","./test/assets/") - }); - it("should copy a file",function(){ - smartfile.copy("./test/mytest.yaml","./test/assets/") - }); - it("should copy a file and rename it",function(){ - smartfile.copy("./test/mytest.yaml","./test/assets/mytestRenamed.yaml") + describe(".fsaction".yellow,function(){ + describe(".copy()".yellow,function(){ + it("should copy a directory",function(){ + smartfile.fsaction.copy("./test/testfolder/","./test/assets/") + }); + it("should copy a file",function(){ + smartfile.fsaction.copy("./test/mytest.yaml","./test/assets/") + }); + it("should copy a file and rename it",function(){ + smartfile.fsaction.copy("./test/mytest.yaml","./test/assets/mytestRenamed.yaml") + }); }); }); + describe(".local".yellow,function(){ + describe(".toStringSync()".yellow,function(){ + it("should read a file to a string",function(){ + should.equal( + smartfile.local.toStringSync("./test/mytest.txt"), + "Some TestString &&%$" + ); + }); + }); + describe(".toObjectSync()".yellow,function(){ + it("should read an " + ".yaml".blue + " file to an object",function(){ + var testData = smartfile.local.toObjectSync("./test/mytest.yaml"); + testData.should.have.property("key1","this works"); + testData.should.have.property("key2","this works too"); + + }); + it("should state unknown file type for unknown file types",function(){ + var testData = smartfile.local.toObjectSync("./test/mytest.txt"); + }); + it("should read an " + ".json".blue + " file to an object",function(){ + var testData = smartfile.local.toObjectSync("./test/mytest.json"); + testData.should.have.property("key1","this works"); + testData.should.have.property("key2","this works too"); + + }); + }); + describe(".toVinylSync".yellow,function(){ + it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan,function(){ + var testData = smartfile.local.toVinylSync("./test/mytest.json"); + (vinyl.isVinyl(testData)).should.be.true(); + + }); + }); + }); + describe(".remote",function(){ + describe(".toString()",function(){ + it("should load a remote file to a variable",function(done){ + this.timeout(5000); + smartfile.remote.toString("https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt") + .then(function(responseString){ + should.equal(responseString,"Some TestString &&%$"); + done(); + }); + }); + it("should reject a Promise when the link is false",function(done){ + smartfile.remote.toString("https://push.rocks/doesnotexist.txt") + .then(function(){ + throw new Error("this test should not be resolved"); + },function(){ + done(); + }) + }); + }); + }) }); diff --git a/ts/index.ts b/ts/index.ts index 3d8d1d3..adee064 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -3,16 +3,16 @@ import plugins = require("./smartfile.plugins"); import SmartfileChecks = require("./smartfile.checks"); import SmartfileFsaction = require("./smartfile.fsaction"); -import SmartfileRead = require("./smartfile.read"); +import SmartfileLocal = require("./smartfile.local"); import SmartfileRemote = require("./smartfile.remote"); var smartfile:any = { - copy: SmartfileSimple.copy, + fsaction: SmartfileFsaction, checks: SmartfileChecks, - read: SmartfileRead, + local: SmartfileLocal, remote: SmartfileRemote, - requireReload: SmartfileSimple.requireReload + requireReload: SmartfileLocal.requireReload }; export = smartfile; diff --git a/ts/smartfile.read.ts b/ts/smartfile.local.ts similarity index 89% rename from ts/smartfile.read.ts rename to ts/smartfile.local.ts index 6951d90..6e0d40c 100644 --- a/ts/smartfile.read.ts +++ b/ts/smartfile.local.ts @@ -12,7 +12,7 @@ export let toFS = function(options:{from:string,toPath:string}, cb=undefined){ * @param fileTypeArg * @returns {any} */ -export let toObject = function(filePath,fileTypeArg = undefined) { +export let toObjectSync = function(filePath,fileTypeArg = undefined) { let fileType; if (typeof fileTypeArg == "undefined") { fileType = plugins.path.extname(filePath); @@ -42,7 +42,7 @@ export let toObject = function(filePath,fileTypeArg = undefined) { * @param filePath * @returns {string|Buffer|any} */ -export let toString = function(filePath) { +export let toStringSync = function(filePath) { let fileString; fileString = plugins.fs.readFileSync(filePath, "utf8"); return fileString; @@ -54,7 +54,7 @@ export let toString = function(filePath) { * @param options * @returns {number} */ -export let toVinyl = function(filePathArg,options = {}) { +export let toVinylSync = function(filePathArg,options = {}) { return plugins.vinylFile.readSync(filePathArg,options); }; diff --git a/ts/smartfile.remote.ts b/ts/smartfile.remote.ts index 79735bd..fcf9e55 100644 --- a/ts/smartfile.remote.ts +++ b/ts/smartfile.remote.ts @@ -1,26 +1,41 @@ /// import plugins = require("./smartfile.plugins"); -export let toVar = (options:{from:string,parseJson?:boolean}, cb):any => { - var bodyString:string; - request.get(options.from, function (error, response, body) { +export let toString = (fromArg:string) => { + let done = plugins.q.defer(); + plugins.request.get(fromArg, function (error, response, bodyString) { if (!error && response.statusCode == 200) { - bodyString = body; - console.log('successfully requested' + options.from); - if (options.parseJson = true) { - var jsonObject = JSON.parse(bodyString); - return jsonObject; - }; + done.resolve(bodyString); } else { - console.log('could not get get remote file from ' + options.from); - return bodyString = 'could not get file' + plugins.beautylog.error('could not get get remote file from ' + fromArg); + bodyString = undefined; + done.reject(bodyString); }; }); + return done.promise; +}; - return bodyString; -}, +export let toObject = function(fromArg:string){ + let done = plugins.q.defer(); + plugins.request.get(fromArg, function (error, response, bodyString) { + let jsonObject; + if (!error && response.statusCode == 200) { + jsonObject = JSON.parse(bodyString); + done.resolve(jsonObject); + } else { + console.log('could not get remote file from ' + fromArg); + jsonObject = undefined; + done.reject(jsonObject); + }; + }); + return done.promise; +}; -export let toFS = function(options:{from:string,toPath:string}, cb=undefined) { - var stream = request(options.from).pipe(fs.createWriteStream(options.toPath)); - if (cb != undefined) stream.on('finish',cb); -} \ No newline at end of file +export let toFs = function(from:string,toPath:string) { + var done = plugins.q.defer(); + var stream = plugins.request(from).pipe(plugins.fs.createWriteStream(toPath)); + stream.on('finish',function(){ + done.resolve(toPath); + }); + return done.promise; +}; \ No newline at end of file