UNPKG

@softwareventures/maintain-project

Version:

Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited

49 lines 1.42 kB
import { toArray, concatMap, zip } from "@softwareventures/iterable"; import { failure, isSuccess, success } from "../result/result.js"; export function copy(map) { return new Map(map); } export function empty(map) { return map.size === 0; } export function mapValue(map, f) { const result = new Map(); for (const [key, value] of map.entries()) { result.set(key, f(value, key)); } return result; } export function mapValueFn(f) { return map => mapValue(map, f); } export function partitionValue(map, predicate) { const a = new Map(); const b = new Map(); for (const [key, value] of map.entries()) { if (predicate(value)) { a.set(key, value); } else { b.set(key, value); } } return [a, b]; } export function insert(map, key, value) { return copy(map).set(key, value); } export async function liftPromises(promises) { return Promise.all(promises.values()) .then(values => zip(promises.keys(), values)) .then(entries => new Map(entries)); } export function liftResults(map) { const [successes, failures] = partitionValue(map, isSuccess); if (empty(failures)) { return success(mapValue(successes, success => success.value)); } else { return failure(toArray(concatMap(failures.values(), failure => failure.reasons))); } } //# sourceMappingURL=maps.js.map