feat(unstable): support bytes and text imports in deno compile (#29924)

Also includes:

- https://github.com/denoland/deno_graph/pull/593

Closes https://github.com/denoland/deno/issues/29903
Closes https://github.com/denoland/deno/issues/29927
This commit is contained in:
David Sherret 2025-06-28 12:24:07 -04:00 committed by GitHub
parent b5e41f605d
commit 8fcbb0fa43
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 328 additions and 24 deletions

View file

@ -136,9 +136,11 @@ pub enum CjsExportAnalysisEntry {
const HAS_TRANSPILED_FLAG: u8 = 1 << 0;
const HAS_SOURCE_MAP_FLAG: u8 = 1 << 1;
const HAS_CJS_EXPORT_ANALYSIS_FLAG: u8 = 1 << 2;
const HAS_VALID_UTF8_FLAG: u8 = 1 << 3;
pub struct RemoteModuleEntry<'a> {
pub media_type: MediaType,
pub is_valid_utf8: bool,
pub data: Cow<'a, [u8]>,
pub maybe_transpiled: Option<Cow<'a, [u8]>>,
pub maybe_source_map: Option<Cow<'a, [u8]>>,
@ -161,6 +163,9 @@ impl<'a> DenoRtSerializable<'a> for RemoteModuleEntry<'a> {
}
let mut has_data_flags = 0;
if self.is_valid_utf8 {
has_data_flags |= HAS_VALID_UTF8_FLAG;
}
if self.maybe_transpiled.is_some() {
has_data_flags |= HAS_TRANSPILED_FLAG;
}
@ -203,6 +208,7 @@ impl<'a> DenoRtDeserializable<'a> for RemoteModuleEntry<'a> {
deserialize_data_if_has_flag(input, has_data_flags, HAS_TRANSPILED_FLAG)?;
let (input, maybe_source_map) =
deserialize_data_if_has_flag(input, has_data_flags, HAS_SOURCE_MAP_FLAG)?;
let is_valid_utf8 = has_data_flags & HAS_VALID_UTF8_FLAG != 0;
let (input, maybe_cjs_export_analysis) = deserialize_data_if_has_flag(
input,
has_data_flags,
@ -213,6 +219,7 @@ impl<'a> DenoRtDeserializable<'a> for RemoteModuleEntry<'a> {
Self {
media_type,
data: Cow::Borrowed(data),
is_valid_utf8,
maybe_transpiled,
maybe_source_map,
maybe_cjs_export_analysis,