UNPKG

kolchoz

Version:

Calculate your earnings in real-time based on your rate and country-specific working hours.

1 lines 2.12 kB
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { getCountryData, TCountryCode } from 'countries-list';\nimport calculateWorkingHours from 'dutyhours';\n\nexport type Rate = { monthly: number } | { daily: number } | { hourly: number };\n\nexport interface Options {\n country: TCountryCode;\n currency?: string;\n}\n\nfunction getRatePerSecond(options: Options & Rate) {\n const { country, currency = getCountryData(country).currency[0], ...rate } = options;\n\n // Validate that exactly one rate type is provided\n if (Object.keys(rate).length !== 1) {\n throw new Error('Exactly one rate type (monthly, daily, hourly) must be provided.');\n }\n\n const rateKey = Object.keys(rate)[0];\n const rateValue = rate[rateKey as keyof Rate];\n\n // Calculate rate per second based on the rate type\n let ratePerSecond: number;\n\n if (rateKey === 'monthly') {\n ratePerSecond = rateValue / calculateWorkingHours({ country }) / 60 / 60;\n } else if (rateKey === 'daily') {\n ratePerSecond = rateValue / 8 / 60 / 60;\n } else if (rateKey === 'hourly') {\n ratePerSecond = rateValue / 60 / 60;\n } else {\n throw new Error('Invalid rate type provided.');\n }\n\n return {\n currency,\n ratePerSecond\n };\n}\n\nexport default getRatePerSecond;\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA6C,0BAC7CC,EAAkC,0BASlC,SAASC,EAAiBC,EAAyB,CACjD,GAAM,CAAE,QAAAC,EAAS,SAAAC,KAAW,kBAAeD,CAAO,EAAE,SAAS,CAAC,EAAG,GAAGE,CAAK,EAAIH,EAG7E,GAAI,OAAO,KAAKG,CAAI,EAAE,SAAW,EAC/B,MAAM,IAAI,MAAM,kEAAkE,EAGpF,IAAMC,EAAU,OAAO,KAAKD,CAAI,EAAE,CAAC,EAC7BE,EAAYF,EAAKC,CAAqB,EAGxCE,EAEJ,GAAIF,IAAY,UACdE,EAAgBD,KAAY,EAAAE,SAAsB,CAAE,QAAAN,CAAQ,CAAC,EAAI,GAAK,WAC7DG,IAAY,QACrBE,EAAgBD,EAAY,EAAI,GAAK,WAC5BD,IAAY,SACrBE,EAAgBD,EAAY,GAAK,OAEjC,OAAM,IAAI,MAAM,6BAA6B,EAG/C,MAAO,CACL,SAAAH,EACA,cAAAI,CACF,CACF,CAEA,IAAOX,EAAQI","names":["src_exports","__export","src_default","__toCommonJS","import_countries_list","import_dutyhours","getRatePerSecond","options","country","currency","rate","rateKey","rateValue","ratePerSecond","calculateWorkingHours"]}