Asper Header  1.0.14
The header injector extension
Loading...
Searching...
No Matches
processConfiguration.ts File Reference

Advanced configuration management and settings orchestration for AsperHeader. More...

Go to the source code of this file.

Data Structures

class  Configuration
 Core configuration management class with dynamic VS Code settings integration. More...
 

Variables

import *as vscode from vscode
 
import *as CONST from constants
 
const instance = new Configuration()
 Singleton configuration instance for application-wide use.
 
export const CodeConfig
 Exported configuration singleton for extension-wide access @export Primary configuration interface used throughout the extension.
 
export type CodeConfigType = Configuration
 Type alias for the Configuration class.
 

Detailed Description

Advanced configuration management and settings orchestration for AsperHeader.

Author
Henry Letellier
Version
1.0.14
Since
1.0.0
Date
2025

This module implements a sophisticated configuration management system that serves as the central nervous system for all AsperHeader extension settings. It provides seamless integration between default constants, user preferences, and workspace-specific configurations while maintaining type safety and runtime flexibility.

Architecture Overview:

  • Configuration Layer: Hierarchical settings resolution (user → workspace → defaults)
  • Dynamic Updates: Real-time configuration refresh without extension restart
  • Type Safety: Comprehensive TypeScript interfaces for all configuration values
  • Caching Strategy: Intelligent caching with selective refresh for performance
  • Validation Engine: Input validation and sanitization for all user settings
  • Integration Points: Deep coupling with constants and VS Code APIs

Configuration Domains:

  • Visual Formatting: Header decorations, separators, and visual styling options
  • Telegraph Protocol: Communication markers, block terminators, and transmission symbols
  • Temporal Settings: Date/time formats, timezone handling, and timestamp preferences
  • Logo Management: ASCII art selection, randomization, and display preferences
  • Performance Tuning: File scanning limits, processing thresholds, and optimization settings
  • Feature Control: Debug modes, auto-refresh behavior, and experimental features
  • File Processing: Extension filters, ignore patterns, and inclusion rules
  • Workspace Context: Project naming, author attribution, and workspace-specific overrides

Design Principles:

  • Fail-Safe Defaults: Always provide sensible fallback values for missing settings
  • Minimal VS Code Calls: Cache frequently accessed values to reduce API overhead
  • Hot Reloading: Support configuration changes without extension restart
  • Backward Compatibility: Graceful handling of deprecated or removed settings
  • Performance First: Optimize for frequent access patterns in header generation

Integration Strategy: This module serves as the authoritative source for all configuration throughout the extension ecosystem, providing consistent behavior across all modules including CommentGenerator, RandomLogo, logger, and user interface components.

Definition in file processConfiguration.ts.

Variable Documentation

◆ CodeConfig

export const CodeConfig

Exported configuration singleton for extension-wide access @export Primary configuration interface used throughout the extension.

Main export providing access to the configuration management system. All extension modules should import and use this instance for accessing configuration values rather than creating their own Configuration instances.

Usage Pattern:

import { CodeConfig } from './processConfiguration';
// Access configuration values
const extensionName = CodeConfig.get("extensionName");
const debugMode = CodeConfig.get("enableDebug");
// Refresh configuration from VS Code settings
await CodeConfig.refreshVariables();

The singleton pattern ensures:

  • Consistent configuration state across all modules
  • Efficient memory usage (single configuration cache)
  • Centralized configuration refresh capabilities
  • Thread-safe access to configuration values
Examples
Configuration.

Definition at line 334 of file processConfiguration.ts.

◆ CodeConfigType

export type CodeConfigType = Configuration

Type alias for the Configuration class.

Provides a type alias for dependency injection, type annotations, and interface definitions where Configuration class type is needed. Useful for creating mock configurations in testing or defining method signatures that accept configuration instances.

Usage in type annotations:

function processWithConfig(config: CodeConfigType) {
const maxScan = config.get("maxScanLength");
// ... processing logic
}

Definition at line 353 of file processConfiguration.ts.

◆ constants

import* as CONST from constants

Definition at line 69 of file processConfiguration.ts.

◆ instance

const instance = new Configuration()

Singleton configuration instance for application-wide use.

Single instance of the Configuration class that maintains consistent configuration state across the entire extension. This instance should be used by all modules requiring access to configuration values.

Definition at line 306 of file processConfiguration.ts.

◆ vscode

import* as vscode from vscode

Definition at line 68 of file processConfiguration.ts.