All files / _utils/environments synopses.ts

100% Statements 13/13
100% Branches 2/2
100% Functions 4/4
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 341x             1x 3x 3x 5x 5x     4x         5x             5x              
import * as P from 'maasglobal-prelude-ts';
 
import { Account, AccountAlias } from '../../_types/environments/accounts';
import { Environment, Environments } from '../../_types/environments/environments';
import { Synopses } from '../../_types/environments/synopses';
import { GroupMeta, Synopsis } from '../../_types/environments/synopsis';
 
export const fromEnvironments: P.Reader<Environments, Synopses> = (environments) =>
  environments.index.flatMap(({ envs, name, description }) =>
    envs.map((environment: Environment): Synopsis => {
      const alias: AccountAlias = environment.account;
      const account: Account | null = P.pipe(
        P.Option_.fromNullable(environments.accounts),
        P.Option_.chain((accounts: Record<AccountAlias, Account>) =>
          P.Option_.fromNullable(accounts[alias]),
        ),
        P.Option_.toNullable,
      );
      const group: GroupMeta = (
        description
          ? {
              name,
              description,
            }
          : { name }
      ) as GroupMeta;
      return {
        environment,
        account,
        group,
      } as Synopsis;
    }),
  ) as Synopses;