Raxol.Core.Runtime.Plugins.PluginValidator (Raxol v2.0.1)

View Source

Comprehensive validation system for plugins before loading.

This module provides extensive validation checks including security, compatibility, performance, and structural validation to ensure plugins are safe and properly implemented.

REFACTORED: All try/catch blocks replaced with functional patterns using with statements.

Summary

Functions

Resolves plugin identity from string or module.

Validates that a plugin module implements the required behaviour.

Validates plugin compatibility with the current system.

Validates plugin metadata and configuration.

Validates that a plugin is not already loaded.

Validates plugin performance characteristics.

Performs comprehensive validation of a plugin.

Validates plugin security aspects.

Types

plugin_metadata()

@type plugin_metadata() :: %{
  name: String.t(),
  version: String.t(),
  author: String.t(),
  description: String.t(),
  dependencies: [String.t()],
  api_version: String.t()
}

validation_result()

@type validation_result() :: :ok | {:error, term()}

Functions

resolve_plugin_identity(id)

@spec resolve_plugin_identity(String.t() | module()) ::
  {:ok, {String.t(), module()}} | {:error, term()}

Resolves plugin identity from string or module.

validate_behaviour(plugin_module)

@spec validate_behaviour(module()) :: validation_result()

Validates that a plugin module implements the required behaviour.

validate_compatibility(plugin_module)

@spec validate_compatibility(module()) :: validation_result()

Validates plugin compatibility with the current system.

validate_dependencies(plugin_module, loaded_plugins)

@spec validate_dependencies(module(), map()) :: validation_result()

Validates plugin dependencies.

validate_metadata(plugin_module)

@spec validate_metadata(module()) :: validation_result()

Validates plugin metadata and configuration.

validate_not_loaded(plugin_id, plugins)

@spec validate_not_loaded(String.t(), map()) :: validation_result()

Validates that a plugin is not already loaded.

validate_performance(plugin_module)

@spec validate_performance(module()) :: validation_result()

Validates plugin performance characteristics.

validate_plugin(plugin_id, plugin_module, plugins, options \\ %{})

@spec validate_plugin(String.t(), module(), map(), map()) :: validation_result()

Performs comprehensive validation of a plugin.

validate_security(plugin_module, options \\ %{})

@spec validate_security(module(), map()) :: validation_result()

Validates plugin security aspects.