or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-arguments.mdconfiguration-loading.mdconfiguration-management.mdconfiguration-schema.mdconfiguration-types.mddirective-processing.mdfile-resolution.mdindex.mdutilities.md
tile.json

tessl/npm-autorest--configuration

Configuration management system for AutoRest's REST API client library generator

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@autorest/configuration@1.12.x

To install, run

npx @tessl/cli install tessl/npm-autorest--configuration@1.12.0

index.mddocs/

AutoRest Configuration

AutoRest Configuration is a TypeScript library that provides the configuration management system for AutoRest, Microsoft's REST API client library generator. It handles loading, parsing, validating, and merging configuration files for AutoRest's code generation pipeline.

Package Information

  • Package Name: @autorest/configuration
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install @autorest/configuration

Core Imports

import {
  parseAutorestCliArgs,
  AutorestConfiguration,
  AutorestNormalizedConfiguration,
  ConfigurationManager,
  detectConfigurationFile,
  detectConfigurationFiles,
  isConfigurationDocument,
  readConfigurationFile,
  mergeConfigurations,
  resolveDirectives,
  Directive,
  ResolvedDirective
} from "@autorest/configuration";

For CommonJS:

const {
  parseAutorestCliArgs,
  AutorestConfiguration,
  AutorestNormalizedConfiguration,
  ConfigurationManager,
  detectConfigurationFile,
  detectConfigurationFiles,
  isConfigurationDocument,
  readConfigurationFile,
  mergeConfigurations,
  resolveDirectives,
  Directive,
  ResolvedDirective
} = require("@autorest/configuration");

Basic Usage

import {
  parseAutorestCliArgs,
  ConfigurationManager,
  detectConfigurationFile,
  autorestConfigurationProcessor
} from "@autorest/configuration";

// Parse CLI arguments
const cliArgs = ["--input-file=swagger.json", "--output-folder=./generated"];
const parsedArgs = parseAutorestCliArgs(cliArgs);

if (parsedArgs) {
  // Detect configuration file
  const configFile = await detectConfigurationFile(
    fileSystem,
    parsedArgs.configFileOrFolder
  );

  // Create configuration manager
  const configManager = new ConfigurationManager(
    parsedArgs.configFileOrFolder || ".",
    fileSystem
  );

  // Add CLI configuration
  await configManager.addConfig(parsedArgs.options);

  // Load and merge all configurations
  const config = await configManager.resolveConfig();
}

Architecture

AutoRest Configuration is built around several key components:

  • CLI Argument Processing: Parses command-line arguments into structured configuration objects
  • Configuration Management: Handles loading, merging, and prioritizing configuration from multiple sources
  • Schema Validation: Validates configuration against predefined schemas with detailed error reporting
  • File Resolution: Discovers and loads configuration files from various sources (markdown, YAML, JSON)
  • Directive Processing: Processes configuration directives for custom transformations and rules

Capabilities

CLI Argument Parsing

Command-line argument parsing with support for AutoRest-specific options and validation. Handles complex argument structures and provides detailed error reporting.

function parseAutorestCliArgs(cliArgs: string[]): AutorestCliArgs | undefined;

interface AutorestCliArgs {
  options: AutorestNormalizedConfiguration;
  configFileOrFolder: string | undefined;
}

CLI Arguments

Configuration Management

Core configuration management system for loading, merging, and organizing configurations from multiple sources with priority handling.

class ConfigurationManager {
  constructor(configFileOrFolderUri: string, fileSystem: IFileSystem);
  addConfig(config: AutorestNormalizedConfiguration): Promise<void>;
  addHighPriorityConfig(config: AutorestNormalizedConfiguration): Promise<void>;
}

Configuration Management

Configuration Types

Complete type definitions for AutoRest configuration with support for all AutoRest features including extensions, directives, and validation options.

interface AutorestConfiguration extends AutorestNormalizedConfiguration {
  raw: AutorestNormalizedConfiguration;
  configFileFolderUri: string;
  inputFileUris: string[];
  outputFolderUri: string;
  configurationFiles: string[];
  help: boolean;
  verbose: boolean;
  debug: boolean;
  cachingEnabled: boolean;
}

interface AutorestNormalizedConfiguration {
  version?: string;
  "allow-no-input"?: boolean;
  "input-file"?: Array<string>;
  "exclude-file"?: Array<string>;
  "base-folder"?: string;
  directive?: Array<Directive>;
  "output-artifact"?: Array<string>;
  "message-format"?: "json" | "regular";
  use?: string[] | string;
  "use-extension"?: { [extensionName: string]: string };
  require?: Array<string>;
  help?: any;
  debug?: boolean;
  verbose?: boolean;
  // ... many more properties
}

Configuration Types

Configuration Schema

Schema validation system with predefined schemas for AutoRest configuration and extensible schema processor for custom validation rules.

interface ConfigurationSchemaProcessor {
  processConfiguration(config: any, options: any): any;
}

const autorestConfigurationProcessor: ConfigurationSchemaProcessor;
const AUTOREST_INITIAL_CONFIG: AutorestNormalizedConfiguration;

Configuration Schema

File Resolution

Configuration file discovery and resolution with support for walking directory hierarchies and detecting multiple configuration formats.

function detectConfigurationFile(
  fileSystem: IFileSystem,
  configFileOrFolderUri: string | null,
  logger?: AutorestLogger,
  walkUpFolders?: boolean
): Promise<string | undefined>;

function detectConfigurationFiles(
  fileSystem: IFileSystem,
  configFileOrFolderUri: string | null,
  logger?: AutorestLogger,
  walkUpFolders?: boolean
): Promise<Array<string>>;

File Resolution

Configuration Loading

Advanced configuration loading system with extension management, data store integration, and configuration merging from multiple sources.

interface ConfigurationLoaderOptions {
  fileSystem?: IFileSystem;
  dataStore?: DataStore;
  extensionManager?: ExtensionManager;
}

interface AutorestConfigurationResult {
  config: AutorestConfiguration;
  extensions: ResolvedExtension[];
}

Configuration Loading

Directive Processing

Configuration directive system for custom transformations, suppressions, and rules processing with support for conditional execution.

interface Directive {
  from?: string[] | string;
  where?: string[] | string;
  reason?: string[];
  suppress?: string[] | string;
  set?: string[] | string;
  transform?: string[] | string;
  "text-transform"?: string[] | string;
  test?: string[] | string;
  debug?: boolean;
}

class ResolvedDirective {
  constructor(directive: Directive);
  from: string[];
  where: string[];
  reason?: string[];
  suppress: string[];
  transform: string[];
  test: string[];
  debug: boolean;
  get name(): string;
}

Directive Processing

Utilities

Utility functions for configuration processing including array handling, log level determination, and configuration merging.

function arrayOf<T>(value: T | T[] | undefined): T[];
function mergeConfigurations<T>(configs: Array<T>, options?: MergeOptions): T;
function getLogLevel(config: LogOptions): LogLevel;
function isValidLogLevel(level: string): level is LogLevel;
function isIterable(target: any): target is Iterable<any>;

Utilities