summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy-utils/src/DateCompare.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@11ty/eleventy-utils/src/DateCompare.js')
-rw-r--r--node_modules/@11ty/eleventy-utils/src/DateCompare.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/@11ty/eleventy-utils/src/DateCompare.js b/node_modules/@11ty/eleventy-utils/src/DateCompare.js
new file mode 100644
index 0000000..a160ace
--- /dev/null
+++ b/node_modules/@11ty/eleventy-utils/src/DateCompare.js
@@ -0,0 +1,41 @@
+class DateCompare {
+ static isTimestampWithinDuration(timestamp, duration, compareDate = Date.now()) {
+ // the default duration is Infinity (also "*")
+ if (!duration || duration === "*" || duration === Infinity) {
+ return true;
+ }
+
+ let expiration = timestamp + this.getDurationMs(duration);
+
+ // still valid
+ if (expiration > compareDate) {
+ return true;
+ }
+
+ // expired
+ return false;
+ }
+
+ static getDurationMs(duration = "0s") {
+ let durationUnits = duration.slice(-1);
+ let durationMultiplier;
+ if (durationUnits === "s") {
+ durationMultiplier = 1;
+ } else if (durationUnits === "m") {
+ durationMultiplier = 60;
+ } else if (durationUnits === "h") {
+ durationMultiplier = 60 * 60;
+ } else if (durationUnits === "d") {
+ durationMultiplier = 60 * 60 * 24;
+ } else if (durationUnits === "w") {
+ durationMultiplier = 60 * 60 * 24 * 7;
+ } else if (durationUnits === "y") {
+ durationMultiplier = 60 * 60 * 24 * 365;
+ }
+
+ let durationValue = parseInt(duration.slice(0, duration.length - 1), 10);
+ return durationValue * durationMultiplier * 1000;
+ }
+}
+
+module.exports = DateCompare; \ No newline at end of file