UNPKG

smart-types-ts

Version:

A collection of _Smart Types_ and _Smart Constructors_ which enable you to be more strict when defining your application's important types/interfaces.

56 lines (55 loc) 2.07 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mkArrayWithLength = void 0; /** * ```ts * type ArrayWithLength<Min, Max> * ``` * * Represents a list which has a constrained length. For example, ArrayWithLength<2, 10> is * a list with between 2 and 10 elements (inclusive). * * @since 0.0.1 */ const function_1 = require("fp-ts/lib/function"); const e = __importStar(require("fp-ts/lib/Either")); const withLength_1 = require("../withLength"); /** * Constructs an ArrayWithLength. First a min and a max must be passed. * * Note: This function can throw if invalid min/max arguments are passed! * * @example * import * as e from 'fp-ts/Either' * import { mkArrayWithLength } from 'smart-types' * * assert.deepStrictEqual(mkArrayWithLength(2, 10)([]), e.left("Length not between 2-10")) * assert.deepStrictEqual(mkArrayWithLength(2, 10)([1, 2, 3]), e.right([1, 2, 3])) * * @category smartConstructor * @since 0.0.1 */ const mkArrayWithLength = (min, max) => { const mkWithLength_ = withLength_1.mkWithLength(min, max); return (arr) => function_1.pipe(mkWithLength_(arr), e.map((list) => list)); }; exports.mkArrayWithLength = mkArrayWithLength;