summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/dts/lib.deno.ns.d.ts10
-rw-r--r--cli/tests/integration/run_tests.rs2
-rw-r--r--cli/tests/testdata/import_meta.importmap.json11
-rw-r--r--cli/tests/testdata/import_meta.ts31
-rw-r--r--cli/tests/testdata/import_meta.ts.out7
5 files changed, 60 insertions, 1 deletions
diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/dts/lib.deno.ns.d.ts
index b13acc238..e5499c93e 100644
--- a/cli/dts/lib.deno.ns.d.ts
+++ b/cli/dts/lib.deno.ns.d.ts
@@ -21,6 +21,16 @@ declare interface ImportMeta {
* ```
*/
main: boolean;
+
+ /** A function that returns resolved specifier as if it would be imported
+ * using `import(specifier)`.
+ *
+ * ```ts
+ * console.log(import.meta.resolve("./foo.js"));
+ * // file:///dev/foo.js
+ * ```
+ */
+ resolve(specifier: string): string;
}
/** Deno supports user timing Level 3 (see: https://w3c.github.io/user-timing)
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index bb46fe1b5..6ed1d5964 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -952,7 +952,7 @@ itest!(if_main {
});
itest!(import_meta {
- args: "run --quiet --reload import_meta.ts",
+ args: "run --quiet --reload --import-map=import_meta.importmap.json import_meta.ts",
output: "import_meta.ts.out",
});
diff --git a/cli/tests/testdata/import_meta.importmap.json b/cli/tests/testdata/import_meta.importmap.json
new file mode 100644
index 000000000..f8c056afd
--- /dev/null
+++ b/cli/tests/testdata/import_meta.importmap.json
@@ -0,0 +1,11 @@
+{
+ "imports": {
+ "bare": "https://example.com/",
+ "https://example.com/rewrite": "https://example.com/rewritten",
+
+ "1": "https://example.com/PASS-1",
+ "null": "https://example.com/PASS-null",
+ "undefined": "https://example.com/PASS-undefined",
+ "[object Object]": "https://example.com/PASS-object"
+ }
+}
diff --git a/cli/tests/testdata/import_meta.ts b/cli/tests/testdata/import_meta.ts
index d111059ea..37af69020 100644
--- a/cli/tests/testdata/import_meta.ts
+++ b/cli/tests/testdata/import_meta.ts
@@ -1,3 +1,34 @@
+import { assertThrows } from "../../../test_util/std/testing/asserts.ts";
+
console.log("import_meta", import.meta.url, import.meta.main);
import "./import_meta2.ts";
+
+console.log("Resolving ./foo.js", import.meta.resolve("./foo.js"));
+console.log("Resolving bare from import map", import.meta.resolve("bare"));
+console.log(
+ "Resolving https://example.com/rewrite from import map",
+ import.meta.resolve("https://example.com/rewrite"),
+);
+console.log(
+ "Resolving without a value from import map",
+ import.meta.resolve(),
+);
+console.log(
+ "Resolving 1 from import map",
+ import.meta.resolve(1),
+);
+console.log(
+ "Resolving null from import map",
+ import.meta.resolve(null),
+);
+console.log(
+ "Resolving object from import map",
+ import.meta.resolve({}),
+);
+assertThrows(() => {
+ import.meta.resolve("too", "many", "arguments");
+}, TypeError);
+assertThrows(() => {
+ import.meta.resolve("://malformed/url?asdf");
+}, TypeError);
diff --git a/cli/tests/testdata/import_meta.ts.out b/cli/tests/testdata/import_meta.ts.out
index f38aa98ea..a431f61df 100644
--- a/cli/tests/testdata/import_meta.ts.out
+++ b/cli/tests/testdata/import_meta.ts.out
@@ -1,2 +1,9 @@
import_meta2 [WILDCARD]import_meta2.ts false
import_meta [WILDCARD]import_meta.ts true
+Resolving ./foo.js file:///[WILDCARD]/foo.js
+Resolving bare from import map https://example.com/
+Resolving https://example.com/rewrite from import map https://example.com/rewritten
+Resolving without a value from import map https://example.com/PASS-undefined
+Resolving 1 from import map https://example.com/PASS-1
+Resolving null from import map https://example.com/PASS-null
+Resolving object from import map https://example.com/PASS-object