Conversation
BREAKING CHANGE: Import paths for templates, types, api, and meta have been changed to remove the 'dist/' prefix. - Old: @himenon/openapi-typescript-code-generator/dist/templates - New: @himenon/openapi-typescript-code-generator/templates
Merged
Himenon
added a commit
that referenced
this pull request
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. ```diff - 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`. ```diff - // 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. ```diff 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 ```bash # 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implemented subpath exports to allow cleaner import paths without the
dist/prefix.Changes:
package.jsonwithexportsfield for./api,./templates,./types, and./meta.typesfield to each export for better type resolution.README.md,docs/ja/README-ja.md, and all files inexamples/to use the new import paths.BREAKING CHANGE
Import paths for sub-modules have been updated. Custom templates or scripts using the old paths will need to be updated.
@himenon/openapi-typescript-code-generator/dist/templates->@himenon/openapi-typescript-code-generator/templates@himenon/openapi-typescript-code-generator/dist/types->@himenon/openapi-typescript-code-generator/types@himenon/openapi-typescript-code-generator/dist/api->@himenon/openapi-typescript-code-generator/api@himenon/openapi-typescript-code-generator/dist/meta->@himenon/openapi-typescript-code-generator/meta