js: fix many typescript errors (#18272)

Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
This commit is contained in:
Meghan Denny
2025-03-19 21:39:24 -08:00
committed by GitHub
parent 46b2a58c25
commit 2024fa09d7
31 changed files with 535 additions and 317 deletions

View File

@@ -1364,6 +1364,20 @@ JSC_DEFINE_HOST_FUNCTION(Bun::jsFunctionMakeErrorWithCode, (JSC::JSGlobalObject
return JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_IP_ADDRESS, builder.toString()));
}
case Bun::ErrorCode::ERR_INVALID_ADDRESS_FAMILY: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg2 = callFrame->argument(3);
auto str2 = arg2.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid address family: "_s, str0, " "_s, str1, ":"_s, str2);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_ADDRESS_FAMILY, message));
}
case Bun::ErrorCode::ERR_INVALID_ARG_VALUE: {
JSValue arg0 = callFrame->argument(1);
JSValue arg1 = callFrame->argument(2);
@@ -1690,6 +1704,229 @@ JSC_DEFINE_HOST_FUNCTION(Bun::jsFunctionMakeErrorWithCode, (JSC::JSGlobalObject
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_TLS_PROTOCOL_VERSION_CONFLICT, message));
}
case Bun::ErrorCode::ERR_TLS_CERT_ALTNAME_INVALID: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto arg2 = callFrame->argument(3);
auto message = makeString("Hostname/IP does not match certificate's altnames: "_s, str0);
auto err = createError(globalObject, ErrorCode::ERR_TLS_CERT_ALTNAME_INVALID, message);
err->putDirect(vm, Identifier::fromString(vm, "reason"_s), arg0);
err->putDirect(vm, Identifier::fromString(vm, "host"_s), arg1);
err->putDirect(vm, Identifier::fromString(vm, "cert"_s), arg2);
return JSC::JSValue::encode(err);
}
case Bun::ErrorCode::ERR_USE_AFTER_CLOSE: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString(str0, " was closed"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_USE_AFTER_CLOSE, message));
}
case Bun::ErrorCode::ERR_INVALID_HTTP_TOKEN: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString(str0, " must be a valid HTTP token [\""_s, str1, "\"]"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_HTTP_TOKEN, message));
}
case Bun::ErrorCode::ERR_HTTP2_INVALID_HEADER_VALUE: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid value \""_s, str0, "\" for header \""_s, str1, "\""_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INVALID_HEADER_VALUE, message));
}
case Bun::ErrorCode::ERR_HTTP2_STATUS_INVALID: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid status code: "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_STATUS_INVALID, message));
}
case Bun::ErrorCode::ERR_HTTP2_INVALID_PSEUDOHEADER: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("\""_s, str0, "\" is an invalid pseudoheader or is used incorrectly"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INVALID_PSEUDOHEADER, message));
}
case Bun::ErrorCode::ERR_HTTP2_STREAM_ERROR: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Stream closed with error code "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_STREAM_ERROR, message));
}
case Bun::ErrorCode::ERR_HTTP2_SESSION_ERROR: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Session closed with error code "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_SESSION_ERROR, message));
}
case Bun::ErrorCode::ERR_HTTP2_PAYLOAD_FORBIDDEN: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Responses with "_s, str0, " status must not have a payload"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_PAYLOAD_FORBIDDEN, message));
}
case Bun::ErrorCode::ERR_HTTP2_INVALID_INFO_STATUS: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid informational status code: "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INVALID_INFO_STATUS, message));
}
case Bun::ErrorCode::ERR_INVALID_URL: {
auto arg0 = callFrame->argument(1);
auto arg1 = callFrame->argument(2);
// Don't include URL in message. (See https://github.com/nodejs/node/pull/38614)
auto err = createError(globalObject, ErrorCode::ERR_INVALID_URL, "Invalid URL"_s);
err->putDirect(vm, vm.propertyNames->input, arg0);
if (!arg1.isUndefinedOrNull()) err->putDirect(vm, Identifier::fromString(vm, "base"_s), arg1);
return JSC::JSValue::encode(err);
}
case Bun::ErrorCode::ERR_INVALID_CHAR: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
WTF::StringBuilder builder;
builder.append("Invalid character in "_s);
builder.append(str0);
if (!arg1.isUndefined()) {
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
builder.append(" [\""_s);
builder.append(str1);
builder.append("\"]"_s);
}
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_CHAR, builder.toString()));
}
case Bun::ErrorCode::ERR_HTTP_INVALID_HEADER_VALUE: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid value \""_s, str0, "\" for header \""_s, str1, "\""_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP_INVALID_HEADER_VALUE, message));
}
case Bun::ErrorCode::ERR_HTTP_HEADERS_SENT: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Cannot "_s, str0, " headers after they are sent to the client"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP_HEADERS_SENT, message));
}
case Bun::ErrorCode::ERR_UNESCAPED_CHARACTERS: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString(str0, " contains unescaped characters"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_UNESCAPED_CHARACTERS, message));
}
case Bun::ErrorCode::ERR_HTTP_INVALID_STATUS_CODE: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid status code: "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP_INVALID_STATUS_CODE, message));
}
case Bun::ErrorCode::ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid key object type "_s, str0, ", expected "_s, str1, "."_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE, message));
}
case Bun::ErrorCode::ERR_CRYPTO_INCOMPATIBLE_KEY: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Incompatible "_s, str0, ": "_s, str1);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_CRYPTO_INCOMPATIBLE_KEY, message));
}
case Bun::ErrorCode::ERR_CHILD_PROCESS_IPC_REQUIRED: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Forked processes must have an IPC channel, missing value 'ipc' in "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_CHILD_PROCESS_IPC_REQUIRED, message));
}
case Bun::ErrorCode::ERR_INVALID_ASYNC_ID: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid "_s, str0, " value: "_s, str1);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_ASYNC_ID, message));
}
case Bun::ErrorCode::ERR_ASYNC_TYPE: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("Invalid name for async \"type\": "_s, str0);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_ASYNC_TYPE, message));
}
case Bun::ErrorCode::ERR_ASYNC_CALLBACK: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString(str0, " must be a function"_s);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_ASYNC_CALLBACK, message));
}
case Bun::ErrorCode::ERR_AMBIGUOUS_ARGUMENT: {
auto arg0 = callFrame->argument(1);
auto str0 = arg0.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto arg1 = callFrame->argument(2);
auto str1 = arg1.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
auto message = makeString("The \""_s, str0, "\" argument is ambiguous. "_s, str1);
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_AMBIGUOUS_ARGUMENT, message));
}
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:
@@ -1742,12 +1979,66 @@ JSC_DEFINE_HOST_FUNCTION(Bun::jsFunctionMakeErrorWithCode, (JSC::JSGlobalObject
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_SOCKET_CLOSED_BEFORE_CONNECTION, "Socket closed before the connection was established"_s));
case ErrorCode::ERR_TLS_RENEGOTIATION_DISABLED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_TLS_RENEGOTIATION_DISABLED, "TLS session renegotiation disabled for this socket"_s));
case ErrorCode::ERR_UNAVAILABLE_DURING_EXIT:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_UNAVAILABLE_DURING_EXIT, "Cannot call function in process exit handler"_s));
case ErrorCode::ERR_TLS_CERT_ALTNAME_FORMAT:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_TLS_CERT_ALTNAME_FORMAT, "Invalid subject alternative name string"_s));
case ErrorCode::ERR_TLS_SNI_FROM_SERVER:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_TLS_SNI_FROM_SERVER, "Cannot issue SNI from a TLS server-side socket"_s));
case ErrorCode::ERR_INVALID_URI:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_INVALID_URI, "URI malformed"_s));
case ErrorCode::ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED, "Cannot set HTTP/2 pseudo-headers"_s));
case ErrorCode::ERR_HTTP2_INFO_STATUS_NOT_ALLOWED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INFO_STATUS_NOT_ALLOWED, "Informational status codes cannot be used"_s));
case ErrorCode::ERR_HTTP2_HEADERS_SENT:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_HEADERS_SENT, "Response has already been initiated."_s));
case ErrorCode::ERR_HTTP2_INVALID_STREAM:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INVALID_STREAM, "The stream has been destroyed"_s));
case ErrorCode::ERR_HTTP2_NO_SOCKET_MANIPULATION:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_NO_SOCKET_MANIPULATION, "HTTP/2 sockets should not be directly manipulated (e.g. read and written)"_s));
case ErrorCode::ERR_HTTP2_SOCKET_UNBOUND:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_SOCKET_UNBOUND, "The socket has been disconnected from the Http2Session"_s));
case ErrorCode::ERR_HTTP2_MAX_PENDING_SETTINGS_ACK:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_MAX_PENDING_SETTINGS_ACK, "Maximum number of pending settings acknowledgements"_s));
case ErrorCode::ERR_HTTP2_INVALID_SESSION:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INVALID_SESSION, "The session has been destroyed"_s));
case ErrorCode::ERR_HTTP2_TRAILERS_ALREADY_SENT:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_TRAILERS_ALREADY_SENT, "Trailing headers have already been sent"_s));
case ErrorCode::ERR_HTTP2_TRAILERS_NOT_READY:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_TRAILERS_NOT_READY, "Trailing headers cannot be sent until after the wantTrailers event is emitted"_s));
case ErrorCode::ERR_HTTP2_SEND_FILE:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_SEND_FILE, "Directories cannot be sent"_s));
case ErrorCode::ERR_HTTP2_SEND_FILE_NOSEEK:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_SEND_FILE_NOSEEK, "Offset or length can only be specified for regular files"_s));
case ErrorCode::ERR_HTTP2_PUSH_DISABLED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_PUSH_DISABLED, "HTTP/2 client has disabled push streams"_s));
case ErrorCode::ERR_HTTP2_HEADERS_AFTER_RESPOND:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_HEADERS_AFTER_RESPOND, "Cannot specify additional headers after response initiated"_s));
case ErrorCode::ERR_HTTP2_STATUS_101:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_STATUS_101, "HTTP status code 101 (Switching Protocols) is forbidden in HTTP/2"_s));
case ErrorCode::ERR_HTTP2_ALTSVC_INVALID_ORIGIN:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_ALTSVC_INVALID_ORIGIN, "HTTP/2 ALTSVC frames require a valid origin"_s));
case ErrorCode::ERR_HTTP2_INVALID_ORIGIN:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_INVALID_ORIGIN, "HTTP/2 ORIGIN frames require a valid origin"_s));
case ErrorCode::ERR_HTTP2_ALTSVC_LENGTH:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_ALTSVC_LENGTH, "HTTP/2 ALTSVC frames are limited to 16382 bytes"_s));
case ErrorCode::ERR_HTTP2_PING_LENGTH:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_PING_LENGTH, "HTTP2 ping payload must be 8 bytes"_s));
case ErrorCode::ERR_HTTP2_OUT_OF_STREAMS:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP2_OUT_OF_STREAMS, "No stream ID is available because maximum stream ID has been reached"_s));
case ErrorCode::ERR_HTTP_BODY_NOT_ALLOWED:
return JSC::JSValue::encode(createError(globalObject, ErrorCode::ERR_HTTP_BODY_NOT_ALLOWED, "Adding content for this request method or response status is not allowed."_s));
default: {
break;
}
}
#if BUN_DEBUG
ASSERT(false, "Improper use of @makeError! Add error function to ErrorCode.cpp and builtins.d.ts");
#endif
auto&& message = callFrame->argument(1).toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});