UNPKG

assert-or-return

Version:

Type-safe assertion library with decorator-based early returns for TypeScript

40 lines (39 loc) 1.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Ok = Ok; exports.Err = Err; exports.assert = assert; exports.HasAssertions = HasAssertions; function Ok(data) { return { success: true, data }; } function Err(error) { return { success: false, error }; } class AssertionError extends Error { constructor(message) { super(message); this.name = "AssertionError"; } } function assert(value, errorMessage) { if (!value) { throw new AssertionError(errorMessage); } } function HasAssertions() { return function (target, propertyName, descriptor) { const method = descriptor.value; descriptor.value = ((...args) => { try { return method.apply(target, args); } catch (error) { if (error instanceof AssertionError) { return Err(error.message); } throw error; } }); }; }