{"version":3,"file":"index.mjs","sources":["../src/constants.js","../src/TimeFrame.js","../src/ToTime.js","../src/index.js","../src/index.js?commonjs-entry"],"sourcesContent":["/**\n * Constants used by the module\n * To convert between different units and seconds\n */\nconst constants = {\n    SECONDS_IN_YEAR: 31536000,\n    SECONDS_IN_WEEK: 604800,\n    SECONDS_IN_DAY: 86400,\n    SECONDS_IN_HOUR: 3600,\n    SECONDS_IN_MINUTE: 60,\n    SECONDS_IN_MILLISECOND: 0.001,\n    MILLISECONDS_IN_SECOND: 1000,\n    ONE_SECOND: 1\n};\n\nmodule.exports = constants;","'use strict';\n\nconst BigNumber = require('bignumber.js');\nconst constants = require('./constants');\n\nconst transforms = [\n    ['Years', constants.SECONDS_IN_YEAR],\n    ['Weeks', constants.SECONDS_IN_WEEK],\n    ['Days', constants.SECONDS_IN_DAY],\n    ['Hours', constants.SECONDS_IN_HOUR],\n    ['Minutes', constants.SECONDS_IN_MINUTE],\n    ['Seconds', constants.ONE_SECOND],\n    ['Milliseconds', constants.SECONDS_IN_MILLISECOND]\n];\n\nclass TimeFrame {\n    constructor(seconds) {\n        if (seconds instanceof BigNumber) {\n            this.val = seconds;\n        } else if (!isNaN(seconds)) {\n            this.val = new BigNumber(seconds);\n        }\n\n        this.milliseconds = this.ms.bind(this);\n        this.second = this.seconds.bind(this);\n        this.minute = this.minutes.bind(this);\n        this.hour = this.hours.bind(this);\n        this.day = this.days.bind(this);\n        this.week = this.weeks.bind(this);\n        this.year = this.years.bind(this);\n        this.toString = this.humanize.bind(this);\n    }\n\n    ms() {\n        return this.val.times(constants.MILLISECONDS_IN_SECOND).toNumber();\n    }\n\n    seconds() {\n        return this.val.toNumber();\n    }\n\n    minutes() {\n        return this.val.dividedBy(constants.SECONDS_IN_MINUTE).toNumber();\n    }\n\n    hours() {\n        return this.val.dividedBy(constants.SECONDS_IN_HOUR).toNumber();\n    }\n\n    days() {\n        return this.val.dividedBy(constants.SECONDS_IN_DAY).toNumber();\n    }\n\n    weeks() {\n        return this.val.dividedBy(constants.SECONDS_IN_WEEK).toNumber();\n    }\n\n    years() {\n        return this.val.dividedBy(constants.SECONDS_IN_YEAR).toNumber();\n    }\n\n    addSeconds(seconds) {\n        this.val = this.val.plus(seconds);\n        return this;\n    }\n\n    addMinutes(minutes) {\n        this.val = this.val.plus(minutes * constants.SECONDS_IN_MINUTE);\n        return this;\n    }\n\n    addHours(hours) {\n        this.val = this.val.plus(hours * constants.SECONDS_IN_HOUR);\n        return this;\n    }\n\n    addDays(days) {\n        this.val = this.val.plus(days * constants.SECONDS_IN_DAY);\n        return this;\n    }\n\n    addWeeks(weeks) {\n        this.val = this.val.plus(weeks * constants.SECONDS_IN_WEEK);\n        return this;\n    }\n\n    addYears(years) {\n        this.val = this.val.plus(years * constants.SECONDS_IN_YEAR);\n        return this;\n    }\n\n    addMilliseconds(milliseconds) {\n        this.val = this.val.plus(milliseconds * constants.SECONDS_IN_MILLISECOND);\n        return this;\n    }\n\n    humanize() {\n        let val = this.val;\n        const results = [];\n        \n        transforms.forEach(t => {\n            const div = val.dividedToIntegerBy(t[1]);\n            if (div.toNumber() > 0) {\n                //If div value is 1, slice the \"s\" from the unit name\n                const unit = div > 1 ? t[0] : t[0].slice(0, -1);  \n                results.push(div + ' ' + unit);\n            }\n            val = val.modulo(t[1]);\n        });\n\n        return results.join(', ');\n    }\n}\n\nmodule.exports = TimeFrame;","'use strict';\n\nconst BigNumber = require('bignumber.js');\n\nconst TimeFrame = require('./TimeFrame');\nconst constants = require('./constants');\n\nconst units = {};\nunits.y = units.year = units.years = constants.SECONDS_IN_YEAR;\nunits.w = units.week = units.weeks = constants.SECONDS_IN_WEEK;\nunits.d = units.day = units.days = constants.SECONDS_IN_DAY;\nunits.h = units.hour = units.hours = constants.SECONDS_IN_HOUR;\nunits.m = units.minute = units.minutes = constants.SECONDS_IN_MINUTE;\nunits.s = units.second = units.seconds = constants.ONE_SECOND;\nunits.ms = units.millisecond = units.milliseconds = constants.SECONDS_IN_MILLISECOND;\n\nconst toTime = (text) => {\n    /**\n     * Matching the tested string from start to end - /^ .. $/\n     * Required - starting with at least one digit - \\d+\n     * Optional - decimal value - (.[\\d]+)?\n     * Optional - one or more whitespaces between the number and unit - (\\s+)?\n     * Required - letters representing time unit (e.g.: years, day, h, s) - [a-zA-Z]+ \n     */\n    const matchPattern = /^\\d+(.[\\d]+)?(\\s+)?[a-zA-Z]+$/;\n\n    const splitted = text.toLowerCase()\n        //Replace double whitespaces with single whitespace\n        .replace(/\\s+/gi, ' ')\n        //Remove all commas\n        .replace(/[,]/g, '')\n        //Used for supporting strings such as '30 Years, 2 Hours'\n        .replace(/([\\d])\\s([\\w])/gi, '$1$2')\n        //Split array to number-type combinations\n        .split(' ');\n\n    const errors = splitted.some(v => {\n        return v.match(matchPattern) === null;\n    });\n\n    if (errors) {\n        throw new Error('Invalid format');\n    }\n\n    const seconds = splitted\n        .filter(v => {\n            return v.match(matchPattern);\n        })\n        .map(v => {\n            const numeric = v.match(/\\d+(.[\\d]+)?(\\s+)?/)[0];\n            return [parseFloat(v.substr(0, numeric.length)), v.substr(numeric.length).toLowerCase()];\n        })\n        .map(v => {\n            if ( !Object.hasOwn(units, v[1]) ) {\n                throw new Error(`Invalid unit: ${v[1]}`);\n            }\n            return new BigNumber(v[0]).times(units[v[1]]);\n        })\n        .reduce((prev, curr) => {\n            return prev.plus(curr);\n        }, new BigNumber(0));\n\n    return new TimeFrame(seconds);\n};\n\n//Constructors\ntoTime.fromMilliseconds = (milliseconds) => {\n    return new TimeFrame(milliseconds / constants.MILLISECONDS_IN_SECOND);\n};\n\ntoTime.fromSeconds = (seconds) => {\n    return new TimeFrame(seconds);\n};\n\ntoTime.fromMinutes = (minutes) => {\n    return new TimeFrame(minutes * constants.SECONDS_IN_MINUTE);\n};\n\ntoTime.fromHours = (hours) => {\n    return new TimeFrame(hours * constants.SECONDS_IN_HOUR);\n};\n\ntoTime.fromDays = (days) => {\n    return new TimeFrame(days * constants.SECONDS_IN_DAY);\n};\n\ntoTime.fromWeeks = (weeks) => {\n    return new TimeFrame(weeks * constants.SECONDS_IN_WEEK);\n};\n\ntoTime.fromYears = (years) => {\n    return new TimeFrame(years * constants.SECONDS_IN_YEAR);\n};\n\nmodule.exports = toTime;\n","'use strict';\n\nconst ToTime = require('./ToTime');\n\nmodule.exports = ToTime;","import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireSrc } from \"/home/runner/work/to-time/to-time/src/index.js\";\nvar srcExports = requireSrc();\nexport { srcExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(srcExports);"],"names":["require$$1","require$$2","require$$0"],"mappings":"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"}