turbopack_node/render/
mod.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value as JsonValue;
3use turbo_rcstr::RcStr;
4use turbo_tasks::{FxIndexMap, ReadRef};
5
6use crate::{ResponseHeaders, StructuredError, route_matcher::Param};
7
8pub(crate) mod error_page;
9pub mod issue;
10pub mod node_api_source;
11pub mod render_proxy;
12pub mod render_static;
13pub mod rendered_source;
14
15#[turbo_tasks::value(shared)]
16#[serde(rename_all = "camelCase")]
17pub struct RenderData {
18 params: FxIndexMap<RcStr, Param>,
19 method: RcStr,
20 url: RcStr,
21 original_url: RcStr,
22 raw_query: RcStr,
23 raw_headers: Vec<(RcStr, RcStr)>,
24 path: RcStr,
25 data: Option<ReadRef<JsonValue>>,
26}
27
28#[derive(Serialize)]
29#[serde(tag = "type", rename_all = "camelCase")]
30enum RenderStaticOutgoingMessage<'a> {
31 Headers { data: &'a RenderData },
32}
33
34#[derive(Serialize)]
35#[serde(tag = "type", rename_all = "camelCase")]
36enum RenderProxyOutgoingMessage<'a> {
37 Headers { data: &'a RenderData },
38 BodyChunk { data: &'a [u8] },
39 BodyEnd,
40}
41
42#[derive(Deserialize, Debug)]
43#[serde(tag = "type", rename_all = "camelCase")]
44enum RenderProxyIncomingMessage {
45 Headers { data: ResponseHeaders },
46 BodyChunk { data: Vec<u8> },
47 BodyEnd,
48 Error(StructuredError),
49}
50
51#[derive(Deserialize, Debug)]
52#[serde(tag = "type", rename_all = "camelCase")]
53enum RenderStaticIncomingMessage {
54 #[serde(rename_all = "camelCase")]
55 Response {
56 status_code: u16,
57 headers: Vec<(RcStr, RcStr)>,
58 body: RcStr,
59 },
60 Headers {
61 data: ResponseHeaders,
62 },
63 BodyChunk {
64 data: Vec<u8>,
65 },
66 BodyEnd,
67 Rewrite {
68 path: RcStr,
69 },
70 Error(StructuredError),
71}