aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-09-13 19:57:59 -0400
committerGravatar GitHub <noreply@github.com> 2023-09-13 16:57:59 -0700
commit4f8edb825f48d06891de7a77131c6a434c06df88 (patch)
treeee9b1b19a3c379e0f05b2f28e395948ed078561a /src
parentcb01cb0d4ad67aace33ae603938d1a28a7c10ca7 (diff)
downloadbun-4f8edb825f48d06891de7a77131c6a434c06df88.tar.gz
bun-4f8edb825f48d06891de7a77131c6a434c06df88.tar.zst
bun-4f8edb825f48d06891de7a77131c6a434c06df88.zip
fix(runtime): require cache should not include unevaluated ESM modules. (#5233)
Diffstat (limited to 'src')
-rw-r--r--src/js/builtins/ImportMetaObject.ts8
-rw-r--r--src/js/out/WebCoreJSBuiltins.cpp4
2 files changed, 5 insertions, 7 deletions
diff --git a/src/js/builtins/ImportMetaObject.ts b/src/js/builtins/ImportMetaObject.ts
index 9409bb0f1..2fd4880a6 100644
--- a/src/js/builtins/ImportMetaObject.ts
+++ b/src/js/builtins/ImportMetaObject.ts
@@ -177,13 +177,11 @@ export function createRequireCache() {
ownKeys(target) {
var array = [...$requireMap.$keys()];
- const registryKeys = [...Loader.registry.$keys()];
- for (const key of registryKeys) {
- if (!array.includes(key)) {
+ for (const key of Loader.registry.$keys()) {
+ if (!array.includes(key) && Loader.registry.$get(key)?.evaluated) {
$arrayPush(array, key);
}
}
-
return array;
},
@@ -193,7 +191,7 @@ export function createRequireCache() {
},
getOwnPropertyDescriptor(target, key: string) {
- if ($requireMap.$has(key) || Loader.registry.$has(key)) {
+ if ($requireMap.$has(key) || Loader.registry.$get(key)?.evaluated) {
return {
configurable: true,
enumerable: true,
diff --git a/src/js/out/WebCoreJSBuiltins.cpp b/src/js/out/WebCoreJSBuiltins.cpp
index a83ce2bd6..9b7647a4a 100644
--- a/src/js/out/WebCoreJSBuiltins.cpp
+++ b/src/js/out/WebCoreJSBuiltins.cpp
@@ -2296,9 +2296,9 @@ const char* const s_importMetaObjectInternalRequireCode = "(function (id){\"use
const JSC::ConstructAbility s_importMetaObjectCreateRequireCacheCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_importMetaObjectCreateRequireCacheCodeConstructorKind = JSC::ConstructorKind::None;
const JSC::ImplementationVisibility s_importMetaObjectCreateRequireCacheCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_importMetaObjectCreateRequireCacheCodeLength = 978;
+const int s_importMetaObjectCreateRequireCacheCodeLength = 991;
static const JSC::Intrinsic s_importMetaObjectCreateRequireCacheCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_importMetaObjectCreateRequireCacheCode = "(function (){\"use strict\";var moduleMap=new Map,inner={};return new Proxy(inner,{get(target,key){const entry=@requireMap.@get(key);if(entry)return entry;const esm=@Loader.registry.@get(key);if(esm\?.evaluated){const namespace=@Loader.getModuleNamespaceObject(esm.module),mod=@createCommonJSModule(key,namespace,!0);return @requireMap.@set(key,mod),mod}return inner[key]},set(target,key,value){return @requireMap.@set(key,value),!0},has(target,key){return @requireMap.@has(key)||@Loader.registry.@has(key)},deleteProperty(target,key){return moduleMap.@delete(key),@requireMap.@delete(key),@Loader.registry.@delete(key),!0},ownKeys(target){var array=[...@requireMap.@keys()];const registryKeys=[...@Loader.registry.@keys()];for(let key of registryKeys)if(!array.includes(key))@arrayPush(array,key);return array},getPrototypeOf(target){return null},getOwnPropertyDescriptor(target,key){if(@requireMap.@has(key)||@Loader.registry.@has(key))return{configurable:!0,enumerable:!0}}})})\n";
+const char* const s_importMetaObjectCreateRequireCacheCode = "(function (){\"use strict\";var moduleMap=new Map,inner={};return new Proxy(inner,{get(target,key){const entry=@requireMap.@get(key);if(entry)return entry;const esm=@Loader.registry.@get(key);if(esm\?.evaluated){const namespace=@Loader.getModuleNamespaceObject(esm.module),mod=@createCommonJSModule(key,namespace,!0);return @requireMap.@set(key,mod),mod}return inner[key]},set(target,key,value){return @requireMap.@set(key,value),!0},has(target,key){return @requireMap.@has(key)||@Loader.registry.@has(key)},deleteProperty(target,key){return moduleMap.@delete(key),@requireMap.@delete(key),@Loader.registry.@delete(key),!0},ownKeys(target){var array=[...@requireMap.@keys()];for(let key of @Loader.registry.@keys())if(!array.includes(key)&&@Loader.registry.@get(key)\?.evaluated)@arrayPush(array,key);return array},getPrototypeOf(target){return null},getOwnPropertyDescriptor(target,key){if(@requireMap.@has(key)||@Loader.registry.@get(key)\?.evaluated)return{configurable:!0,enumerable:!0}}})})\n";
// main
const JSC::ConstructAbility s_importMetaObjectMainCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;