Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions packages/openapi-ts-tests/main/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
"@hey-api/custom-client": "workspace:*",
"@hey-api/openapi-ts": "workspace:*",
"@pinia/colada": "0.17.2",
"@nestjs/common": "11.1.6",
"@nestjs/core": "11.1.6",
"@tanstack/angular-query-experimental": "5.73.3",
"@tanstack/react-query": "5.73.3",
"@tanstack/solid-query": "5.73.3",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// This file is auto-generated by @hey-api/openapi-ts

import type { ClientOptions } from './types.gen';
import type { Config, ClientOptions as DefaultClientOptions } from './client';

/**
* The `createClientConfig()` function will be called on client initialization
* and the returned object will become the client's initial configuration.
*
* You may want to initialize your client this way instead of calling
* `setConfig()`. This is useful for example if you're using Next.js
* to ensure your client always has the correct values.
*/
export type CreateClientConfig<T extends DefaultClientOptions = ClientOptions> = (override?: Config<DefaultClientOptions & T>) => Config<Required<DefaultClientOptions> & T>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// This file is auto-generated by @hey-api/openapi-ts

import { Injectable, Inject } from '@nestjs/common';

import axios from 'axios';

import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, RawAxiosRequestHeaders } from 'axios';

import type { ClientModuleConfig, RequestOptions } from './types.gen';

@Injectable()
export class ApiClient {
private axiosInstance: AxiosInstance;
constructor(
@Inject('API_CLIENT_CONFIG')
private readonly config: ClientModuleConfig) {
const axiosConfig = {
baseURL: config.baseUrl,
headers: config.headers,
timeout: 5000,
...config.axiosConfig
};
this.axiosInstance = axios.create(axiosConfig);
}
public request<T = true>(options: RequestOptions): Promise<AxiosResponse<T>> {
const config: AxiosRequestConfig = {
method: options.method,
url: options.url,
headers: options.headers as RawAxiosRequestHeaders,
params: options.query,
data: options.body,
timeout: options.timeout
};
return this.axiosInstance(config);
}
public get<T = true>(url: string, options: Omit<RequestOptions, 'method' | 'url'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'GET',
url: url,
...options
});
}
public post<T = true>(url: string, data: any, options: Omit<RequestOptions, 'method' | 'url' | 'body'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'POST',
url: url,
body: data,
...options
});
}
public put<T = true>(url: string, data: any, options: Omit<RequestOptions, 'method' | 'url' | 'body'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'PUT',
url: url,
body: data,
...options
});
}
public patch<T = true>(url: string, data: any, options: Omit<RequestOptions, 'method' | 'url' | 'body'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'PATCH',
url: url,
body: data,
...options
});
}
public delete<T = true>(url: string, options: Omit<RequestOptions, 'method' | 'url'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'DELETE',
url: url,
...options
});
}
public head<T = true>(url: string, options: Omit<RequestOptions, 'method' | 'url'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'HEAD',
url: url,
...options
});
}
public options<T = true>(url: string, options: Omit<RequestOptions, 'method' | 'url'>): Promise<AxiosResponse<T>> {
return this.request<T>({
method: 'OPTIONS',
url: url,
...options
});
}
}

export const API_CLIENT_CONFIG = 'API_CLIENT_CONFIG';
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
// This file is auto-generated by @hey-api/openapi-ts

import { Module, DynamicModule } from '@nestjs/common';

import type { ClientModuleConfig, ClientModuleAsyncConfig } from './types.gen';

import { ApiClient } from './api-client.service.gen';

import { ApiDefaultService } from './services/api-default.service.gen';

import { ApiSimpleService } from './services/api-simple.service.gen';

import { ApiParametersService } from './services/api-parameters.service.gen';

import { ApiDescriptionsService } from './services/api-descriptions.service.gen';

import { ApiDeprecatedService } from './services/api-deprecated.service.gen';

import { ApiRequestBodyService } from './services/api-requestbody.service.gen';

import { ApiFormDataService } from './services/api-formdata.service.gen';

import { ApiDefaultsService } from './services/api-defaults.service.gen';

import { ApiDuplicateService } from './services/api-duplicate.service.gen';

import { ApiNoContentService } from './services/api-nocontent.service.gen';

import { ApiResponseService } from './services/api-response.service.gen';

import { ApiNoContentService } from './services/api-nocontent.service.gen';

import { ApiMultipleTags1Service } from './services/api-multipletags1.service.gen';

import { ApiMultipleTags2Service } from './services/api-multipletags2.service.gen';

import { ApiMultipleTags3Service } from './services/api-multipletags3.service.gen';

import { ApiCollectionFormatService } from './services/api-collectionformat.service.gen';

import { ApiTypesService } from './services/api-types.service.gen';

import { ApiUploadService } from './services/api-upload.service.gen';

import { ApiFileResponseService } from './services/api-fileresponse.service.gen';

import { ApiComplexService } from './services/api-complex.service.gen';

import { ApiMultipartService } from './services/api-multipart.service.gen';

import { ApiHeaderService } from './services/api-header.service.gen';

import { ApiErrorService } from './services/api-error.service.gen';

import { ApiNonAsciiÆøåÆøÅöôêÊService } from './services/api-non-ascii-æøåæøåöôêê.service.gen';

@Module({})
export class ApiModule {
public static forRoot(config: ClientModuleConfig): DynamicModule {
return {
module: ApiModule,
providers: [
{
provide: 'API_CLIENT_CONFIG',
useValue: config
},
ApiClient,
ApiDefaultService,
ApiSimpleService,
ApiParametersService,
ApiDescriptionsService,
ApiDeprecatedService,
ApiRequestBodyService,
ApiFormDataService,
ApiDefaultsService,
ApiDuplicateService,
ApiNoContentService,
ApiResponseService,
ApiNoContentService,
ApiMultipleTags1Service,
ApiMultipleTags2Service,
ApiMultipleTags3Service,
ApiCollectionFormatService,
ApiTypesService,
ApiUploadService,
ApiFileResponseService,
ApiComplexService,
ApiMultipartService,
ApiHeaderService,
ApiErrorService,
ApiNonAsciiÆøåÆøÅöôêÊService
],
exports: [
ApiClient,
ApiDefaultService,
ApiSimpleService,
ApiParametersService,
ApiDescriptionsService,
ApiDeprecatedService,
ApiRequestBodyService,
ApiFormDataService,
ApiDefaultsService,
ApiDuplicateService,
ApiNoContentService,
ApiResponseService,
ApiNoContentService,
ApiMultipleTags1Service,
ApiMultipleTags2Service,
ApiMultipleTags3Service,
ApiCollectionFormatService,
ApiTypesService,
ApiUploadService,
ApiFileResponseService,
ApiComplexService,
ApiMultipartService,
ApiHeaderService,
ApiErrorService,
ApiNonAsciiÆøåÆøÅöôêÊService
]
};
}
public static forRootAsync(options: ClientModuleAsyncConfig): DynamicModule {
return {
module: ApiModule,
imports: options.imports ? options.imports : [],
providers: [
{
provide: 'API_CLIENT_CONFIG',
useFactory: options.useFactory ? options.useFactory : (): ClientModuleConfig => {
return {};
},
inject: options.inject ? options.inject : []
},
ApiClient,
ApiDefaultService,
ApiSimpleService,
ApiParametersService,
ApiDescriptionsService,
ApiDeprecatedService,
ApiRequestBodyService,
ApiFormDataService,
ApiDefaultsService,
ApiDuplicateService,
ApiNoContentService,
ApiResponseService,
ApiNoContentService,
ApiMultipleTags1Service,
ApiMultipleTags2Service,
ApiMultipleTags3Service,
ApiCollectionFormatService,
ApiTypesService,
ApiUploadService,
ApiFileResponseService,
ApiComplexService,
ApiMultipartService,
ApiHeaderService,
ApiErrorService,
ApiNonAsciiÆøåÆøÅöôêÊService
],
exports: [
ApiClient,
ApiDefaultService,
ApiSimpleService,
ApiParametersService,
ApiDescriptionsService,
ApiDeprecatedService,
ApiRequestBodyService,
ApiFormDataService,
ApiDefaultsService,
ApiDuplicateService,
ApiNoContentService,
ApiResponseService,
ApiNoContentService,
ApiMultipleTags1Service,
ApiMultipleTags2Service,
ApiMultipleTags3Service,
ApiCollectionFormatService,
ApiTypesService,
ApiUploadService,
ApiFileResponseService,
ApiComplexService,
ApiMultipartService,
ApiHeaderService,
ApiErrorService,
ApiNonAsciiÆøåÆøÅöôêÊService
]
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// This file is auto-generated by @hey-api/openapi-ts

import { Injectable } from '@nestjs/common';

import type { AxiosResponse } from 'axios';

import { ApiClient } from '../api-client.service.gen';

import type { Options, TDataShape } from '../types.gen';

import type { CollectionFormatData } from '../../types.gen';

@Injectable()
export class ApiCollectionFormatService {
constructor(private readonly client: ApiClient) {
}
public async collectionFormat(options: CollectionFormatData): Promise<AxiosResponse<unknown>> {
return await this.client.get(options.url, {
...options
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// This file is auto-generated by @hey-api/openapi-ts

import { Injectable } from '@nestjs/common';

import type { AxiosResponse } from 'axios';

import { ApiClient } from '../api-client.service.gen';

import type { Options, TDataShape } from '../types.gen';

import type { ComplexTypesData, ComplexTypesResponses, ComplexParamsData, ComplexParamsResponses } from '../../types.gen';

@Injectable()
export class ApiComplexService {
constructor(private readonly client: ApiClient) {
}
public async complexTypes(options: ComplexTypesData): Promise<AxiosResponse<ComplexTypesResponses[200]>> {
return await this.client.get(options.url, {
...options
});
}
public async complexParams(options: ComplexParamsData): Promise<AxiosResponse<ComplexParamsResponses[200]>> {
return await this.client.put(options.url, 'body' in options ? options.body : undefined, {
...options
});
}
}
Loading
Loading