aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/Process.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-17 16:29:08 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-17 16:29:08 -0800
commitfd0edd7aa086b606d7d8c64f37d3f0cceca7b77b (patch)
tree67a74398c973f4f57610ee2243112f8be0d14f17 /src/bun.js/bindings/Process.cpp
parent848658c533afb3f14b1f87591624bdf48ed28979 (diff)
downloadbun-fd0edd7aa086b606d7d8c64f37d3f0cceca7b77b.tar.gz
bun-fd0edd7aa086b606d7d8c64f37d3f0cceca7b77b.tar.zst
bun-fd0edd7aa086b606d7d8c64f37d3f0cceca7b77b.zip
[process] Implement `process.emitWarning`
Diffstat (limited to 'src/bun.js/bindings/Process.cpp')
-rw-r--r--src/bun.js/bindings/Process.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/bun.js/bindings/Process.cpp b/src/bun.js/bindings/Process.cpp
index 039489ed1..69025f373 100644
--- a/src/bun.js/bindings/Process.cpp
+++ b/src/bun.js/bindings/Process.cpp
@@ -520,6 +520,37 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionAbort, (JSGlobalObject * globalObject,
__builtin_unreachable();
}
+JSC_DEFINE_HOST_FUNCTION(Process_emitWarning, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
+{
+ Zig::GlobalObject* globalObject = static_cast<Zig::GlobalObject*>(lexicalGlobalObject);
+ VM& vm = globalObject->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ if (callFrame->argumentCount() < 1) {
+ throwVMError(globalObject, scope, "Not enough arguments"_s);
+ return JSValue::encode(jsUndefined());
+ }
+
+ auto jsArgs = JSValue::encode(callFrame->uncheckedArgument(0));
+
+ RETURN_IF_EXCEPTION(scope, encodedJSValue());
+
+ auto* process = jsCast<Process*>(globalObject->processObject());
+
+ auto ident = Identifier::fromString(vm, "warning"_s);
+ if (process->wrapped().hasEventListeners(ident)) {
+ WTF::String str = callFrame->uncheckedArgument(0).toWTFString(globalObject);
+ JSC::MarkedArgumentBuffer args;
+ args.append(createError(globalObject, str));
+ process->wrapped().emit(ident, args);
+ return JSValue::encode(jsUndefined());
+ }
+
+ Zig__ConsoleClient__messageWithTypeAndLevel(reinterpret_cast<Zig::ConsoleClient*>(globalObject->consoleClient().get())->m_client, static_cast<uint32_t>(MessageType::Log),
+ static_cast<uint32_t>(MessageLevel::Warning), globalObject, &jsArgs, 1);
+ return JSValue::encode(jsUndefined());
+}
+
JSC_DEFINE_CUSTOM_GETTER(Process_lazyArgv0Getter, (JSC::JSGlobalObject * globalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName name))
{
JSC::JSObject* thisObject = JSValue::decode(thisValue).getObject();
@@ -699,6 +730,9 @@ void Process::finishCreation(JSC::VM& vm)
config->putDirect(vm, JSC::Identifier::fromString(vm, "target_defaults"_s), JSC::constructEmptyObject(globalObject), 0);
config->putDirect(vm, JSC::Identifier::fromString(vm, "variables"_s), variables, 0);
this->putDirect(vm, JSC::Identifier::fromString(vm, "config"_s), config, 0);
+
+ this->putDirectNativeFunction(vm, globalObject, JSC::Identifier::fromString(this->vm(), "emitWarning"_s),
+ 1, Process_emitWarning, ImplementationVisibility::Public, NoIntrinsic, 0);
}
const JSC::ClassInfo Process::s_info = { "Process"_s, &Base::s_info, nullptr, nullptr,