Thank you for your interest in contributing to Fossiq! This document provides guidelines for contributing to the project.
- Bun (v1.0+) - Runtime and package manager
- Git
git clone git@github.com:fossiq/root.git
cd root
bun install# Build all packages
bun run build
# Build specific package
cd packages/kql-lezer && bun run build# Run tests for a package
cd packages/kql-lezer && bun run test
# Run tests in watch mode
bun run test:watch# Lint all packages
bun run lint
# Auto-fix issues
bun run lint:fixUse descriptive branch names:
feat/add-new-operator- New featuresfix/parser-edge-case- Bug fixesdocs/update-readme- Documentation changes
Write clear, concise commit messages:
feat: Add support for mv-expand operatorfix: Handle edge case in datetime parsingdocs: Update installation instructions
- Create a feature branch from
main - Make your changes with clear commits
- Run tests and linting before pushing
- Open a PR with a clear description
- Wait for review and CI checks
This project uses Changesets for version management.
After making changes to a package:
bun run changeset- Select the package(s) you changed
- Choose version bump type:
patch- Bug fixes (0.1.0 -> 0.1.1)minor- New features (0.1.0 -> 0.2.0)major- Breaking changes (0.1.0 -> 1.0.0)
- Write a brief description (appears in CHANGELOG)
- Commit the generated
.changeset/*.mdfile with your changes
- Push changes with changesets to
main - GitHub Actions creates a "Release: Version Packages" PR
- Merge the PR to publish packages to npm automatically
- Language: TypeScript with ESM modules
- Runtime: Bun (use
bun xinstead ofnpx,bun runinstead ofnpm run) - Style: Functional programming over classes
- Functions: Small, focused, single responsibility
- Testing: Tests in
tests/directories, not insrc/
- Create directory:
packages/<package-name>/ - Use
@fossiq/prefix for package names - Follow existing package structure (see
kql-lezeras reference) - Add to workspace in root
package.json
- Use
workspace:*for internal package dependencies - Keep external dependencies minimal
- Pin dev dependency versions
- Check existing issues on GitHub
- Review the package docs under
packages/<name>/docs/ - Open an issue for questions or bugs
By contributing, you agree that your contributions will be licensed under the MIT License.