subscription-period-calculator
v1.0.1
Published
A function to calculate subscription periods
Downloads
2
Maintainers
Readme
Subscription Period Calculator
A simple and efficient TypeScript function to calculate subscription periods for monthly and yearly subscriptions.
Installation
You can install this package using npm:
npm install subscription-period-calculator
Usage
Here's how you can use the calculateSubscriptionPeriod function:
import { calculateSubscriptionPeriod } from 'subscription-period-calculator';
// Calculate yearly subscription period
const yearlyStart = new Date('2023-07-31T01:08:34.000Z');
const yearlyResult = calculateSubscriptionPeriod('yearly', 'start', yearlyStart);
console.log('Yearly subscription:');
console.log('Start:', yearlyResult.startDate);
console.log('End:', yearlyResult.endDate);
// Calculate monthly subscription period
const monthlyEnd = new Date('2023-07-31T01:08:34.000Z');
const monthlyResult = calculateSubscriptionPeriod('monthly', 'end', monthlyEnd);
console.log('Monthly subscription:');
console.log('Start:', monthlyResult.startDate);
console.log('End:', monthlyResult.endDate);
API
calculateSubscriptionPeriod(type, dateType, date) Calculates the start and end dates for a subscription period. Parameters:
type
(SubscriptionType): 'monthly' or 'yearly'dateType
(DateInput): 'start' or 'end'date
(Date): The known date (either start or end date of the subscription)
Returns: An object with startDate and endDate properties, both of type Date. Testing To run the tests locally:
- Clone this repository
- Install dependencies: npm install
- Run the test script: npm test
The test script will run several test cases and output the results to the console.
Examples
Yearly Subscription
const yearlyStart = new Date('2023-07-31T01:08:34.000Z');
const result = calculateSubscriptionPeriod('yearly', 'start', yearlyStart);
// result.startDate: 2023-07-31T01:08:34.000Z
// result.endDate: 2024-07-31T01:08:34.000Z
Monthly Subscription
const monthlyEnd = new Date('2023-07-31T01:08:34.000Z');
const result = calculateSubscriptionPeriod('monthly', 'end', monthlyEnd);
// result.startDate: 2023-06-30T01:08:34.000Z
// result.endDate: 2023-07-31T01:08:34.000Z
Notes
- For monthly subscriptions, the function handles edge cases like months with different numbers of days.
- The function throws an error for invalid inputs (e.g., invalid date or subscription type).
License
This project is licensed under the MIT License.