diff --git a/Gruntfile.js b/Gruntfile.js index 206e1630..aeba4eee 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -186,7 +186,10 @@ module.exports = function (grunt) { options: webpackConfig, metaConf: { target: "node", - entry: "./src/core/config/OperationConfig.js", + entry: [ + "babel-polyfill", + "./src/core/config/OperationConfig.js" + ], output: { filename: "MetaConfig.js", path: __dirname + "/src/core/config/", @@ -198,7 +201,10 @@ module.exports = function (grunt) { }, metaConfDev: { target: "node", - entry: "./src/core/config/OperationConfig.js", + entry: [ + "babel-polyfill", + "./src/core/config/OperationConfig.js" + ], output: { filename: "MetaConfig.js", path: __dirname + "/src/core/config/", diff --git a/src/core/config/Categories.js b/src/core/config/Categories.js index 187cb405..a038465b 100755 --- a/src/core/config/Categories.js +++ b/src/core/config/Categories.js @@ -201,6 +201,7 @@ const Categories = [ "Escape string", "Unescape string", "Pseudo-Random Number Generator", + "Sleep", ] }, { @@ -213,6 +214,7 @@ const Categories = [ "Windows Filetime to UNIX Timestamp", "UNIX Timestamp to Windows Filetime", "Extract dates", + "Sleep", ] }, { diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index e7775e1c..dd83a154 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -2441,6 +2441,19 @@ const OperationConfig = { } ] }, + "Sleep": { + module: "Default", + description: "Sleep causes the recipe to wait for a specified number of milliseconds before continuing execution.", + inputType: "ArrayBuffer", + outputType: "ArrayBuffer", + args: [ + { + name: "Time (ms)", + type: "number", + value: 1000 + } + ] + }, "Windows Filetime to UNIX Timestamp": { module: "JSBN", description: "Converts a Windows Filetime value to a UNIX timestamp.

A Windows Filetime is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 UTC.

A UNIX timestamp is a 32-bit value representing the number of seconds since January 1, 1970 UTC (the UNIX epoch).

This operation also supports UNIX timestamps in milliseconds, microseconds and nanoseconds.", diff --git a/src/core/config/modules/Default.js b/src/core/config/modules/Default.js index 1afb8bcc..ac48e6e2 100644 --- a/src/core/config/modules/Default.js +++ b/src/core/config/modules/Default.js @@ -130,6 +130,7 @@ OpModules.Default = { "Translate DateTime Format": DateTime.runTranslateFormat, "From UNIX Timestamp": DateTime.runFromUnixTimestamp, "To UNIX Timestamp": DateTime.runToUnixTimestamp, + "Sleep": DateTime.runSleep, "Microsoft Script Decoder": MS.runDecodeScript, "Entropy": Entropy.runEntropy, "Frequency distribution": Entropy.runFreqDistrib, diff --git a/src/core/operations/DateTime.js b/src/core/operations/DateTime.js index 7211d7cb..9f87939d 100755 --- a/src/core/operations/DateTime.js +++ b/src/core/operations/DateTime.js @@ -189,6 +189,20 @@ const DateTime = { }, + /** + * Sleep operation. + * + * @param {ArrayBuffer} input + * @param {Object[]} args + * @returns {ArrayBuffer} + */ + runSleep: async function(input, args) { + const ms = args[0]; + await new Promise(r => setTimeout(r, ms)); + return input; + }, + + /** * @constant */