1.5 KiB
1.5 KiB
Code Style and Conventions
Naming Conventions
- Interfaces: Prefix with
I(e.g.,IDenoRelease,IAsset) - Types: Prefix with
T(not heavily used in this codebase) - Classes: PascalCase (e.g.,
SmartDeno,DenoDownloader) - Files: Lowercase, hyphenated (e.g.,
classes.smartdeno.ts,classes.denodownloader.ts) - Methods/Properties: camelCase
File Organization
- Source:
ts/directory - Tests:
test/directory - Compiled Output:
dist_ts/(excluded from git) - Temporary Files:
.nogit/directory (excluded from git)
File Naming Patterns
- Classes:
classes.<name>.ts(e.g.,classes.smartdeno.ts) - Entry point:
index.ts - Plugin/dependency imports:
plugins.ts - Path configurations:
paths.ts
Import Patterns
- All module dependencies imported in
ts/plugins.ts - References use full path:
plugins.moduleName.className() - Local imports use
.jsextension (for ESM compatibility)
Example from plugins.ts:
import * as smartfile from '@push.rocks/smartfile';
export { smartfile };
Usage:
import * as plugins from './plugins.js';
plugins.smartfile.fs.writeFile(...);
Class Patterns
- Private properties for internal state
- Public async methods for API
- Dependency injection where appropriate
- JSDoc comments for public methods
Module Resolution
- Always use
.jsextension in imports (even for.tsfiles) - This is required for ESM compatibility with NodeNext resolution