node:vm compatibility (#19703)

This commit is contained in:
Kai Tamkun
2025-05-23 22:59:58 -07:00
committed by GitHub
parent 3ea6133c46
commit 392212b090
37 changed files with 4611 additions and 1236 deletions

View File

@@ -2224,6 +2224,26 @@ JSC_DEFINE_HOST_FUNCTION(Bun::jsFunctionMakeErrorWithCode, (JSC::JSGlobalObject
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_CHILD_PROCESS_STDIO_MAXBUFFER, message));
}
case Bun::ErrorCode::ERR_VM_MODULE_STATUS: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Module status "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_VM_MODULE_STATUS, message));
}
case Bun::ErrorCode::ERR_VM_MODULE_LINK_FAILURE: {
auto arg0 = callFrame->argument(1);
auto message = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto cause = callFrame->argument(2);
JSObject* error = createError(globalObject, ErrorCode::ERR_VM_MODULE_LINK_FAILURE, message);
RETURN_IF_EXCEPTION(scope, {});
error->putDirect(vm, Identifier::fromString(vm, "cause"_s), cause);
RETURN_IF_EXCEPTION(scope, {});
return JSC::JSValue::encode(error);
}
case ErrorCode::ERR_IPC_DISCONNECTED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_IPC_DISCONNECTED, "IPC channel is already disconnected"_s));
case ErrorCode::ERR_SERVER_NOT_RUNNING:
@@ -2332,6 +2352,14 @@ JSC_DEFINE_HOST_FUNCTION(Bun::jsFunctionMakeErrorWithCode, (JSC::JSGlobalObject
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP_SOCKET_ASSIGNED, "Socket already assigned"_s));
case ErrorCode::ERR_STREAM_RELEASE_LOCK:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_STREAM_RELEASE_LOCK, "Stream reader cancelled via releaseLock()"_s));
case ErrorCode::ERR_VM_MODULE_ALREADY_LINKED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_VM_MODULE_ALREADY_LINKED, "Module has already been linked"_s));
case ErrorCode::ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA, "Cached data cannot be created for a module which has been evaluated"_s));
case ErrorCode::ERR_VM_MODULE_NOT_MODULE:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_VM_MODULE_NOT_MODULE, "Provided module is not an instance of Module"_s));
case ErrorCode::ERR_VM_MODULE_DIFFERENT_CONTEXT:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_VM_MODULE_DIFFERENT_CONTEXT, "Linked modules must use the same context"_s));
default: {
break;