{"version":3,"file":"index.mjs","sources":["../esm/helpers/general-helper.js","../esm/helpers/clone-helper.js","../esm/helpers/currency-format-helper.js","../esm/helpers/debounced-timeout-helper.js","../esm/helpers/number-helper.js","../esm/helpers/promise-helper.js","../esm/objects/big-decimal.js","../esm/objects/criteria.js","../esm/objects/observable.js","../esm/objects/queque.js","../esm/objects/secure-map.js","../esm/objects/selection-set.js","../esm/promises/delay-promise.js","../esm/promises/secure-promise.js","../esm/results/sealed.js","../esm/promises/stream.js","../esm/promises/zip-promise.js","../esm/results/either.js","../esm/results/optional.js","../esm/results/result.js","../esm/results/views.js"],"sourcesContent":["const falsyValue = ['false', 'undefined', '0', 0];\nexport function valueIsDefined(value) {\n    return typeof value !== 'undefined' && value !== null;\n}\nexport function valueIsUndefined(value) {\n    return !valueIsDefined(value);\n}\nexport function parseBoolean(value) {\n    return !(valueIsUndefined(value) ||\n        value === false ||\n        falsyValue.includes(value));\n}\nexport function parse(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch {\n        return value;\n    }\n}\nexport function evalValueOrFunction(value) {\n    return typeof value === 'function' ? value() : value;\n}\nexport function freeze(value) {\n    if (typeof value !== 'object') {\n        return value;\n    }\n    for (const key in value) {\n        const item = value[key];\n        if (typeof item === 'object' && !Object.isFrozen(item)) {\n            freeze(item);\n        }\n    }\n    return Object.freeze(value);\n}\nexport function seal(value) {\n    if (typeof value !== 'object') {\n        return value;\n    }\n    for (const key in value) {\n        const item = value[key];\n        if (typeof item === 'object' && !Object.isSealed(item)) {\n            seal(item);\n        }\n    }\n    return Object.seal(value);\n}\nexport function callback(call, ...args) {\n    return typeof call !== 'function' ? undefined : call.apply(call, args);\n}\nfunction normalizeValue(value) {\n    return value !== null && typeof value === 'object'\n        ? Array.isArray(value)\n            ? value.map((value) => normalizeValue(value))\n            : normalizeJson(value)\n        : value;\n}\nexport function normalizeJson(payload) {\n    return Object.entries(payload).reduce((result, [key, value]) => {\n        if (valueIsDefined(value)) {\n            result[key] = normalizeValue(value);\n        }\n        return result;\n    }, {});\n}\n//# sourceMappingURL=general-helper.js.map","import { valueIsUndefined } from './general-helper';\nconst primitives = [Date, RegExp, Set, Map, Function, String, Boolean, Number];\nlet _cloneStrategy = () => true;\nfunction _clone(value, caches, overrides) {\n    if (valueIsUndefined(value) || typeof value !== 'object') {\n        return value;\n    }\n    if (Object.prototype.toString.call(value) === '[object Object]') {\n        const [object] = caches.filter((_object) => _object === value);\n        /* istanbul ignore if */\n        if (object) {\n            return object;\n        }\n        caches.push(value);\n    }\n    const ConstructorObject = Object.getPrototypeOf(value).constructor;\n    if (primitives.includes(ConstructorObject)) {\n        return new ConstructorObject(value);\n    }\n    if (Array.isArray(value)) {\n        return value.map((item) => _clone(item, caches, {}));\n    }\n    const object = new ConstructorObject();\n    const keys = Object.keys(overrides ?? {});\n    for (const key in value) {\n        if (_cloneStrategy(value, key)) {\n            if (overrides) {\n                object[key] = keys.includes(key)\n                    ? overrides[key]\n                    : _clone(value[key], caches, {});\n            }\n            else {\n                object[key] = _clone(value[key], caches, {});\n            }\n        }\n    }\n    return object;\n}\nexport function setCloneStrategy(cloneStrategy) {\n    _cloneStrategy = cloneStrategy;\n}\nexport function clone(value, overrides) {\n    return _clone(value, [], overrides);\n}\n//# sourceMappingURL=clone-helper.js.map","export function currencyFormat(currency) {\n    const [integer, decimal] = Math.abs(currency.value).toString().split('.');\n    let result = '';\n    let count = 0;\n    for (let i = 1; i <= integer.length; i++) {\n        const index = integer.length - i;\n        if (count === 3) {\n            count = 0;\n            result = `.${result}`;\n        }\n        count++;\n        result = `${integer.charAt(index)}${result}`;\n    }\n    if (!!currency.decimals && decimal) {\n        result = `${result},${decimal.slice(0, currency.decimals)}`;\n    }\n    if (currency.value < 0) {\n        result = `-${result}`;\n    }\n    return currency.symbol ? `${currency.symbol} ${result}` : result;\n}\n//# sourceMappingURL=currency-format-helper.js.map","export function createDebouncedTimeout(delay) {\n    let timeoutId = undefined;\n    function cancel() {\n        if (timeoutId) {\n            clearTimeout(timeoutId);\n        }\n    }\n    function schedule(callback, _delay) {\n        cancel();\n        timeoutId = setTimeout(callback, _delay || delay);\n    }\n    return { cancel, schedule };\n}\n//# sourceMappingURL=debounced-timeout-helper.js.map","export function round(number, precision = 0) {\n    const _precision = Math.pow(10, precision);\n    return Math.round(number * _precision) / _precision;\n}\nexport function ceil(number, precision = 0) {\n    const _precision = Math.pow(10, precision);\n    return Math.ceil(number * _precision) / _precision;\n}\nexport function floor(number, precision = 0) {\n    const _precision = Math.pow(10, precision);\n    return Math.floor(number * _precision) / _precision;\n}\nexport function halfToEven(number, precision = 0) {\n    const _precision = Math.pow(10, precision);\n    const _number = Math.abs(number) * _precision;\n    const integer = Math.trunc(_number);\n    const decimal = _number - integer;\n    let result;\n    if (decimal < 0.5) {\n        result = integer;\n    }\n    else if (decimal > 0.5) {\n        result = integer + 1;\n    }\n    else {\n        result = integer + (integer % 2);\n    }\n    return (number < 0 ? -result : result) / _precision;\n}\n//# sourceMappingURL=number-helper.js.map","export function fromPromise(value) {\n    return value instanceof Promise ? value : Promise.resolve(value);\n}\nexport async function rethrow(promise, catchError) {\n    try {\n        await promise;\n    }\n    catch (err) {\n        if (catchError) {\n            catchError(err);\n        }\n        throw err;\n    }\n}\nexport async function silence(promise, catchError) {\n    try {\n        await promise;\n    }\n    catch (err) {\n        if (catchError) {\n            catchError(err);\n        }\n        return undefined;\n    }\n}\nexport async function unawaited(promise, catchError) {\n    try {\n        return await promise;\n    }\n    catch (err) {\n        if (catchError) {\n            catchError(err);\n        }\n        return undefined;\n    }\n}\n//# sourceMappingURL=promise-helper.js.map","const SAFE_REGEX = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\nconst SAFE_BASE_LOG = 5;\nconst SIGNED_POSITIVE = 1;\nconst SIGNED_NEUTRO = 0;\nconst SIGNED_NEGATIVE = -1;\nconst MAX_VALUE_NUMBER = 99999;\nconst MIN_VALUE_NUMBER = 0;\nconst MAX_VALUE_BASE = 100000;\nconst CHAR_NEGATIVE = 45;\nconst PROPS_ZERO = {\n    decimals: [],\n    integers: [0],\n    signed: 0\n};\nlet _roundStrategy = {\n    precision: 2,\n    roundMode: 'half-to-even'\n};\nexport class BigDecimal {\n    constructor(value) {\n        const props = bigDecimalPropsFromValue(value);\n        this.integers = props.integers.length ? props.integers : [0];\n        this.signed = props.signed;\n        this.decimals = props.decimals;\n    }\n    get data() {\n        return +this;\n    }\n    get rounded() {\n        const { roundMode: mode, precision } = _roundStrategy;\n        return roundPrecision(this, precision, mode).data;\n    }\n    abs() {\n        return new BigDecimal({\n            decimals: [...this.decimals],\n            integers: [...this.integers],\n            signed: SIGNED_POSITIVE\n        });\n    }\n    negative() {\n        return new BigDecimal({\n            decimals: [...this.decimals],\n            integers: [...this.integers],\n            signed: (this.signed * -1)\n        });\n    }\n    plus(value) {\n        const number = valueToBigDecimal(value);\n        if (this.isZero() && number.isZero()) {\n            return BigDecimal.zero();\n        }\n        if (this.isZero()) {\n            return number.clone();\n        }\n        if (number.isZero()) {\n            return this.clone();\n        }\n        if (this.signed === number.signed) {\n            return operationPlus(this, number, this.signed);\n        }\n        if (this.abs().equals(number.abs())) {\n            return BigDecimal.zero();\n        }\n        const _this = this.abs();\n        const _number = number.abs();\n        return _this.greaterThan(_number)\n            ? operationMinus(_this, _number, this.signed)\n            : operationMinus(_number, _this, number.signed);\n    }\n    minus(value) {\n        const number = valueToBigDecimal(value);\n        if ((this.isZero() && number.isZero()) || this.equals(number)) {\n            return BigDecimal.zero();\n        }\n        if (this.isZero()) {\n            return number.negative();\n        }\n        if (number.isZero()) {\n            return this.clone();\n        }\n        const _this = this.abs();\n        const _number = number.abs();\n        if (this.isPositive() && number.isPositive()) {\n            return _this.greaterThan(_number)\n                ? operationMinus(_this, _number, SIGNED_POSITIVE)\n                : operationMinus(_number, _this, SIGNED_NEGATIVE);\n        }\n        if (this.isPositive() && number.isNegative()) {\n            return operationPlus(_this, _number, SIGNED_POSITIVE);\n        }\n        if (this.isNegative() && number.isPositive()) {\n            return operationPlus(_this, _number, SIGNED_NEGATIVE);\n        }\n        return _this.greaterThan(_number)\n            ? operationMinus(_this, _number, SIGNED_NEGATIVE)\n            : operationMinus(_number, _this, SIGNED_POSITIVE);\n    }\n    multiply(value) {\n        return operationMultiply(this, valueToBigDecimal(value));\n    }\n    divide(value, precision = 15) {\n        return operationDivide(this, valueToBigDecimal(value), precision);\n    }\n    percentage(rate) {\n        return this.multiply(rate).divide(100);\n    }\n    round(precision = 0) {\n        return this.isZero()\n            ? this.clone()\n            : roundPrecision(this, precision, 'round');\n    }\n    ceil(precision = 0) {\n        return this.isZero()\n            ? this.clone()\n            : roundPrecision(this, precision, 'ceil');\n    }\n    floor(precision = 0) {\n        return this.isZero()\n            ? this.clone()\n            : roundPrecision(this, precision, 'floor');\n    }\n    halfToEven(precision = 0) {\n        return this.isZero()\n            ? this.clone()\n            : roundPrecision(this, precision, 'half-to-even');\n    }\n    roundWith(strategy) {\n        return roundPrecision(this, strategy.precision, strategy.roundMode).data;\n    }\n    isNegative() {\n        return this.signed === SIGNED_NEGATIVE;\n    }\n    isPositive() {\n        return this.signed === SIGNED_POSITIVE;\n    }\n    isZero() {\n        return (this.signed === SIGNED_NEUTRO &&\n            integersIsZero(this.integers) &&\n            !this.decimals.length);\n    }\n    equals(value) {\n        const bigDecimal = valueToBigDecimal(value);\n        if (this.signed !== bigDecimal.signed) {\n            return false;\n        }\n        const decimals1 = removeZerosInDecimals([...this.decimals]);\n        const decimals2 = removeZerosInDecimals([...bigDecimal.decimals]);\n        if (this.integers.length !== bigDecimal.integers.length ||\n            decimals1.length !== decimals2.length) {\n            return false;\n        }\n        const numbers1 = [...this.integers, ...decimals1];\n        const numbers2 = [...bigDecimal.integers, ...decimals2];\n        for (let i = 0; i < numbers1.length; ++i) {\n            if (numbers1[i] !== numbers2[i]) {\n                return false;\n            }\n        }\n        return true;\n    }\n    greaterThan(value) {\n        return compareTo(this, valueToBigDecimal(value)) > 0;\n    }\n    greaterThanOrEqualTo(value) {\n        return compareTo(this, valueToBigDecimal(value)) >= 0;\n    }\n    lessThan(value) {\n        return compareTo(this, valueToBigDecimal(value)) < 0;\n    }\n    lessThanOrEqualTo(value) {\n        return compareTo(this, valueToBigDecimal(value)) <= 0;\n    }\n    clone() {\n        return new BigDecimal({\n            decimals: [...this.decimals],\n            integers: [...this.integers],\n            signed: this.signed\n        });\n    }\n    toString() {\n        return bigDecimalToString(this);\n    }\n    static create(value) {\n        return new BigDecimal(value);\n    }\n    static zero() {\n        return new BigDecimal(PROPS_ZERO);\n    }\n}\nexport function bigDecimal(value = PROPS_ZERO) {\n    return BigDecimal.create(value);\n}\nexport function roundStrategy(strategy) {\n    _roundStrategy = strategy;\n}\nfunction integersIsZero(numbers) {\n    return numbers.length === 1 && numbers[0] === 0;\n}\nfunction valueToBigDecimal(value) {\n    return value instanceof BigDecimal ? value : BigDecimal.create(value);\n}\nfunction removeZerosInIntegers(integers) {\n    if (integersIsZero(integers)) {\n        return [...integers];\n    }\n    const firstNonZero = integers.findIndex((integer) => integer !== 0);\n    return firstNonZero === -1 ? [] : integers.slice(firstNonZero);\n}\nfunction integersToChunks(integers) {\n    integers = String(integers);\n    const _integers = [];\n    for (let i = integers.length; i > 0; i -= SAFE_BASE_LOG) {\n        const index = Math.max(0, i - SAFE_BASE_LOG);\n        _integers.unshift(+integers.slice(index, i));\n    }\n    return _integers;\n}\nfunction removeZerosInDecimals(decimals) {\n    let end = decimals.length;\n    while (end > 0 && decimals[end - 1] === 0) {\n        end--;\n    }\n    return decimals.slice(0, end);\n}\nfunction removeLeadingZeros(numberStr) {\n    return numberStr.replace(/^0+/, '');\n}\nfunction removeTrailingZeros(numberStr) {\n    return numberStr.replace(/0+$/, '');\n}\nfunction formatDecimal(decimal) {\n    const padZeroLength = decimal.length >= SAFE_BASE_LOG ? 0 : SAFE_BASE_LOG - decimal.length;\n    return decimal.padEnd(decimal.length + padZeroLength, '0');\n}\nfunction decimalsToChunks(decimals) {\n    decimals = String(decimals);\n    if (!decimals.length) {\n        return [];\n    }\n    if (decimals.length <= SAFE_BASE_LOG) {\n        return removeZerosInDecimals([+formatDecimal(decimals)]);\n    }\n    const _decimals = [];\n    for (let i = 0; i < decimals.length; i += SAFE_BASE_LOG) {\n        const decimal = decimals.slice(i, i + SAFE_BASE_LOG);\n        _decimals.push(+formatDecimal(decimal));\n    }\n    removeZerosInDecimals(_decimals);\n    return _decimals;\n}\nfunction integersToString(integers) {\n    return integers.reduce((total, integer, index) => {\n        return (total +\n            (index !== 0\n                ? String(integer).padStart(SAFE_BASE_LOG, '0')\n                : String(integer)));\n    }, '');\n}\nfunction decimalsToString(decimals) {\n    return decimals.reduce((total, decimal) => {\n        return total + String(decimal).padStart(SAFE_BASE_LOG, '0');\n    }, '');\n}\nfunction numberToChunks(number) {\n    if (/e-/.test(number)) {\n        const [int, dec] = number.split('e-');\n        const count = +dec + int.length - 1;\n        return ['0', int.replace('.', '').padStart(count, '0')];\n    }\n    return number.split('.');\n}\nfunction numberToProps(signed, number) {\n    if (!number) {\n        return PROPS_ZERO;\n    }\n    const [integers, _decimals] = numberToChunks(number);\n    const decimals = decimalsToChunks(_decimals || '');\n    return {\n        decimals,\n        integers: integersToChunks(integers),\n        signed\n    };\n}\nfunction bigDecimalFromString(value) {\n    let signed = SIGNED_POSITIVE;\n    if (value.charCodeAt(0) === CHAR_NEGATIVE) {\n        value = value.slice(1);\n        signed = SIGNED_NEGATIVE;\n    }\n    if (!SAFE_REGEX.test(value)) {\n        throw Error('[BigDecimalError] Invalid argument: ' + value);\n    }\n    return numberToProps(signed, value);\n}\nfunction bigDecimalFromNumber(value) {\n    if (value * 0 !== 0) {\n        throw Error('[BigDecimalError] Invalid argument: ' + value);\n    }\n    if (value === 0) {\n        return PROPS_ZERO;\n    }\n    let signed = SIGNED_POSITIVE;\n    if (value < 0) {\n        value = Math.abs(value);\n        signed = SIGNED_NEGATIVE;\n    }\n    return numberToProps(signed, String(value));\n}\nfunction bigDecimalPropsFromValue(value) {\n    if (value instanceof BigDecimal) {\n        return {\n            decimals: value.decimals,\n            integers: value.integers,\n            signed: value.signed\n        };\n    }\n    if (typeof value === 'number') {\n        return bigDecimalFromNumber(value);\n    }\n    if (typeof value === 'string') {\n        return bigDecimalFromString(value);\n    }\n    const decimals = removeZerosInDecimals(value.decimals);\n    const integers = removeZerosInIntegers(value.integers);\n    return {\n        decimals,\n        integers,\n        signed: !decimals.length && integersIsZero(integers)\n            ? SIGNED_NEUTRO\n            : value.signed\n    };\n}\nfunction bigDecimalToString(number) {\n    const integerStr = integersToString(number.integers);\n    const decimalStr = decimalsToString(number.decimals).replace(/0+$/, '');\n    const numberStr = decimalStr ? `${integerStr}.${decimalStr}` : integerStr;\n    return number.isNegative() ? `-${numberStr}` : numberStr;\n}\nfunction compareTo(number1, number2) {\n    if (number1.isZero() && number2.isZero()) {\n        return 0;\n    }\n    if (number1.signed !== number2.signed) {\n        return number1.signed - number2.signed;\n    }\n    const integers1 = number1.integers;\n    const integers2 = number2.integers;\n    if (integers1.length !== integers2.length) {\n        return integers1.length - integers2.length;\n    }\n    for (let i = 0; i < integers1.length; i++) {\n        if (integers1[i] !== integers2[i]) {\n            return (integers1[i] - integers2[i]) * number1.signed;\n        }\n    }\n    const decimals1 = number1.decimals;\n    const decimals2 = number2.decimals;\n    for (let i = 0; i < decimals1.length; i++) {\n        if (decimals1[i] !== decimals2[i]) {\n            return (decimals1[i] - decimals2[i]) * number1.signed;\n        }\n    }\n    return 0;\n}\nfunction normalizeIntegers(numbers) {\n    const _numbers = [];\n    for (let i = 0; i < numbers.length; i++) {\n        const number = numbers[i];\n        if (number !== 0) {\n            _numbers.push(number);\n        }\n        else {\n            const beforeIsDefined = i > 0 ? numbers[i - 1] > 0 : false;\n            if (beforeIsDefined) {\n                _numbers.push(number);\n            }\n        }\n    }\n    return _numbers;\n}\nfunction plusNumbers(number1, number2, carry = 0) {\n    number1 = [...number1].reverse();\n    number2 = [...number2].reverse();\n    const length = number1.length > number2.length ? number1.length : number2.length;\n    const numbers = [];\n    for (let i = 0; i < length; i++) {\n        const total = (number1[i] ?? 0) + (number2[i] ?? 0) + carry;\n        if (total > MAX_VALUE_NUMBER) {\n            carry = 1;\n            numbers.unshift(+String(total).slice(1));\n        }\n        else {\n            carry = 0;\n            numbers.unshift(total);\n        }\n    }\n    return { carry, numbers };\n}\nfunction plusNumbersOnCarry(number1, number2, carry = 0) {\n    const result = plusNumbers(number1, number2, carry);\n    if (result.carry > 0) {\n        result.numbers.unshift(result.carry);\n    }\n    return result.numbers;\n}\nfunction minusNumbers(numbers1, numbers2, carry = 0) {\n    numbers1 = [...numbers1].reverse();\n    numbers2 = [...numbers2].reverse();\n    const length = numbers1.length > numbers2.length ? numbers1.length : numbers2.length;\n    const numbers = [];\n    for (let i = 0; i < length; i++) {\n        const total = (numbers1[i] ?? 0) - (numbers2[i] ?? 0) - carry;\n        if (total < MIN_VALUE_NUMBER) {\n            carry = 1;\n            numbers.unshift(MAX_VALUE_BASE - Math.abs(total));\n        }\n        else {\n            carry = 0;\n            numbers.unshift(total);\n        }\n    }\n    return { carry, numbers };\n}\nfunction fillArrayDecimals(decimals1, decimals2) {\n    const maxLength = Math.max(decimals1.length, decimals2.length);\n    const _decimals1 = [\n        ...decimals1,\n        ...Array(maxLength - decimals1.length).fill(0)\n    ];\n    const _decimals2 = [\n        ...decimals2,\n        ...Array(maxLength - decimals2.length).fill(0)\n    ];\n    return [_decimals1, _decimals2];\n}\nfunction operationPlus(number1, number2, signed) {\n    const [decimals1, decimals2] = fillArrayDecimals(number1.decimals, number2.decimals);\n    const { carry, numbers } = plusNumbers(decimals1, decimals2);\n    const integers = plusNumbersOnCarry([...number1.integers], [...number2.integers], carry);\n    return BigDecimal.create({ decimals: numbers, integers, signed });\n}\nfunction operationMinus(number1, number2, signed) {\n    const [decimals1, decimals2] = fillArrayDecimals(number1.decimals, number2.decimals);\n    const decimals = minusNumbers(decimals1, decimals2);\n    const integers = minusNumbers([...number1.integers], [...number2.integers], decimals.carry);\n    return BigDecimal.create({\n        decimals: decimals.numbers,\n        integers: normalizeIntegers(integers.numbers),\n        signed\n    });\n}\nfunction operationMultiply(number1, number2) {\n    if (number1.isZero() || number2.isZero()) {\n        return BigDecimal.zero();\n    }\n    const signed = (number1.signed * number2.signed);\n    const length1 = number1.integers.length + number1.decimals.length;\n    const length2 = number2.integers.length + number2.decimals.length;\n    const numbers1 = [...number1.integers, ...number1.decimals];\n    const numbers2 = [...number2.integers, ...number2.decimals];\n    const _numbers = Array(length1 + length2).fill(0);\n    for (let i = length2 - 1; i >= 0; i--) {\n        let carry = 0;\n        for (let j = length1 - 1; j >= 0; j--) {\n            const position = i + j + 1;\n            const result = numbers2[i] * numbers1[j] + carry + _numbers[position];\n            _numbers[position] = result % MAX_VALUE_BASE;\n            carry = Math.floor(result / MAX_VALUE_BASE);\n        }\n        _numbers[i] += carry;\n    }\n    const places1 = decimalsToString(number1.decimals).length;\n    const places2 = decimalsToString(number2.decimals).length;\n    const placesTotal = Math.ceil((places1 + places2) / SAFE_BASE_LOG);\n    const integerIndex = _numbers.length - placesTotal;\n    const integers = removeZerosInIntegers(integerIndex > 0 ? _numbers.slice(0, integerIndex) : [0]);\n    const decimals = removeZerosInDecimals(_numbers.slice(integerIndex));\n    return BigDecimal.create({ decimals, integers, signed });\n}\nfunction operationDivide(number1, number2, precision) {\n    if (number2.isZero()) {\n        throw new Error('[BigDecimalError] Division by zero');\n    }\n    if (number1.isZero()) {\n        return BigDecimal.zero();\n    }\n    const signed = (number1.signed * number2.signed);\n    if (number1.equals(number2)) {\n        return BigDecimal.create(1);\n    }\n    if (number2.equals(1) || number2.equals(-1)) {\n        return BigDecimal.create({\n            decimals: [...number1.decimals],\n            integers: [...number1.integers],\n            signed\n        });\n    }\n    const decimalsStr1 = removeTrailingZeros(decimalsToString([...number1.decimals]));\n    const decimalsStr2 = removeTrailingZeros(decimalsToString([...number2.decimals]));\n    const integersStr1 = integersToString([...number1.integers]);\n    const integersStr2 = integersToString([...number2.integers]);\n    const numerator = integersStr1 + decimalsStr1;\n    const denominator = integersStr2 + decimalsStr2;\n    const length1 = decimalsStr1.length;\n    const length2 = decimalsStr2.length;\n    const _precision = numerator.length + precision + length2;\n    const _numerator = numerator.padEnd(_precision, '0');\n    const _denominador = BigInt(denominator);\n    let result = '';\n    let remainder = 0n;\n    for (let i = 0; i < _numerator.length; i++) {\n        const digit = BigInt(+_numerator[i]);\n        const value = remainder * 10n + digit;\n        if (value < _denominador) {\n            result += '0';\n            remainder = value;\n        }\n        else {\n            const quotient = value / _denominador;\n            result += quotient.toString();\n            remainder = value % _denominador;\n        }\n    }\n    result = result.slice(length2);\n    const point = result.length - (length1 + precision);\n    let integers = point <= 0 ? '0' : result.slice(0, point);\n    let decimals = point <= 0 ? '0'.repeat(-point) + result : result.slice(point);\n    integers = removeLeadingZeros(integers) || '0';\n    decimals = removeTrailingZeros(decimals);\n    return BigDecimal.create({\n        decimals: decimalsToChunks(decimals),\n        integers: integersToChunks(integers),\n        signed\n    });\n}\nfunction precisionUpper(roundMode, integer, decimal, comparator) {\n    switch (roundMode) {\n        case 'round':\n            return decimal >= comparator;\n        case 'half-to-even':\n            return decimal < comparator\n                ? false\n                : decimal > comparator || integer % 2 !== 0;\n        case 'ceil':\n            return true;\n        default:\n            return false;\n    }\n}\nfunction roundPrecisionZero(number, roundMode) {\n    if (number.decimals.length === 0) {\n        return number.clone();\n    }\n    const decimal = +String(number.decimals[0])\n        .padStart(SAFE_BASE_LOG, '0')\n        .charAt(0);\n    const precisionIsUpper = precisionUpper(roundMode, number.integers[0], decimal, 5);\n    if (!precisionIsUpper) {\n        return BigDecimal.create({\n            decimals: [],\n            integers: [...number.integers],\n            signed: number.signed\n        });\n    }\n    const result = plusNumbers(number.integers, [1]);\n    if (result.carry > 0) {\n        result.numbers.unshift(result.carry);\n    }\n    return BigDecimal.create({\n        decimals: [],\n        integers: result.numbers,\n        signed: number.signed\n    });\n}\nfunction roundPrecisionPositive(number, precision, roundMode) {\n    const decimalsStr = decimalsToString(number.decimals);\n    if (decimalsStr.replace(/0+$/, '').length <= precision) {\n        return number.clone();\n    }\n    const decimals = decimalsToChunks(decimalsStr.slice(0, precision));\n    const decimalLimit = +decimalsStr[precision - 1];\n    const decimalUpper = +decimalsStr[precision];\n    const precisionIsUpper = precisionUpper(roundMode, decimalLimit, decimalUpper, 5);\n    if (!precisionIsUpper) {\n        return BigDecimal.create({\n            decimals,\n            integers: [...number.integers],\n            signed: number.signed\n        });\n    }\n    const decimalsCarry = decimalsToChunks('1'.padStart(precision, '0'));\n    const resultPlus = plusNumbers(decimals, decimalsCarry);\n    const integers = resultPlus.carry > 0\n        ? plusNumbersOnCarry(number.integers, [1])\n        : [...number.integers];\n    return BigDecimal.create({\n        decimals: resultPlus.numbers,\n        integers,\n        signed: number.signed\n    });\n}\nfunction roundPrecisionNegative(number, precision, roundMode) {\n    const integersStr = number.integers.reduce((total, integers) => {\n        return total + String(integers);\n    }, '');\n    if (integersStr.length <= precision) {\n        return BigDecimal.zero();\n    }\n    const upper = integersStr.length - precision;\n    const limit = upper - 1;\n    let integers = integersToChunks(integersStr.slice(0, upper).padEnd(integersStr.length, '0'));\n    const integerLimit = +integersStr[limit];\n    const integerUpper = +integersStr[upper];\n    const precisionIsUpper = precisionUpper(roundMode, integerLimit, integerUpper, 5);\n    if (precisionIsUpper) {\n        const carry = integersToChunks('1'.padEnd(precision + 1, '0'));\n        integers = plusNumbersOnCarry(integers, carry);\n    }\n    return BigDecimal.create({\n        decimals: [],\n        integers,\n        signed: number.signed\n    });\n}\nfunction roundPrecision(number, precision, roundMode) {\n    const _precision = Math.trunc(precision);\n    if (_precision === 0) {\n        return roundPrecisionZero(number, roundMode);\n    }\n    if (_precision > 0) {\n        return roundPrecisionPositive(number, _precision, roundMode);\n    }\n    return roundPrecisionNegative(number, Math.abs(_precision), roundMode);\n}\n//# sourceMappingURL=big-decimal.js.map","export class Criteria {\n    constructor(key, value) {\n        this.key = key;\n        this.value = value;\n    }\n    assign(callback) {\n        callback(this.key, this.value);\n    }\n    equals(value) {\n        return this.value === value;\n    }\n}\nexport class Criterias {\n    constructor() {\n        this.collection = new Map();\n    }\n    append(data, value) {\n        if (typeof data === 'string' ||\n            typeof data === 'number' ||\n            typeof data === 'symbol') {\n            this.collection.set(data, new Criteria(data, value));\n        }\n        else {\n            this.collection.set(data.key, data);\n        }\n        return this;\n    }\n    request(key) {\n        return this.collection.get(key);\n    }\n    value(key) {\n        return this.request(key)?.value;\n    }\n    equals({ collection }) {\n        if (this.collection.size !== collection.size) {\n            return false;\n        }\n        const criterias = Array.from(collection.values());\n        let equals = true;\n        let index = 0;\n        while (equals && index < criterias.length) {\n            const { key, value } = criterias[index];\n            const criteria = this.request(key);\n            equals = equals && !!criteria && criteria.equals(value);\n            index++;\n        }\n        return equals;\n    }\n    toLiteralObject() {\n        const payload = {};\n        function assign(key, value) {\n            payload[key] = value;\n        }\n        this.collection.forEach((criteria) => {\n            criteria.assign(assign);\n        });\n        return payload;\n    }\n    static fromLiteralObject(object) {\n        const criterias = new Criterias();\n        Object.entries(object).forEach(([key, value]) => {\n            criterias.append(key, value);\n        });\n        return criterias;\n    }\n}\n//# sourceMappingURL=criteria.js.map","import { freeze } from '../helpers/general-helper';\nclass ManagerObservable {\n    constructor(value) {\n        this.observers = [];\n        this.isClosed = false;\n        this._value = freeze(value);\n    }\n    get value() {\n        return this._value;\n    }\n    subscribe(observer) {\n        this.observers.push(observer);\n        observer(this._value);\n        return this.unsubscriptor(observer);\n    }\n    listen(observer) {\n        this.observers.push(observer);\n        return this.unsubscriptor(observer);\n    }\n    next(value) {\n        if (!this.isClosed) {\n            this._value = freeze(value);\n            this.observers.forEach((observer) => {\n                observer(this._value);\n            });\n        }\n    }\n    close() {\n        this.isClosed = true;\n        this.observers = [];\n    }\n    unsubscriptor(observer) {\n        return () => {\n            this.observers = this.observers.filter((_observer) => _observer !== observer);\n        };\n    }\n}\nexport function observable(value) {\n    return new ManagerObservable(value);\n}\n//# sourceMappingURL=observable.js.map","class QuequeElement {\n    constructor(value) {\n        this.value = value;\n    }\n    set next(element) {\n        this.element = element;\n    }\n    get next() {\n        return this.element;\n    }\n}\nexport class Queque {\n    constructor() {\n        this._length = 0;\n    }\n    get length() {\n        return this._length;\n    }\n    enqueue(value) {\n        const element = new QuequeElement(value);\n        if (!this.head) {\n            this.head = element;\n        }\n        else if (this.tail) {\n            this.tail.next = element;\n        }\n        this.tail = element;\n        this._length++;\n    }\n    dequeue() {\n        if (!this.head) {\n            return undefined;\n        }\n        const head = this.head;\n        this.head = head.next;\n        this._length--;\n        return head.value;\n    }\n    static fromArray(collection) {\n        const queque = new Queque();\n        collection.forEach((element) => {\n            queque.enqueue(element);\n        });\n        return queque;\n    }\n    static map(collection, map) {\n        const queque = new Queque();\n        collection.map((element) => queque.enqueue(map(element)));\n        return queque;\n    }\n}\n//# sourceMappingURL=queque.js.map","export class SecureMap extends Map {\n    constructor(factory) {\n        super();\n        this.factory = factory;\n    }\n    request(key, value) {\n        let _value = this.get(key);\n        if (!_value) {\n            _value = value ?? this.factory();\n            this.set(key, _value);\n        }\n        return _value;\n    }\n}\n//# sourceMappingURL=secure-map.js.map","function equalsByValue(value, element) {\n    return value === element;\n}\nexport class SelectionSet {\n    constructor(values = [], equals = equalsByValue) {\n        this.values = values;\n        this.equals = equals;\n    }\n    get size() {\n        return this.values.length;\n    }\n    get isEmpty() {\n        return this.values.length === 0;\n    }\n    contains(value) {\n        return this.includes(this.values, value);\n    }\n    containsAll(values) {\n        return !!values.length && values.every((value) => this.contains(value));\n    }\n    containsAny(values) {\n        return values.some((value) => this.contains(value));\n    }\n    select(value) {\n        return this.contains(value) ? this : this.clone([...this.values, value]);\n    }\n    unselect(value) {\n        return this.contains(value)\n            ? this.clone(this.exclude(this.values, [value]))\n            : this;\n    }\n    toggle(value) {\n        return this.contains(value) ? this.unselect(value) : this.select(value);\n    }\n    toggleAll(values) {\n        const pendings = values.filter((value) => !this.contains(value));\n        if (pendings.length) {\n            return this.clone([...this.values, ...pendings]);\n        }\n        return values.length ? this.clone(this.exclude(this.values, values)) : this;\n    }\n    refresh(values) {\n        const selecteds = this.values.filter((value) => this.includes(values, value));\n        return selecteds.length === this.size ? this : this.clone(selecteds);\n    }\n    clear() {\n        return this.isEmpty ? this : this.clone([]);\n    }\n    clone(values) {\n        return new SelectionSet(values, this.equals);\n    }\n    includes(values, value) {\n        return values.some((element) => this.equals(value, element));\n    }\n    exclude(values, excludes) {\n        return values.filter((value) => !this.includes(excludes, value));\n    }\n}\n//# sourceMappingURL=selection-set.js.map","import { fromPromise } from '../helpers/promise-helper';\nexport function delayPromise(value, miliseconds) {\n    return new Promise((resolve) => {\n        setTimeout(() => {\n            fromPromise(value()).then((result) => {\n                resolve(result);\n            });\n        }, miliseconds);\n    });\n}\n//# sourceMappingURL=delay-promise.js.map","import { valueIsDefined } from '../helpers/general-helper';\nexport function securePromise(callback, catchError) {\n    let promise$ = undefined;\n    let requesting = false;\n    let error = false;\n    let resolved = false;\n    function isInstanced() {\n        return valueIsDefined(promise$);\n    }\n    function isRequesting() {\n        return requesting;\n    }\n    function isResolved() {\n        return resolved;\n    }\n    function isError() {\n        return error;\n    }\n    function resolve() {\n        if (!promise$) {\n            requesting = true;\n            error = false;\n            resolved = false;\n            promise$ = callback()\n                .then((value) => {\n                resolved = true;\n                return value;\n            })\n                .catch((err) => {\n                const _error = catchError?.(err);\n                promise$ = undefined;\n                error = true;\n                if (_error) {\n                    return _error;\n                }\n                throw err;\n            })\n                .finally(() => {\n                requesting = false;\n            });\n        }\n        return promise$;\n    }\n    function reset() {\n        promise$ = undefined;\n        error = false;\n        resolved = false;\n    }\n    function refresh() {\n        reset();\n        return resolve();\n    }\n    return {\n        isError,\n        isInstanced,\n        isRequesting,\n        isResolved,\n        refresh,\n        reset,\n        resolve\n    };\n}\nexport function securePromiseOfValue(value) {\n    return securePromise(() => Promise.resolve(value));\n}\n//# sourceMappingURL=secure-promise.js.map","export class SealedPartial {\n    constructor(key, value) {\n        this.key = key;\n        this.value = value;\n    }\n    otherwise(otherwise) {\n        this._otherwise = otherwise;\n        return this;\n    }\n    when(resolver, otherwise) {\n        const handler = resolver[this.key];\n        const _otherwise = otherwise || this._otherwise;\n        _otherwise?.();\n        return handler ? handler(this.value) : undefined;\n    }\n    is(key) {\n        return this.key === key;\n    }\n}\nexport class Sealed extends SealedPartial {\n    when(resolver, otherwise) {\n        const handler = resolver[this.key];\n        const _otherwise = otherwise ?? this._otherwise;\n        _otherwise?.();\n        if (handler) {\n            return handler(this.value);\n        }\n        throw Error('Sealed class could not resolve call');\n    }\n}\n//# sourceMappingURL=sealed.js.map","import { observable } from '../objects/observable';\nimport { SealedPartial } from '../results/sealed';\nexport class Stream extends SealedPartial {\n    static loading() {\n        return new Stream('loading');\n    }\n    static success(value) {\n        return new Stream('success', value);\n    }\n    static failure(error) {\n        return new Stream('failure', error);\n    }\n}\nclass StreamStatus {\n    constructor(isLoading, isSuccessful, isError, value, error) {\n        this.isLoading = isLoading;\n        this.isSuccessful = isSuccessful;\n        this.isError = isError;\n        this.value = value;\n        this.error = error;\n    }\n    static loading() {\n        return new StreamStatus(true, false, false);\n    }\n    static successful(value) {\n        return new StreamStatus(false, true, false, value);\n    }\n    static error(error) {\n        return new StreamStatus(false, false, true, undefined, error);\n    }\n}\nexport function stream(promise) {\n    const observable$ = observable(Stream.loading());\n    const firstTime = Date.now();\n    promise\n        .then((response) => {\n        observable$.next(Stream.success({\n            response,\n            responseTime: Date.now() - firstTime\n        }));\n    })\n        .catch((error) => {\n        observable$.next(Stream.failure(error));\n    });\n    return {\n        subscribe: (observer) => {\n            return observable$.subscribe(observer);\n        }\n    };\n}\nexport function streamValue(promise) {\n    return {\n        subscribe: (resolver) => {\n            return stream(promise).subscribe((state) => {\n                state.when(resolver);\n            });\n        }\n    };\n}\nexport function streamStatus(promise) {\n    return {\n        subscribe: (observer) => {\n            return stream(promise).subscribe((state) => {\n                observer(state.when({\n                    loading: () => StreamStatus.loading(),\n                    success: ({ response }) => StreamStatus.successful(response),\n                    failure: (error) => StreamStatus.error(error)\n                }));\n            });\n        }\n    };\n}\n//# sourceMappingURL=stream.js.map","export async function zipPromise(promises, options = {}) {\n    const { continueOnError = false, errorValue = undefined } = options;\n    const results = [];\n    for (const promise of promises) {\n        try {\n            results.push(await promise());\n        }\n        catch (error) {\n            if (!continueOnError) {\n                throw error;\n            }\n            results.push(errorValue);\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=zip-promise.js.map","import { SealedPartial } from './sealed';\nexport class Either extends SealedPartial {\n    static success(value) {\n        return new Either('success', value);\n    }\n    static failure(value) {\n        return new Either('failure', value);\n    }\n}\n//# sourceMappingURL=either.js.map","import { valueIsDefined } from '../helpers/general-helper';\nexport class Optional {\n    constructor(value) {\n        this.value = value;\n    }\n    present(callback) {\n        return this.isPresent() ? callback(this.get()) : undefined;\n    }\n    empty(callback) {\n        return this.isEmpty() ? callback() : undefined;\n    }\n    when(present, empty) {\n        return this.isPresent() ? present(this.get()) : empty();\n    }\n    static build(value) {\n        return valueIsDefined(value) ? this.of(value) : this.empty();\n    }\n    static of(value) {\n        if (valueIsDefined(value)) {\n            return new PresentOptional(value);\n        }\n        throw new Error('The passed value was null or undefined.');\n    }\n    static empty() {\n        return new EmptyOptional();\n    }\n}\nclass PresentOptional extends Optional {\n    constructor(presentValue) {\n        super(presentValue);\n        this.presentValue = presentValue;\n    }\n    isPresent() {\n        return true;\n    }\n    isEmpty() {\n        return false;\n    }\n    get() {\n        return this.presentValue;\n    }\n}\nclass EmptyOptional extends Optional {\n    isPresent() {\n        return false;\n    }\n    isEmpty() {\n        return true;\n    }\n    get() {\n        throw new Error('The optional is not present.');\n    }\n}\n//# sourceMappingURL=optional.js.map","export class ResultFactory {\n    constructor() { }\n    static success(value) {\n        return Object.freeze({ isSuccess: true, value });\n    }\n    static failure(error) {\n        return Object.freeze({ isSuccess: false, value: error });\n    }\n}\n//# sourceMappingURL=result.js.map","import { Sealed } from './sealed';\nexport class ViewState extends Sealed {\n    static loading(value) {\n        return new ViewState('loading', value);\n    }\n    static success(value) {\n        return new ViewState('success', value);\n    }\n    static empty(value) {\n        return new ViewState('empty', value);\n    }\n    static failure(value) {\n        return new ViewState('failure', value);\n    }\n}\nexport class ReportState extends Sealed {\n    static welcome(value) {\n        return new ReportState('welcome', value);\n    }\n    static loading(value) {\n        return new ReportState('loading', value);\n    }\n    static success(value) {\n        return new ReportState('success', value);\n    }\n    static empty(value) {\n        return new ReportState('empty', value);\n    }\n    static failure(value) {\n        return new ReportState('failure', value);\n    }\n}\n//# sourceMappingURL=views.js.map"],"names":[],"mappings":"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"}