rolldown_plugin 1.0.3

Plugin interface for Rolldown bundler
Documentation
use crate::HookNoopReturn;
use crate::PluginDriver;
use anyhow::Context;
use rolldown_common::WatcherChangeKind;
use rolldown_error::CausedPlugin;

impl PluginDriver {
  #[tracing::instrument(
    level = "trace",
    target = "rolldown_plugin::plugin_driver::watch_hooks::total::watch_change",
    skip(self)
  )]
  pub async fn watch_change(&self, path: &str, event: WatcherChangeKind) -> HookNoopReturn {
    for (plugin_idx, plugin, ctx) in
      self.iter_plugin_with_context_by_order(&self.order_by_watch_change_meta)
    {
      let start = self.start_timing();
      let result = plugin.call_watch_change(ctx, path, event).await;
      self.record_timing(plugin_idx, start);
      result.with_context(|| CausedPlugin::new(plugin.call_name()))?;
    }
    Ok(())
  }

  #[tracing::instrument(
    level = "trace",
    target = "rolldown_plugin::plugin_driver::watch_hooks::total::close_watcher",
    skip(self)
  )]
  pub async fn close_watcher(&self) -> HookNoopReturn {
    for (plugin_idx, plugin, ctx) in
      self.iter_plugin_with_context_by_order(&self.order_by_close_watcher_meta)
    {
      let start = self.start_timing();
      let result = plugin.call_close_watcher(ctx).await;
      self.record_timing(plugin_idx, start);
      result.with_context(|| CausedPlugin::new(plugin.call_name()))?;
    }
    Ok(())
  }
}