diff --git a/crates/turbopack-css/src/references/mod.rs b/crates/turbopack-css/src/references/mod.rs index 36a084273ecda..7888401256a9c 100644 --- a/crates/turbopack-css/src/references/mod.rs +++ b/crates/turbopack-css/src/references/mod.rs @@ -117,6 +117,11 @@ impl VisitMut for ModuleReferencesVisitor<'_> { // res } + /// Noop. Urls in `@supports` are not used. + /// + /// See https://github.com/vercel/next.js/issues/63102 + fn visit_mut_supports_condition(&mut self, _: &mut swc_core::css::ast::SupportsCondition) {} + fn visit_mut_url(&mut self, u: &mut swc_core::css::ast::Url) { u.visit_mut_children_with(self); @@ -221,6 +226,16 @@ impl<'a> Visitor<'_> for ModuleReferencesVisitor<'a> { Ok(()) } + + /// Noop. Urls in `@supports` are not used. + /// + /// See https://github.com/vercel/next.js/issues/63102 + fn visit_supports_condition( + &mut self, + _: &mut lightningcss::rules::supports::SupportsCondition<'_>, + ) -> Result<(), Self::Error> { + Ok(()) + } } #[turbo_tasks::function] diff --git a/crates/turbopack-tests/tests/snapshot.rs b/crates/turbopack-tests/tests/snapshot.rs index b8d3919821e0b..38784020847c6 100644 --- a/crates/turbopack-tests/tests/snapshot.rs +++ b/crates/turbopack-tests/tests/snapshot.rs @@ -88,6 +88,8 @@ struct SnapshotOptions { runtime_type: RuntimeType, #[serde(default)] environment: SnapshotEnvironment, + #[serde(default)] + use_swc_css: bool, } #[derive(Debug, Deserialize, Default)] @@ -113,6 +115,7 @@ impl Default for SnapshotOptions { runtime: Default::default(), runtime_type: default_runtime_type(), environment: Default::default(), + use_swc_css: Default::default(), } } } @@ -262,9 +265,11 @@ async fn run_test(resource: String) -> Result> { })), preset_env_versions: Some(env), ignore_dynamic_requests: true, + use_swc_css: options.use_swc_css, rules: vec![( ContextCondition::InDirectory("node_modules".to_string()), ModuleOptionsContext { + use_swc_css: options.use_swc_css, ..Default::default() } .cell(), diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/index.js b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/index.js new file mode 100644 index 0000000000000..4fe51c72d641f --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/index.js @@ -0,0 +1 @@ +import "./style.css"; diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css new file mode 100644 index 0000000000000..98add921202f9 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css @@ -0,0 +1,5 @@ +@supports ((-webkit-mask: url("")) or (mask: url(""))) { + .supports-url-in-query { + color: red; + } +} diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/options.json b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/options.json new file mode 100644 index 0000000000000..ef4bb46ab0e56 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/options.json @@ -0,0 +1,3 @@ +{ + "useSwcCss": true +} diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_7e65d9.js b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_7e65d9.js new file mode 100644 index 0000000000000..573085bfcb1e1 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_7e65d9.js @@ -0,0 +1,12 @@ +(globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ + "output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_7e65d9.js", + {}, +]); +(globalThis.TURBOPACK_CHUNK_LISTS = globalThis.TURBOPACK_CHUNK_LISTS || []).push({ + "path": "output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_7e65d9.js", + "chunks": [ + "output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css", + "output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js" + ], + "source": "entry" +}); \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js new file mode 100644 index 0000000000000..c6eb074f6a36f --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js @@ -0,0 +1,6 @@ +(globalThis.TURBOPACK = globalThis.TURBOPACK || []).push([ + "output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js", + {}, + {"otherChunks":[{"path":"output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css","included":["[project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css [test] (css)"],"moduleChunks":["output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css"]},"output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js"],"runtimeModuleIds":["[project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/index.js [test] (ecmascript)"]} +]); +// Dummy runtime \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js.map b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js.map new file mode 100644 index 0000000000000..a12b83d3337ca --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_9f5f8d.js.map @@ -0,0 +1,4 @@ +{ + "version": 3, + "sections": [] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js new file mode 100644 index 0000000000000..f653cff03513a --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js @@ -0,0 +1,11 @@ +(globalThis.TURBOPACK = globalThis.TURBOPACK || []).push(["output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js", { + +"[project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/index.js [test] (ecmascript)": (function({ r: __turbopack_require__, f: __turbopack_module_context__, i: __turbopack_import__, s: __turbopack_esm__, v: __turbopack_export_value__, n: __turbopack_export_namespace__, c: __turbopack_cache__, M: __turbopack_modules__, l: __turbopack_load__, j: __turbopack_dynamic__, P: __turbopack_resolve_absolute_path__, U: __turbopack_relative_url__, R: __turbopack_resolve_module_id_path__, g: global, __dirname, k: __turbopack_refresh__, m: module, e: exports, t: require }) { !function() { + +__turbopack_esm__({}); +; + +}.call(this) }), +}]); + +//# sourceMappingURL=79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js.map \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js.map b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js.map new file mode 100644 index 0000000000000..8cf15a2a3f411 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_index_c70a2c.js.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sections": [ + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":""}}, + {"offset": {"line": 6, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css new file mode 100644 index 0000000000000..78d752a246928 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css @@ -0,0 +1,7 @@ +/* [project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css [test] (css) */ +@supports ((-webkit-mask: url("")) or (mask: url(""))) { + .supports-url-in-query { + color: red; + } +} +/*# sourceMappingURL=79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css.map*/ \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css.map b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css.map new file mode 100644 index 0000000000000..32b32c14262c4 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_7d7e1c.css.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sections": [ + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css"],"sourcesContent":["@supports ((-webkit-mask: url(\"\")) or (mask: url(\"\"))) {\n .supports-url-in-query {\n color: red;\n }\n}\n"],"names":[],"mappings":"AAAA,CAAC,QAAQ,CAAE,CAAC,CAAC,AAAD,YAAY,EAAE,GAAG,CAAC,EAAE,CAAA,CAAC,IAAM,CAAC,AAAD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA,CAAC,CAAC,CAAE,CAAC;EACtD,CAAC,qBAAqB,CAAC,CAAC;IACtB,KAAK,EAAE,GAAG;EACZ,CAAC;AACH,CAAC"}}, + {"offset": {"line": 5, "column": 1}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] +} \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css new file mode 100644 index 0000000000000..7f5959b52e633 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css @@ -0,0 +1,8 @@ +/* [project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css [test] (css) */ +@supports ((-webkit-mask: url("")) or (mask: url(""))) { + .supports-url-in-query { + color: red; + } +} + +/*# sourceMappingURL=79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css.map*/ \ No newline at end of file diff --git a/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css.map b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css.map new file mode 100644 index 0000000000000..32b32c14262c4 --- /dev/null +++ b/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/output/79fb1_turbopack-tests_tests_snapshot_css_url-in-supports-query_input_style_d70fa1.css.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sections": [ + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["/turbopack/[project]/crates/turbopack-tests/tests/snapshot/css/url-in-supports-query/input/style.css"],"sourcesContent":["@supports ((-webkit-mask: url(\"\")) or (mask: url(\"\"))) {\n .supports-url-in-query {\n color: red;\n }\n}\n"],"names":[],"mappings":"AAAA,CAAC,QAAQ,CAAE,CAAC,CAAC,AAAD,YAAY,EAAE,GAAG,CAAC,EAAE,CAAA,CAAC,IAAM,CAAC,AAAD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA,CAAC,CAAC,CAAE,CAAC;EACtD,CAAC,qBAAqB,CAAC,CAAC;IACtB,KAAK,EAAE,GAAG;EACZ,CAAC;AACH,CAAC"}}, + {"offset": {"line": 5, "column": 1}, "map": {"version":3,"sources":[],"names":[],"mappings":"A"}}] +} \ No newline at end of file