Skip to content

release: v2.0.0#145

Merged
Himenon merged 1 commit intomainfrom
release/v2.0.0
May 6, 2026
Merged

release: v2.0.0#145
Himenon merged 1 commit intomainfrom
release/v2.0.0

Conversation

@Himenon
Copy link
Copy Markdown
Owner

@Himenon Himenon commented May 6, 2026

Summary

This PR consolidates major architectural updates and improvements previously discussed and implemented in #141 and #144. It aims to achieve zero runtime dependencies and provide a modern development experience with subpath exports.

From #141: Complete Removal of TypeScript AST Dependency

  • Replaced the TypeScript Compiler API (AST) with a string template-based approach for code generation.
  • Achieved zero runtime dependencies by removing the typescript package from src/.
  • Simplified internal logic and improved portability of the generated code.

From #144: Support for Subpath Exports

  • Implemented Node.js Subpath Exports in package.json to allow cleaner import paths.
  • Updated all internal references, READMEs, and examples to use the new paths (removing the /dist/ prefix).
  • Improved type resolution support in modern TypeScript environments.

Breaking Changes & Migration Guide

1. Import Path Changes

Subpath exports are now supported. You should remove the /dist/ prefix from your import paths.

- import * as Templates from "@himenon/openapi-typescript-code-generator/dist/templates";
- import type * as Types from "@himenon/openapi-typescript-code-generator/dist/types";
- import { TsGenerator } from "@himenon/openapi-typescript-code-generator/dist/api";
+ import * as Templates from "@himenon/openapi-typescript-code-generator/templates";
+ import type * as Types from "@himenon/openapi-typescript-code-generator/types";
+ import { TsGenerator } from "@himenon/openapi-typescript-code-generator/api";

2. Type Definition Changes

The IntermediateCode type has been simplified from a union type to a strict string.

- // Old: string | ts.Statement
- const code: Types.CodeGenerator.IntermediateCode = ts.factory.createIdentifier("...");
+ // New: string
+ const code: Types.CodeGenerator.IntermediateCode = "const x = 1;";

3. Internal Factory API Overhaul

The internal TypeScript AST factory wrapper (TsGenerator.Factory) has been replaced with a string-based factory.

const factory = TsGenerator.Factory.create();

- // Old: returns ts.InterfaceDeclaration
- const node = factory.InterfaceDeclaration.create({ ... });
+ // New: returns string
+ const node = factory.InterfaceDeclaration.create({ ... });

Changes Summary

  • Refactoring: Consolidated 44 individual factory files into a single optimized entry point.
  • Documentation: Updated README.md and docs/ja/README-ja.md to reflect the new API and import paths.

Test Plan

# Verify no typescript dependency in src/
grep -r "from \"typescript\"" src/

# Run all tests (including new snapshots and functional tests)
pnpm test

# Verify code generation with examples
pnpm test:code:gen:class
pnpm test:code:gen:function
pnpm test:code:gen:currying-function

All tests have been verified to pass successfully in the local environment.

@Himenon Himenon merged commit 2886deb into main May 6, 2026
2 checks passed
@Himenon Himenon deleted the release/v2.0.0 branch May 6, 2026 03:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant