diff options
author | 2023-02-03 17:25:25 -0800 | |
---|---|---|
committer | 2023-02-03 17:25:25 -0800 | |
commit | de613baf81bfaf524818cb72811e13ad9a3765ff (patch) | |
tree | 7ee3116f32e4f8b7ecf73f4c70e4b0078ada51da /src/bun.js | |
parent | 4590e2b83acbab63f1516c795f7f79a22f5d3083 (diff) | |
download | bun-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.cpp | 8 |
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); |