UNPKG

@ssv/core

Version:

Core utilities, components and services for browser and node

1 lines 13.9 kB
{"version":3,"file":"ssv-core.mjs","sources":["../src/date-time.ts","../src/collection.ts","../src/enum.ts","../src/math.ts","../src/string.ts","../src/version.ts"],"sourcesContent":["export enum TimeUnits {\n\tMilliseconds,\n\tSeconds,\n\tMinutes,\n\tHours,\n\tDays\n}\n\nexport const MILLIS_PER_SECOND = 1000;\nexport const SECONDS_PER_MINUTE = 60;\nexport const MINUTES_PER_HOUR = 60;\nexport const HOURS_PER_DAY = 24;\n\nexport const MINUTES_PER_DAY = MINUTES_PER_HOUR * HOURS_PER_DAY;\nexport const SECONDS_PER_DAY = MINUTES_PER_DAY * SECONDS_PER_MINUTE;\nexport const MILLIS_PER_MINUTE = MILLIS_PER_SECOND * SECONDS_PER_MINUTE;\nexport const MILLIS_PER_DAY = MILLIS_PER_MINUTE * MINUTES_PER_DAY;\n\n/**\n * Converts from milliseconds to seconds e.g. 2500 (ms) => 2.5 (s)\n * @param milliseconds value to convert e.g. 2500\n * @returns time in seconds\n */\nexport function fromMillisecondsToSeconds(milliseconds: number): number {\n\treturn milliseconds / MILLIS_PER_SECOND;\n}\n\n/**\n * Converts from milliseconds to minutes e.g. 72000 (ms) => 1.2 (m)\n * @param milliseconds value to convert e.g. 72000\n * @returns time in minutes\n */\nexport function fromMillisecondsToMinutes(milliseconds: number): number {\n\treturn milliseconds / MILLIS_PER_MINUTE;\n}\n\n/**\n * Converts from seconds to milliseconds e.g. 2.5 (s) => 2500 (ms)\n * @param seconds value to convert e.g. 2.5\n * @returns time in milliseconds\n */\nexport function fromSecondsToMilliseconds(seconds: number): number {\n\treturn seconds * MILLIS_PER_SECOND;\n}\n\n/**\n * Converts from seconds to minutes e.g. 120 (s) => 2 (m)\n * @param seconds value to convert e.g. 120\n * @returns time in minutes\n */\nexport function fromSecondsToMinutes(seconds: number): number {\n\treturn seconds / SECONDS_PER_MINUTE;\n}\n\n/**\n * Converts from minutes to milliseconds e.g. 2 (m) => 120000 (m)\n * @param seconds value to convert e.g. 2\n * @returns time in milliseconds\n */\nexport function fromMinutesToMilliseconds(minutes: number): number {\n\treturn minutes * MILLIS_PER_MINUTE;\n}\n\n/**\n * Converts from minutes to seconds e.g. 2 (m) => 120 (s)\n * @param seconds value to convert e.g. 2\n * @returns time in seconds\n */\nexport function fromMinutesToSeconds(minutes: number): number {\n\treturn minutes * SECONDS_PER_MINUTE;\n}\n\n/**\n * Converts time from specified time unit to an other time unit.\n *\n * @param value value to convert e.g. 2\n * @param fromUnit units to convert time from\n * @param toUnit units to convert time to\n * @returns time in specified units\n */\nexport function convertTime(value: number, fromUnit: TimeUnits, toUnit: TimeUnits): number {\n\tswitch (fromUnit) {\n\t\tcase TimeUnits.Milliseconds:\n\t\t\treturn fromMillisecondsTo(value, toUnit);\n\t\tcase TimeUnits.Seconds:\n\t\t\treturn fromSecondsTo(value, toUnit);\n\t\tcase TimeUnits.Minutes:\n\t\t\treturn fromMinutesTo(value, toUnit);\n\t\tcase TimeUnits.Hours:\n\t\t\treturn fromHoursTo(value, toUnit);\n\t\tcase TimeUnits.Days:\n\t\t\treturn fromDaysTo(value, toUnit);\n\t\tdefault:\n\t\t\tthrow Error(`convertTime fromUnit '${TimeUnits[fromUnit]}' unsupported`);\n\t}\n}\n\nexport function fromMillisecondsTo(value: number, toUnit: TimeUnits): number {\n\tswitch (toUnit) {\n\t\tcase TimeUnits.Milliseconds:\n\t\t\treturn value;\n\t\tcase TimeUnits.Seconds:\n\t\t\treturn fromMillisecondsToSeconds(value);\n\t\tcase TimeUnits.Minutes:\n\t\t\treturn fromMillisecondsToMinutes(value);\n\t\t\treturn value;\n\t\tcase TimeUnits.Hours:\n\t\t\treturn value / MINUTES_PER_HOUR / MILLIS_PER_MINUTE;\n\t\tcase TimeUnits.Days:\n\t\t\treturn value / MILLIS_PER_DAY;\n\t\tdefault:\n\t\t\tthrow Error(`convertTime toUnit '${TimeUnits[toUnit]}' unsupported`);\n\t}\n}\n\nexport function fromSecondsTo(value: number, toUnit: TimeUnits): number {\n\tswitch (toUnit) {\n\t\tcase TimeUnits.Milliseconds:\n\t\t\treturn fromSecondsToMilliseconds(value);\n\t\tcase TimeUnits.Seconds:\n\t\t\treturn value;\n\t\tcase TimeUnits.Minutes:\n\t\t\treturn fromSecondsToMinutes(value);\n\t\tdefault:\n\t\t\tthrow Error(`convertTime toUnit '${TimeUnits[toUnit]}' unsupported`);\n\t}\n}\n\nexport function fromMinutesTo(value: number, toUnit: TimeUnits): number {\n\tswitch (toUnit) {\n\t\tcase TimeUnits.Milliseconds:\n\t\t\treturn fromMinutesToMilliseconds(value);\n\t\tcase TimeUnits.Seconds:\n\t\t\treturn fromMinutesToSeconds(value);\n\t\tcase TimeUnits.Minutes:\n\t\t\treturn value;\n\t\tcase TimeUnits.Hours:\n\t\t\treturn value / MINUTES_PER_HOUR;\n\t\tcase TimeUnits.Days:\n\t\t\treturn value / MINUTES_PER_DAY;\n\t\tdefault:\n\t\t\tthrow Error(`convertTime toUnit '${TimeUnits[toUnit]}' unsupported`);\n\t}\n}\n\nexport function fromHoursTo(value: number, toUnit: TimeUnits): number {\n\tswitch (toUnit) {\n\t\tcase TimeUnits.Milliseconds:\n\t\t\treturn value * MINUTES_PER_HOUR * MILLIS_PER_MINUTE;\n\t\tcase TimeUnits.Seconds:\n\t\t\treturn value * MINUTES_PER_HOUR * SECONDS_PER_MINUTE;\n\t\tcase TimeUnits.Minutes:\n\t\t\treturn value * MINUTES_PER_HOUR;\n\t\tcase TimeUnits.Hours:\n\t\t\treturn value;\n\t\tcase TimeUnits.Days:\n\t\t\treturn value / HOURS_PER_DAY;\n\t\tdefault:\n\t\t\tthrow Error(`convertTime toUnit '${TimeUnits[toUnit]}' unsupported`);\n\t}\n}\n\nexport function fromDaysTo(value: number, toUnit: TimeUnits): number {\n\tswitch (toUnit) {\n\t\tcase TimeUnits.Milliseconds:\n\t\t\treturn value * MILLIS_PER_DAY;\n\t\tcase TimeUnits.Seconds:\n\t\t\treturn value * SECONDS_PER_DAY;\n\t\tcase TimeUnits.Minutes:\n\t\t\treturn value * MINUTES_PER_DAY;\n\t\tcase TimeUnits.Hours:\n\t\t\treturn value * HOURS_PER_DAY;\n\t\tcase TimeUnits.Days:\n\t\t\treturn value;\n\t\tdefault:\n\t\t\tthrow Error(`convertTime toUnit '${TimeUnits[toUnit]}' unsupported`);\n\t}\n}","export interface Selectable {\n\t/**\n\t * Gets or sets whether the item is selected or not.\n\t */\n\tisSelected: boolean;\n}\n\nexport interface Dictionary<T> {\n\t[key: string]: T;\n}\n\n/**\n * Unselect all collection items and select only the item specified.\n * @param {Selectable[]} collection collection to unselect.\n * @param {Selectable} selectItem item to select.\n */\nexport function mutualExclusiveSelect(collection: Selectable[], selectItem: Selectable): void {\n\tfor (const item of collection) {\n\t\titem.isSelected = false;\n\t}\n\tselectItem.isSelected = true;\n}","import _ from \"lodash\";\n\n/**\n * Typing constraint for Enums (non `const`).\n */\nexport interface Enum {\n\t[key: number]: string;\n}\n\n/**\n * Gets all names of the enum as an array.\n * @param e enum to get data of.\n * @returns enum definition names as a string array e.g. `[\"Elite\", \"Boss\", \"Normal\", \"RaidBoss\"]`.\n */\nexport function getNames(e: Enum): string[] {\n\treturn Object.keys(e).filter(v => isNaN(parseInt(v, 10)));\n}\n\n/**\n * Gets all names of the enum as an array with values kebab'ed cased characters e.g. `\"raid-boss\"`\n * @param e enum to get data of.\n * @returns enum definition names as a string array with kebab case e.g. `[\"elite\", \"boss\", \"normal\", \"raid-boss\"]`.\n */\nexport function getNamesKebab(e: Enum): string[] {\n\treturn Object.keys(e).filter(v => isNaN(parseInt(v, 10))).map(_.kebabCase);\n}\n\n/**\n * Gets all values of the enum as an array.\n * @param e enum to get data of.\n * @returns enum values as number array e.g. `[1, 2, 3, 4]`\n */\nexport function getValues(e: Enum): number[] {\n\treturn Object.keys(e).map(v => parseInt(v, 10)).filter(v => !isNaN(v));\n}","/**\n * Rounds numeric value to a specified precision (default 2) e.g. 20.556 => 20.57.\n * @param value amount to round e.g. 20.556\n * @param precision decimal places to round to e.g. 2 (default: 2)\n * @returns {number} rounded number\n */\nexport function round(value: string | number, precision = 2): number {\n\tif (typeof value === \"string\") {\n\t\treturn Number(parseFloat(value).toFixed(precision));\n\t} else {\n\t\treturn Number(value.toFixed(precision));\n\t}\n}","import { Dictionary } from \"./collection\";\n\n/**\n * parseBool configuration to add/remove possible values.\n *\n * @type {Dictionary<boolean>}\n */\nexport const PARSE_BOOL_CONFIG: Dictionary<boolean> = {\n\t// truthy\n\ttrue: true,\n\t1: true,\n\tyes: true,\n\ty: true,\n\ton: true,\n\t// falsy\n\tfalse: false,\n\t0: false,\n\tno: false,\n\tn: false,\n\toff: false\n};\n\n/**\n * Interpolates the string with the data specified by using the prefix (:) default as token.\n * e.g. 'api/:lang/games' => 'api/en/games'\n * @param {string} value string template to interpolate\n * @param {*} data data object to replace tokens\n * @param {string} [interpolatePrefix=\":\"] interpolation token prefix\n * @returns {string} string interpolated\n */\nexport function interpolate(value: string, data: any, interpolatePrefix = \":\") {\n\tdata = data || {};\n\tlet interpolatedValue = value.replace(/(\\(\\s*|\\s*\\)|\\s*\\|\\s*)/g, \"\");\n\n\tfor (const property in data) {\n\t\tif (data.hasOwnProperty(property)) {\n\t\t\tinterpolatedValue = interpolatedValue.replace(`${interpolatePrefix}${property}`, data[property]);\n\t\t}\n\t}\n\n\treturn interpolatedValue;\n}\n\n/**\n * Parses a value to boolean \"humanized\", which can also be configured in order to add additional values. e.g.\n * true => `\"true\"`, `\"1\"`, `\"yes\"`, `\"y\"`, `\"on\"`\n * false => `\"false\"`, `\"0\"`, `\"no\"`, `\"n\"`, `\"off\"` or non existent.\n * @param value value to parse\n * @returns `true`, `false`\n */\nexport function parseBool(value: string | boolean | number | null | undefined) {\n\treturn PARSE_BOOL_CONFIG[(String(value).toLowerCase())] || false;\n}\n\n/**\n * Replaces all occurrences with a string with the specified value.\n *\n * @param {string} value value to search within\n * @param {string} search value to search for e.g. \"//\"\n * @param {string} replacement value to replace with e.g. \"/\"\n * @returns {string} Returns string with the replaced values\n */\nexport function replaceAll(value: string, search: string | RegExp, replacement: string): string {\n\treturn value.replace(new RegExp(`${search}`, \"g\"), replacement);\n}","export const VERSION = \"0.6.1\";"],"names":["TimeUnits","collection","selectItem","collection_1","_i","isSelected","MILLIS_PER_SECOND","SECONDS_PER_MINUTE","MINUTES_PER_HOUR","HOURS_PER_DAY","MINUTES_PER_DAY","SECONDS_PER_DAY","MILLIS_PER_MINUTE","MILLIS_PER_DAY","fromMillisecondsToSeconds","milliseconds","fromMillisecondsToMinutes","fromSecondsToMilliseconds","seconds","fromSecondsToMinutes","fromMinutesToMilliseconds","minutes","fromMinutesToSeconds","fromMillisecondsTo","value","toUnit","Milliseconds","Seconds","Minutes","Hours","Days","Error","fromSecondsTo","fromMinutesTo","fromHoursTo","fromDaysTo","fromUnit","e","Object","keys","filter","v","isNaN","parseInt","map","_","kebabCase","precision","Number","parseFloat","toFixed","PARSE_BOOL_CONFIG","true","1","yes","y","on","false","0","no","n","off","data","interpolatePrefix","interpolatedValue","replace","property","hasOwnProperty","String","toLowerCase","search","replacement","RegExp","VERSION"],"mappings":"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"}