diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json index 25a8b46e..257f4742 100755 --- a/src/core/config/Categories.json +++ b/src/core/config/Categories.json @@ -267,7 +267,7 @@ "Windows Filetime to UNIX Timestamp", "UNIX Timestamp to Windows Filetime", "Extract dates", - "Generate Current Epoch", + "Get Time", "Sleep" ] }, diff --git a/src/core/operations/GenerateCurrentEpoch.mjs b/src/core/operations/GenerateCurrentEpoch.mjs deleted file mode 100644 index a49ddc44..00000000 --- a/src/core/operations/GenerateCurrentEpoch.mjs +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @author n1073645 [n1073645@gmail.com] - * @copyright Crown Copyright 2020 - * @license Apache-2.0 - */ - -import Operation from "../Operation.mjs"; - -/** - * GenerateCurrentEpoch operation - */ -class GenerateCurrentEpoch extends Operation { - - /** - * GenerateCurrentEpoch constructor - */ - constructor() { - super(); - - this.name = "Generate Current Epoch"; - this.module = "Default"; - this.description = "Generates the current time(in seconds/milliseconds) since the UNIX epoch."; - this.infoURL = "https://wikipedia.org/wiki/Unix_time"; - this.inputType = "string"; - this.outputType = "string"; - this.args = [ - { - name: "Granularity", - type: "option", - value: ["Milliseconds", "Seconds"] - } - ]; - } - - /** - * @param {string} input - * @param {Object[]} args - * @returns {string} - */ - run(input, args) { - if (args[0] === "Milliseconds") - return (new Date()).getTime().toString(); - else - return Math.round((new Date()).getTime() / 1000).toString(); - } - -} - -export default GenerateCurrentEpoch; diff --git a/src/core/operations/GetTime.mjs b/src/core/operations/GetTime.mjs new file mode 100644 index 00000000..36a0427b --- /dev/null +++ b/src/core/operations/GetTime.mjs @@ -0,0 +1,62 @@ +/** + * @author n1073645 [n1073645@gmail.com] + * @copyright Crown Copyright 2020 + * @license Apache-2.0 + */ + +import Operation from "../Operation.mjs"; +import OperationError from "../errors/OperationError.mjs"; +import {UNITS} from "../lib/DateTime.mjs"; + +/** + * Get Time operation + */ +class GetTime extends Operation { + + /** + * GetTime constructor + */ + constructor() { + super(); + + this.name = "Get Time"; + this.module = "Default"; + this.description = "Generates a timestamp showing the amount of time since the UNIX epoch (1970-01-01 00:00:00 UTC). Uses the W3C High Resolution Time API."; + this.infoURL = "https://wikipedia.org/wiki/Unix_time"; + this.inputType = "string"; + this.outputType = "number"; + this.args = [ + { + name: "Granularity", + type: "option", + value: UNITS + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {number} + */ + run(input, args) { + const nowMs = (performance.timeOrigin + performance.now()), + granularity = args[0]; + + switch (granularity) { + case "Nanoseconds (ns)": + return Math.round(nowMs * 1000 * 1000); + case "Microseconds (μs)": + return Math.round(nowMs * 1000); + case "Milliseconds (ms)": + return Math.round(nowMs); + case "Seconds (s)": + return Math.round(nowMs / 1000); + default: + throw new OperationError("Unknown granularity value: " + granularity); + } + } + +} + +export default GetTime;