File size: 431 Bytes
95ca844
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import * as Either from 'fp-ts/Either';
import { pipe } from 'fp-ts/function';

const arrayToPath = (paths: Either.Either<string, number>[]): string =>
  paths.reduce(
    (previous, path, index) =>
      pipe(
        path,
        Either.fold(
          (key) => `${index > 0 ? '.' : ''}${key}`,
          (key) => `[${key}]`,
        ),
        (path) => `${previous}${path}`,
      ),
    '',
  );

export default arrayToPath;