quarto-review-extension

Module Documentation

All modules are self-contained with JSDoc comments auto-extracted to API docs.

Core Modules

changes/ - Change Tracking

File: src/modules/changes/index.ts

Manages document changes as immutable operations.

Key Methods:

comments/ - CriticMarkup

File: src/modules/comments/index.ts

Parses and manipulates CriticMarkup.

Key Methods:

Markup: {++add++}, {--del--}, {~~old~>new~~}, {>>comment<<}, {==highlight==}

markdown/ - Markdown Processing

File: src/modules/markdown/index.ts

Converts markdown to HTML and plain text.

Key Methods:

Features: CommonMark + GFM, cached renderer, XSS prevention

ui/ - User Interface

File: src/modules/ui/

UI components and interactions.

Submodules:

change-summary.ts:

search-find.ts:

git/ - Git Persistence

File: src/modules/git/index.ts

Methods: commit(), push(), pull()

user/ - Authentication

File: src/modules/user/index.ts

Methods: authenticate(), getCurrentUser(), hasPermission()

Documentation Standards

Class:

/**
 * Brief description
 *
 * @example
 * const instance = new MyClass(config);
 */
export class MyClass {}

Method:

/**
 * What it does
 *
 * @param param1 - Description
 * @returns Description
 * @throws ErrorType - When
 */
method(param1: Type): ReturnType {}

Build Documentation

npm run build  # Generates docs/generated/api/

Testing

npm run test                    # All tests
npm run test -- changes.test.ts # Specific module
npm run test:watch              # Watch mode

Adding Modules

  1. Create src/modules/your-module/
  2. Add JSDoc to public APIs
  3. Create tests/unit/your-module.test.ts
  4. Update this doc
  5. Run npm run test && npm run build

Module Dependencies

main.ts
├── UIModule
│   ├── ChangesModule
│   ├── CommentsModule
│   ├── MarkdownModule
│   └── UserModule
├── GitModule
└── TranslationModule

Modules are decoupled with public APIs.