UNPKG

return-style

Version:

Non-intrusively convert the result of any function or promise to the user's desired style.

112 lines 2.54 kB
import { Result } from './result.js'; var OptionType; (function (OptionType) { OptionType[OptionType["Some"] = 0] = "Some"; OptionType[OptionType["None"] = 1] = "None"; })(OptionType || (OptionType = {})); export class Option { type; value; constructor(type, value) { this.type = type; this.value = value; } static Some(value) { return new Option(OptionType.Some, value); } static None() { return new Option(OptionType.None); } isSome() { return this.type === OptionType.Some; } isNone() { return this.type === OptionType.None; } map(mapper) { if (this.isSome()) { return Option.Some(mapper(this.value)); } else { return Option.None(); } } filter(predicate) { if (this.isSome()) { if (predicate(this.value)) { return Option.Some(this.value); } else { return Option.None(); } } else { return Option.None(); } } mapOr(defaultValue, mapper) { if (this.isSome()) { return mapper(this.value); } else { return defaultValue; } } mapOrElse(createDefaultValue, mapper) { if (this.isSome()) { return mapper(this.value); } else { return createDefaultValue(); } } unwrap() { if (this.isSome()) { return this.value; } else { throw new Error('unwrap called on a None'); } } unwrapOr(defaultValue) { if (this.isSome()) { return this.value; } else { return defaultValue; } } unwrapOrElse(createDefaultValue) { if (this.isSome()) { return this.value; } else { return createDefaultValue(); } } expect(message) { if (this.isSome()) { return this.value; } else { throw new Error(message); } } okOr(err) { if (this.isSome()) { return Result.Ok(this.value); } else { return Result.Err(err); } } okOrElse(createErr) { if (this.isSome()) { return Result.Ok(this.value); } else { return Result.Err(createErr()); } } } //# sourceMappingURL=option.js.map