macro_rules! component {
    (
    name: $name:expr,
    version: $version:expr,
    operations: {
      $($opname:expr => {
        inputs: {$($ikey:expr => $ivalue:expr),* $(,)?},
        outputs: {$($okey:expr => $ovalue:expr),* $(,)?},
      }),* $(,)?
    }
  ) => { ... };
    (
    name: $name:expr,
    version: $version:expr,
    operations: $ops:expr,
  ) => { ... };
}