From 0dc89c0a793fa80b4c3ef89128fc674ec62b72a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 1 Mar 2021 12:41:22 +0100 Subject: [PATCH] feat: stabilise import maps (#9526) This commit stabilises import maps by removing requirement on "--unstable" flag when "--import-map" flag is used. --- cli/flags.rs | 26 +++++--------------- cli/program_state.rs | 3 --- cli/tests/import_map_no_unstable.out | 1 - cli/tests/integration_tests.rs | 10 +++----- docs/linking_to_external_code/import_maps.md | 12 +-------- 5 files changed, 11 insertions(+), 41 deletions(-) delete mode 100644 cli/tests/import_map_no_unstable.out diff --git a/cli/flags.rs b/cli/flags.rs index 6add2df878..5ae2f90273 100644 --- a/cli/flags.rs +++ b/cli/flags.rs @@ -1691,11 +1691,9 @@ fn import_map_arg<'a, 'b>() -> Arg<'a, 'b> { .long("import-map") .alias("importmap") .value_name("FILE") - .requires("unstable") - .help("UNSTABLE: Load import map file") + .help("Load import map file") .long_help( - "UNSTABLE: -Load import map file + "Load import map file from local file or remote URL. Docs: https://deno.land/manual/linking_to_external_code/import_maps Specification: https://wicg.github.io/import-maps/ Examples: https://github.com/WICG/import-maps#the-import-map", @@ -2465,7 +2463,7 @@ mod tests { #[test] fn eval_with_flags() { #[rustfmt::skip] - let r = flags_from_vec(svec!["deno", "eval", "--unstable", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--location", "https:foo", "--v8-flags=--help", "--seed", "1", "--inspect=127.0.0.1:9229", "42"]); + let r = flags_from_vec(svec!["deno", "eval", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--location", "https:foo", "--v8-flags=--help", "--seed", "1", "--inspect=127.0.0.1:9229", "42"]); assert_eq!( r.unwrap(), Flags { @@ -2474,7 +2472,6 @@ mod tests { code: "42".to_string(), ext: "js".to_string(), }, - unstable: true, import_map_path: Some("import_map.json".to_string()), no_remote: true, config_path: Some("tsconfig.json".to_string()), @@ -2553,13 +2550,12 @@ mod tests { #[test] fn repl_with_flags() { #[rustfmt::skip] - let r = flags_from_vec(svec!["deno", "repl", "--unstable", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--location", "https:foo", "--v8-flags=--help", "--seed", "1", "--inspect=127.0.0.1:9229"]); + let r = flags_from_vec(svec!["deno", "repl", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--location", "https:foo", "--v8-flags=--help", "--seed", "1", "--inspect=127.0.0.1:9229"]); assert_eq!( r.unwrap(), Flags { repl: true, subcommand: DenoSubcommand::Repl, - unstable: true, import_map_path: Some("import_map.json".to_string()), no_remote: true, config_path: Some("tsconfig.json".to_string()), @@ -2792,7 +2788,6 @@ mod tests { let r = flags_from_vec(svec![ "deno", "run", - "--unstable", "--import-map=import_map.json", "script.ts" ]); @@ -2802,7 +2797,6 @@ mod tests { subcommand: DenoSubcommand::Run { script: "script.ts".to_string(), }, - unstable: true, import_map_path: Some("import_map.json".to_owned()), ..Flags::default() } @@ -2814,7 +2808,6 @@ mod tests { let r = flags_from_vec(svec![ "deno", "info", - "--unstable", "--import-map=import_map.json", "script.ts" ]); @@ -2825,7 +2818,6 @@ mod tests { file: Some("script.ts".to_string()), json: false, }, - unstable: true, import_map_path: Some("import_map.json".to_owned()), ..Flags::default() } @@ -2837,7 +2829,6 @@ mod tests { let r = flags_from_vec(svec![ "deno", "cache", - "--unstable", "--import-map=import_map.json", "script.ts" ]); @@ -2847,7 +2838,6 @@ mod tests { subcommand: DenoSubcommand::Cache { files: svec!["script.ts"], }, - unstable: true, import_map_path: Some("import_map.json".to_owned()), ..Flags::default() } @@ -2859,7 +2849,6 @@ mod tests { let r = flags_from_vec(svec![ "deno", "doc", - "--unstable", "--import-map=import_map.json", "script.ts" ]); @@ -2872,7 +2861,6 @@ mod tests { json: false, filter: None, }, - unstable: true, import_map_path: Some("import_map.json".to_owned()), ..Flags::default() } @@ -2958,7 +2946,7 @@ mod tests { #[test] fn install_with_flags() { #[rustfmt::skip] - let r = flags_from_vec(svec!["deno", "install", "--unstable", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--allow-read", "--allow-net", "--v8-flags=--help", "--seed", "1", "--inspect=127.0.0.1:9229", "--name", "file_server", "--root", "/foo", "--force", "https://deno.land/std/http/file_server.ts", "foo", "bar"]); + let r = flags_from_vec(svec!["deno", "install", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--allow-read", "--allow-net", "--v8-flags=--help", "--seed", "1", "--inspect=127.0.0.1:9229", "--name", "file_server", "--root", "/foo", "--force", "https://deno.land/std/http/file_server.ts", "foo", "bar"]); assert_eq!( r.unwrap(), Flags { @@ -2969,7 +2957,6 @@ mod tests { root: Some(PathBuf::from("/foo")), force: true, }, - unstable: true, import_map_path: Some("import_map.json".to_string()), no_remote: true, config_path: Some("tsconfig.json".to_string()), @@ -3490,7 +3477,7 @@ mod tests { #[test] fn compile_with_flags() { #[rustfmt::skip] - let r = flags_from_vec(svec!["deno", "compile", "--unstable", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--location", "https:foo", "--allow-read", "--allow-net", "--v8-flags=--help", "--seed", "1", "--output", "colors", "https://deno.land/std/examples/colors.ts", "foo", "bar"]); + let r = flags_from_vec(svec!["deno", "compile", "--import-map", "import_map.json", "--no-remote", "--config", "tsconfig.json", "--no-check", "--reload", "--lock", "lock.json", "--lock-write", "--cert", "example.crt", "--cached-only", "--location", "https:foo", "--allow-read", "--allow-net", "--v8-flags=--help", "--seed", "1", "--output", "colors", "https://deno.land/std/examples/colors.ts", "foo", "bar"]); assert_eq!( r.unwrap(), Flags { @@ -3501,7 +3488,6 @@ mod tests { target: None, lite: false, }, - unstable: true, import_map_path: Some("import_map.json".to_string()), no_remote: true, config_path: Some("tsconfig.json".to_string()), diff --git a/cli/program_state.rs b/cli/program_state.rs index f05c740d55..bced6a9bca 100644 --- a/cli/program_state.rs +++ b/cli/program_state.rs @@ -96,9 +96,6 @@ impl ProgramState { match flags.import_map_path.as_ref() { None => None, Some(import_map_url) => { - if !flags.unstable { - exit_unstable("--import-map") - } let import_map_specifier = deno_core::resolve_url_or_path(&import_map_url).context( format!("Bad URL (\"{}\") for import map.", import_map_url), diff --git a/cli/tests/import_map_no_unstable.out b/cli/tests/import_map_no_unstable.out deleted file mode 100644 index 4f202613e2..0000000000 --- a/cli/tests/import_map_no_unstable.out +++ /dev/null @@ -1 +0,0 @@ -Unstable API '--import-map'. The --unstable flag must be provided. diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 8b8d6354bb..c59bee2ce1 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -1627,7 +1627,6 @@ mod integration { .arg("bundle") .arg("--import-map") .arg(import_map_path) - .arg("--unstable") .arg(import) .arg(&bundle) .spawn() @@ -1673,7 +1672,6 @@ mod integration { .arg("--no-check") .arg("--import-map") .arg(import_map_path) - .arg("--unstable") .arg(import) .arg(&bundle) .spawn() @@ -2535,7 +2533,7 @@ console.log("finish"); itest!(_033_import_map { args: - "run --quiet --reload --import-map=import_maps/import_map.json --unstable import_maps/test.ts", + "run --quiet --reload --import-map=import_maps/import_map.json import_maps/test.ts", output: "033_import_map.out", }); @@ -2561,7 +2559,7 @@ console.log("finish"); itest!(_036_import_map_fetch { args: - "cache --quiet --reload --import-map=import_maps/import_map.json --unstable import_maps/test.ts", + "cache --quiet --reload --import-map=import_maps/import_map.json import_maps/test.ts", output: "036_import_map_fetch.out", }); @@ -2706,7 +2704,7 @@ console.log("finish"); itest!(_065_import_map_info { args: - "info --quiet --import-map=import_maps/import_map.json --unstable import_maps/test.ts", + "info --quiet --import-map=import_maps/import_map.json import_maps/test.ts", output: "065_import_map_info.out", }); @@ -3688,7 +3686,7 @@ console.log("finish"); }); itest!(import_data_url_import_map { - args: "run --quiet --reload --unstable --import-map import_maps/import_map.json import_data_url.ts", + args: "run --quiet --reload --import-map import_maps/import_map.json import_data_url.ts", output: "import_data_url.ts.out", }); diff --git a/docs/linking_to_external_code/import_maps.md b/docs/linking_to_external_code/import_maps.md index 3703b214e7..c00aa0290f 100644 --- a/docs/linking_to_external_code/import_maps.md +++ b/docs/linking_to_external_code/import_maps.md @@ -1,19 +1,9 @@ ## Import maps -> This is an unstable feature. Learn more about -> [unstable features](../runtime/stability.md). - Deno supports [import maps](https://github.com/WICG/import-maps). You can use import maps with the `--import-map=` CLI flag. -Current limitations: - -- single import map. -- no fallback URLs. -- Deno does not support `std:` namespace. -- supports only `file:`, `http:` and `https:` schemes. - Example: **import_map.json** @@ -37,7 +27,7 @@ console.log(red("hello world")); Then: ```shell -$ deno run --import-map=import_map.json --unstable color.ts +$ deno run --import-map=import_map.json color.ts ``` To use starting directory for absolute imports: