@@ -1445,7 +1445,8 @@ static MaybeLocal<Function> CompileFunctionForCJSLoader(Environment* env,
|
1445 | 1445 | Local<Context> context,
|
1446 | 1446 | Local<String> code,
|
1447 | 1447 | Local<String> filename,
|
1448 |
| -bool* cache_rejected) { |
| 1448 | +bool* cache_rejected, |
| 1449 | +bool is_cjs_scope) { |
1449 | 1450 | Isolate* isolate = context->GetIsolate();
|
1450 | 1451 | EscapableHandleScope scope(isolate);
|
1451 | 1452 |
|
@@ -1485,7 +1486,10 @@ static MaybeLocal<Function> CompileFunctionForCJSLoader(Environment* env,
|
1485 | 1486 | options = ScriptCompiler::kConsumeCodeCache;
|
1486 | 1487 | }
|
1487 | 1488 |
|
1488 |
| -std::vector<Local<String>> params = GetCJSParameters(env->isolate_data()); |
| 1489 | +std::vector<Local<String>> params; |
| 1490 | +if (is_cjs_scope) { |
| 1491 | +params = GetCJSParameters(env->isolate_data()); |
| 1492 | +} |
1489 | 1493 | MaybeLocal<Function> maybe_fn = ScriptCompiler::CompileFunction(
|
1490 | 1494 | context,
|
1491 | 1495 | &source,
|
@@ -1544,7 +1548,7 @@ static void CompileFunctionForCJSLoader(
|
1544 | 1548 | ShouldNotAbortOnUncaughtScope no_abort_scope(realm->env());
|
1545 | 1549 | TryCatchScope try_catch(env);
|
1546 | 1550 | if (!CompileFunctionForCJSLoader(
|
1547 |
| -env, context, code, filename, &cache_rejected) |
| 1551 | +env, context, code, filename, &cache_rejected, true) |
1548 | 1552 | .ToLocal(&fn)) {
|
1549 | 1553 | CHECK(try_catch.HasCaught());
|
1550 | 1554 | CHECK(!try_catch.HasTerminated());
|
@@ -1682,11 +1686,15 @@ static void ContainsModuleSyntax(const FunctionCallbackInfo<Value>& args) {
|
1682 | 1686 | CHECK(args[1]->IsString());
|
1683 | 1687 | Local<String> filename = args[1].As<String>();
|
1684 | 1688 |
|
1685 |
| -// Argument 2: resource name (URL for ES module). |
| 1689 | +// Argument 3: resource name (URL for ES module). |
1686 | 1690 | Local<String> resource_name = filename;
|
1687 | 1691 | if (args[2]->IsString()) {
|
1688 | 1692 | resource_name = args[2].As<String>();
|
1689 | 1693 | }
|
| 1694 | +// Argument 4: flag to indicate if CJS variables should not be in scope |
| 1695 | +// (they should be for normal CommonJS modules, but not for the |
| 1696 | +// CommonJS eval scope). |
| 1697 | +bool cjs_var = !args[3]->IsString(); |
1690 | 1698 |
|
1691 | 1699 | bool cache_rejected = false;
|
1692 | 1700 | Local<String> message;
|
@@ -1695,7 +1703,7 @@ static void ContainsModuleSyntax(const FunctionCallbackInfo<Value>& args) {
|
1695 | 1703 | TryCatchScope try_catch(env);
|
1696 | 1704 | ShouldNotAbortOnUncaughtScope no_abort_scope(env);
|
1697 | 1705 | if (CompileFunctionForCJSLoader(
|
1698 |
| -env, context, code, filename, &cache_rejected) |
| 1706 | +env, context, code, filename, &cache_rejected, cjs_var) |
1699 | 1707 | .ToLocal(&fn)) {
|
1700 | 1708 | args.GetReturnValue().Set(false);
|
1701 | 1709 | return;
|
|
0 commit comments