Skip to content

Architecture

Three decorator mechanisms

MechanismExamplesWhen it runs
Runtime@Singleton, @Prototype, @Memoize, @NonNullAt class/method decoration time; no generate step required
Codegen@Data, @Builder, @ToStringlombok-ts generate writes companions; you call applyAllGenerated at startup
Hybrid@FactoryRuntime registry + optional generated types

Codegen pipeline

  1. You decorate classes in src/**/*.ts.

  2. lombok-ts generate scans configured globs (see Configuration).

  3. For each file with decorated classes, emit:

    • .lombok/.../file.lombok.ts — builder classes, getter/setter functions, apply*Generated mixins
    • .lombok/.../file.lombok.d.tsdeclare module augmentation for IDE types
  4. Include generated files in tsconfig.json:

jsonc
{
  "include": ["src/**/*.ts", ".lombok/**/*.ts", ".lombok/**/*.d.ts"],
}
  1. After imports resolve, call apply helpers once (e.g. in main.ts):
ts
import { User } from './user.js';
import { applyAllGenerated } from '../.lombok/src/user.lombok.js';

applyAllGenerated({ User });

NodeNext imports

Companion files import your sources with .js extensions and paths relative to .lombok/, matching moduleResolution: NodeNext.

Package layout

ExportRole
lombok-typescript/legacyLegacy decorator factories
lombok-typescript/stage3Stage 3 decorator factories
lombok-typescript/codegenGenerator types (advanced)
lombok-typescriptdefineConfig, shared entry

NestJS

Entry pointRole
lombok-typescript/nestjsLombokModule, @LogNest, scope helpers (optional @nestjs peers)

Built into the core package — no separate install. See NestJS integration.

v0.1 limitations

  • @Data does not replace your class constructor; generated getters/setters are mixed onto the prototype via apply*Generated.
  • @Builder builds instances by assigning fields after new Class() — your class needs assignable properties.
  • lombok-ts watch regenerates companions on file changes (Phase 2+).
  • NestJS: import from lombok-typescript/nestjs for LombokModule and @LogNest (see NestJS integration).

See Examples for end-to-end projects.

Released under the MIT License.