@softwareventures/maintain-project
Version:
Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited
49 lines • 1.42 kB
JavaScript
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