1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-25 15:29:32 -05:00

chore: @netlify/edge-bundler workaround until Deno 2.0 (#24532)

Hack for a few months until Deno 2.0. See code for details
This commit is contained in:
David Sherret 2024-07-11 13:43:46 -04:00 committed by GitHub
parent 4f15aada02
commit ba63740e7f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 68 additions and 0 deletions

View file

@ -4246,6 +4246,53 @@ fn run_parse(
matches: &mut ArgMatches, matches: &mut ArgMatches,
app: Command, app: Command,
) -> clap::error::Result<()> { ) -> clap::error::Result<()> {
// todo(dsherret): remove this in Deno 2.0
// This is a hack to make https://github.com/netlify/build/pull/5767 work
// for old versions of @netlify/edge-bundler with new versions of Deno
// where Deno has gotten smarter at resolving config files.
//
// It's an unfortuante scenario, but Netlify has the version at least
// pinned to 1.x in old versions so we can remove this in Deno 2.0 in
// a few months.
fn temp_netlify_deno_1_hack(flags: &mut Flags, script_arg: &str) {
fn is_netlify_edge_bundler_entrypoint(
flags: &Flags,
script_arg: &str,
) -> bool {
// based on diff here: https://github.com/netlify/edge-bundler/blame/f1d33b74ca7aeec19a7c2149316d4547a94e43fb/node/config.ts#L85
if flags.permissions.allow_read.is_none()
|| flags.permissions.allow_write.is_none()
|| flags.config_flag != ConfigFlag::Discover
{
return false;
}
if !script_arg.contains("@netlify") {
return false;
}
let path = PathBuf::from(script_arg);
if !path.ends_with("deno/config.ts") {
return false;
}
let mut found_node_modules = false;
for component in path.components().filter_map(|c| c.as_os_str().to_str())
{
if !found_node_modules {
found_node_modules = component == "node_modules";
} else {
// make this work with pnpm and other package managers
if component.contains("@netlify") {
return true;
}
}
}
false
}
if is_netlify_edge_bundler_entrypoint(flags, script_arg) {
flags.config_flag = ConfigFlag::Disabled;
}
}
runtime_args_parse(flags, matches, true, true); runtime_args_parse(flags, matches, true, true);
flags.code_cache_enabled = !matches.get_flag("no-code-cache"); flags.code_cache_enabled = !matches.get_flag("no-code-cache");
@ -4264,6 +4311,7 @@ fn run_parse(
flags.argv.extend(script_arg); flags.argv.extend(script_arg);
ext_arg_parse(flags, matches); ext_arg_parse(flags, matches);
temp_netlify_deno_1_hack(flags, &script);
flags.subcommand = DenoSubcommand::Run(RunFlags { flags.subcommand = DenoSubcommand::Run(RunFlags {
script, script,

View file

@ -0,0 +1,9 @@
{
"args": [
"run",
"--allow-read",
"--allow-write",
"node_modules/@netlify/edge-bundler/deno/config.ts"
],
"output": "main.out"
}

View file

@ -0,0 +1 @@
Success

View file

@ -0,0 +1 @@
console.log("Success");

View file

@ -0,0 +1,5 @@
{
"name": "@netlify/edge-bundler",
"version": "1.0.0",
"exports": "./index.js",
}

View file

@ -0,0 +1,4 @@
{
"name": "my-package",
"version": "1.0.0"
}