Whiff.Merge (whiff v0.1.0)

Copy Markdown View Source

Deterministic merge of Elixir plugin patches into a native whiff/1 report.

Rules (v0.1)

  • Preserve native whiff.schema / version and core sections.
  • Never erase native security risk/secret/personal_data fields, integrity, diagnostics, or embedded.
  • embedded patches are rejected.
  • metadata / format: namespaced keys; collisions error unless override mode allows the declared field.
  • content: keywords de-duplicated in deterministic order; scalars native-wins in :augment, plugin-wins in :fallback, declared fields in :override.
  • Reject atoms, PIDs, structs, references; cap depth and string size.

Summary

Functions

Merge a plugin patch into report.

Types

mode()

@type mode() :: :fallback | :augment | :override

Functions

merge(report, patch, opts \\ [])

@spec merge(map(), map(), keyword()) :: {:ok, map()} | {:error, Whiff.Error.t()}

Merge a plugin patch into report.