35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
|
# Code Style and Conventions
|
||
|
|
||
|
## Naming Conventions
|
||
|
- **Interfaces**: Prefix with `I` (e.g., `IUserData`)
|
||
|
- **Types**: Prefix with `T` (e.g., `TResponseType`)
|
||
|
- **Files**: Always lowercase (e.g., `classes.clamavservice.ts`)
|
||
|
- **Classes**: PascalCase (e.g., `ClamAvService`)
|
||
|
- **Methods/Functions**: camelCase (e.g., `scanBuffer`)
|
||
|
- Avoid ENums when possible
|
||
|
|
||
|
## TypeScript Patterns
|
||
|
- TypeScript-first approach with full type safety
|
||
|
- ES modules (type: "module" in package.json)
|
||
|
- Import dependencies in `ts/plugins.ts`
|
||
|
- Reference with full path: `plugins.myModule.myClass()`
|
||
|
|
||
|
## File Organization
|
||
|
- Source code in `ts/` directory
|
||
|
- Tests in `test/` directory
|
||
|
- Distribution in `dist_ts/` directory
|
||
|
- Use `.js` extensions in imports for ES modules
|
||
|
|
||
|
## Testing Patterns
|
||
|
- Use @git.zone/tstest framework
|
||
|
- Import expect from @push.rocks/tapbundle
|
||
|
- Test files end with `export default tap.start()`
|
||
|
- Test naming: `*.both.ts`, `*.node.ts`, `*.browser.ts`
|
||
|
- EICAR test string for antivirus verification
|
||
|
|
||
|
## General Principles
|
||
|
- Make RAZOR SHARP changes - every modification must be goal-oriented
|
||
|
- Improve elegance - changes should enhance clarity and maintainability
|
||
|
- Preserve necessary complexity - don't oversimplify
|
||
|
- Keep async patterns - maintain Promises where they add value
|
||
|
- Remove redundancy carefully while preserving functionality
|