or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

bundle-management.mdcompiler-hosts.mdconfiguration.mdindex.mdmain-compilation.mdmetadata-collection.mdmetadata-schema.md
tile.json

metadata-schema.mddocs/

Metadata Schema

Type definitions, validation, and schema structures for the metadata system used throughout @angular/tsc-wrapped for preserving decorator information and symbolic expressions.

Capabilities

Schema Version

Current version constant for the metadata schema format.

/**
 * Current version of the metadata schema format
 */
const VERSION: number = 3;

Core Metadata Structures

Module Metadata

Root metadata structure for TypeScript modules.

/**
 * Metadata structure for a complete TypeScript module
 */
interface ModuleMetadata {
  /** Symbolic marker indicating this is module metadata */
  __symbolic: 'module';
  
  /** Version of the metadata format */
  version: number;
  
  /** Map of exported symbol names to their metadata */
  metadata: {[name: string]: MetadataEntry};
  
  /** Information about re-exported symbols from other modules */
  exports?: ModuleExportMetadata[];
  
  /** Import alias for this module */
  importAs?: string;
  
  /** Origins information for symbols */
  origins?: {[name: string]: string};
}

Class Metadata

Metadata structure for TypeScript classes, including decorators and members.

/**
 * Metadata for TypeScript classes
 */
interface ClassMetadata {
  /** Symbolic marker indicating this is class metadata */
  __symbolic: 'class';
  
  /** Extended class information */
  extends?: MetadataSymbolicExpression | MetadataError;
  
  /** Number of type parameters */
  arity?: number;
  
  /** Array of decorators applied to the class */
  decorators?: (MetadataSymbolicExpression | MetadataError)[];
  
  /** Metadata for instance members (methods, properties) */
  members?: MetadataMap;
  
  /** Metadata for static members */
  statics?: {[name: string]: MetadataValue | FunctionMetadata};
}

Interface Metadata

Metadata structure for TypeScript interfaces.

/**
 * Metadata for TypeScript interfaces
 */
interface InterfaceMetadata {
  /** Symbolic marker indicating this is interface metadata */
  __symbolic: 'interface';
}

Function Metadata

Metadata structure for TypeScript functions.

/**
 * Metadata for TypeScript functions
 */
interface FunctionMetadata {
  /** Symbolic marker indicating this is function metadata */
  __symbolic: 'function';
  
  /** Function parameter names */
  parameters: string[];
  
  /** Default parameter values */
  defaults?: MetadataValue[];
  
  /** Function body or return type metadata */
  value: MetadataValue;
}

Member Metadata

Metadata structure for class members (methods, properties, constructors).

/**
 * Metadata for class members
 */
interface MemberMetadata {
  /** Symbolic marker indicating this is member metadata */
  __symbolic: 'constructor' | 'method' | 'property';
  
  /** Decorators applied to the member */
  decorators?: (MetadataSymbolicExpression | MetadataError)[];
}

/**
 * Metadata for class methods
 */
interface MethodMetadata extends MemberMetadata {
  __symbolic: 'constructor' | 'method';
  
  /** Method parameter decorators */
  parameterDecorators?: (MetadataSymbolicExpression | MetadataError)[][];
}

/**
 * Metadata for class constructors  
 */
interface ConstructorMetadata extends MethodMetadata {
  __symbolic: 'constructor';
  
  /** Constructor parameter type information */
  parameters?: (MetadataSymbolicExpression | MetadataError | null)[];
}

Symbolic Expressions

Base Symbolic Expression

Base interface for all symbolic expressions in metadata.

/**  
 * Base interface for symbolic expressions
 */
interface MetadataSymbolicExpression {
  /** Symbolic marker indicating the expression type */
  __symbolic: string;
}

Binary Expressions

Metadata for binary operations like addition, comparison, etc.

/**
 * Metadata for binary expressions (a + b, a === b, etc.)
 */
interface MetadataSymbolicBinaryExpression extends MetadataSymbolicExpression {
  __symbolic: 'binary';
  
  /** Binary operator (+, -, *, /, ===, !==, etc.) */
  operator: string;
  
  /** Left operand */
  left: MetadataValue;
  
  /** Right operand */ 
  right: MetadataValue;
}

Call Expressions

Metadata for function and method calls.

/**
 * Metadata for function/method call expressions
 */
interface MetadataSymbolicCallExpression extends MetadataSymbolicExpression {
  __symbolic: 'call';
  
  /** Expression being called */
  expression: MetadataValue;
  
  /** Call arguments */
  arguments?: MetadataValue[];
}

Reference Expressions

Metadata for various types of symbol references.

/**
 * Metadata for references to symbols
 */
interface MetadataSymbolicReferenceExpression extends MetadataSymbolicExpression {
  __symbolic: 'reference';
  
  /** Name of the referenced symbol */
  name: string;
  
  /** Module containing the symbol */
  module?: string;
}

/**
 * Metadata for references to imported symbols
 */
interface MetadataImportedSymbolReferenceExpression extends MetadataSymbolicExpression {
  __symbolic: 'reference';
  
  /** Name of the imported symbol */
  name: string;
  
  /** Module the symbol is imported from */
  module: string;
}

/**
 * Metadata for references to global symbols
 */
interface MetadataGlobalReferenceExpression extends MetadataSymbolicExpression {
  __symbolic: 'reference';
  
  /** Name of the global symbol */
  name: string;
  
  /** Arguments if the global is being called */
  arguments?: MetadataValue[];
}

Other Expression Types

Additional symbolic expression types for complex operations.

/**
 * Metadata for index access expressions (obj[key])
 */
interface MetadataSymbolicIndexExpression extends MetadataSymbolicExpression {
  __symbolic: 'index';
  
  /** Object being indexed */
  expression: MetadataValue;
  
  /** Index value */
  index: MetadataValue;
}

/**
 * Metadata for property access expressions (obj.prop)
 */
interface MetadataSymbolicSelectExpression extends MetadataSymbolicExpression {
  __symbolic: 'select';
  
  /** Object being accessed */
  expression: MetadataValue;
  
  /** Property name */
  member: string;
}

/**
 * Metadata for spread expressions (...array)
 */
interface MetadataSymbolicSpreadExpression extends MetadataSymbolicExpression {
  __symbolic: 'spread';
  
  /** Expression being spread */
  expression: MetadataValue;
}

/**
 * Metadata for prefix expressions (!x, -x, etc.)
 */
interface MetadataSymbolicPrefixExpression extends MetadataSymbolicExpression {
  __symbolic: 'pre';
  
  /** Prefix operator (!, -, +, etc.) */
  operator: string;
  
  /** Operand */
  operand: MetadataValue;
}

/**
 * Metadata for conditional expressions (condition ? true : false)
 */
interface MetadataSymbolicIfExpression extends MetadataSymbolicExpression {
  __symbolic: 'if';
  
  /** Condition expression */
  condition: MetadataValue;
  
  /** Value if condition is true */
  thenExpression: MetadataValue;
  
  /** Value if condition is false */
  elseExpression: MetadataValue;
}

Data Structure Types

Metadata Collections

Types for organizing metadata values.

/**
 * Map of metadata values
 */
interface MetadataMap {
  [name: string]: MemberMetadata[];
}

/**
 * Object containing metadata values
 */
interface MetadataObject {
  /** Symbolic marker indicating this is an object */
  __symbolic: 'object';
  
  /** Object properties */
  [name: string]: MetadataValue;
}

/**
 * Array containing metadata values
 */
interface MetadataArray {
  /** Symbolic marker indicating this is an array */
  __symbolic: 'array';
  
  /** Array elements */
  [index: number]: MetadataValue;
}

Union Types

Union types combining different metadata categories.

/**
 * Union of all possible metadata entry types
 */
type MetadataEntry = 
  | ClassMetadata 
  | InterfaceMetadata 
  | FunctionMetadata 
  | MetadataValue;

/**
 * Union of all possible metadata values
 */
type MetadataValue = 
  | string 
  | number 
  | boolean 
  | undefined 
  | null 
  | MetadataObject 
  | MetadataArray
  | MetadataSymbolicExpression;

Type Guards

Type guard functions for runtime type checking of metadata structures.

/**
 * Type guard functions for metadata validation
 */
function isModuleMetadata(value: any): value is ModuleMetadata;
function isClassMetadata(value: any): value is ClassMetadata;
function isInterfaceMetadata(value: any): value is InterfaceMetadata;
function isFunctionMetadata(value: any): value is FunctionMetadata;
function isMemberMetadata(value: any): value is MemberMetadata;
function isMethodMetadata(value: any): value is MethodMetadata;
function isConstructorMetadata(value: any): value is ConstructorMetadata;

function isMetadataSymbolicExpression(value: any): value is MetadataSymbolicExpression;
function isMetadataSymbolicBinaryExpression(value: any): value is MetadataSymbolicBinaryExpression;
function isMetadataSymbolicCallExpression(value: any): value is MetadataSymbolicCallExpression;
function isMetadataSymbolicReferenceExpression(value: any): value is MetadataSymbolicReferenceExpression;
function isMetadataSymbolicIndexExpression(value: any): value is MetadataSymbolicIndexExpression;
function isMetadataSymbolicSelectExpression(value: any): value is MetadataSymbolicSelectExpression;
function isMetadataSymbolicSpreadExpression(value: any): value is MetadataSymbolicSpreadExpression;
function isMetadataSymbolicPrefixExpression(value: any): value is MetadataSymbolicPrefixExpression;
function isMetadataSymbolicIfExpression(value: any): value is MetadataSymbolicIfExpression;

function isMetadataGlobalReferenceExpression(value: any): value is MetadataGlobalReferenceExpression;
function isMetadataModuleReferenceExpression(value: any): value is MetadataModuleReferenceExpression;
function isMetadataImportedSymbolReferenceExpression(value: any): value is MetadataImportedSymbolReferenceExpression;

function isMetadataError(value: any): value is MetadataError;

Usage Example:

import { isClassMetadata, isMethodMetadata } from "@angular/tsc-wrapped";

function processMetadata(metadata: any) {
  if (isClassMetadata(metadata)) {
    console.log("Processing class metadata");
    if (metadata.members) {
      for (const [memberName, memberMetadata] of Object.entries(metadata.members)) {
        if (memberMetadata.some(isMethodMetadata)) {
          console.log(`Found method: ${memberName}`);
        }
      }
    }
  }
}