summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/dts/lib.deno.unstable.d.ts14
-rw-r--r--cli/tests/compiler_api_test.ts21
2 files changed, 35 insertions, 0 deletions
diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/dts/lib.deno.unstable.d.ts
index 6eb39c21c..044e1b4e2 100644
--- a/cli/dts/lib.deno.unstable.d.ts
+++ b/cli/dts/lib.deno.unstable.d.ts
@@ -318,6 +318,20 @@ declare namespace Deno {
/** Import emit helpers (e.g. `__extends`, `__rest`, etc..) from
* [tslib](https://www.npmjs.com/package/tslib). */
importHelpers?: boolean;
+ /** This flag controls how `import` works, there are 3 different options:
+ *
+ * - `remove`: The default behavior of dropping import statements which only
+ * reference types.
+ * - `preserve`: Preserves all `import` statements whose values or types are
+ * never used. This can cause imports/side-effects to be preserved.
+ * - `error`: This preserves all imports (the same as the preserve option),
+ * but will error when a value import is only used as a type. This might
+ * be useful if you want to ensure no values are being accidentally
+ * imported, but still make side-effect imports explicit.
+ *
+ * This flag works because you can use `import type` to explicitly create an
+ * `import` statement which should never be emitted into JavaScript. */
+ importsNotUsedAsValues?: "remove" | "preserve" | "error";
/** Emit a single file with source maps instead of having a separate file.
* Defaults to `false`. */
inlineSourceMap?: boolean;
diff --git a/cli/tests/compiler_api_test.ts b/cli/tests/compiler_api_test.ts
index a236a3f3f..4535ad6ed 100644
--- a/cli/tests/compiler_api_test.ts
+++ b/cli/tests/compiler_api_test.ts
@@ -199,3 +199,24 @@ Deno.test({
});
},
});
+
+Deno.test({
+ name: `Deno.compile() - Allows setting of "importsNotUsedAsValues"`,
+ async fn() {
+ const [diagnostics] = await Deno.compile("/a.ts", {
+ "/a.ts": `import { B } from "./b.ts";
+ const b: B = { b: "b" };
+ `,
+ "/b.ts": `export interface B {
+ b: string;
+ };
+ `,
+ }, {
+ importsNotUsedAsValues: "error",
+ });
+ assert(diagnostics);
+ assertEquals(diagnostics.length, 1);
+ assert(diagnostics[0].messageText);
+ assert(diagnostics[0].messageText.includes("This import is never used"));
+ },
+});