stock-bot/.serena/memories/code_style_conventions.md
2025-06-22 17:55:51 -04:00

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 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