University of Peradeniya crestSCS Documentation
University of Peradeniya crestSCS Documentation
Department website

Start here

Repository handbookRepository overviewDevelopment

System design

ArchitectureAuthentication and authorizationPublic dataAPI contractsSchemas
UI system

Applications

Department Web applicationPeople applicationProjects applicationPortal application

Services

API serviceGitHub App serviceMailer service

Shared packages

Schemas packageUI packageTypeScript configuration packageESLint configuration package
Shared package internals
Tooling package internalsTypeScript presetsESLint presets

Development workflow

Testing and verificationDependency managementDocumentation authoringUI quality assurance

Operations

Continuous integrationEnvironment variablesOperationsSecurityTroubleshooting

Reference

Route referenceGlossary
Shared package internalsTooling package internals

The shared compiler preset hierarchy, intended consumers, local configuration responsibilities, and verification impact.

TypeScript presets

Every preset extends base.json, which owns strict mode, library-check policy, and consistent file-name casing. Workspaces select the closest runtime preset and add only local paths, files, generated types, output directories, or test runner types.

PresetIntended environment and important choices
libraryES2020 library output with bundler resolution and JSON modules
nextjsDOM, React JSX, Next plugin, Bun types, no emit, incremental
react-libraryNext-compatible JSX without JavaScript or Next plugin state
toolingno-emit ESNext scripts and configuration executed by Bun
workerESNext modules, isolated bundler compilation, Cloudflare types
bunpreserved modules, ESNext library, forced module detection, Bun types

Production configurations exclude test-only source where a workspace has a separate tsconfig.test.json. That test configuration adds runner globals, fixtures, or aliases without leaking them into production compilation.

Do not add Node, DOM, Bun, or Cloudflare globals to base; choose the owning runtime preset or a local override. Before changing a preset, search every extends consumer and run both production and test typechecks where declared. A configuration package with no local test command is not verified merely by parsing its JSON—the consumer matrix is its effective test surface.

Tooling package internals

How the shared TypeScript and ESLint packages distribute repository policy without copying configuration into workspaces.

ESLint presets

Base, Next.js, Worker, TypeScript resolver, and Tailwind settings plus the rules for local overrides and verification.

On this page

TypeScript presets