aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-02-03 17:25:25 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-02-03 17:25:25 -0800
commitde613baf81bfaf524818cb72811e13ad9a3765ff (patch)
tree7ee3116f32e4f8b7ecf73f4c70e4b0078ada51da /src/bun.js
parent4590e2b83acbab63f1516c795f7f79a22f5d3083 (diff)
downloadbun-de613baf81bfaf524818cb72811e13ad9a3765ff.tar.gz
bun-de613baf81bfaf524818cb72811e13ad9a3765ff.tar.zst
bun-de613baf81bfaf524818cb72811e13ad9a3765ff.zip
Support passing `Date` to `Bun.sleep`
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 5eeaf9804..54ccba343 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -108,6 +108,7 @@
#include "ModuleLoader.h"
#include "ZigGeneratedClasses.h"
+#include "JavaScriptCore/DateInstance.h"
#include "BunPlugin.h"
@@ -810,6 +811,13 @@ JSC_DEFINE_HOST_FUNCTION(functionBunSleep,
JSC::VM& vm = globalObject->vm();
JSC::JSValue millisecondsValue = callFrame->argument(0);
+
+ if (millisecondsValue.inherits<JSC::DateInstance>()) {
+ auto now = MonotonicTime::now();
+ auto milliseconds = jsCast<JSC::DateInstance*>(millisecondsValue)->internalNumber() - now.approximateWallTime().secondsSinceEpoch().milliseconds();
+ millisecondsValue = JSC::jsNumber(milliseconds > 0 ? milliseconds : 0);
+ }
+
if (!millisecondsValue.isNumber()) {
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
JSC::throwTypeError(globalObject, scope, "sleep expects a number (milliseconds)"_s);