···11+---
22+"@hey-api/openapi-ts": minor
33+"openapi-ts-docs": minor
44+---
55+66+feat: rename generated files
+44-13
docs/openapi-ts/migrating.md
···13131414### Deprecated exports from `index.ts`
15151616-Currently, `index.ts` file exports all generated artifacts.
1616+Currently, `index.ts` file exports all generated artifacts. We will be slowly moving away from this practice.
17171818-```ts
1818+```js
1919export { ApiError } from './core/ApiError';
2020export { CancelablePromise, CancelError } from './core/CancelablePromise';
2121export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
2222-export * from './models';
2323-export * from './schemas';
2424-export * from './services';
2222+export * from './models'; // [!code --]
2323+export * from './schemas'; // [!code --]
2424+export * from './services'; // [!code --]
2525```
26262727-We will be slowly moving away from this practice. Any non-core related imports should be imported as
2727+Any non-core related imports should be imported as
28282929-```ts
2929+```js
3030import type { Model } from 'client/models';
3131import { $Schema } from 'client/schemas';
3232import { DefaultService } from 'client/services';
···54545555### Single `enums.gen.ts` file
56565757-Enums are now exported from a single file. If you used imports from `model.ts`, you can change it to `enums.gen.ts`.
5757+Enums are now exported from a separate file. If you use imports from `models.ts`, you can change them to `enums.gen.ts`.
58585959```js
6060import { Enum } from 'client/models' // [!code --]
6161-import { Enum } from 'client/enums.gen.ts' // [!code ++]
6161+import { Enum } from 'client/enums.gen' // [!code ++]
6262+```
6363+6464+### Renamed `models.ts` file
6565+6666+`models.ts` is now called `models.gen.ts`. If you use imports from `models.ts`, you should be able to easily find and replace all instances.
6767+6868+```js
6969+import type { Model } from 'client/models' // [!code --]
7070+import type { Model } from 'client/models.gen' // [!code ++]
7171+```
7272+7373+### Renamed `schemas.ts` file
7474+7575+`schemas.ts` is now called `schemas.gen.ts`. If you use imports from `schemas.ts`, you should be able to easily find and replace all instances.
7676+7777+```js
7878+import { $Schema } from 'client/schemas' // [!code --]
7979+import { $Schema } from 'client/schemas.gen' // [!code ++]
6280```
63816464-Enums are no longer exported from `index.ts`. If you used imports from index file, you will need to move enums into their own import statement.
8282+### Renamed `services.ts` file
8383+8484+`services.ts` is now called `services.gen.ts`. If you use imports from `services.ts`, you should be able to easily find and replace all instances.
65856686```js
6767-import { Enum, DefaultService } from 'client' // [!code --]
6868-import { Enum } from 'client/enums.gen.ts' // [!code ++]
6969-import { DefaultService } from 'client/services' // [!code ++]
8787+import { DefaultService } from 'client/services' // [!code --]
8888+import { DefaultService } from 'client/services.gen' // [!code ++]
8989+```
9090+9191+### Deprecated exports from `index.ts`
9292+9393+Until this release, `index.ts` file exported all generated artifacts. Starting from this release, enums are no longer exported from `index.ts`. Models, schemas, and services will continue to be exported from `index.ts` to avoid a huge migration lift, but we recommend migrating to import groups per artifact type.
9494+9595+```js
9696+import { Enum, type Model, $Schema, DefaultService } from 'client' // [!code --]
9797+import { Enum } from 'client/enums.gen' // [!code ++]
9898+import type { Model } from 'client/models.gen' // [!code ++]
9999+import { $Schema } from 'client/schemas.gen' // [!code ++]
100100+import { DefaultService } from 'client/services.gen' // [!code ++]
70101```
7110272103## v0.38.0
+14
packages/openapi-ts/src/compiler/index.ts
···11import { PathLike, rmSync, writeFileSync } from 'node:fs';
22+import path from 'node:path';
2334import ts from 'typescript';
45···1011export type { Property } from './typedef';
1112export type { Comments } from './utils';
1213export type { Node, TypeNode } from 'typescript';
1414+1515+// eslint-disable-next-line @typescript-eslint/no-unused-vars
1616+export const generatedFileName = (fileName: string, insertGen = true) => {
1717+ const match = fileName.match(/\.[0-9a-z]+$/i);
1818+ const extension = match ? match[0].slice(1) : '';
1919+ const filePath = fileName.slice(0, fileName.length - (extension ? extension.length + 1 : 0));
2020+ return [filePath, insertGen && 'gen', extension].filter(Boolean).join('.');
2121+};
2222+2323+export const filePath = (folderPath: string, fileName: string, insertGen = true) => {
2424+ const name = generatedFileName(fileName, insertGen);
2525+ return path.resolve(folderPath, name);
2626+};
13271428export class TypeScriptFile {
1529 private _headers: Array<string> = [];
+1-1
packages/openapi-ts/src/templates/client.hbs
···16161717{{#if services}}
1818{{#each services}}
1919-import { {{{name}}}{{{@root.$config.postfixServices}}} } from './services';
1919+import { {{{name}}}{{{@root.$config.postfixServices}}} } from './services.gen';
2020{{/each}}
2121{{/if}}
2222
···33export { ApiError } from './core/ApiError';
44export { CancelablePromise, CancelError } from './core/CancelablePromise';
55export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
66-export * from './models';
77-export * from './schemas';
88-export * from './services';
66+export * from './models.gen';
77+export * from './schemas.gen';
88+export * from './services.gen';
···33import type { CancelablePromise } from './core/CancelablePromise';
44import { OpenAPI } from './core/OpenAPI';
55import { request as __request } from './core/request';
66-import type { $OpenApiTs } from './models';
66+import type { $OpenApiTs } from './models.gen';
7788export class DefaultService {
99 /**
···33export { ApiError } from './core/ApiError';
44export { CancelablePromise, CancelError } from './core/CancelablePromise';
55export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
66-export * from './models';
77-export * from './schemas';
88-export * from './services';
66+export * from './models.gen';
77+export * from './schemas.gen';
88+export * from './services.gen';
···33import type { CancelablePromise } from './core/CancelablePromise';
44import { OpenAPI } from './core/OpenAPI';
55import { request as __request } from './core/request';
66-import type { $OpenApiTs } from './models';
66+import type { $OpenApiTs } from './models.gen';
7788export class DefaultService {
99 /**
···2233export { ApiError } from './core/ApiError';
44export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
55-export * from './models';
66-export * from './schemas';
77-export * from './services';
55+export * from './models.gen';
66+export * from './schemas.gen';
77+export * from './services.gen';
···55import type { Observable } from 'rxjs';
66import { OpenAPI } from './core/OpenAPI';
77import { request as __request } from './core/request';
88-import type { $OpenApiTs } from './models';
88+import type { $OpenApiTs } from './models.gen';
991010@Injectable({
1111 providedIn: 'root',
···55export { BaseHttpRequest } from './core/BaseHttpRequest';
66export { CancelablePromise, CancelError } from './core/CancelablePromise';
77export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
88-export * from './models';
99-export * from './services';
88+export * from './models.gen';
99+export * from './services.gen';
···2233import type { CancelablePromise } from './core/CancelablePromise';
44import type { BaseHttpRequest } from './core/BaseHttpRequest';
55-import type { $OpenApiTs } from './models';
55+import type { $OpenApiTs } from './models.gen';
6677export class DefaultService {
88 constructor(public readonly httpRequest: BaseHttpRequest) {}
···11// This file is auto-generated by @hey-api/openapi-ts
2233-export * from './models';
44-export * from './schemas';
33+export * from './models.gen';
44+export * from './schemas.gen';
···33export { ApiError } from './core/ApiError';
44export { CancelablePromise, CancelError } from './core/CancelablePromise';
55export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
66-export * from './models';
77-export * from './schemas';
88-export * from './services';
66+export * from './models.gen';
77+export * from './schemas.gen';
88+export * from './services.gen';
···33import type { CancelablePromise } from './core/CancelablePromise';
44import { OpenAPI } from './core/OpenAPI';
55import { request as __request } from './core/request';
66-import type { $OpenApiTs } from './models';
66+import type { $OpenApiTs } from './models.gen';
7788export class DefaultService {
99 /**
···33export { ApiError } from './core/ApiError';
44export { CancelablePromise, CancelError } from './core/CancelablePromise';
55export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
66-export * from './models';
77-export * from './services';
66+export * from './models.gen';
77+export * from './services.gen';
···33import type { CancelablePromise } from './core/CancelablePromise';
44import { OpenAPI } from './core/OpenAPI';
55import { request as __request } from './core/request';
66-import type { $OpenApiTs } from './models';
66+import type { $OpenApiTs } from './models.gen';
7788export class DefaultsService {
99 /**
···33export { ApiError } from './core/ApiError';
44export { CancelablePromise, CancelError } from './core/CancelablePromise';
55export { OpenAPI, type OpenAPIConfig } from './core/OpenAPI';
66-export * from './models';
77-export * from './services';
66+export * from './models.gen';
77+export * from './services.gen';
···33import type { CancelablePromise } from './core/CancelablePromise';
44import { OpenAPI } from './core/OpenAPI';
55import { request as __request } from './core/request';
66-import type { $OpenApiTs } from './models';
66+import type { $OpenApiTs } from './models.gen';
7788export class DefaultsService {
99 /**