aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/builtins/cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-18 14:59:39 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-18 14:59:39 -0800
commit7012d2fb7407739d8cb8eb09e726ac288a485683 (patch)
tree9088d270fb275dbc30a3aeca03501769fd1e7e3c /src/bun.js/builtins/cpp
parent2db04ef9d9ddf6531b0a77c3b0867bc80388a039 (diff)
downloadbun-7012d2fb7407739d8cb8eb09e726ac288a485683.tar.gz
bun-7012d2fb7407739d8cb8eb09e726ac288a485683.tar.zst
bun-7012d2fb7407739d8cb8eb09e726ac288a485683.zip
Fixes #1831
Diffstat (limited to 'src/bun.js/builtins/cpp')
-rw-r--r--src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp36
-rw-r--r--src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h9
2 files changed, 34 insertions, 11 deletions
diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp
index 360168176..a6a62ed62 100644
--- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp
@@ -195,18 +195,15 @@ const char* const s_importMetaObjectRequireESMCode =
"})\n" \
;
-const JSC::ConstructAbility s_importMetaObjectRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_importMetaObjectRequireCodeConstructorKind = JSC::ConstructorKind::None;
-const JSC::ImplementationVisibility s_importMetaObjectRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_importMetaObjectRequireCodeLength = 1133;
-static const JSC::Intrinsic s_importMetaObjectRequireCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_importMetaObjectRequireCode =
- "(function (name) {\n" \
+const JSC::ConstructAbility s_importMetaObjectInternalRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
+const JSC::ConstructorKind s_importMetaObjectInternalRequireCodeConstructorKind = JSC::ConstructorKind::None;
+const JSC::ImplementationVisibility s_importMetaObjectInternalRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
+const int s_importMetaObjectInternalRequireCodeLength = 983;
+static const JSC::Intrinsic s_importMetaObjectInternalRequireCodeIntrinsic = JSC::NoIntrinsic;
+const char* const s_importMetaObjectInternalRequireCode =
+ "(function (resolved) {\n" \
" \"use strict\";\n" \
- " if (typeof name !== \"string\") {\n" \
- " @throwTypeError(\"require() expects a string as its argument\");\n" \
- " }\n" \
- " const resolved = @resolveSync(name, this.path);\n" \
+ "\n" \
" var cached = @requireMap.@get(resolved);\n" \
" const last5 = resolved.substring(resolved.length - 5);\n" \
" if (cached) {\n" \
@@ -241,6 +238,23 @@ const char* const s_importMetaObjectRequireCode =
"})\n" \
;
+const JSC::ConstructAbility s_importMetaObjectRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
+const JSC::ConstructorKind s_importMetaObjectRequireCodeConstructorKind = JSC::ConstructorKind::None;
+const JSC::ImplementationVisibility s_importMetaObjectRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
+const int s_importMetaObjectRequireCodeLength = 222;
+static const JSC::Intrinsic s_importMetaObjectRequireCodeIntrinsic = JSC::NoIntrinsic;
+const char* const s_importMetaObjectRequireCode =
+ "(function (name) {\n" \
+ " const from = this?.path ?? arguments.callee.path;\n" \
+ "\n" \
+ " if (typeof name !== \"string\") {\n" \
+ " @throwTypeError(\"require(name) must be a string\");\n" \
+ " }\n" \
+ "\n" \
+ " return @internalRequire(@resolveSync(name, from));\n" \
+ "})\n" \
+;
+
#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \
JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \
diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h
index 5cc424ec8..d47c86980 100644
--- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h
+++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.h
@@ -57,6 +57,11 @@ extern const int s_importMetaObjectRequireESMCodeLength;
extern const JSC::ConstructAbility s_importMetaObjectRequireESMCodeConstructAbility;
extern const JSC::ConstructorKind s_importMetaObjectRequireESMCodeConstructorKind;
extern const JSC::ImplementationVisibility s_importMetaObjectRequireESMCodeImplementationVisibility;
+extern const char* const s_importMetaObjectInternalRequireCode;
+extern const int s_importMetaObjectInternalRequireCodeLength;
+extern const JSC::ConstructAbility s_importMetaObjectInternalRequireCodeConstructAbility;
+extern const JSC::ConstructorKind s_importMetaObjectInternalRequireCodeConstructorKind;
+extern const JSC::ImplementationVisibility s_importMetaObjectInternalRequireCodeImplementationVisibility;
extern const char* const s_importMetaObjectRequireCode;
extern const int s_importMetaObjectRequireCodeLength;
extern const JSC::ConstructAbility s_importMetaObjectRequireCodeConstructAbility;
@@ -66,18 +71,22 @@ extern const JSC::ImplementationVisibility s_importMetaObjectRequireCodeImplemen
#define WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_DATA(macro) \
macro(loadCJS2ESM, importMetaObjectLoadCJS2ESM, 1) \
macro(requireESM, importMetaObjectRequireESM, 1) \
+ macro(internalRequire, importMetaObjectInternalRequire, 1) \
macro(require, importMetaObjectRequire, 1) \
#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_LOADCJS2ESM 1
#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_REQUIREESM 1
+#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_INTERNALREQUIRE 1
#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_REQUIRE 1
#define WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(macro) \
macro(importMetaObjectLoadCJS2ESMCode, loadCJS2ESM, ASCIILiteral(), s_importMetaObjectLoadCJS2ESMCodeLength) \
macro(importMetaObjectRequireESMCode, requireESM, ASCIILiteral(), s_importMetaObjectRequireESMCodeLength) \
+ macro(importMetaObjectInternalRequireCode, internalRequire, ASCIILiteral(), s_importMetaObjectInternalRequireCodeLength) \
macro(importMetaObjectRequireCode, require, ASCIILiteral(), s_importMetaObjectRequireCodeLength) \
#define WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_FUNCTION_NAME(macro) \
+ macro(internalRequire) \
macro(loadCJS2ESM) \
macro(require) \
macro(requireESM) \