diff --git a/dist/smartfile.memory.js b/dist/smartfile.memory.js
index 2a125818..336a509 100644
--- a/dist/smartfile.memory.js
+++ b/dist/smartfile.memory.js
@@ -9,6 +9,7 @@ var Readable = require("stream").Readable;
* @TODO: make it async;
*/
exports.toGulpStream = function (fileArg, baseArg) {
+ if (baseArg === void 0) { baseArg = "/"; }
var fileArray = [];
if (typeof fileArg === "string" || fileArg instanceof plugins.vinyl) {
fileArray.push(fileArg);
@@ -24,7 +25,7 @@ exports.toGulpStream = function (fileArg, baseArg) {
var file = fileArray[fileIndexArg];
file instanceof plugins.vinyl ?
vinylFileArray.push(file) :
- vinylFileArray.push(exports.toVinylFileSync(file, { filename: fileIndexArg, base: "/" }));
+ vinylFileArray.push(exports.toVinylFileSync(file, { filename: fileIndexArg, base: baseArg }));
}
;
var stream = new Readable({ objectMode: true });
@@ -66,11 +67,51 @@ exports.toVinylArraySync = function (arrayArg, optionsArg) {
}
return vinylArray;
};
-exports.toFs = function (fileArg, fileNameArg, fileBaseArg) {
- if (fileArg instanceof plugins.vinyl) {
- }
+/**
+ * takes a vinylFile object and converts it to String
+ */
+exports.toStringSync = function (fileArg) {
+ return fileArg.contents.toString("utf8");
};
-exports.toFsSync = function () {
+/**
+ * writes string or vinyl file to disk.
+ * @param fileArg
+ * @param fileNameArg
+ * @param fileBaseArg
+ */
+exports.toFs = function (fileArg, optionsArg) {
+ var done = plugins.q.defer();
+ //function checks to abort if needed
+ if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
+ throw new Error("expected a valid arguments");
+ if (!(typeof optionsArg.filePath === "string"))
+ optionsArg.filePath = "/";
+ var filePath = plugins.path.join(optionsArg.filePath, optionsArg.fileName);
+ var fileString;
+ if (fileArg instanceof plugins.vinyl) {
+ fileString = exports.toStringSync(fileArg);
+ }
+ else if (typeof fileArg === "string") {
+ fileString = fileArg;
+ }
+ plugins.fs.writeFile(filePath, fileString, "utf8", done.resolve);
+ return done.promise;
+};
+exports.toFsSync = function (fileArg, optionsArg) {
+ //function checks to abort if needed
+ if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
+ throw new Error("expected a valid arguments");
+ if (!(typeof optionsArg.filePath === "string"))
+ optionsArg.filePath = "/";
+ var filePath = plugins.path.join(optionsArg.filePath, optionsArg.fileName);
+ var fileString;
+ if (fileArg instanceof plugins.vinyl) {
+ fileString = exports.toStringSync(fileArg);
+ }
+ else if (typeof fileArg === "string") {
+ fileString = fileArg;
+ }
+ plugins.fs.writeFileSync(filePath, fileString, "utf8");
};
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNENBQTRDOztBQUU1QyxJQUFPLE9BQU8sV0FBVyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hELElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDMUM7Ozs7O0dBS0c7QUFDUSxvQkFBWSxHQUFHLFVBQVMsT0FBcUQsRUFBQyxPQUFlO0lBQ3BHLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUVuQixFQUFFLENBQUEsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDO1FBQ2hFLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQztRQUMvQixTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxjQUFjLEdBQW1CLEVBQUUsQ0FBQyxDQUFDLHdDQUF3QztJQUVqRixHQUFHLENBQUMsQ0FBQyxJQUFJLFlBQVksSUFBSSxTQUFTLENBQUMsQ0FBQSxDQUFDO1FBQ2hDLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxJQUFJLFlBQVksT0FBTyxDQUFDLEtBQUs7WUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyx1QkFBZSxDQUFDLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBQyxZQUFZLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEQsR0FBRyxDQUFBLENBQUMsSUFBSSxpQkFBaUIsSUFBSSxjQUFjLENBQUMsQ0FBQSxDQUFDO1FBQ3pDLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUFBLENBQUM7SUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsdUJBQXVCO0lBQzFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNRLHVCQUFlLEdBQUcsVUFBUyxPQUFjLEVBQUMsVUFBeUQ7SUFDMUcsVUFBVSxHQUFFLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQztJQUN0RSxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztJQUNsRSxVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNsRCxVQUFVLENBQUMsT0FBTyxHQUFHLEtBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUN6RCxJQUFJLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1FBQ3JCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUMvRSxRQUFRLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDO0tBQ2hDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNRLHdCQUFnQixHQUFHLFVBQVMsUUFBaUIsRUFBQyxVQUF5RDtJQUM5RyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDcEIsR0FBRyxDQUFBLENBQUMsSUFBSSxjQUFjLElBQUksUUFBUSxDQUFDLENBQUEsQ0FBQztRQUNoQyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsVUFBVSxDQUFDLElBQUksQ0FBQyx1QkFBZSxDQUFDLFFBQVEsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUdTLFlBQUksR0FBRyxVQUFTLE9BQTRCLEVBQUMsV0FBbUIsRUFBQyxXQUFtQjtJQUMzRixFQUFFLENBQUMsQ0FBQyxPQUFPLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUM7SUFFdEMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVTLGdCQUFRLEdBQUc7QUFFdEIsQ0FBQyxDQUFDIiwiZmlsZSI6InNtYXJ0ZmlsZS5tZW1vcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5sZXQgUmVhZGFibGUgPSByZXF1aXJlKFwic3RyZWFtXCIpLlJlYWRhYmxlO1xuLyoqXG4gKiBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIGd1bHAgc3RyZWFtIGZyb20gZmlsZXN0cmluZ1xuICogQHBhcmFtIGZpbGVBcmdcbiAqIEByZXR1cm5zIHN0cmVhbS5SZWFkYWJsZVxuICogQFRPRE86IG1ha2UgaXQgYXN5bmM7XG4gKi9cbmV4cG9ydCBsZXQgdG9HdWxwU3RyZWFtID0gZnVuY3Rpb24oZmlsZUFyZzpzdHJpbmd8c3RyaW5nW118cGx1Z2lucy52aW55bHxwbHVnaW5zLnZpbnlsW10sYmFzZUFyZz86c3RyaW5nKXtcbiAgICBsZXQgZmlsZUFycmF5ID0gW107XG5cbiAgICBpZih0eXBlb2YgZmlsZUFyZyA9PT0gXCJzdHJpbmdcIiB8fCBmaWxlQXJnIGluc3RhbmNlb2YgcGx1Z2lucy52aW55bCl7IC8vIG1ha2Ugc3VyZSB3ZSB3b3JrIHdpdGggYW4gYXJyYXkgbGF0ZXIgb25cbiAgICAgICAgZmlsZUFycmF5LnB1c2goZmlsZUFyZyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpbGVBcmcpKXtcbiAgICAgICAgZmlsZUFycmF5ID0gZmlsZUFyZztcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmaWxlQXJnIGhhcyB1bmtub3duIGZvcm1hdFwiKTtcbiAgICB9XG5cbiAgICBsZXQgdmlueWxGaWxlQXJyYXk6cGx1Z2lucy52aW55bFtdID0gW107IC8vd2Ugd2FudCB0byBoYXZlIGFuIGFycmF5IG9mIHZpbnlsRmlsZXNcblxuICAgIGZvciAobGV0IGZpbGVJbmRleEFyZyBpbiBmaWxlQXJyYXkpeyAvL2NvbnZlcnQgZmlsZUFycmF5IGluIHZpbnlsQXJyYXlcbiAgICAgICAgbGV0IGZpbGUgPSBmaWxlQXJyYXlbZmlsZUluZGV4QXJnXTtcbiAgICAgICAgZmlsZSBpbnN0YW5jZW9mIHBsdWdpbnMudmlueWwgP1xuICAgICAgICAgICAgdmlueWxGaWxlQXJyYXkucHVzaChmaWxlKSA6XG4gICAgICAgICAgICB2aW55bEZpbGVBcnJheS5wdXNoKHRvVmlueWxGaWxlU3luYyhmaWxlLHtmaWxlbmFtZTpmaWxlSW5kZXhBcmcsYmFzZTpcIi9cIn0pKTtcbiAgICB9O1xuXG4gICAgbGV0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZSh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gICAgZm9yKGxldCB2aW55bEZpbGVJbmRleEFyZyBpbiB2aW55bEZpbGVBcnJheSl7XG4gICAgICAgIGxldCB2aW55bEZpbGUgPSB2aW55bEZpbGVBcnJheVt2aW55bEZpbGVJbmRleEFyZ107XG4gICAgICAgIHN0cmVhbS5wdXNoKHZpbnlsRmlsZSk7XG4gICAgfTtcbiAgICBzdHJlYW0ucHVzaChudWxsKTsgLy9zaWduYWwgZW5kIG9mIHN0cmVhbTtcbiAgICByZXR1cm4gc3RyZWFtO1xufTtcblxuLyoqXG4gKiB0YWtlcyBhIHN0cmluZyBhbmQgY29udmVydHMgaXQgdG8gdmlueWwgZmlsZVxuICogQHBhcmFtIGZpbGVBcmdcbiAqIEBwYXJhbSBvcHRpb25zQXJnXG4gKi9cbmV4cG9ydCBsZXQgdG9WaW55bEZpbGVTeW5jID0gZnVuY3Rpb24oZmlsZUFyZzpzdHJpbmcsb3B0aW9uc0FyZz86e2ZpbGVuYW1lOnN0cmluZyxiYXNlOnN0cmluZyxyZWxQYXRoPzpzdHJpbmd9KXtcbiAgICBvcHRpb25zQXJnPyB2b2lkKDApIDogb3B0aW9uc0FyZyA9IHtmaWxlbmFtZTogXCJ2aW55bGZpbGVcIiwgYmFzZTogXCIvXCJ9O1xuICAgIG9wdGlvbnNBcmcuZmlsZW5hbWUgPyB2b2lkKDApIDogb3B0aW9uc0FyZy5maWxlbmFtZSA9IFwidmlueWxmaWxlXCI7XG4gICAgb3B0aW9uc0FyZy5iYXNlID8gdm9pZCgwKSA6IG9wdGlvbnNBcmcuYmFzZSA9IFwiL1wiO1xuICAgIG9wdGlvbnNBcmcucmVsUGF0aCA/IHZvaWQoXCIwXCIpIDogb3B0aW9uc0FyZy5yZWxQYXRoID0gXCJcIjtcbiAgICBsZXQgdmlueWxGaWxlID0gbmV3IHBsdWdpbnMudmlueWwoe1xuICAgICAgICBiYXNlOiBvcHRpb25zQXJnLmJhc2UsXG4gICAgICAgIHBhdGg6IHBsdWdpbnMucGF0aC5qb2luKG9wdGlvbnNBcmcuYmFzZSxvcHRpb25zQXJnLnJlbFBhdGgsb3B0aW9uc0FyZy5maWxlbmFtZSksXG4gICAgICAgIGNvbnRlbnRzOiBuZXcgQnVmZmVyKGZpbGVBcmcpXG4gICAgfSk7XG4gICAgcmV0dXJuIHZpbnlsRmlsZTtcbn07XG5cbi8qKlxuICogdGFrZXMgYSBzdHJpbmcgYXJyYXkgYW5kIHNvbWUgb3B0aW9ucyBhbmQgcmV0dXJucyBhIHZpbnlsZmlsZSBhcnJheVxuICogQHBhcmFtIGFycmF5QXJnXG4gKiBAcGFyYW0gb3B0aW9uc0FyZ1xuICovXG5leHBvcnQgbGV0IHRvVmlueWxBcnJheVN5bmMgPSBmdW5jdGlvbihhcnJheUFyZzpzdHJpbmdbXSxvcHRpb25zQXJnPzp7ZmlsZW5hbWU6c3RyaW5nLGJhc2U6c3RyaW5nLHJlbFBhdGg/OnN0cmluZ30pe1xuICAgIGxldCB2aW55bEFycmF5ID0gW107XG4gICAgZm9yKGxldCBzdHJpbmdJbmRleEFyZyBpbiBhcnJheUFyZyl7XG4gICAgICAgIGxldCBteVN0cmluZyA9IGFycmF5QXJnW3N0cmluZ0luZGV4QXJnXTtcbiAgICAgICAgdmlueWxBcnJheS5wdXNoKHRvVmlueWxGaWxlU3luYyhteVN0cmluZyxvcHRpb25zQXJnKSk7XG4gICAgfVxuICAgIHJldHVybiB2aW55bEFycmF5O1xufTtcblxuXG5leHBvcnQgbGV0IHRvRnMgPSBmdW5jdGlvbihmaWxlQXJnOnN0cmluZ3xwbHVnaW5zLnZpbnlsLGZpbGVOYW1lQXJnPzpzdHJpbmcsZmlsZUJhc2VBcmc/OnN0cmluZyl7XG4gICAgaWYgKGZpbGVBcmcgaW5zdGFuY2VvZiBwbHVnaW5zLnZpbnlsKXtcblxuICAgIH1cbn07XG5cbmV4cG9ydCBsZXQgdG9Gc1N5bmMgPSBmdW5jdGlvbigpe1xuICAgIFxufTtcblxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
+//# sourceMappingURL=data:application/json;base64,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LFFBQVEsQ0FBQyxDQUFDO0lBQzFFLElBQUksVUFBaUIsQ0FBQztJQUV0QixFQUFFLENBQUMsQ0FBQyxPQUFPLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUM7UUFDbEMsVUFBVSxHQUFHLG9CQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFVBQVUsR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsTUFBTSxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDIiwiZmlsZSI6InNtYXJ0ZmlsZS5tZW1vcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5sZXQgUmVhZGFibGUgPSByZXF1aXJlKFwic3RyZWFtXCIpLlJlYWRhYmxlO1xuLyoqXG4gKiBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIGd1bHAgc3RyZWFtIGZyb20gZmlsZXN0cmluZ1xuICogQHBhcmFtIGZpbGVBcmdcbiAqIEByZXR1cm5zIHN0cmVhbS5SZWFkYWJsZVxuICogQFRPRE86IG1ha2UgaXQgYXN5bmM7XG4gKi9cbmV4cG9ydCBsZXQgdG9HdWxwU3RyZWFtID0gZnVuY3Rpb24oZmlsZUFyZzpzdHJpbmd8c3RyaW5nW118cGx1Z2lucy52aW55bHxwbHVnaW5zLnZpbnlsW10sYmFzZUFyZzpzdHJpbmcgPSBcIi9cIil7XG4gICAgbGV0IGZpbGVBcnJheSA9IFtdO1xuXG4gICAgaWYodHlwZW9mIGZpbGVBcmcgPT09IFwic3RyaW5nXCIgfHwgZmlsZUFyZyBpbnN0YW5jZW9mIHBsdWdpbnMudmlueWwpeyAvLyBtYWtlIHN1cmUgd2Ugd29yayB3aXRoIGFuIGFycmF5IGxhdGVyIG9uXG4gICAgICAgIGZpbGVBcnJheS5wdXNoKGZpbGVBcmcpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaWxlQXJnKSl7XG4gICAgICAgIGZpbGVBcnJheSA9IGZpbGVBcmc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZmlsZUFyZyBoYXMgdW5rbm93biBmb3JtYXRcIik7XG4gICAgfVxuXG4gICAgbGV0IHZpbnlsRmlsZUFycmF5OnBsdWdpbnMudmlueWxbXSA9IFtdOyAvL3dlIHdhbnQgdG8gaGF2ZSBhbiBhcnJheSBvZiB2aW55bEZpbGVzXG5cbiAgICBmb3IgKGxldCBmaWxlSW5kZXhBcmcgaW4gZmlsZUFycmF5KXsgLy9jb252ZXJ0IGZpbGVBcnJheSBpbiB2aW55bEFycmF5XG4gICAgICAgIGxldCBmaWxlID0gZmlsZUFycmF5W2ZpbGVJbmRleEFyZ107XG4gICAgICAgIGZpbGUgaW5zdGFuY2VvZiBwbHVnaW5zLnZpbnlsID9cbiAgICAgICAgICAgIHZpbnlsRmlsZUFycmF5LnB1c2goZmlsZSkgOlxuICAgICAgICAgICAgdmlueWxGaWxlQXJyYXkucHVzaCh0b1ZpbnlsRmlsZVN5bmMoZmlsZSx7ZmlsZW5hbWU6ZmlsZUluZGV4QXJnLGJhc2U6YmFzZUFyZ30pKTtcbiAgICB9O1xuXG4gICAgbGV0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZSh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gICAgZm9yKGxldCB2aW55bEZpbGVJbmRleEFyZyBpbiB2aW55bEZpbGVBcnJheSl7XG4gICAgICAgIGxldCB2aW55bEZpbGUgPSB2aW55bEZpbGVBcnJheVt2aW55bEZpbGVJbmRleEFyZ107XG4gICAgICAgIHN0cmVhbS5wdXNoKHZpbnlsRmlsZSk7XG4gICAgfTtcbiAgICBzdHJlYW0ucHVzaChudWxsKTsgLy9zaWduYWwgZW5kIG9mIHN0cmVhbTtcbiAgICByZXR1cm4gc3RyZWFtO1xufTtcblxuLyoqXG4gKiB0YWtlcyBhIHN0cmluZyBhbmQgY29udmVydHMgaXQgdG8gdmlueWwgZmlsZVxuICogQHBhcmFtIGZpbGVBcmdcbiAqIEBwYXJhbSBvcHRpb25zQXJnXG4gKi9cbmV4cG9ydCBsZXQgdG9WaW55bEZpbGVTeW5jID0gZnVuY3Rpb24oZmlsZUFyZzpzdHJpbmcsb3B0aW9uc0FyZz86e2ZpbGVuYW1lPzpzdHJpbmcsYmFzZT86c3RyaW5nLHJlbFBhdGg/OnN0cmluZ30pe1xuICAgIG9wdGlvbnNBcmc/IHZvaWQoMCkgOiBvcHRpb25zQXJnID0ge2ZpbGVuYW1lOiBcInZpbnlsZmlsZVwiLCBiYXNlOiBcIi9cIn07XG4gICAgb3B0aW9uc0FyZy5maWxlbmFtZSA/IHZvaWQoMCkgOiBvcHRpb25zQXJnLmZpbGVuYW1lID0gXCJ2aW55bGZpbGVcIjtcbiAgICBvcHRpb25zQXJnLmJhc2UgPyB2b2lkKDApIDogb3B0aW9uc0FyZy5iYXNlID0gXCIvXCI7XG4gICAgb3B0aW9uc0FyZy5yZWxQYXRoID8gdm9pZChcIjBcIikgOiBvcHRpb25zQXJnLnJlbFBhdGggPSBcIlwiO1xuICAgIGxldCB2aW55bEZpbGUgPSBuZXcgcGx1Z2lucy52aW55bCh7XG4gICAgICAgIGJhc2U6IG9wdGlvbnNBcmcuYmFzZSxcbiAgICAgICAgcGF0aDogcGx1Z2lucy5wYXRoLmpvaW4ob3B0aW9uc0FyZy5iYXNlLG9wdGlvbnNBcmcucmVsUGF0aCxvcHRpb25zQXJnLmZpbGVuYW1lKSxcbiAgICAgICAgY29udGVudHM6IG5ldyBCdWZmZXIoZmlsZUFyZylcbiAgICB9KTtcbiAgICByZXR1cm4gdmlueWxGaWxlO1xufTtcblxuLyoqXG4gKiB0YWtlcyBhIHN0cmluZyBhcnJheSBhbmQgc29tZSBvcHRpb25zIGFuZCByZXR1cm5zIGEgdmlueWxmaWxlIGFycmF5XG4gKiBAcGFyYW0gYXJyYXlBcmdcbiAqIEBwYXJhbSBvcHRpb25zQXJnXG4gKi9cbmV4cG9ydCBsZXQgdG9WaW55bEFycmF5U3luYyA9IGZ1bmN0aW9uKGFycmF5QXJnOnN0cmluZ1tdLG9wdGlvbnNBcmc/OntmaWxlbmFtZT86c3RyaW5nLGJhc2U/OnN0cmluZyxyZWxQYXRoPzpzdHJpbmd9KXtcbiAgICBsZXQgdmlueWxBcnJheSA9IFtdO1xuICAgIGZvcihsZXQgc3RyaW5nSW5kZXhBcmcgaW4gYXJyYXlBcmcpe1xuICAgICAgICBsZXQgbXlTdHJpbmcgPSBhcnJheUFyZ1tzdHJpbmdJbmRleEFyZ107XG4gICAgICAgIHZpbnlsQXJyYXkucHVzaCh0b1ZpbnlsRmlsZVN5bmMobXlTdHJpbmcsb3B0aW9uc0FyZykpO1xuICAgIH1cbiAgICByZXR1cm4gdmlueWxBcnJheTtcbn07XG5cbi8qKlxuICogdGFrZXMgYSB2aW55bEZpbGUgb2JqZWN0IGFuZCBjb252ZXJ0cyBpdCB0byBTdHJpbmdcbiAqL1xuZXhwb3J0IGxldCB0b1N0cmluZ1N5bmMgPSBmdW5jdGlvbihmaWxlQXJnOnBsdWdpbnMudmlueWwpe1xuICAgIHJldHVybiBmaWxlQXJnLmNvbnRlbnRzLnRvU3RyaW5nKFwidXRmOFwiKTtcbn07XG5cblxuLyoqXG4gKiB3cml0ZXMgc3RyaW5nIG9yIHZpbnlsIGZpbGUgdG8gZGlzay5cbiAqIEBwYXJhbSBmaWxlQXJnXG4gKiBAcGFyYW0gZmlsZU5hbWVBcmdcbiAqIEBwYXJhbSBmaWxlQmFzZUFyZ1xuICovXG5leHBvcnQgbGV0IHRvRnMgPSBmdW5jdGlvbihmaWxlQXJnLG9wdGlvbnNBcmc6e2ZpbGVOYW1lOnN0cmluZyxmaWxlUGF0aDpzdHJpbmd9KXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuXG4gICAgLy9mdW5jdGlvbiBjaGVja3MgdG8gYWJvcnQgaWYgbmVlZGVkXG4gICAgaWYgKCFmaWxlQXJnIHx8ICFvcHRpb25zQXJnIHx8ICEodHlwZW9mIG9wdGlvbnNBcmcuZmlsZU5hbWUgPT09IFwic3RyaW5nXCIpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJleHBlY3RlZCBhIHZhbGlkIGFyZ3VtZW50c1wiKTtcbiAgICBpZiAoISh0eXBlb2Ygb3B0aW9uc0FyZy5maWxlUGF0aCA9PT0gXCJzdHJpbmdcIikpIG9wdGlvbnNBcmcuZmlsZVBhdGggPSBcIi9cIjtcblxuICAgIGxldCBmaWxlUGF0aDpzdHJpbmcgPSBwbHVnaW5zLnBhdGguam9pbihvcHRpb25zQXJnLmZpbGVQYXRoLG9wdGlvbnNBcmcuZmlsZU5hbWUpO1xuICAgIGxldCBmaWxlU3RyaW5nOnN0cmluZztcbiAgICBpZiAoZmlsZUFyZyBpbnN0YW5jZW9mIHBsdWdpbnMudmlueWwpe1xuICAgICAgICBmaWxlU3RyaW5nID0gdG9TdHJpbmdTeW5jKGZpbGVBcmcpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpbGVBcmcgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZmlsZVN0cmluZyA9IGZpbGVBcmc7XG4gICAgfVxuICAgIHBsdWdpbnMuZnMud3JpdGVGaWxlKGZpbGVQYXRoLGZpbGVTdHJpbmcsXCJ1dGY4XCIsZG9uZS5yZXNvbHZlKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufTtcblxuZXhwb3J0IGxldCB0b0ZzU3luYyA9IGZ1bmN0aW9uKGZpbGVBcmcsb3B0aW9uc0FyZzp7ZmlsZU5hbWU6c3RyaW5nLGZpbGVQYXRoOnN0cmluZ30pe1xuICAgIC8vZnVuY3Rpb24gY2hlY2tzIHRvIGFib3J0IGlmIG5lZWRlZFxuICAgIGlmICghZmlsZUFyZyB8fCAhb3B0aW9uc0FyZyB8fCAhKHR5cGVvZiBvcHRpb25zQXJnLmZpbGVOYW1lID09PSBcInN0cmluZ1wiKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZXhwZWN0ZWQgYSB2YWxpZCBhcmd1bWVudHNcIik7XG4gICAgaWYgKCEodHlwZW9mIG9wdGlvbnNBcmcuZmlsZVBhdGggPT09IFwic3RyaW5nXCIpKSBvcHRpb25zQXJnLmZpbGVQYXRoID0gXCIvXCI7XG5cbiAgICBsZXQgZmlsZVBhdGggPSBwbHVnaW5zLnBhdGguam9pbihvcHRpb25zQXJnLmZpbGVQYXRoLG9wdGlvbnNBcmcuZmlsZU5hbWUpO1xuICAgIGxldCBmaWxlU3RyaW5nOnN0cmluZztcblxuICAgIGlmIChmaWxlQXJnIGluc3RhbmNlb2YgcGx1Z2lucy52aW55bCl7XG4gICAgICAgIGZpbGVTdHJpbmcgPSB0b1N0cmluZ1N5bmMoZmlsZUFyZyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZmlsZUFyZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmaWxlU3RyaW5nID0gZmlsZUFyZztcbiAgICB9XG4gICAgcGx1Z2lucy5mcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLGZpbGVTdHJpbmcsXCJ1dGY4XCIpO1xufTtcblxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
diff --git a/npmts.json b/npmts.json
index d0a5665..ba3d647 100644
--- a/npmts.json
+++ b/npmts.json
@@ -1,4 +1,5 @@
{
"mode":"default",
- "codecov":true
+ "codecov":true,
+ "coverageTreshold":80
}
\ No newline at end of file
diff --git a/test/test.js b/test/test.js
index 702e466..14f40f1 100644
--- a/test/test.js
+++ b/test/test.js
@@ -1,9 +1,11 @@
+"use strict";
///
var smartfile = require("../dist/index.js");
var beautylog = require("beautylog");
+var gulp = require("gulp");
+var gFunction = require("gulp-function");
var should = require("should");
var vinyl = require("vinyl");
-var gFunction = require("gulp-function");
describe("smartfile".yellow, function () {
describe(".checks".yellow, function () {
describe(".fileExistsSync".yellow, function () {
@@ -74,6 +76,62 @@ describe("smartfile".yellow, function () {
});
});
});
+ describe(".memory", function () {
+ describe(".toGulpStream()", function () {
+ it("should produce a valid gulp stream", function () {
+ var localArray = ["test1", "test2", "test3"];
+ smartfile.memory.toGulpStream(localArray)
+ .pipe(gulp.dest("./test/temp/"));
+ });
+ });
+ describe("toVinylFileSync()", function () {
+ it("should produce a vinylFile", function () {
+ var localString = "myString";
+ var localOptions = { filename: "vinylfile2", base: "/someDir" };
+ (smartfile.memory.toVinylFileSync(localString, localOptions) instanceof vinyl).should.be.true();
+ });
+ });
+ describe("toVinylArraySync()", function () {
+ it("should produce a an array of vinylfiles", function () {
+ var localStringArray = ["string1", "string2", "string3"];
+ var localOptions = { filename: "vinylfile2", base: "/someDir" };
+ var testResult = smartfile.memory.toVinylArraySync(localStringArray, localOptions);
+ testResult.should.be.Array();
+ (testResult.length === 3).should.be.true();
+ for (var myKey in testResult) {
+ (testResult[myKey] instanceof vinyl).should.be.true();
+ }
+ });
+ });
+ describe("toStringSync()", function () {
+ it("should produce a String from vinyl file", function () {
+ var localString = smartfile.memory.toStringSync(new vinyl({
+ base: "/",
+ path: "/test.txt",
+ contents: new Buffer("myString")
+ }));
+ localString.should.equal("myString");
+ });
+ });
+ describe("toFs()", function () {
+ it("should write a file to disk and return a promise", function (done) {
+ var localString = "myString";
+ smartfile.memory.toFs(localString, {
+ fileName: "./test/temp/testMemToFs.txt",
+ filePath: process.cwd()
+ }).then(done);
+ });
+ });
+ describe("toFsSync()", function () {
+ it("should write a file to disk and return true if successfull", function () {
+ var localString = "myString";
+ smartfile.memory.toFsSync(localString, {
+ fileName: "./test/temp/testMemToFsSync.txt",
+ filePath: process.cwd()
+ });
+ });
+ });
+ });
describe(".remote", function () {
describe("toGulpStreamSync()", function () {
it("should produce a gulp stream", function (done) {
@@ -104,4 +162,4 @@ describe("smartfile".yellow, function () {
});
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0RBQWdEO0FBQ2hELElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzVDLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNyQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV6QyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBQztJQUN4QixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQztRQUN0QixRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFDO1lBQzlCLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBQztnQkFDbkMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUM7WUFDMUIsRUFBRSxDQUFDLGlDQUFpQyxFQUFDO2dCQUNqQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4RSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwRixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBQztRQUN4QixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQztZQUN0QixFQUFFLENBQUMseUJBQXlCLEVBQUM7Z0JBQ3pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQ2hFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsRUFBRSxDQUFDLG9CQUFvQixFQUFDO2dCQUNwQixTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBQyxjQUFjLENBQUMsQ0FBQTtZQUNoRSxDQUFDLENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBQztnQkFDbEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUMsZ0NBQWdDLENBQUMsQ0FBQTtZQUNsRixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLFdBQVcsRUFBQztZQUNqQixFQUFFLENBQUMsbUNBQW1DLEVBQUM7WUFFdkMsQ0FBQyxDQUFDLENBQUM7WUFDSCxFQUFFLENBQUMsNEJBQTRCLEVBQUM7WUFFaEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUM7UUFDckIsUUFBUSxDQUFDLHVDQUF1QyxFQUFDO1lBQzdDLEVBQUUsQ0FBQyw4QkFBOEIsRUFBQyxVQUFTLElBQUk7Z0JBQzNDLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO3FCQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7cUJBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUM7WUFDOUIsRUFBRSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLEVBQUM7Z0JBQ3ZELElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ2xFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ25ELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUUzRCxDQUFDLENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyx1REFBdUQsRUFBQztnQkFDdkQsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHLG9CQUFvQixFQUFDO2dCQUN2RCxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNsRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuRCxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFM0QsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUM7WUFDOUIsRUFBRSxDQUFDLGdDQUFnQyxFQUFDO2dCQUNoQyxNQUFNLENBQUMsS0FBSyxDQUNSLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQ2pELHNCQUFzQixDQUN6QixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFDO1lBQzNCLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsY0FBYyxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBQztnQkFDckYsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUvQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsU0FBUyxFQUFDO1FBQ2YsUUFBUSxDQUFDLG9CQUFvQixFQUFDO1lBQzFCLEVBQUUsQ0FBQyw4QkFBOEIsRUFBQyxVQUFTLElBQUk7Z0JBQzNDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFDLG9FQUFvRSxDQUFDO3FCQUMvRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7cUJBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxhQUFhLEVBQUM7WUFDbkIsRUFBRSxDQUFDLHlDQUF5QyxFQUFDLFVBQVMsSUFBSTtnQkFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsOEVBQThFLENBQUM7cUJBQ3BHLElBQUksQ0FBQyxVQUFTLGNBQWM7b0JBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3BELElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDSCxFQUFFLENBQUMsZ0RBQWdELEVBQUMsVUFBUyxJQUFJO2dCQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQixTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQztxQkFDM0QsSUFBSSxDQUFDO29CQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztnQkFDeEQsQ0FBQyxFQUFDO29CQUNFLElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFBO1lBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi90cy90eXBpbmdzL21haW4uZC50c1wiIC8+XG5sZXQgc21hcnRmaWxlID0gcmVxdWlyZShcIi4uL2Rpc3QvaW5kZXguanNcIik7XG5sZXQgYmVhdXR5bG9nID0gcmVxdWlyZShcImJlYXV0eWxvZ1wiKTtcbmxldCBzaG91bGQgPSByZXF1aXJlKFwic2hvdWxkXCIpO1xubGV0IHZpbnlsID0gcmVxdWlyZShcInZpbnlsXCIpO1xubGV0IGdGdW5jdGlvbiA9IHJlcXVpcmUoXCJndWxwLWZ1bmN0aW9uXCIpO1xuXG5kZXNjcmliZShcInNtYXJ0ZmlsZVwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgIGRlc2NyaWJlKFwiLmNoZWNrc1wiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcIi5maWxlRXhpc3RzU3luY1wiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcmV0dXJuIGFuIGFjY3VyYXRlIGJvb2xlYW5cIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHNTeW5jKFwiLi90ZXN0L215dGVzdC5qc29uXCIpKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHNTeW5jKFwiLi90ZXN0L25vdHRoZXJlLmpzb25cIikpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkZXNjcmliZShcIi5maWxlRXhpc3RzXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZXR1cm4gYSB3b3JraW5nIHByb21pc2VcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIikpLnNob3VsZC5iZS5Qcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgKHNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0cyhcIi4vdGVzdC9teXRlc3QuanNvblwiKSkuc2hvdWxkLmJlLmZ1bGZpbGxlZCgpO1xuICAgICAgICAgICAgICAgIChzbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHMoXCIuL3Rlc3Qvbm90dGhlcmUuanNvblwiKSkuc2hvdWxkLm5vdC5iZS5mdWxmaWxsZWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH0pO1xuICAgIGRlc2NyaWJlKFwiLmZzYWN0aW9uXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgIGRlc2NyaWJlKFwiLmNvcHkoKVwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgY29weSBhIGRpcmVjdG9yeVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmZzYWN0aW9uLmNvcHkoXCIuL3Rlc3QvdGVzdGZvbGRlci9cIixcIi4vdGVzdC90ZW1wL1wiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCBjb3B5IGEgZmlsZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmZzYWN0aW9uLmNvcHkoXCIuL3Rlc3QvbXl0ZXN0LnlhbWxcIixcIi4vdGVzdC90ZW1wL1wiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCBjb3B5IGEgZmlsZSBhbmQgcmVuYW1lIGl0XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUuZnNhY3Rpb24uY29weShcIi4vdGVzdC9teXRlc3QueWFtbFwiLFwiLi90ZXN0L3RlbXAvbXl0ZXN0UmVuYW1lZC55YW1sXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnJlbW92ZSgpXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlbW92ZSBhbiBlbnRpcmUgZGlyZWN0b3J5XCIsZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZW1vdmUgc2luZ2xlIGZpbGVzXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZShcIi5sb2NhbFwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcInRvR3VscFN0cmVhbVN5bmMoKSBhbmQgdG9HdWxwRGVzdFN5bmNcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcHJvZHVjZSBhIGd1bHAgc3RyZWFtXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmxvY2FsLnRvR3VscFN0cmVhbVN5bmMoXCIuL3Rlc3QvbXkqXCIpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHNtYXJ0ZmlsZS5sb2NhbC50b0d1bHBEZXN0U3luYyhcIi4vdGVzdC90ZW1wL1wiKSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoZ0Z1bmN0aW9uKGRvbmUsXCJhdEVuZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvT2JqZWN0U3luYygpXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWFkIGFuIFwiICsgXCIueWFtbFwiLmJsdWUgKyBcIiBmaWxlIHRvIGFuIG9iamVjdFwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgbGV0IHRlc3REYXRhID0gc21hcnRmaWxlLmxvY2FsLnRvT2JqZWN0U3luYyhcIi4vdGVzdC9teXRlc3QueWFtbFwiKTtcbiAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTFcIixcInRoaXMgd29ya3NcIik7XG4gICAgICAgICAgICAgICAgdGVzdERhdGEuc2hvdWxkLmhhdmUucHJvcGVydHkoXCJrZXkyXCIsXCJ0aGlzIHdvcmtzIHRvb1wiKTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCBzdGF0ZSB1bmtub3duIGZpbGUgdHlwZSBmb3IgdW5rbm93biBmaWxlIHR5cGVzXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9PYmplY3RTeW5jKFwiLi90ZXN0L215dGVzdC50eHRcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlYWQgYW4gXCIgKyBcIi5qc29uXCIuYmx1ZSArIFwiIGZpbGUgdG8gYW4gb2JqZWN0XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9PYmplY3RTeW5jKFwiLi90ZXN0L215dGVzdC5qc29uXCIpO1xuICAgICAgICAgICAgICAgIHRlc3REYXRhLnNob3VsZC5oYXZlLnByb3BlcnR5KFwia2V5MVwiLFwidGhpcyB3b3Jrc1wiKTtcbiAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTJcIixcInRoaXMgd29ya3MgdG9vXCIpO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvU3RyaW5nU3luYygpXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWFkIGEgZmlsZSB0byBhIHN0cmluZ1wiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICAgICAgICAgICBzbWFydGZpbGUubG9jYWwudG9TdHJpbmdTeW5jKFwiLi90ZXN0L215dGVzdC50eHRcIiksXG4gICAgICAgICAgICAgICAgICAgIFwiU29tZSBUZXN0U3RyaW5nICYmJSRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvVmlueWxTeW5jXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWFkIGFuIFwiICsgXCIuanNvbiBPUiAueWFtbFwiLmJsdWUgKyBcIiBmaWxlIHRvIGFuIFwiICsgXCJ2aW55bCBmaWxlIG9iamVjdFwiLmN5YW4sZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9WaW55bFN5bmMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIik7XG4gICAgICAgICAgICAgICAgKHZpbnlsLmlzVmlueWwodGVzdERhdGEpKS5zaG91bGQuYmUudHJ1ZSgpO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoXCIucmVtb3RlXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgZGVzY3JpYmUoXCJ0b0d1bHBTdHJlYW1TeW5jKClcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcHJvZHVjZSBhIGd1bHAgc3RyZWFtXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLnJlbW90ZS50b0d1bHBTdHJlYW1TeW5jKFwibXl0ZXN0LnR4dFwiLFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3B1c2hyb2Nrcy9zbWFydGZpbGUvbWFzdGVyL3Rlc3QvXCIpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHNtYXJ0ZmlsZS5sb2NhbC50b0d1bHBEZXN0U3luYyhcIi4vdGVzdC90ZW1wL1wiKSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoZ0Z1bmN0aW9uKGRvbmUsXCJhdEVuZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvU3RyaW5nKClcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgbG9hZCBhIHJlbW90ZSBmaWxlIHRvIGEgdmFyaWFibGVcIixmdW5jdGlvbihkb25lKXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQoNTAwMCk7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLnJlbW90ZS50b1N0cmluZyhcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9wdXNocm9ja3Mvc21hcnRmaWxlL21hc3Rlci90ZXN0L215dGVzdC50eHRcIilcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2VTdHJpbmcpe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3BvbnNlU3RyaW5nLFwiU29tZSBUZXN0U3RyaW5nICYmJSRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWplY3QgYSBQcm9taXNlIHdoZW4gdGhlIGxpbmsgaXMgZmFsc2VcIixmdW5jdGlvbihkb25lKXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQoMTAwMDApO1xuICAgICAgICAgICAgICAgIHNtYXJ0ZmlsZS5yZW1vdGUudG9TdHJpbmcoXCJodHRwczovL3B1c2gucm9ja3MvZG9lc25vdGV4aXN0LnR4dFwiKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgcmVzb2x2ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH0sZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KVxufSk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
+//# sourceMappingURL=data:application/json;base64,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QUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHMvdHlwaW5ncy9tYWluLmQudHNcIiAvPlxubGV0IHNtYXJ0ZmlsZSA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4LmpzXCIpO1xubGV0IGJlYXV0eWxvZyA9IHJlcXVpcmUoXCJiZWF1dHlsb2dcIik7XG5sZXQgZ3VscCA9IHJlcXVpcmUoXCJndWxwXCIpO1xubGV0IGdGdW5jdGlvbiA9IHJlcXVpcmUoXCJndWxwLWZ1bmN0aW9uXCIpO1xuaW1wb3J0IHNob3VsZCA9IHJlcXVpcmUoXCJzaG91bGRcIik7XG5sZXQgdmlueWwgPSByZXF1aXJlKFwidmlueWxcIik7XG5cbmRlc2NyaWJlKFwic21hcnRmaWxlXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgZGVzY3JpYmUoXCIuY2hlY2tzXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgIGRlc2NyaWJlKFwiLmZpbGVFeGlzdHNTeW5jXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZXR1cm4gYW4gYWNjdXJhdGUgYm9vbGVhblwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgKHNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0c1N5bmMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIikpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgICAgICAgICAgKHNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0c1N5bmMoXCIuL3Rlc3Qvbm90dGhlcmUuanNvblwiKSkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLmZpbGVFeGlzdHNcIi55ZWxsb3csZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJldHVybiBhIHdvcmtpbmcgcHJvbWlzZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgKHNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0cyhcIi4vdGVzdC9teXRlc3QuanNvblwiKSkuc2hvdWxkLmJlLlByb21pc2UoKTtcbiAgICAgICAgICAgICAgICAoc21hcnRmaWxlLmNoZWNrcy5maWxlRXhpc3RzKFwiLi90ZXN0L215dGVzdC5qc29uXCIpKS5zaG91bGQuYmUuZnVsZmlsbGVkKCk7XG4gICAgICAgICAgICAgICAgKHNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0cyhcIi4vdGVzdC9ub3R0aGVyZS5qc29uXCIpKS5zaG91bGQubm90LmJlLmZ1bGZpbGxlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgfSk7XG5cblxuICAgIGRlc2NyaWJlKFwiLmZzYWN0aW9uXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgIGRlc2NyaWJlKFwiLmNvcHkoKVwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgY29weSBhIGRpcmVjdG9yeVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmZzYWN0aW9uLmNvcHkoXCIuL3Rlc3QvdGVzdGZvbGRlci9cIixcIi4vdGVzdC90ZW1wL1wiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCBjb3B5IGEgZmlsZVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmZzYWN0aW9uLmNvcHkoXCIuL3Rlc3QvbXl0ZXN0LnlhbWxcIixcIi4vdGVzdC90ZW1wL1wiKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCBjb3B5IGEgZmlsZSBhbmQgcmVuYW1lIGl0XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUuZnNhY3Rpb24uY29weShcIi4vdGVzdC9teXRlc3QueWFtbFwiLFwiLi90ZXN0L3RlbXAvbXl0ZXN0UmVuYW1lZC55YW1sXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnJlbW92ZSgpXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlbW92ZSBhbiBlbnRpcmUgZGlyZWN0b3J5XCIsZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZW1vdmUgc2luZ2xlIGZpbGVzXCIsZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG5cbiAgICBkZXNjcmliZShcIi5sb2NhbFwiLnllbGxvdyxmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcInRvR3VscFN0cmVhbVN5bmMoKSBhbmQgdG9HdWxwRGVzdFN5bmNcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgaXQoXCJzaG91bGQgcHJvZHVjZSBhIGd1bHAgc3RyZWFtXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLmxvY2FsLnRvR3VscFN0cmVhbVN5bmMoXCIuL3Rlc3QvbXkqXCIpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHNtYXJ0ZmlsZS5sb2NhbC50b0d1bHBEZXN0U3luYyhcIi4vdGVzdC90ZW1wL1wiKSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoZ0Z1bmN0aW9uKGRvbmUsXCJhdEVuZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvT2JqZWN0U3luYygpXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWFkIGFuIFwiICsgXCIueWFtbFwiLmJsdWUgKyBcIiBmaWxlIHRvIGFuIG9iamVjdFwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgbGV0IHRlc3REYXRhID0gc21hcnRmaWxlLmxvY2FsLnRvT2JqZWN0U3luYyhcIi4vdGVzdC9teXRlc3QueWFtbFwiKTtcbiAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTFcIixcInRoaXMgd29ya3NcIik7XG4gICAgICAgICAgICAgICAgdGVzdERhdGEuc2hvdWxkLmhhdmUucHJvcGVydHkoXCJrZXkyXCIsXCJ0aGlzIHdvcmtzIHRvb1wiKTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdChcInNob3VsZCBzdGF0ZSB1bmtub3duIGZpbGUgdHlwZSBmb3IgdW5rbm93biBmaWxlIHR5cGVzXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9PYmplY3RTeW5jKFwiLi90ZXN0L215dGVzdC50eHRcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlYWQgYW4gXCIgKyBcIi5qc29uXCIuYmx1ZSArIFwiIGZpbGUgdG8gYW4gb2JqZWN0XCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9PYmplY3RTeW5jKFwiLi90ZXN0L215dGVzdC5qc29uXCIpO1xuICAgICAgICAgICAgICAgIHRlc3REYXRhLnNob3VsZC5oYXZlLnByb3BlcnR5KFwia2V5MVwiLFwidGhpcyB3b3Jrc1wiKTtcbiAgICAgICAgICAgICAgICB0ZXN0RGF0YS5zaG91bGQuaGF2ZS5wcm9wZXJ0eShcImtleTJcIixcInRoaXMgd29ya3MgdG9vXCIpO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvU3RyaW5nU3luYygpXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWFkIGEgZmlsZSB0byBhIHN0cmluZ1wiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICAgICAgICAgICBzbWFydGZpbGUubG9jYWwudG9TdHJpbmdTeW5jKFwiLi90ZXN0L215dGVzdC50eHRcIiksXG4gICAgICAgICAgICAgICAgICAgIFwiU29tZSBUZXN0U3RyaW5nICYmJSRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwiLnRvVmlueWxTeW5jXCIueWVsbG93LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCByZWFkIGFuIFwiICsgXCIuanNvbiBPUiAueWFtbFwiLmJsdWUgKyBcIiBmaWxlIHRvIGFuIFwiICsgXCJ2aW55bCBmaWxlIG9iamVjdFwiLmN5YW4sZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgdGVzdERhdGEgPSBzbWFydGZpbGUubG9jYWwudG9WaW55bFN5bmMoXCIuL3Rlc3QvbXl0ZXN0Lmpzb25cIik7XG4gICAgICAgICAgICAgICAgKHZpbnlsLmlzVmlueWwodGVzdERhdGEpKS5zaG91bGQuYmUudHJ1ZSgpO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZShcIi5tZW1vcnlcIixmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcIi50b0d1bHBTdHJlYW0oKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCBwcm9kdWNlIGEgdmFsaWQgZ3VscCBzdHJlYW1cIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBsb2NhbEFycmF5ID0gW1widGVzdDFcIixcInRlc3QyXCIsXCJ0ZXN0M1wiXTtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUubWVtb3J5LnRvR3VscFN0cmVhbShsb2NhbEFycmF5KVxuICAgICAgICAgICAgICAgICAgICAucGlwZShndWxwLmRlc3QoXCIuL3Rlc3QvdGVtcC9cIikpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkZXNjcmliZShcInRvVmlueWxGaWxlU3luYygpXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHByb2R1Y2UgYSB2aW55bEZpbGVcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBsb2NhbFN0cmluZyA9IFwibXlTdHJpbmdcIjtcbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxPcHRpb25zID0ge2ZpbGVuYW1lOlwidmlueWxmaWxlMlwiLGJhc2U6XCIvc29tZURpclwifTtcbiAgICAgICAgICAgICAgICAoc21hcnRmaWxlLm1lbW9yeS50b1ZpbnlsRmlsZVN5bmMobG9jYWxTdHJpbmcsbG9jYWxPcHRpb25zKSBpbnN0YW5jZW9mIHZpbnlsKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkZXNjcmliZShcInRvVmlueWxBcnJheVN5bmMoKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCBwcm9kdWNlIGEgYW4gYXJyYXkgb2YgdmlueWxmaWxlc1wiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsU3RyaW5nQXJyYXkgPSBbXCJzdHJpbmcxXCIsXCJzdHJpbmcyXCIsXCJzdHJpbmczXCJdO1xuICAgICAgICAgICAgICAgIGxldCBsb2NhbE9wdGlvbnMgPSB7ZmlsZW5hbWU6XCJ2aW55bGZpbGUyXCIsYmFzZTpcIi9zb21lRGlyXCJ9O1xuICAgICAgICAgICAgICAgIGxldCB0ZXN0UmVzdWx0ID0gc21hcnRmaWxlLm1lbW9yeS50b1ZpbnlsQXJyYXlTeW5jKGxvY2FsU3RyaW5nQXJyYXksbG9jYWxPcHRpb25zKTtcbiAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0LnNob3VsZC5iZS5BcnJheSgpO1xuICAgICAgICAgICAgICAgICh0ZXN0UmVzdWx0Lmxlbmd0aCA9PT0gMykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBteUtleSBpbiB0ZXN0UmVzdWx0KXtcbiAgICAgICAgICAgICAgICAgICAgKHRlc3RSZXN1bHRbbXlLZXldIGluc3RhbmNlb2YgdmlueWwpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkZXNjcmliZShcInRvU3RyaW5nU3luYygpXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHByb2R1Y2UgYSBTdHJpbmcgZnJvbSB2aW55bCBmaWxlXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxTdHJpbmcgPSBzbWFydGZpbGUubWVtb3J5LnRvU3RyaW5nU3luYyhuZXcgdmlueWwoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlOlwiL1wiLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOlwiL3Rlc3QudHh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBuZXcgQnVmZmVyKFwibXlTdHJpbmdcIilcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdHJpbmcuc2hvdWxkLmVxdWFsKFwibXlTdHJpbmdcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwidG9GcygpXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHdyaXRlIGEgZmlsZSB0byBkaXNrIGFuZCByZXR1cm4gYSBwcm9taXNlXCIsZnVuY3Rpb24oZG9uZSl7XG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsU3RyaW5nID0gXCJteVN0cmluZ1wiO1xuICAgICAgICAgICAgICAgIHNtYXJ0ZmlsZS5tZW1vcnkudG9GcyhcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOlwiLi90ZXN0L3RlbXAvdGVzdE1lbVRvRnMudHh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlUGF0aDpwcm9jZXNzLmN3ZCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnRoZW4oZG9uZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlc2NyaWJlKFwidG9Gc1N5bmMoKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCB3cml0ZSBhIGZpbGUgdG8gZGlzayBhbmQgcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bGxcIixmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBsb2NhbFN0cmluZyA9IFwibXlTdHJpbmdcIjtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUubWVtb3J5LnRvRnNTeW5jKFxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0cmluZyx7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpcIi4vdGVzdC90ZW1wL3Rlc3RNZW1Ub0ZzU3luYy50eHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVQYXRoOnByb2Nlc3MuY3dkKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZShcIi5yZW1vdGVcIixmdW5jdGlvbigpe1xuICAgICAgICBkZXNjcmliZShcInRvR3VscFN0cmVhbVN5bmMoKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCBwcm9kdWNlIGEgZ3VscCBzdHJlYW1cIixmdW5jdGlvbihkb25lKXtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUucmVtb3RlLnRvR3VscFN0cmVhbVN5bmMoXCJteXRlc3QudHh0XCIsXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHVzaHJvY2tzL3NtYXJ0ZmlsZS9tYXN0ZXIvdGVzdC9cIilcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoc21hcnRmaWxlLmxvY2FsLnRvR3VscERlc3RTeW5jKFwiLi90ZXN0L3RlbXAvXCIpKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShnRnVuY3Rpb24oZG9uZSxcImF0RW5kXCIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVzY3JpYmUoXCIudG9TdHJpbmcoKVwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpdChcInNob3VsZCBsb2FkIGEgcmVtb3RlIGZpbGUgdG8gYSB2YXJpYWJsZVwiLGZ1bmN0aW9uKGRvbmUpe1xuICAgICAgICAgICAgICAgIHRoaXMudGltZW91dCg1MDAwKTtcbiAgICAgICAgICAgICAgICBzbWFydGZpbGUucmVtb3RlLnRvU3RyaW5nKFwiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3B1c2hyb2Nrcy9zbWFydGZpbGUvbWFzdGVyL3Rlc3QvbXl0ZXN0LnR4dFwiKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZVN0cmluZyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQuZXF1YWwocmVzcG9uc2VTdHJpbmcsXCJTb21lIFRlc3RTdHJpbmcgJiYlJFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGl0KFwic2hvdWxkIHJlamVjdCBhIFByb21pc2Ugd2hlbiB0aGUgbGluayBpcyBmYWxzZVwiLGZ1bmN0aW9uKGRvbmUpe1xuICAgICAgICAgICAgICAgIHRoaXMudGltZW91dCgxMDAwMCk7XG4gICAgICAgICAgICAgICAgc21hcnRmaWxlLnJlbW90ZS50b1N0cmluZyhcImh0dHBzOi8vcHVzaC5yb2Nrcy9kb2Vzbm90ZXhpc3QudHh0XCIpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGlzIHRlc3Qgc2hvdWxkIG5vdCBiZSByZXNvbHZlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSxmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pXG59KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
diff --git a/test/test.js.map b/test/test.js.map
index 0420431..1d01fdd 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":"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"}
\ No newline at end of file
diff --git a/test/test.ts b/test/test.ts
index 91c91d4..a63bdda 100644
--- a/test/test.ts
+++ b/test/test.ts
@@ -1,9 +1,10 @@
///
let smartfile = require("../dist/index.js");
let beautylog = require("beautylog");
-let should = require("should");
-let vinyl = require("vinyl");
+let gulp = require("gulp");
let gFunction = require("gulp-function");
+import should = require("should");
+let vinyl = require("vinyl");
describe("smartfile".yellow,function(){
describe(".checks".yellow,function(){
@@ -21,6 +22,8 @@ describe("smartfile".yellow,function(){
});
})
});
+
+
describe(".fsaction".yellow,function(){
describe(".copy()".yellow,function(){
it("should copy a directory",function(){
@@ -38,10 +41,12 @@ describe("smartfile".yellow,function(){
});
it("should remove single files",function(){
-
+
});
});
});
+
+
describe(".local".yellow,function(){
describe("toGulpStreamSync() and toGulpDestSync",function(){
it("should produce a gulp stream",function(done){
@@ -83,6 +88,69 @@ describe("smartfile".yellow,function(){
});
});
});
+
+ describe(".memory",function(){
+ describe(".toGulpStream()",function(){
+ it("should produce a valid gulp stream",function(){
+ let localArray = ["test1","test2","test3"];
+ smartfile.memory.toGulpStream(localArray)
+ .pipe(gulp.dest("./test/temp/"));
+ });
+ });
+ describe("toVinylFileSync()",function(){
+ it("should produce a vinylFile",function(){
+ let localString = "myString";
+ let localOptions = {filename:"vinylfile2",base:"/someDir"};
+ (smartfile.memory.toVinylFileSync(localString,localOptions) instanceof vinyl).should.be.true();
+ });
+ });
+ describe("toVinylArraySync()",function(){
+ it("should produce a an array of vinylfiles",function(){
+ let localStringArray = ["string1","string2","string3"];
+ let localOptions = {filename:"vinylfile2",base:"/someDir"};
+ let testResult = smartfile.memory.toVinylArraySync(localStringArray,localOptions);
+ testResult.should.be.Array();
+ (testResult.length === 3).should.be.true();
+ for (let myKey in testResult){
+ (testResult[myKey] instanceof vinyl).should.be.true();
+ }
+ });
+ });
+ describe("toStringSync()",function(){
+ it("should produce a String from vinyl file",function(){
+ let localString = smartfile.memory.toStringSync(new vinyl({
+ base:"/",
+ path:"/test.txt",
+ contents: new Buffer("myString")
+ }));
+ localString.should.equal("myString");
+ });
+ });
+ describe("toFs()",function(){
+ it("should write a file to disk and return a promise",function(done){
+ let localString = "myString";
+ smartfile.memory.toFs(
+ localString,
+ {
+ fileName:"./test/temp/testMemToFs.txt",
+ filePath:process.cwd()
+ }
+ ).then(done);
+ });
+ });
+ describe("toFsSync()",function(){
+ it("should write a file to disk and return true if successfull",function(){
+ let localString = "myString";
+ smartfile.memory.toFsSync(
+ localString,{
+ fileName:"./test/temp/testMemToFsSync.txt",
+ filePath:process.cwd()
+ }
+ );
+ });
+ });
+ });
+
describe(".remote",function(){
describe("toGulpStreamSync()",function(){
it("should produce a gulp stream",function(done){
diff --git a/ts/smartfile.memory.ts b/ts/smartfile.memory.ts
index 90d1d79..fa53121 100644
--- a/ts/smartfile.memory.ts
+++ b/ts/smartfile.memory.ts
@@ -8,7 +8,7 @@ let Readable = require("stream").Readable;
* @returns stream.Readable
* @TODO: make it async;
*/
-export let toGulpStream = function(fileArg:string|string[]|plugins.vinyl|plugins.vinyl[],baseArg?:string){
+export let toGulpStream = function(fileArg:string|string[]|plugins.vinyl|plugins.vinyl[],baseArg:string = "/"){
let fileArray = [];
if(typeof fileArg === "string" || fileArg instanceof plugins.vinyl){ // make sure we work with an array later on
@@ -25,7 +25,7 @@ export let toGulpStream = function(fileArg:string|string[]|plugins.vinyl|plugins
let file = fileArray[fileIndexArg];
file instanceof plugins.vinyl ?
vinylFileArray.push(file) :
- vinylFileArray.push(toVinylFileSync(file,{filename:fileIndexArg,base:"/"}));
+ vinylFileArray.push(toVinylFileSync(file,{filename:fileIndexArg,base:baseArg}));
};
let stream = new Readable({ objectMode: true });
@@ -42,7 +42,7 @@ export let toGulpStream = function(fileArg:string|string[]|plugins.vinyl|plugins
* @param fileArg
* @param optionsArg
*/
-export let toVinylFileSync = function(fileArg:string,optionsArg?:{filename:string,base:string,relPath?:string}){
+export let toVinylFileSync = function(fileArg:string,optionsArg?:{filename?:string,base?:string,relPath?:string}){
optionsArg? void(0) : optionsArg = {filename: "vinylfile", base: "/"};
optionsArg.filename ? void(0) : optionsArg.filename = "vinylfile";
optionsArg.base ? void(0) : optionsArg.base = "/";
@@ -60,7 +60,7 @@ export let toVinylFileSync = function(fileArg:string,optionsArg?:{filename:strin
* @param arrayArg
* @param optionsArg
*/
-export let toVinylArraySync = function(arrayArg:string[],optionsArg?:{filename:string,base:string,relPath?:string}){
+export let toVinylArraySync = function(arrayArg:string[],optionsArg?:{filename?:string,base?:string,relPath?:string}){
let vinylArray = [];
for(let stringIndexArg in arrayArg){
let myString = arrayArg[stringIndexArg];
@@ -69,14 +69,53 @@ export let toVinylArraySync = function(arrayArg:string[],optionsArg?:{filename:s
return vinylArray;
};
+/**
+ * takes a vinylFile object and converts it to String
+ */
+export let toStringSync = function(fileArg:plugins.vinyl){
+ return fileArg.contents.toString("utf8");
+};
-export let toFs = function(fileArg:string|plugins.vinyl,fileNameArg?:string,fileBaseArg?:string){
+
+/**
+ * writes string or vinyl file to disk.
+ * @param fileArg
+ * @param fileNameArg
+ * @param fileBaseArg
+ */
+export let toFs = function(fileArg,optionsArg:{fileName:string,filePath:string}){
+ let done = plugins.q.defer();
+
+ //function checks to abort if needed
+ if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
+ throw new Error("expected a valid arguments");
+ if (!(typeof optionsArg.filePath === "string")) optionsArg.filePath = "/";
+
+ let filePath:string = plugins.path.join(optionsArg.filePath,optionsArg.fileName);
+ let fileString:string;
if (fileArg instanceof plugins.vinyl){
-
+ fileString = toStringSync(fileArg);
+ } else if (typeof fileArg === "string") {
+ fileString = fileArg;
}
+ plugins.fs.writeFile(filePath,fileString,"utf8",done.resolve);
+ return done.promise;
};
-export let toFsSync = function(){
-
+export let toFsSync = function(fileArg,optionsArg:{fileName:string,filePath:string}){
+ //function checks to abort if needed
+ if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
+ throw new Error("expected a valid arguments");
+ if (!(typeof optionsArg.filePath === "string")) optionsArg.filePath = "/";
+
+ let filePath = plugins.path.join(optionsArg.filePath,optionsArg.fileName);
+ let fileString:string;
+
+ if (fileArg instanceof plugins.vinyl){
+ fileString = toStringSync(fileArg);
+ } else if (typeof fileArg === "string") {
+ fileString = fileArg;
+ }
+ plugins.fs.writeFileSync(filePath,fileString,"utf8");
};
diff --git a/ts/typings.json b/ts/typings.json
index ae96213..ede66e6 100644
--- a/ts/typings.json
+++ b/ts/typings.json
@@ -3,6 +3,7 @@
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts",
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
"node": "registry:dt/node",
+ "should": "registry:dt/should",
"vinyl": "registry:dt/vinyl"
}
}