acacode / acacode/swagger-typescript-api

Add options for import file extensions (.js/.ts) and type-only imports

Đang mở
#1,829 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
4.1k
Fork
436
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## Problem

The generated client uses **extensionless, value-only relative imports**:

```ts
import { ApiResponse, Pet, User } from "./data-contracts";
import { ContentType, HttpClient, RequestParams } from "./http-client";
```

This form does not work in two increasingly common TypeScript setups, and there is currently no built-in option to change it.

### 1. Missing file extensions on relative imports

With `moduleResolution: "node16" | "nodenext"`, TypeScript/Node require explicit extensions on relative imports. The generated `./data-contracts` / `./http-client` specifiers fail to resolve at runtime (ESM) and are flagged by the compiler. Projects using `allowImportingTsExtensions` have the same need, but with `.ts` instead of `.js`.

There is no way to tell the generator to emit `./data-contracts.js` (or `.ts`).

### 2. Value imports break `verbatimModuleSyntax` / `isolatedModules`

Type-only names (data contracts, `RequestParams`, `HttpResponse`, and `ContentType` in `enumStyle: "union"`) are imported as **values**. Under `verbatimModuleSyntax` (and `isolatedModules` with certain bundlers) this is an error — those imports must be `import type` (or carry an inline `type` modifier).

Note the http-client import is **mixed**: `HttpClient` is a runtime class (extended/instantiated) and must stay a value import, while `RequestParams`/`HttpResponse` are type-only. So a whole-block `import type` is wrong there — it needs per-specifier inline `type`:

```ts
import { HttpClient, type RequestParams, type HttpResponse } from "./http-client";
```

The data-contracts import, by contrast, is entirely type-only and can use a whole-block `import type`.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.