aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-08-17 20:56:52 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-17 20:56:52 -0700
commit6fd0043f6bf766cc488a88339059e8879fa07161 (patch)
treed5289bcaf0880a3bf1e2f0b1c681aff93188fe51 /src/bun.js/bindings/ZigGlobalObject.cpp
parent0424fd8f6e7549ed779788006acdc97a8467e287 (diff)
downloadbun-6fd0043f6bf766cc488a88339059e8879fa07161.tar.gz
bun-6fd0043f6bf766cc488a88339059e8879fa07161.tar.zst
bun-6fd0043f6bf766cc488a88339059e8879fa07161.zip
Add `util.inspect.custom` support to `util.inspect/Bun.inspect/console.log` (#4194)
* start work on util.inspect.custom * asdf * finish util inspect custom inspect * inspect * fix tests * revert * tidy * revert * oops * test * fix issues
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 5524166c3..b6ac8e7ea 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -3270,6 +3270,41 @@ void GlobalObject::finishCreation(VM& vm)
init.set(JSFunction::create(init.vm, init.owner, 4, "performMicrotaskVariadic"_s, jsFunctionPerformMicrotaskVariadic, ImplementationVisibility::Public));
});
+ m_utilInspectFunction.initLater(
+ [](const Initializer<JSFunction>& init) {
+ JSValue nodeUtilValue = static_cast<Zig::GlobalObject*>(init.owner)->internalModuleRegistry()->requireId(init.owner, init.vm, Bun::InternalModuleRegistry::Field::NodeUtil);
+ RELEASE_ASSERT(nodeUtilValue.isObject());
+ init.set(jsCast<JSFunction*>(nodeUtilValue.getObject()->getIfPropertyExists(init.owner, Identifier::fromString(init.vm, "inspect"_s))));
+ });
+
+ m_utilInspectStylizeColorFunction.initLater(
+ [](const Initializer<JSFunction>& init) {
+ auto scope = DECLARE_THROW_SCOPE(init.vm);
+ JSC::JSFunction* getStylize = JSC::JSFunction::create(init.vm, utilInspectGetStylizeWithColorCodeGenerator(init.vm), init.owner);
+ // RETURN_IF_EXCEPTION(scope, {});
+
+ JSC::MarkedArgumentBuffer args;
+ args.append(static_cast<Zig::GlobalObject*>(init.owner)->utilInspectFunction());
+
+ auto clientData = WebCore::clientData(init.vm);
+ JSC::CallData callData = JSC::getCallData(getStylize);
+
+ NakedPtr<JSC::Exception> returnedException = nullptr;
+ auto result = JSC::call(init.owner, getStylize, callData, jsNull(), args, returnedException);
+ // RETURN_IF_EXCEPTION(scope, {});
+
+ if (returnedException) {
+ throwException(init.owner, scope, returnedException.get());
+ }
+ // RETURN_IF_EXCEPTION(scope, {});
+ init.set(jsCast<JSFunction*>(result));
+ });
+
+ m_utilInspectStylizeNoColorFunction.initLater(
+ [](const Initializer<JSFunction>& init) {
+ init.set(JSC::JSFunction::create(init.vm, utilInspectStylizeWithNoColorCodeGenerator(init.vm), init.owner));
+ });
+
m_nativeMicrotaskTrampoline.initLater(
[](const Initializer<JSFunction>& init) {
init.set(JSFunction::create(init.vm, init.owner, 2, ""_s, functionNativeMicrotaskTrampoline, ImplementationVisibility::Public));
@@ -4606,6 +4641,9 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor)
thisObject->m_pendingVirtualModuleResultStructure.visit(visitor);
thisObject->m_performMicrotaskFunction.visit(visitor);
thisObject->m_performMicrotaskVariadicFunction.visit(visitor);
+ thisObject->m_utilInspectFunction.visit(visitor);
+ thisObject->m_utilInspectStylizeColorFunction.visit(visitor);
+ thisObject->m_utilInspectStylizeNoColorFunction.visit(visitor);
thisObject->m_lazyReadableStreamPrototypeMap.visit(visitor);
thisObject->m_requireMap.visit(visitor);
thisObject->m_encodeIntoObjectStructure.visit(visitor);