Plugin Configuration Structure Overview

The plugin configuration is defined by several TypeScript interfaces that structure the entire configuration system. Below is an overview of each type and its purpose:

ArchitectureConfigJson

The root object for the architectural configuration.

  • version: Configuration version.

  • components: Dictionary of component configurations, keyed by component type.

ConfigJsonAddons

Additional settings for configuration, typically used for template generation or metadata.

  • meta: Metadata associated with the component.

ComponentConfigJson

Root configuration for a specific component type within the architecture.

  • root: Root directory for this type of component.

  • type: General type categorization.

  • name_pattern: Naming pattern for the component.

  • path_pattern: File path pattern.

  • element_type: The kind of element (e.g., class, interface).

  • defaults: Default configurations for different scenarios.

ParamJson

Defines parameters for methods and constructors.

  • name: Name of the parameter.

  • type: Data type of the parameter.

  • access: Access level (e.g., public, private).

  • is_optional: Specifies if the parameter is optional.

  • is_readonly: Marks the parameter as read-only.

  • value: Default value of the parameter.

MethodJson

Describes methods within classes or interfaces.

  • access: Access level of the method.

  • name: Name of the method.

  • return_type: Return type of the method.

  • is_async: Specifies if the method is asynchronous.

  • is_static: Defines whether the method is static.

  • params: List of parameters (can be a mix of ParamJson and string).

  • body: The body code of the method.

  • supr: A super method (used for overriding).

  • generics: Generic types used by the method.

  • prompt: A prompt or description of the method.

ImportJson

Outlines the import requirements for a file.

  • dflt: Default import name.

  • path: Path to the module or file.

  • list: List of named imports.

  • alias: Alias for the imported module.

  • ref_path: Reference path for the import (optional).

PropJson

Details properties within a class or interface.

  • name: Name of the property.

  • type: Data type of the property.

  • access: Access level of the property.

  • is_optional: Indicates if the property is optional.

  • is_readonly: Marks the property as read-only.

  • is_static: Defines whether the property is static.

  • value: Default value of the property.

GenericJson

Defines a generic type and its constraints.

  • name: Name of the generic type.

  • inheritance: Constraints (e.g., extends).

  • dflt: Default type if none is provided.

InheritanceJson

Describes inheritance for classes and interfaces.

  • generics: List of generic types.

  • name: Name of the base class or interface.

ExportJson

Controls export settings of components.

  • is_default: Marks the export as default.

  • use_wildcard: Allows for wildcard exporting.

  • path: Path to the module or file being exported.

  • list: List of named exports.

  • alias: Alias for the export.

FunctionJson

Represents a standalone function.

  • exp: Export information.

  • name: Function name.

  • return_type: Return type of the function.

  • is_async: Indicates if the function is asynchronous.

  • params: Function parameters.

  • body: Body of the function.

  • generics: Generic types used by the function.

InterfaceJson

Describes an interface.

  • exp: Export information.

  • inheritance: Inheritance information.

  • props: Properties of the interface.

  • methods: Methods within the interface.

  • generics: Generic types.

  • imports: Required imports.

  • name: Name of the interface.

  • id: Unique identifier (optional).

ConstructorJson

Defines a constructor for a class.

  • access: Access level.

  • params: List of parameters.

  • body: Constructor body.

  • supr: Super constructor (if extending a class).

This structure provides a comprehensive system for configuring the generation and structure of code within a SoapJS project, aligning with the principles of Clean Architecture.

Last updated