Comprehensive validation system for plugins before loading.
Validates security, compatibility, performance, and structural correctness to ensure plugins are safe and properly implemented.
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 dependencies.
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
Functions
@spec resolve_plugin_identity(String.t() | module()) :: {:ok, {String.t(), module()}} | {:error, term()}
Resolves plugin identity from string or module.
@spec validate_behaviour(module()) :: :ok | {:error, :module_not_found | :invalid_plugin_behaviour | {:missing_callbacks, [atom()]}}
Validates that a plugin module implements the required behaviour.
@spec validate_compatibility(module()) :: :ok | {:error, {:elixir_version_too_old, String.t(), String.t()} | {:otp_version_too_old, String.t(), String.t()}}
Validates plugin compatibility with the current system.
@spec validate_dependencies(module(), map()) :: validation_result()
Validates plugin dependencies.
@spec validate_metadata(module()) :: :ok | {:error, :missing_metadata | :invalid_metadata | {:missing_metadata_fields, [atom()]} | :invalid_version_format | {:unsupported_api_version, String.t()} | :invalid_plugin_name}
Validates plugin metadata and configuration.
Validates that a plugin is not already loaded.
@spec validate_performance(module()) :: :ok | {:error, {:initialization_failed, term()} | {:initialization_too_slow, non_neg_integer()} | {:plugin_too_large, non_neg_integer(), non_neg_integer()} | {:size_check_failed, term()}}
Validates plugin performance characteristics.
@spec validate_plugin(String.t(), module(), map(), map()) :: validation_result()
Performs comprehensive validation of a plugin.
Validates plugin security aspects.