refactor(next-swc): remove unused features (#62696)

### What

Remove unused features for the turbopack.

Closes PACK-2628
This commit is contained in:
OJ Kwon 2024-02-29 11:14:16 -08:00 committed by GitHub
parent 56c8792698
commit ecec67d3f5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 0 additions and 187 deletions

1
Cargo.lock generated
View file

@ -7622,7 +7622,6 @@ dependencies = [
"turbopack-cli-utils",
"turbopack-core",
"turbopack-dev",
"turbopack-dev-server",
"turbopack-ecmascript",
"turbopack-ecmascript-hmr-protocol",
"turbopack-ecmascript-plugins",

View file

@ -34,7 +34,6 @@ turbopack-binding = { workspace = true, features = [
"__turbopack_env",
"__turbopack_cli_utils",
"__turbopack_node",
"__turbopack_dev_server",
] }
turbo-tasks = { workspace = true }
tracing = { workspace = true }

View file

@ -28,7 +28,6 @@ turbopack-binding = { workspace = true, features = [
"__turbo_tasks_memory",
"__turbopack",
"__turbopack_build",
"__turbopack_cli_utils",
"__turbopack_core",
"__turbopack_dev",
"__turbopack_ecmascript",

View file

@ -45,10 +45,8 @@ turbopack-binding = { workspace = true, features = [
"__turbo_tasks_hash",
"__turbopack",
"__turbopack_build",
"__turbopack_cli_utils",
"__turbopack_core",
"__turbopack_dev",
"__turbopack_dev_server",
"__turbopack_ecmascript",
"__turbopack_ecmascript_plugin",
"__turbopack_ecmascript_runtime",

View file

@ -58,7 +58,6 @@ pub fn register() {
turbo::tasks_fs::register();
turbo::tasks_fetch::register();
turbopack::dev::register();
turbopack::dev_server::register();
turbopack::node::register();
turbopack::turbopack::register();
turbopack::image::register();

View file

@ -1,180 +0,0 @@
use anyhow::{bail, Result};
use turbo_tasks::{Value, Vc};
use turbo_tasks_fs::FileSystem;
use turbopack_binding::turbopack::{
core::{
asset::AssetContent, ident::AssetIdent, introspect::Introspectable,
server_fs::ServerFileSystem, version::VersionedContent,
},
dev_server::source::{
query::QueryValue,
route_tree::{RouteTree, RouteType},
wrapping_source::{ContentSourceProcessor, WrappedGetContentSourceContent},
ContentSource, ContentSourceContent, ContentSourceData, ContentSourceDataFilter,
ContentSourceDataVary, GetContentSourceContent, ProxyResult, RewriteBuilder,
},
image::process::optimize,
};
/// Serves, resizes, optimizes, and re-encodes images to be used with
/// next/image.
#[turbo_tasks::value(shared)]
pub struct NextImageContentSource {
asset_source: Vc<Box<dyn ContentSource>>,
}
#[turbo_tasks::value_impl]
impl NextImageContentSource {
#[turbo_tasks::function]
pub fn new(asset_source: Vc<Box<dyn ContentSource>>) -> Vc<NextImageContentSource> {
NextImageContentSource { asset_source }.cell()
}
}
#[turbo_tasks::value_impl]
impl ContentSource for NextImageContentSource {
#[turbo_tasks::function]
fn get_routes(self: Vc<Self>) -> Vc<RouteTree> {
RouteTree::new_route(Vec::new(), RouteType::Exact, Vc::upcast(self))
}
}
#[turbo_tasks::value_impl]
impl GetContentSourceContent for NextImageContentSource {
#[turbo_tasks::function]
async fn vary(&self) -> Vc<ContentSourceDataVary> {
ContentSourceDataVary {
query: Some(ContentSourceDataFilter::Subset(
["url".to_string(), "w".to_string(), "q".to_string()].into(),
)),
..Default::default()
}
.cell()
}
#[turbo_tasks::function]
async fn get(
self: Vc<Self>,
_path: String,
data: Value<ContentSourceData>,
) -> Result<Vc<ContentSourceContent>> {
let this = self.await?;
let Some(query) = &data.query else {
bail!("missing query");
};
let Some(QueryValue::String(url)) = query.get("url") else {
bail!("missing url");
};
let q = match query.get("q") {
None => 75,
Some(QueryValue::String(s)) => {
let Ok(q) = s.parse::<u8>() else {
bail!("invalid q query argument")
};
q
}
_ => bail!("missing q query argument"),
};
let w = match query.get("w") {
Some(QueryValue::String(s)) => {
let Ok(w) = s.parse::<u32>() else {
bail!("invalid w query argument")
};
w
}
_ => bail!("missing w query argument"),
};
// TODO: re-encode into next-gen formats.
if let Some(path) = url.strip_prefix('/') {
let sources = this.asset_source.get_routes().get(path.to_string()).await?;
let sources = sources
.iter()
.map(|s| {
Vc::upcast(WrappedGetContentSourceContent::new(
*s,
Vc::upcast(NextImageContentSourceProcessor::new(path.to_string(), w, q)),
))
})
.collect();
let sources = Vc::cell(sources);
return Ok(
ContentSourceContent::Rewrite(RewriteBuilder::new_sources(sources).build()).cell(),
);
}
// TODO: This should be downloaded by the server, and resized, etc.
Ok(ContentSourceContent::HttpProxy(
ProxyResult {
status: 302,
headers: vec![("Location".to_string(), url.clone())],
body: "".into(),
}
.cell(),
)
.cell())
}
}
#[turbo_tasks::value_impl]
impl Introspectable for NextImageContentSource {
#[turbo_tasks::function]
fn ty(&self) -> Vc<String> {
Vc::cell("next image content source".to_string())
}
#[turbo_tasks::function]
fn details(&self) -> Vc<String> {
Vc::cell("supports dynamic serving of any statically imported image".to_string())
}
}
#[turbo_tasks::value]
struct NextImageContentSourceProcessor {
path: String,
width: u32,
quality: u8,
}
#[turbo_tasks::value_impl]
impl NextImageContentSourceProcessor {
#[turbo_tasks::function]
pub fn new(path: String, width: u32, quality: u8) -> Vc<NextImageContentSourceProcessor> {
NextImageContentSourceProcessor {
path,
width,
quality,
}
.cell()
}
}
#[turbo_tasks::value_impl]
impl ContentSourceProcessor for NextImageContentSourceProcessor {
#[turbo_tasks::function]
async fn process(&self, content: Vc<ContentSourceContent>) -> Result<Vc<ContentSourceContent>> {
let ContentSourceContent::Static(static_content) = *content.await? else {
return Ok(content);
};
let static_content = static_content.await?;
let asset_content = static_content.content.content().await?;
let AssetContent::File(file_content) = *asset_content else {
return Ok(content);
};
let optimized_file_content = optimize(
AssetIdent::from_path(ServerFileSystem::new().root().join(self.path.clone())),
file_content,
self.width,
u32::MAX,
self.quality,
);
Ok(ContentSourceContent::static_content(
AssetContent::File(optimized_file_content).into(),
))
}
}

View file

@ -1,4 +1,3 @@
pub(crate) mod content_source;
pub(crate) mod module;
pub(crate) mod source_asset;