rspack_plugin_html 0.100.0-beta.9

rspack html plugin
Documentation
use rspack_core::CompilationId;
use rspack_hook::define_hook;
#[cfg(allocative)]
use rspack_util::allocative;

use crate::{
  asset::{HtmlPluginAssetTags, HtmlPluginAssets},
  tag::HtmlPluginTag,
};

#[derive(Clone, Debug)]
pub struct BeforeAssetTagGenerationData {
  pub assets: HtmlPluginAssets,
  pub output_name: String,
  pub compilation_id: CompilationId,
  pub uid: Option<u32>,
}

#[derive(Clone, Debug)]
pub struct AlterAssetTagsData {
  pub asset_tags: HtmlPluginAssetTags,
  pub output_name: String,
  pub public_path: String,
  pub compilation_id: CompilationId,
  pub uid: Option<u32>,
}

#[derive(Clone, Debug)]
pub struct AlterAssetTagGroupsData {
  pub head_tags: Vec<HtmlPluginTag>,
  pub body_tags: Vec<HtmlPluginTag>,
  pub public_path: String,
  pub output_name: String,
  pub compilation_id: CompilationId,
  pub uid: Option<u32>,
}

#[derive(Clone, Debug)]
pub struct AfterTemplateExecutionData {
  pub html: String,
  pub head_tags: Vec<HtmlPluginTag>,
  pub body_tags: Vec<HtmlPluginTag>,
  pub output_name: String,
  pub compilation_id: CompilationId,
  pub uid: Option<u32>,
}

#[derive(Clone, Debug)]
pub struct BeforeEmitData {
  pub html: String,
  pub output_name: String,
  pub compilation_id: CompilationId,
  pub uid: Option<u32>,
}

#[derive(Clone, Debug)]
pub struct AfterEmitData {
  pub output_name: String,
  pub compilation_id: CompilationId,
  pub uid: Option<u32>,
}

define_hook!(HtmlPluginBeforeAssetTagGeneration: SeriesWaterfall(data: BeforeAssetTagGenerationData) -> BeforeAssetTagGenerationData);
define_hook!(HtmlPluginAlterAssetTags: SeriesWaterfall(data: AlterAssetTagsData) -> AlterAssetTagsData);
define_hook!(HtmlPluginAlterAssetTagGroups: SeriesWaterfall(data: AlterAssetTagGroupsData) -> AlterAssetTagGroupsData);
define_hook!(HtmlPluginAfterTemplateExecution: SeriesWaterfall(data: AfterTemplateExecutionData) -> AfterTemplateExecutionData);
define_hook!(HtmlPluginBeforeEmit: SeriesWaterfall(data: BeforeEmitData) -> BeforeEmitData);
define_hook!(HtmlPluginAfterEmit: SeriesWaterfall(data: AfterEmitData) -> AfterEmitData);

#[derive(Debug, Default)]
#[cfg_attr(allocative, derive(allocative::Allocative))]
pub struct HtmlPluginHooks {
  #[cfg_attr(allocative, allocative(skip))]
  pub before_asset_tag_generation: HtmlPluginBeforeAssetTagGenerationHook,
  #[cfg_attr(allocative, allocative(skip))]
  pub alter_asset_tags: HtmlPluginAlterAssetTagsHook,
  #[cfg_attr(allocative, allocative(skip))]
  pub alter_asset_tag_groups: HtmlPluginAlterAssetTagGroupsHook,
  #[cfg_attr(allocative, allocative(skip))]
  pub after_template_execution: HtmlPluginAfterTemplateExecutionHook,
  #[cfg_attr(allocative, allocative(skip))]
  pub before_emit: HtmlPluginBeforeEmitHook,
  #[cfg_attr(allocative, allocative(skip))]
  pub after_emit: HtmlPluginAfterEmitHook,
}