CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-ts-json-schema-generator

Generate JSON schema from your TypeScript sources with extensive customization options

Pending
Overview
Eval results
Files

program-management.mddocs/

Program Management

Create and manage TypeScript programs with custom compiler options, file resolution, and configuration loading for schema generation.

Capabilities

Program Factory Function

Creates TypeScript program instances with proper configuration for schema generation.

/**
 * Create a TypeScript program from configuration
 * @param config - Configuration object with path and tsconfig options
 * @returns Configured TypeScript Program instance
 */
function createProgram(config: CompletedConfig): ts.Program;

Usage Examples:

import { createProgram } from "ts-json-schema-generator";

// Basic program creation
const config = {
  path: "src/**/*.ts",
  tsconfig: "./tsconfig.json"
};
const program = createProgram(config);

// Program with custom options
const customConfig = {
  path: "src/api.ts",
  skipTypeCheck: true
};
const fastProgram = createProgram(customConfig);

TSConfig File Loading

Internal utilities for loading and parsing TypeScript configuration files (not exposed in public API).

Default Compiler Options:

When no tsconfig is specified, the following default options are used:

const defaultOptions: ts.CompilerOptions = {
  noEmit: true,
  emitDecoratorMetadata: true,
  experimentalDecorators: true,
  target: ts.ScriptTarget.ES5,
  module: ts.ModuleKind.CommonJS,
  strictNullChecks: false
};

File Resolution

Handles glob patterns and file discovery for TypeScript source files.

Glob Pattern Support:

// Single file
const singleFileConfig = { path: "src/types.ts" };

// Multiple files with glob
const globConfig = { path: "src/**/*.ts" };

// Exclude patterns (use standard glob syntax)
const excludeConfig = { path: "src/**/*.ts" };
// Note: Exclusions handled by glob library, not by this package

Type Checking Control

Control TypeScript type checking during program creation for performance optimization.

interface Config {
  /** Skip type checks to improve performance */
  skipTypeCheck?: boolean;
}

Type Checking Behavior:

// Default behavior - includes type checking
const config = { 
  path: "src/api.ts",
  skipTypeCheck: false  // This is the default
};

// Skip type checking for faster generation
const fastConfig = {
  path: "src/api.ts", 
  skipTypeCheck: true
};

When skipTypeCheck is false (default), the program will:

  1. Run full TypeScript diagnostics
  2. Throw BuildError if type errors are found
  3. Ensure type safety during schema generation

When skipTypeCheck is true:

  1. Skip pre-emit diagnostics
  2. Generate schemas even with type errors
  3. Significantly faster for large codebases

Error Handling

Program creation can throw errors for various configuration issues. The BuildError class is available from the main export.

Common Error Scenarios:

import { createProgram, BuildError } from "ts-json-schema-generator";

try {
  const program = createProgram({
    path: "nonexistent.ts",
    tsconfig: "./tsconfig.json"
  });
} catch (error) {
  if (error instanceof BuildError) {
    console.error("Build failed:", error.format());
    // Handle TypeScript compilation errors
  }
}

Error Types:

  • Cannot read config file: Invalid or missing tsconfig.json
  • Invalid parsed config file: Malformed tsconfig.json content
  • No input files: No files found matching the path pattern
  • Type check error: TypeScript compilation errors (when skipTypeCheck is false)

Configuration Integration

Program creation integrates with the main configuration system.

interface Config {
  /** Source file path or glob pattern */
  path?: string;
  /** Custom tsconfig.json path */
  tsconfig?: string;
  /** Skip type checks to improve performance */
  skipTypeCheck?: boolean;
}

Path Resolution Priority:

  1. Files matching config.path glob pattern (if provided)
  2. Files from tsconfig.json fileNames (if no path provided)
  3. Error if no files found from either source

TSConfig Resolution:

  1. Use config.tsconfig path if provided
  2. Search for tsconfig.json in current and parent directories
  3. Use default compiler options if no tsconfig found

Install with Tessl CLI

npx tessl i tessl/npm-ts-json-schema-generator

docs

ast-parsing.md

cli-usage.md

custom-extensions.md

index.md

program-management.md

schema-generation.md

type-formatting.md

tile.json