1.8 KiB
1.8 KiB
Code Style and Conventions
TypeScript Configuration
- Strict mode enabled: All strict checks are on
- Target: ES2022
- Module: ESNext with bundler resolution
- Path aliases:
@stock-bot/*maps tolibs/*/src - Decorators: Enabled for dependency injection
Code Style Rules (ESLint)
- No unused variables: Error (except prefixed with
_) - No explicit any: Warning
- No non-null assertion: Warning
- No console: Warning (except in tests)
- Prefer const: Enforced
- Strict equality: Always use
=== - Curly braces: Required for all blocks
Formatting (Prettier)
- Semicolons: Always
- Single quotes: Yes
- Trailing comma: ES5
- Print width: 100 characters
- Tab width: 2 spaces
- Arrow parens: Avoid when possible
- End of line: LF
Import Order
- Node built-ins
- Third-party modules
@stock-bot/*imports- Relative imports (parent directories first)
- Current directory imports
Naming Conventions
- Files: kebab-case (e.g.,
database-setup.ts) - Classes: PascalCase
- Functions/Variables: camelCase
- Constants: UPPER_SNAKE_CASE
- Interfaces/Types: PascalCase with 'I' or 'T' prefix optional
Library Standards
- Named exports only: No default exports
- Factory patterns: For complex initialization
- Singleton pattern: For global services (config, logger)
- Direct class exports: For DI-managed services
Testing
- File naming:
*.test.tsor*.spec.ts - Test structure: Bun's built-in test runner
- Integration tests: Use TestContainers for databases
- Mocking: Mock external dependencies
Documentation
- JSDoc: For all public APIs
- README.md: Required for each library
- Usage examples: Include in documentation
- Error messages: Descriptive with context