@typed/content-hash
Version:
Content hash a directory of HTML/JS/CSS files and other static assets
21 lines (17 loc) • 547 B
text/typescript
import { deepEqualsEq } from '@typed/fp/Eq'
import { Eq } from 'fp-ts/Eq'
import { pipe } from 'fp-ts/function'
import { flatten, uniq } from 'fp-ts/ReadonlyArray'
export interface DiGraph<V> extends Eq<V> {
readonly vertices: ReadonlyArray<V>
readonly edges: Edges<V>
}
export type Edges<A> = ReadonlyArray<Edge<A>>
export type Edge<A> = readonly [from: A, to: A]
export function createDiGraph<V>(edges: Edges<V>, eq: Eq<V> = deepEqualsEq): DiGraph<V> {
return {
...eq,
vertices: pipe(edges, flatten, uniq(eq)),
edges,
}
}