UNPKG

typescript-functional-extensions

Version:

A TypeScript implementation of synchronous and asynchronous Maybe and Result monads

60 lines (59 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.emptyStringAsNone = emptyStringAsNone; exports.emptyOrWhiteSpaceStringAsNone = emptyOrWhiteSpaceStringAsNone; exports.zeroAsNone = zeroAsNone; const maybe_js_1 = require("./maybe.js"); const utilities_js_1 = require("./utilities.js"); /** * Converts string, null, or undefined values into a Maybe<string>. Throws an error for defined, non-string values. * @param value * @returns Maybe.some when value is defined and non-empty, Maybe.none otherwise. */ function emptyStringAsNone(value) { if (!(0, utilities_js_1.isDefined)(value)) { return maybe_js_1.Maybe.none(); } if (typeof value !== 'string') { throw Error('Value must be a string'); } if (value === '') { return maybe_js_1.Maybe.none(); } return maybe_js_1.Maybe.some(value); } const whiteSpaceRegex = /^\s*$/g; /** * Converts string, null, or undefined values into a Maybe<string>. Throws an error for defined, non-string values. * @param value * @returns Maybe.some when value is defined, non-empty, and non-whitespace, Maybe.none otherwise. */ function emptyOrWhiteSpaceStringAsNone(value) { if (!(0, utilities_js_1.isDefined)(value)) { return maybe_js_1.Maybe.none(); } if (typeof value !== 'string') { throw Error('Value must be a string'); } if (whiteSpaceRegex.test(value)) { return maybe_js_1.Maybe.none(); } return maybe_js_1.Maybe.some(value); } /** * Converts number, null, or undefined values into a Maybe<number>. Throws an error for defined, non-number values. * @param value * @returns Maybe.some when value is defined and non-zero, Maybe.none otherwise. */ function zeroAsNone(value) { if (!(0, utilities_js_1.isDefined)(value)) { return maybe_js_1.Maybe.none(); } if (typeof value !== 'number') { throw Error('Value must be a number'); } if (value === 0) { return maybe_js_1.Maybe.none(); } return maybe_js_1.Maybe.some(value); }