diff --git a/FlowPlugins/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.js index b0da3c3..d4e0643 100644 --- a/FlowPlugins/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.js @@ -1,10 +1,42 @@ "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.plugin = exports.details = void 0; -var fs_1 = __importDefault(require("fs")); var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils"); /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ var details = function () { return ({ @@ -57,28 +89,36 @@ var details = function () { return ({ }); }; exports.details = details; // eslint-disable-next-line @typescript-eslint/no-unused-vars -var plugin = function (args) { - var lib = require('../../../../../methods/lib')(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign - args.inputs = lib.loadDefaultValues(args.inputs, details); - var directory = String(args.inputs.directory).trim() || (0, fileUtils_1.getFileAbosluteDir)(args.inputFileObj._id); - var fileName = (0, fileUtils_1.getFileName)(args.inputFileObj._id); - var fileToCheck = String(args.inputs.fileToCheck).trim(); - fileToCheck = fileToCheck.replace(/\${fileName}/g, fileName); - fileToCheck = fileToCheck.replace(/\${container}/g, (0, fileUtils_1.getContainer)(args.inputFileObj._id)); - fileToCheck = "".concat(directory, "/").concat(fileToCheck); - var fileExists = false; - if (fs_1.default.existsSync(fileToCheck)) { - fileExists = true; - args.jobLog("File exists: ".concat(fileToCheck)); - } - else { - args.jobLog("File does not exist: ".concat(fileToCheck)); - } - return { - outputFileObj: args.inputFileObj, - outputNumber: fileExists ? 1 : 2, - variables: args.variables, - }; -}; +var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function () { + var lib, directory, fileName, fileToCheck, fileDoesExist; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + lib = require('../../../../../methods/lib')(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign + args.inputs = lib.loadDefaultValues(args.inputs, details); + directory = String(args.inputs.directory).trim() || (0, fileUtils_1.getFileAbosluteDir)(args.inputFileObj._id); + fileName = (0, fileUtils_1.getFileName)(args.inputFileObj._id); + fileToCheck = String(args.inputs.fileToCheck).trim(); + fileToCheck = fileToCheck.replace(/\${fileName}/g, fileName); + fileToCheck = fileToCheck.replace(/\${container}/g, (0, fileUtils_1.getContainer)(args.inputFileObj._id)); + fileToCheck = "".concat(directory, "/").concat(fileToCheck); + fileDoesExist = false; + return [4 /*yield*/, (0, fileUtils_1.fileExists)(fileToCheck)]; + case 1: + if (_a.sent()) { + fileDoesExist = true; + args.jobLog("File exists: ".concat(fileToCheck)); + } + else { + args.jobLog("File does not exist: ".concat(fileToCheck)); + } + return [2 /*return*/, { + outputFileObj: args.inputFileObj, + outputNumber: fileDoesExist ? 1 : 2, + variables: args.variables, + }]; + } + }); +}); }; exports.plugin = plugin; diff --git a/FlowPlugins/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.js index 0e103fe..6a6f563 100644 --- a/FlowPlugins/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.js @@ -107,7 +107,7 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function args.inputs = lib.loadDefaultValues(args.inputs, details); _a = args.inputs, keepRelativePath = _a.keepRelativePath, makeWorkingFile = _a.makeWorkingFile; outputDirectory = String(args.inputs.outputDirectory); - originalFileName = (0, fileUtils_1.getFileName)(args.originalLibraryFile._id); + originalFileName = (0, fileUtils_1.getFileName)(args.inputFileObj._id); newContainer = (0, fileUtils_1.getContainer)(args.inputFileObj._id); outputPath = ''; if (keepRelativePath) { diff --git a/FlowPlugins/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.js index a586cdc..96c10d1 100644 --- a/FlowPlugins/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.js @@ -75,7 +75,7 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function lib = require('../../../../../methods/lib')(); // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); - originalFileName = (0, fileUtils_1.getFileName)(args.originalLibraryFile._id); + originalFileName = (0, fileUtils_1.getFileName)(args.inputFileObj._id); newContainer = (0, fileUtils_1.getContainer)(args.inputFileObj._id); outputPath = args.workDir; ouputFilePath = (0, normJoinPath_1.default)({ diff --git a/FlowPlugins/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.js index 04c491b..bd8f7fb 100644 --- a/FlowPlugins/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.js @@ -97,7 +97,7 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function args.inputs = lib.loadDefaultValues(args.inputs, details); keepRelativePath = args.inputs.keepRelativePath; outputDirectory = String(args.inputs.outputDirectory); - originalFileName = (0, fileUtils_1.getFileName)(args.originalLibraryFile._id); + originalFileName = (0, fileUtils_1.getFileName)(args.inputFileObj._id); newContainer = (0, fileUtils_1.getContainer)(args.inputFileObj._id); outputPath = ''; if (keepRelativePath) { diff --git a/FlowPlugins/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.js index f27c9db..fc27cc3 100644 --- a/FlowPlugins/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.js @@ -40,6 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.plugin = exports.details = void 0; +var fs_1 = require("fs"); var fileMoveOrCopy_1 = __importDefault(require("../../../../FlowHelpers/1.0.0/fileMoveOrCopy")); var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils"); /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ @@ -66,11 +67,10 @@ var details = function () { return ({ exports.details = details; // eslint-disable-next-line @typescript-eslint/no-unused-vars var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function () { - var fs, lib, currentPath, orignalFolder, fileName, container, newPath, newPathTmp; + var lib, currentPath, orignalFolder, fileName, container, newPath, newPathTmp; return __generator(this, function (_a) { switch (_a.label) { case 0: - fs = require('fs'); lib = require('../../../../../methods/lib')(); // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); @@ -106,14 +106,17 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function })]; case 2: _a.sent(); - // delete original file - if (fs.existsSync(args.originalLibraryFile._id) - && args.originalLibraryFile._id !== currentPath) { - args.jobLog("Deleting original file:".concat(args.originalLibraryFile._id)); - fs.unlinkSync(args.originalLibraryFile._id); - } - return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2000); })]; + return [4 /*yield*/, (0, fileUtils_1.fileExists)(args.originalLibraryFile._id)]; case 3: + if (!((_a.sent()) + && args.originalLibraryFile._id !== currentPath)) return [3 /*break*/, 5]; + args.jobLog("Deleting original file:".concat(args.originalLibraryFile._id)); + return [4 /*yield*/, fs_1.promises.unlink(args.originalLibraryFile._id)]; + case 4: + _a.sent(); + _a.label = 5; + case 5: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2000); })]; + case 6: _a.sent(); return [4 /*yield*/, (0, fileMoveOrCopy_1.default)({ operation: 'move', @@ -121,7 +124,7 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function destinationPath: newPath, args: args, })]; - case 4: + case 7: _a.sent(); return [2 /*return*/, { outputFileObj: { diff --git a/FlowPlugins/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.js index 3f05e5f..aa543a0 100644 --- a/FlowPlugins/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.js @@ -1,6 +1,44 @@ "use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.plugin = exports.details = void 0; +var fs_1 = require("fs"); +var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils"); /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ var details = function () { return ({ name: 'Transcode Video File', @@ -42,21 +80,32 @@ var details = function () { return ({ }); }; exports.details = details; // eslint-disable-next-line @typescript-eslint/no-unused-vars -var plugin = function (args) { - var lib = require('../../../../../methods/lib')(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign - args.inputs = lib.loadDefaultValues(args.inputs, details); - var fs = require('fs'); - var oldFile = args.inputFileObj._id; - var newFile = "".concat(args.inputFileObj._id, ".tmp"); - if (fs.existsSync(newFile)) { - fs.unlinkSync(newFile); - } - fs.copyFileSync(oldFile, newFile); - return { - outputFileObj: { _id: newFile }, - outputNumber: 1, - variables: args.variables, - }; -}; +var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function () { + var lib, oldFile, newFile; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + lib = require('../../../../../methods/lib')(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign + args.inputs = lib.loadDefaultValues(args.inputs, details); + oldFile = args.inputFileObj._id; + newFile = "".concat(args.inputFileObj._id, ".tmp"); + return [4 /*yield*/, (0, fileUtils_1.fileExists)(newFile)]; + case 1: + if (!_a.sent()) return [3 /*break*/, 3]; + return [4 /*yield*/, fs_1.promises.unlink(newFile)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [4 /*yield*/, fs_1.promises.copyFile(oldFile, newFile)]; + case 4: + _a.sent(); + return [2 /*return*/, { + outputFileObj: { _id: newFile }, + outputNumber: 1, + variables: args.variables, + }]; + } + }); +}); }; exports.plugin = plugin; diff --git a/FlowPlugins/FlowHelpers/1.0.0/cliParsers.js b/FlowPlugins/FlowHelpers/1.0.0/cliParsers.js index eee0cfd..e141290 100644 --- a/FlowPlugins/FlowHelpers/1.0.0/cliParsers.js +++ b/FlowPlugins/FlowHelpers/1.0.0/cliParsers.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.editreadyParser = exports.getFFmpegVar = exports.getFFmpegPercentage = exports.ffmpegParser = exports.handbrakeParser = void 0; +exports.editreadyParser = exports.getHandBrakeFps = exports.getFFmpegVar = exports.getFFmpegPercentage = exports.ffmpegParser = exports.handbrakeParser = void 0; var handbrakeParser = function (_a) { var str = _a.str, hbPass = _a.hbPass; if (typeof str !== 'string') { @@ -30,6 +30,24 @@ var handbrakeParser = function (_a) { return percentage; }; exports.handbrakeParser = handbrakeParser; +var getHandBrakeFps = function (_a) { + var str = _a.str; + try { + if (typeof str !== 'string' || !(str.includes('(') && str.includes('fps'))) { + return 0; + } + var out = parseInt(str.split('(')[1].split('fps')[0].trim(), 10); + // eslint-disable-next-line no-restricted-globals + if (!isNaN(out)) { + return out; + } + } + catch (err) { + // err + } + return 0; +}; +exports.getHandBrakeFps = getHandBrakeFps; // frame= 889 fps=106 q=26.0 Lsize= 25526kB time=00:00:35.69 bitrate=5858.3kbits/s speed=4.25x var getFFmpegVar = function (_a) { var str = _a.str, variable = _a.variable; diff --git a/FlowPlugins/FlowHelpers/1.0.0/cliUtils.js b/FlowPlugins/FlowHelpers/1.0.0/cliUtils.js index 32028e8..0205188 100644 --- a/FlowPlugins/FlowHelpers/1.0.0/cliUtils.js +++ b/FlowPlugins/FlowHelpers/1.0.0/cliUtils.js @@ -35,10 +35,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.CLI = exports.getFFmpegVar = void 0; +var fs_1 = __importDefault(require("fs")); var cliParsers_1 = require("./cliParsers"); -var fs = require('fs'); +var fileUtils_1 = require("./fileUtils"); var fancyTimeFormat = function (time) { // Hours, minutes and seconds // eslint-disable-next-line no-bitwise @@ -93,60 +97,71 @@ var CLI = /** @class */ (function () { this.oldProgress = 0; this.lastProgCheck = 0; this.hbPass = 0; - this.updateETA = function (perc) { - if (perc > 0) { - if (_this.lastProgCheck === 0) { - _this.lastProgCheck = new Date().getTime(); - _this.oldProgress = perc; - } - else if (perc !== _this.oldProgress) { - var n = new Date().getTime(); - var secsSinceLastCheck = (n - _this.lastProgCheck) / 1000; - if (secsSinceLastCheck > 1) { - // eta total - var eta = Math.round((100 / (perc - _this.oldProgress)) * secsSinceLastCheck); + this.updateETA = function (perc) { return __awaiter(_this, void 0, void 0, function () { + var n, secsSinceLastCheck, eta, sum, avg, estSize, outputFileSizeInGbytes, singleFileSize, err_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(perc > 0)) return [3 /*break*/, 6]; + if (!(this.lastProgCheck === 0)) return [3 /*break*/, 1]; + this.lastProgCheck = new Date().getTime(); + this.oldProgress = perc; + return [3 /*break*/, 6]; + case 1: + if (!(perc !== this.oldProgress)) return [3 /*break*/, 6]; + n = new Date().getTime(); + secsSinceLastCheck = (n - this.lastProgCheck) / 1000; + if (!(secsSinceLastCheck > 1)) return [3 /*break*/, 6]; + eta = Math.round((100 / (perc - this.oldProgress)) * secsSinceLastCheck); // eta remaining eta *= ((100 - perc) / 100); - _this.progAVG.push(eta); - // let values = [2, 56, 3, 41, 0, 4, 100, 23]; - var sum = _this.progAVG.reduce( + this.progAVG.push(eta); + sum = this.progAVG.reduce( // eslint-disable-next-line function (previous, current) { return (current += previous); }); - var avg = sum / _this.progAVG.length; - // est size - var estSize = 0; - var outputFileSizeInGbytes = void 0; - try { - if (fs.existsSync(_this.config.outputFilePath)) { - var singleFileSize = fs.statSync(_this.config.outputFilePath); - singleFileSize = singleFileSize.size; - outputFileSizeInGbytes = singleFileSize / (1024 * 1024 * 1024); - if (outputFileSizeInGbytes !== _this.oldOutSize) { - _this.oldOutSize = outputFileSizeInGbytes; - estSize = outputFileSizeInGbytes - + ((100 - perc) / perc) * outputFileSizeInGbytes; - _this.oldEstSize = estSize; - } + avg = sum / this.progAVG.length; + estSize = 0; + outputFileSizeInGbytes = void 0; + _a.label = 2; + case 2: + _a.trys.push([2, 4, , 5]); + return [4 /*yield*/, (0, fileUtils_1.fileExists)(this.config.outputFilePath)]; + case 3: + if (_a.sent()) { + singleFileSize = fs_1.default.statSync(this.config.outputFilePath); + // @ts-expect-error type + singleFileSize = singleFileSize.size; + // @ts-expect-error type + outputFileSizeInGbytes = singleFileSize / (1024 * 1024 * 1024); + if (outputFileSizeInGbytes !== this.oldOutSize) { + this.oldOutSize = outputFileSizeInGbytes; + estSize = outputFileSizeInGbytes + + ((100 - perc) / perc) * outputFileSizeInGbytes; + this.oldEstSize = estSize; } } - catch (err) { - // eslint-disable-next-line no-console - console.log(err); - } - _this.config.updateWorker({ + return [3 /*break*/, 5]; + case 4: + err_1 = _a.sent(); + // eslint-disable-next-line no-console + console.log(err_1); + return [3 /*break*/, 5]; + case 5: + this.config.updateWorker({ ETA: fancyTimeFormat(avg), outputFileSizeInGbytes: outputFileSizeInGbytes === undefined ? 0 : outputFileSizeInGbytes, - estSize: _this.oldEstSize === undefined ? 0 : _this.oldEstSize, + estSize: this.oldEstSize === undefined ? 0 : this.oldEstSize, }); - if (_this.progAVG.length > 30) { - _this.progAVG.splice(0, 1); + if (this.progAVG.length > 30) { + this.progAVG.splice(0, 1); } - _this.lastProgCheck = n; - _this.oldProgress = perc; - } + this.lastProgCheck = n; + this.oldProgress = perc; + _a.label = 6; + case 6: return [2 /*return*/]; } - } - }; + }); + }); }; this.parseOutput = function (data) { var _a, _b, _c, _d, _e, _f, _g; var str = "".concat(data); @@ -166,11 +181,19 @@ var CLI = /** @class */ (function () { hbPass: _this.hbPass, }); if (percentage > 0) { - _this.updateETA(percentage); + void _this.updateETA(percentage); _this.config.updateWorker({ percentage: percentage, }); } + var fps = (0, cliParsers_1.getHandBrakeFps)({ + str: str, + }); + if (fps > 0) { + _this.config.updateWorker({ + fps: fps, + }); + } } else if (_this.config.cli.toLowerCase().includes('ffmpeg')) { var n = str.indexOf('fps'); @@ -206,7 +229,7 @@ var CLI = /** @class */ (function () { }); } if (percentage > 0) { - _this.updateETA(percentage); + void _this.updateETA(percentage); _this.config.updateWorker({ percentage: percentage, }); @@ -217,7 +240,7 @@ var CLI = /** @class */ (function () { str: str, }); if (percentage > 0) { - _this.updateETA(percentage); + void _this.updateETA(percentage); _this.config.updateWorker({ percentage: percentage, }); diff --git a/FlowPlugins/FlowHelpers/1.0.0/fileUtils.js b/FlowPlugins/FlowHelpers/1.0.0/fileUtils.js index 1e36045..49e8d2b 100644 --- a/FlowPlugins/FlowHelpers/1.0.0/fileUtils.js +++ b/FlowPlugins/FlowHelpers/1.0.0/fileUtils.js @@ -36,8 +36,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) { } }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.getScanTypes = exports.getPluginWorkDir = exports.moveFileAndValidate = exports.getFileSize = exports.getSubStem = exports.getFfType = exports.getFileAbosluteDir = exports.getFileName = exports.getContainer = void 0; +exports.getScanTypes = exports.getPluginWorkDir = exports.moveFileAndValidate = exports.getFileSize = exports.getSubStem = exports.getFfType = exports.getFileAbosluteDir = exports.getFileName = exports.getContainer = exports.fileExists = void 0; var fs_1 = require("fs"); +var fileExists = function (path) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, fs_1.promises.stat(path).catch(function () { return false; })]; + case 1: return [2 /*return*/, !!(_a.sent())]; + } +}); }); }; +exports.fileExists = fileExists; var getContainer = function (filePath) { var parts = filePath.split('.'); return parts[parts.length - 1]; diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.ts index a16c39c..de26096 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/checkFileExists/1.0.0/index.ts @@ -1,5 +1,6 @@ -import fs from 'fs'; -import { getContainer, getFileAbosluteDir, getFileName } from '../../../../FlowHelpers/1.0.0/fileUtils'; +import { + fileExists, getContainer, getFileAbosluteDir, getFileName, +} from '../../../../FlowHelpers/1.0.0/fileUtils'; import { IpluginDetails, IpluginInputArgs, @@ -57,7 +58,7 @@ const details = (): IpluginDetails => ({ }); // eslint-disable-next-line @typescript-eslint/no-unused-vars -const plugin = (args: IpluginInputArgs): IpluginOutputArgs => { +const plugin = async (args: IpluginInputArgs): Promise => { const lib = require('../../../../../methods/lib')(); // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); @@ -71,9 +72,9 @@ const plugin = (args: IpluginInputArgs): IpluginOutputArgs => { fileToCheck = fileToCheck.replace(/\${container}/g, getContainer(args.inputFileObj._id)); fileToCheck = `${directory}/${fileToCheck}`; - let fileExists = false; - if (fs.existsSync(fileToCheck)) { - fileExists = true; + let fileDoesExist = false; + if (await fileExists(fileToCheck)) { + fileDoesExist = true; args.jobLog(`File exists: ${fileToCheck}`); } else { args.jobLog(`File does not exist: ${fileToCheck}`); @@ -81,7 +82,7 @@ const plugin = (args: IpluginInputArgs): IpluginOutputArgs => { return { outputFileObj: args.inputFileObj, - outputNumber: fileExists ? 1 : 2, + outputNumber: fileDoesExist ? 1 : 2, variables: args.variables, }; }; diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/copyMoveFolderContent/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/copyMoveFolderContent/1.0.0/index.ts index 3d2ed09..ca4615f 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/copyMoveFolderContent/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/copyMoveFolderContent/1.0.0/index.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { getContainer, getFileAbosluteDir, getSubStem, } from '../../../../FlowHelpers/1.0.0/fileUtils'; @@ -188,7 +188,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { sourceDir = getFileAbosluteDir(args.inputFileObj._id); } - let filesInDir = (await fs.readdir(sourceDir)) + let filesInDir = (await fsp.readdir(sourceDir)) .map((row) => ({ source: `${sourceDir}/${row}`, destination: normJoinPath({ diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.ts index 6d19860..ade5161 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/copyToDirectory/1.0.0/index.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { getContainer, getFileName, getSubStem } from '../../../../FlowHelpers/1.0.0/fileUtils'; import { IpluginDetails, @@ -73,7 +73,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { const outputDirectory = String(args.inputs.outputDirectory); - const originalFileName = getFileName(args.originalLibraryFile._id); + const originalFileName = getFileName(args.inputFileObj._id); const newContainer = getContainer(args.inputFileObj._id); let outputPath = ''; @@ -126,7 +126,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { args.deps.fsextra.ensureDirSync(outputPath); - await fs.copyFile(args.inputFileObj._id, ouputFilePath); + await fsp.copyFile(args.inputFileObj._id, ouputFilePath); return { outputFileObj: { diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.ts index 04458d1..fb58700 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/copyToWorkDirectory/1.0.0/index.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { getContainer, getFileName } from '../../../../FlowHelpers/1.0.0/fileUtils'; import { IpluginDetails, @@ -37,7 +37,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); - const originalFileName = getFileName(args.originalLibraryFile._id); + const originalFileName = getFileName(args.inputFileObj._id); const newContainer = getContainer(args.inputFileObj._id); const outputPath = args.workDir; @@ -67,7 +67,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { args.deps.fsextra.ensureDirSync(outputPath); - await fs.copyFile(args.inputFileObj._id, ouputFilePath); + await fsp.copyFile(args.inputFileObj._id, ouputFilePath); return { outputFileObj: { diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/deleteFile/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/deleteFile/1.0.0/index.ts index 1969c22..e403d9c 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/deleteFile/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/deleteFile/1.0.0/index.ts @@ -1,4 +1,5 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; + import { IpluginDetails, IpluginInputArgs, @@ -64,21 +65,21 @@ const plugin = async (args: IpluginInputArgs): Promise => { if (fileToDelete === 'workingFile') { args.jobLog(`Deleting working file ${args.inputFileObj._id}`); - await fs.unlink(args.inputFileObj._id); + await fsp.unlink(args.inputFileObj._id); } else if (fileToDelete === 'originalFile') { args.jobLog(`Deleting original file ${args.originalLibraryFile._id}`); - await fs.unlink(args.originalLibraryFile._id); + await fsp.unlink(args.originalLibraryFile._id); } const fileDir = getFileAbosluteDir(args.originalLibraryFile._id); if (deleteParentFolderIfEmpty) { args.jobLog(`Checking if folder ${fileDir} is empty`); - const files = await fs.readdir(fileDir); + const files = await fsp.readdir(fileDir); if (files.length === 0) { args.jobLog(`Deleting empty folder ${fileDir}`); - await fs.rmdir(fileDir); + await fsp.rmdir(fileDir); } else { args.jobLog(`Folder ${fileDir} is not empty, skipping delete`); } diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.ts index 75b2d64..1dffd60 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/moveToDirectory/2.0.0/index.ts @@ -65,7 +65,7 @@ const plugin = async (args:IpluginInputArgs):Promise => { const outputDirectory = String(args.inputs.outputDirectory); - const originalFileName = getFileName(args.originalLibraryFile._id); + const originalFileName = getFileName(args.inputFileObj._id); const newContainer = getContainer(args.inputFileObj._id); let outputPath = ''; diff --git a/FlowPluginsTs/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.ts index bd66ba3..3f48f23 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/file/replaceOriginalFile/1.0.0/index.ts @@ -1,5 +1,7 @@ +import { promises as fsp } from 'fs'; import fileMoveOrCopy from '../../../../FlowHelpers/1.0.0/fileMoveOrCopy'; import { + fileExists, getContainer, getFileAbosluteDir, getFileName, } from '../../../../FlowHelpers/1.0.0/fileUtils'; import { @@ -32,7 +34,6 @@ const details = (): IpluginDetails => ({ // eslint-disable-next-line @typescript-eslint/no-unused-vars const plugin = async (args: IpluginInputArgs): Promise => { - const fs = require('fs'); const lib = require('../../../../../methods/lib')(); // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); @@ -76,11 +77,11 @@ const plugin = async (args: IpluginInputArgs): Promise => { // delete original file if ( - fs.existsSync(args.originalLibraryFile._id) + await fileExists(args.originalLibraryFile._id) && args.originalLibraryFile._id !== currentPath ) { args.jobLog(`Deleting original file:${args.originalLibraryFile._id}`); - fs.unlinkSync(args.originalLibraryFile._id); + await fsp.unlink(args.originalLibraryFile._id); } await new Promise((resolve) => setTimeout(resolve, 2000)); diff --git a/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/1.0.0/index.ts index 1b97c87..e44dd1b 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/1.0.0/index.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { CLI } from '../../../../FlowHelpers/1.0.0/cliUtils'; import { IpluginDetails, @@ -99,7 +99,7 @@ const plugin = async (args:IpluginInputArgs):Promise => { if (presetString.trim() !== '') { const preset = JSON.parse(presetString); - await fs.writeFile(presetPath, JSON.stringify(preset, null, 2)); + await fsp.writeFile(presetPath, JSON.stringify(preset, null, 2)); cliArgs.push('--preset-import-file'); cliArgs.push(presetPath); cliArgs.push('-Z'); diff --git a/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/2.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/2.0.0/index.ts index 6ac4355..546517b 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/2.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/handbrake/handbrakeCustomArguments/2.0.0/index.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { CLI } from '../../../../FlowHelpers/1.0.0/cliUtils'; import { IpluginDetails, @@ -142,7 +142,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { if (useJsonPreset) { const preset = JSON.parse(presetString); - await fs.writeFile(presetPath, JSON.stringify(preset, null, 2)); + await fsp.writeFile(presetPath, JSON.stringify(preset, null, 2)); cliArgs.push('--preset-import-file'); cliArgs.push(presetPath); cliArgs.push('-Z'); diff --git a/FlowPluginsTs/CommunityFlowPlugins/input/inputFile/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/input/inputFile/1.0.0/index.ts index 0dc18a0..b6b220e 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/input/inputFile/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/input/inputFile/1.0.0/index.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { IpluginDetails, @@ -86,7 +86,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { const checkReadWrite = async (location: string) => { try { - await fs.access(location, fs.constants.R_OK); + await fsp.access(location, fsp.constants.R_OK); } catch (err) { args.jobLog(JSON.stringify(err)); if (pauseNodeIfAccessChecksFail) { @@ -97,7 +97,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { } try { - await fs.access(location, fs.constants.W_OK); + await fsp.access(location, fsp.constants.W_OK); } catch (err) { args.jobLog(JSON.stringify(err)); if (pauseNodeIfAccessChecksFail) { diff --git a/FlowPluginsTs/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.ts index 14b7d1e..643f881 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/video/transcodeVideo/1.0.0/index.ts @@ -1,8 +1,10 @@ +import { promises as fsp } from 'fs'; import { IpluginDetails, IpluginInputArgs, IpluginOutputArgs, } from '../../../../FlowHelpers/1.0.0/interfaces/interfaces'; +import { fileExists } from '../../../../FlowHelpers/1.0.0/fileUtils'; /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ const details = ():IpluginDetails => ({ @@ -46,21 +48,19 @@ const details = ():IpluginDetails => ({ }); // eslint-disable-next-line @typescript-eslint/no-unused-vars -const plugin = (args:IpluginInputArgs):IpluginOutputArgs => { +const plugin = async (args:IpluginInputArgs):Promise => { const lib = require('../../../../../methods/lib')(); // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); - const fs = require('fs'); - const oldFile = args.inputFileObj._id; const newFile = `${args.inputFileObj._id}.tmp`; - if (fs.existsSync(newFile)) { - fs.unlinkSync(newFile); + if (await fileExists(newFile)) { + await fsp.unlink(newFile); } - fs.copyFileSync(oldFile, newFile); + await fsp.copyFile(oldFile, newFile); return { outputFileObj: { _id: newFile }, diff --git a/FlowPluginsTs/FlowHelpers/1.0.0/classicPlugins.ts b/FlowPluginsTs/FlowHelpers/1.0.0/classicPlugins.ts index 5ccf331..22ee25c 100644 --- a/FlowPluginsTs/FlowHelpers/1.0.0/classicPlugins.ts +++ b/FlowPluginsTs/FlowHelpers/1.0.0/classicPlugins.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { getContainer, getFileName, getPluginWorkDir, getScanTypes, } from './fileUtils'; @@ -43,7 +43,7 @@ export const runClassicPlugin = async (args:IpluginInputArgs, type:'filter'|'tra let pluginSrcStr = ''; if (pluginSource === 'Community') { classicPlugin = args.deps.importFresh(relativePluginPath); - pluginSrcStr = await fs.readFile(absolutePath, 'utf8'); + pluginSrcStr = await fsp.readFile(absolutePath, 'utf8'); } else { // eslint-disable-next-line no-await-in-loop const res = await args.deps.axiosMiddleware('api/v2/read-plugin', { diff --git a/FlowPluginsTs/FlowHelpers/1.0.0/cliParsers.ts b/FlowPluginsTs/FlowHelpers/1.0.0/cliParsers.ts index 4c9bded..1429e74 100644 --- a/FlowPluginsTs/FlowHelpers/1.0.0/cliParsers.ts +++ b/FlowPluginsTs/FlowHelpers/1.0.0/cliParsers.ts @@ -39,6 +39,28 @@ const handbrakeParser = ({ return percentage; }; +const getHandBrakeFps = ({ + str, +}: { + str: string, +}): number => { + try { + if (typeof str !== 'string' || !(str.includes('(') && str.includes('fps'))) { + return 0; + } + + const out = parseInt(str.split('(')[1].split('fps')[0].trim(), 10); + + // eslint-disable-next-line no-restricted-globals + if (!isNaN(out)) { + return out; + } + } catch (err) { + // err + } + return 0; +}; + // frame= 889 fps=106 q=26.0 Lsize= 25526kB time=00:00:35.69 bitrate=5858.3kbits/s speed=4.25x const getFFmpegVar = ({ str, @@ -227,5 +249,6 @@ export { ffmpegParser, getFFmpegPercentage, getFFmpegVar, + getHandBrakeFps, editreadyParser, }; diff --git a/FlowPluginsTs/FlowHelpers/1.0.0/cliUtils.ts b/FlowPluginsTs/FlowHelpers/1.0.0/cliUtils.ts index 6da999c..84018e8 100644 --- a/FlowPluginsTs/FlowHelpers/1.0.0/cliUtils.ts +++ b/FlowPluginsTs/FlowHelpers/1.0.0/cliUtils.ts @@ -1,8 +1,10 @@ -import { editreadyParser, ffmpegParser, handbrakeParser } from './cliParsers'; +import fs from 'fs'; +import { + editreadyParser, ffmpegParser, getHandBrakeFps, handbrakeParser, +} from './cliParsers'; import { Ilog, IupdateWorker } from './interfaces/interfaces'; import { IFileObject, Istreams } from './interfaces/synced/IFileObject'; - -const fs = require('fs'); +import { fileExists } from './fileUtils'; const fancyTimeFormat = (time: number) => { // Hours, minutes and seconds @@ -91,7 +93,7 @@ class CLI { this.config = config; } - updateETA = (perc: number): void => { + updateETA = async (perc: number): Promise => { if (perc > 0) { if (this.lastProgCheck === 0) { this.lastProgCheck = new Date().getTime(); @@ -123,9 +125,11 @@ class CLI { let outputFileSizeInGbytes; try { - if (fs.existsSync(this.config.outputFilePath)) { + if (await fileExists(this.config.outputFilePath)) { let singleFileSize = fs.statSync(this.config.outputFilePath); + // @ts-expect-error type singleFileSize = singleFileSize.size; + // @ts-expect-error type outputFileSizeInGbytes = singleFileSize / (1024 * 1024 * 1024); if (outputFileSizeInGbytes !== this.oldOutSize) { @@ -177,11 +181,21 @@ class CLI { }); if (percentage > 0) { - this.updateETA(percentage); + void this.updateETA(percentage); this.config.updateWorker({ percentage, }); } + + const fps = getHandBrakeFps({ + str, + }); + + if (fps > 0) { + this.config.updateWorker({ + fps, + }); + } } else if (this.config.cli.toLowerCase().includes('ffmpeg')) { const n = str.indexOf('fps'); const shouldUpdate = str.length >= 6 && n >= 6; @@ -223,7 +237,7 @@ class CLI { } if (percentage > 0) { - this.updateETA(percentage); + void this.updateETA(percentage); this.config.updateWorker({ percentage, }); @@ -233,7 +247,7 @@ class CLI { str, }); if (percentage > 0) { - this.updateETA(percentage); + void this.updateETA(percentage); this.config.updateWorker({ percentage, }); diff --git a/FlowPluginsTs/FlowHelpers/1.0.0/fileMoveOrCopy.ts b/FlowPluginsTs/FlowHelpers/1.0.0/fileMoveOrCopy.ts index d3a4871..809d558 100644 --- a/FlowPluginsTs/FlowHelpers/1.0.0/fileMoveOrCopy.ts +++ b/FlowPluginsTs/FlowHelpers/1.0.0/fileMoveOrCopy.ts @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { getFileSize } from './fileUtils'; import { IpluginInputArgs } from './interfaces/interfaces'; @@ -48,7 +48,7 @@ const tryMove = async ({ let error = false; try { - await fs.rename(sourcePath, destinationPath); + await fsp.rename(sourcePath, destinationPath); } catch (err) { error = true; args.jobLog(`File move error: ${JSON.stringify(err)}`); @@ -157,7 +157,7 @@ const tryNormalCopy = async ({ let error = false; try { - await fs.copyFile(sourcePath, destinationPath); + await fsp.copyFile(sourcePath, destinationPath); } catch (err) { error = true; args.jobLog(`File copy error: ${JSON.stringify(err)}`); @@ -186,7 +186,7 @@ const cleanSourceFile = async ({ }) => { try { args.jobLog(`Deleting source file ${sourcePath}`); - await fs.unlink(sourcePath); + await fsp.unlink(sourcePath); } catch (err) { args.jobLog(`Failed to delete source file ${sourcePath}: ${JSON.stringify(err)}`); } diff --git a/FlowPluginsTs/FlowHelpers/1.0.0/fileUtils.ts b/FlowPluginsTs/FlowHelpers/1.0.0/fileUtils.ts index a7f4cfe..d06e5b2 100644 --- a/FlowPluginsTs/FlowHelpers/1.0.0/fileUtils.ts +++ b/FlowPluginsTs/FlowHelpers/1.0.0/fileUtils.ts @@ -1,6 +1,8 @@ -import { promises as fs } from 'fs'; +import { promises as fsp } from 'fs'; import { IpluginInputArgs } from './interfaces/interfaces'; +export const fileExists = async (path:string): Promise => !!(await fsp.stat(path).catch(() => false)); + export const getContainer = (filePath: string): string => { const parts = filePath.split('.'); return parts[parts.length - 1]; @@ -37,7 +39,7 @@ export const getSubStem = ({ }; export const getFileSize = async (file:string):Promise => { - const stats = await fs.stat(file); + const stats = await fsp.stat(file); const { size } = stats; return size; };