58 lines
No EOL
1.8 KiB
Markdown
58 lines
No EOL
1.8 KiB
Markdown
# 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 to `libs/*/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
|
|
1. Node built-ins
|
|
2. Third-party modules
|
|
3. `@stock-bot/*` imports
|
|
4. Relative imports (parent directories first)
|
|
5. 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.ts` or `*.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 |