@happychef/algorithm
v1.2.10
Published
Restaurant and reservation algorithm utilities
Maintainers
Readme
@happychef/algorithm
Restaurant and reservation algorithm utilities for Happy Chef.
Installation
npm install @happychef/algorithmFeatures
- Date & Time Availability: Check if specific dates and times are available for reservations
- Timeblock Management: Get available timeblocks based on restaurant settings
- Table Assignment: Automatically assign tables to reservations
- Smart Filtering: Filter timeblocks based on max arrivals, max groups, and other constraints
- Exception Handling: Support for restaurant opening hours exceptions and closures
- Comprehensive Testing: 70+ unit tests ensuring reliability
Usage
const {
isDateAvailable,
isTimeAvailable,
getAvailableTimeblocks,
assignTablesIfPossible
} = require('@happychef/algorithm');
// Check if a date is available
const available = isDateAvailable(
restaurantData,
'2025-06-15',
reservations,
guests
);
// Get available timeblocks
const timeblocks = getAvailableTimeblocks(
restaurantData,
'2025-06-15',
reservations,
guests
);
// Check if specific time is available
const timeAvailable = isTimeAvailable(
restaurantData,
'2025-06-15',
'12:00',
reservations,
guests
);Development
Running Tests
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverageTest Coverage
The package includes comprehensive unit tests covering:
- Helper functions (parseTime, getMealTypeByTime, etc.)
- Date and time availability checks
- Timeblock filtering
- Restaurant data and exceptions handling
- Table assignment logic
- Filter functions (max arrivals, max groups)
All tests are automatically run on every push to the main branch via GitHub Actions.
CI/CD Pipeline
This package uses GitHub Actions for continuous integration and deployment:
- Automated Testing: Tests run on Node.js 18.x and 20.x
- Coverage Reports: Automatically uploaded to Codecov
- Automatic Publishing: When tests pass on main branch and version changes, package is automatically published to npm
- Git Tagging: Successful releases are automatically tagged
Setup Instructions
To enable automatic publishing:
Create an NPM Token:
- Go to npmjs.com
- Navigate to Access Tokens
- Generate a new "Automation" token
- Copy the token
Add NPM Token to GitHub Secrets:
- Go to your GitHub repository
- Navigate to Settings > Secrets and variables > Actions
- Click "New repository secret"
- Name:
NPM_TOKEN - Value: Paste your NPM token
- Click "Add secret"
Optional: Add Codecov Token (for coverage reports):
- Go to codecov.io
- Add your repository
- Copy the token
- Add as
CODECOV_TOKENsecret in GitHub
Publish New Version:
- Update version in
package.json - Commit and push to main branch
- GitHub Actions will automatically:
- Run all tests
- Publish to npm if tests pass
- Create a git tag for the release
- Update version in
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Write tests for your changes
- Ensure all tests pass (
npm test) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
MIT
Author
Happy Chef
