Configuration management system for AutoRest's REST API client library generator
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Schema validation system providing predefined schemas for AutoRest configuration and extensible validation rules.
const autorestConfigurationProcessor: ConfigurationSchemaProcessor;
interface ConfigurationSchemaProcessor {
processConfiguration(config: any, options: any): ProcessingResult;
}
interface ProcessingResult {
value?: AutorestNormalizedConfiguration;
errors?: ValidationError[];
}Main configuration processor that validates configuration objects against the AutoRest schema.
Usage:
import { autorestConfigurationProcessor } from "@autorest/configuration";
const result = autorestConfigurationProcessor.processConfiguration(rawConfig, {
logger: logger
});
if ("errors" in result) {
// Handle validation errors
for (const error of result.errors) {
console.error(`${error.path.join(".")}: ${error.message}`);
}
} else {
// Use validated configuration
const validConfig = result.value;
}const AUTOREST_INITIAL_CONFIG: AutorestNormalizedConfiguration;Initial default configuration values used as the base for all configurations.
Default Values:
const AUTOREST_CONFIGURATION_CATEGORIES: {
readonly logging: CategoryDefinition;
readonly installation: CategoryDefinition;
readonly core: CategoryDefinition;
readonly feature: CategoryDefinition;
readonly extensions: CategoryDefinition;
};
interface CategoryDefinition {
name: string;
description?: string;
}Configuration categories for organizing and documenting configuration options.
Categories:
logging - Logging configuration optionsinstallation - Installation and package managementcore - Core AutoRest settingsfeature - Feature flags and experimental optionsextensions - Generator and extension configurationsconst SUPPORTED_EXTENSIONS_SCHEMA: {
readonly csharp: ExtensionSchemaDefinition;
readonly go: ExtensionSchemaDefinition;
readonly java: ExtensionSchemaDefinition;
readonly python: ExtensionSchemaDefinition;
readonly az: ExtensionSchemaDefinition;
readonly typescript: ExtensionSchemaDefinition;
readonly powershell: ExtensionSchemaDefinition;
// ... more extensions
};
interface ExtensionSchemaDefinition {
type: "boolean";
category: "extensions";
description: string;
}Schema definitions for officially supported AutoRest extensions.
Supported Extensions:
csharp - Generate C# client codego - Generate Go client codejava - Generate Java client codepython - Generate Python client codeaz - Generate Azure CLI codetypescript - Generate TypeScript client codepowershell - Generate PowerShell cmdletstype ConfigurationPropertyType =
| "string"
| "number"
| "boolean"
| "array"
| "dictionary"
| "object";
interface ConfigurationPropertyBase {
readonly type: ConfigurationPropertyType;
readonly description?: string;
readonly deprecated?: boolean;
}
interface StringConfigurationProperty extends ConfigurationPropertyBase {
type: "string";
readonly enum?: readonly string[];
}
interface NumberConfigurationProperty extends ConfigurationPropertyBase {
type: "number";
readonly minimum?: number;
readonly maximum?: number;
}
interface BooleanConfigurationProperty extends ConfigurationPropertyBase {
type: "boolean";
}
interface ArrayConfigurationProperty extends ConfigurationPropertyBase {
type: "array";
readonly items: ConfigurationProperty;
}
interface DictionaryConfigurationProperty extends ConfigurationPropertyBase {
type: "dictionary";
readonly additionalProperties: ConfigurationProperty;
}
interface ObjectConfigurationProperty extends ConfigurationPropertyBase {
type: "object";
readonly properties: ConfigurationSchema;
}
type ConfigurationProperty =
| StringConfigurationProperty
| NumberConfigurationProperty
| BooleanConfigurationProperty
| ArrayConfigurationProperty
| DictionaryConfigurationProperty
| ObjectConfigurationProperty;Complete type system for defining configuration property schemas with validation rules.
type ConfigurationSchemaDefinition<C extends string, S extends RootConfigurationSchema<C>> = {
readonly categories: {
[key in C]: CategoryDefinition;
};
readonly schema: S;
};
type RootConfigurationSchema<C extends string> = {
readonly [key: string]: RootConfigurationProperty<C>;
};
type ConfigurationSchema = {
readonly [key: string]: ConfigurationProperty;
};
type RootConfigurationProperty<C extends string> = ConfigurationProperty & {
readonly category?: C;
};Schema definition types for creating comprehensive configuration schemas with categorization.
class ConfigurationSchemaProcessor {
processConfiguration(
config: any,
options: ProcessingOptions
): ProcessingResult;
}
interface ProcessingOptions {
logger?: AutorestLogger;
// Additional processing options
}
interface ProcessingResult {
value?: AutorestNormalizedConfiguration;
errors?: ValidationError[];
}
interface ValidationError {
code: string;
message: string;
path: string[];
}Processes and validates configuration objects against defined schemas with detailed error reporting.
import {
autorestConfigurationProcessor,
AUTOREST_INITIAL_CONFIG
} from "@autorest/configuration";
// Validate configuration
const config = {
"input-file": ["swagger.json"],
"output-folder": "./generated",
csharp: true,
"invalid-option": "value" // This will cause validation error
};
const result = autorestConfigurationProcessor.processConfiguration(config, {
logger: logger
});
if ("errors" in result) {
result.errors.forEach(error => {
console.error(`Validation error at ${error.path.join(".")}: ${error.message}`);
});
}import { SUPPORTED_EXTENSIONS_SCHEMA } from "@autorest/configuration";
// Check if extension is supported
const isCSharpSupported = "csharp" in SUPPORTED_EXTENSIONS_SCHEMA;
const extensionInfo = SUPPORTED_EXTENSIONS_SCHEMA.csharp;
console.log(extensionInfo.description); // "Generate C# client code"The schema system is designed to be extensible for custom AutoRest extensions and configurations while maintaining backward compatibility with existing configurations.