Skip to content

Commit 661c688

Browse files
TakehiroTadaclaude
andcommitted
fix: address Copilot review feedback for PR #192
- Filter out Options type export from sdk.gen imports to prevent duplicate imports with the client module - Update engines.node from >=14 to >=20.19.0 to match @hey-api/openapi-ts requirement - Replace throw with filter in getMethodsFromService for defensive handling of non-arrow-function declarations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d95a137 commit 661c688

4 files changed

Lines changed: 19 additions & 18 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
},
7171
"packageManager": "pnpm@9.6.0",
7272
"engines": {
73-
"node": ">=14",
73+
"node": ">=20.19.0",
7474
"pnpm": ">=9"
7575
},
7676
"pnpm": {

src/createImports.mts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ export const createImports = ({
3333
serviceFile.getExportedDeclarations().keys(),
3434
);
3535

36-
const serviceNames = serviceExports;
36+
// Filter out type-only exports (e.g. Options) to avoid duplicate imports,
37+
// since Options is already imported separately from the client module.
38+
const serviceNames = serviceExports.filter((name) => name !== "Options");
3739

3840
const imports = [
3941
ts.factory.createImportDeclaration(

src/service.mts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,14 @@ export function getMethodsFromService(node: SourceFile): FunctionDescription[] {
3838

3939
return exportedStatements.flatMap((variableStatement) => {
4040
const declarations = variableStatement.getDeclarations();
41-
return declarations.map((declaration) => {
41+
// Filter to only arrow function declarations within the statement
42+
const arrowDeclarations = declarations.filter((declaration) => {
4243
const initializer = declaration.getInitializer();
43-
if (!initializer) {
44-
throw new Error("Initializer not found");
45-
}
46-
const compilerNode = initializer.compilerNode;
47-
if (!ts.isArrowFunction(compilerNode)) {
48-
throw new Error("Arrow function not found");
49-
}
44+
return initializer && ts.isArrowFunction(initializer.compilerNode);
45+
});
46+
return arrowDeclarations.map((declaration) => {
47+
const initializer = declaration.getInitializerOrThrow();
48+
const compilerNode = initializer.compilerNode as ts.ArrowFunction;
5049
const arrowBody = compilerNode.body;
5150

5251
// Find the call expression - either from block's return statement or direct expression

tests/__snapshots__/createSource.test.ts.snap

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ exports[`createSource > createSource - @hey-api/client-axios 2`] = `
1313
1414
import { type Options } from "../requests/client";
1515
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
16-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
16+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
1717
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
1818
import { AxiosError } from "axios";
1919
export type FindPetsDefaultResponse = Awaited<ReturnType<typeof findPets>>["data"];
@@ -50,7 +50,7 @@ exports[`createSource > createSource - @hey-api/client-axios 3`] = `
5050
import * as Common from "./common";
5151
import { type Options } from "../requests/client";
5252
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
53-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
53+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
5454
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
5555
import { AxiosError } from "axios";
5656
/**
@@ -99,7 +99,7 @@ exports[`createSource > createSource - @hey-api/client-axios 4`] = `
9999
import * as Common from "./common";
100100
import { type Options } from "../requests/client";
101101
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
102-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
102+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
103103
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
104104
import { AxiosError } from "axios";
105105
/**
@@ -134,7 +134,7 @@ exports[`createSource > createSource - @hey-api/client-axios 5`] = `
134134
import * as Common from "./common";
135135
import { type Options } from "../requests/client";
136136
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
137-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
137+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
138138
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
139139
import { AxiosError } from "axios";
140140
/**
@@ -176,7 +176,7 @@ exports[`createSource > createSource - @hey-api/client-fetch 2`] = `
176176
177177
import { type Options } from "../requests/client";
178178
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
179-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
179+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
180180
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
181181
export type FindPetsDefaultResponse = Awaited<ReturnType<typeof findPets>>["data"];
182182
export type FindPetsQueryResult<TData = FindPetsDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
@@ -212,7 +212,7 @@ exports[`createSource > createSource - @hey-api/client-fetch 3`] = `
212212
import * as Common from "./common";
213213
import { type Options } from "../requests/client";
214214
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
215-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
215+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
216216
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
217217
/**
218218
* Returns all pets from the system that the user has access to
@@ -260,7 +260,7 @@ exports[`createSource > createSource - @hey-api/client-fetch 4`] = `
260260
import * as Common from "./common";
261261
import { type Options } from "../requests/client";
262262
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
263-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
263+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
264264
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
265265
/**
266266
* Returns all pets from the system that the user has access to
@@ -294,7 +294,7 @@ exports[`createSource > createSource - @hey-api/client-fetch 5`] = `
294294
import * as Common from "./common";
295295
import { type Options } from "../requests/client";
296296
import { type QueryClient, useQuery, useSuspenseQuery, useMutation, UseQueryResult, UseQueryOptions, UseMutationOptions, UseMutationResult, UseSuspenseQueryOptions } from "@tanstack/react-query";
297-
import { Options, findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
297+
import { findPets, addPet, getNotDefined, postNotDefined, deletePet, findPetById, findPaginatedPets } from "../requests/sdk.gen";
298298
import { ClientOptions, Pet, NewPet, Error, FindPetsData, FindPetsErrors, FindPetsError, FindPetsResponses, FindPetsResponse, AddPetData, AddPetErrors, AddPetError, AddPetResponses, AddPetResponse, GetNotDefinedData, GetNotDefinedErrors, GetNotDefinedResponses, PostNotDefinedData, PostNotDefinedErrors, PostNotDefinedResponses, DeletePetData, DeletePetErrors, DeletePetError, DeletePetResponses, DeletePetResponse, FindPetByIdData, FindPetByIdErrors, FindPetByIdError, FindPetByIdResponses, FindPetByIdResponse, FindPaginatedPetsData, FindPaginatedPetsResponses, FindPaginatedPetsResponse } from "../requests/types.gen";
299299
/**
300300
* Returns all pets from the system that the user has access to

0 commit comments

Comments
 (0)