New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

openapi-fetch

Package Overview
Dependencies
Maintainers
1
Versions
71
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

openapi-fetch - npm Package Compare versions

Comparing version 0.0.7 to 0.0.8

schema.ts

6

CHANGELOG.md
# openapi-fetch
## 0.0.8
### Patch Changes
- 8e7cb46: Fix TypeScript lib error, simplify generated types
## 0.0.7

@@ -4,0 +10,0 @@

771

dist/index.d.ts

@@ -10,4 +10,32 @@ /** options for each client instance */

}
export declare const methods: readonly ["get", "put", "post", "delete", "options", "head", "patch", "trace"];
export type Method = (typeof methods)[number];
export type Method = 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace';
/** Gets a union of paths which have method */
type PathsWith<T, M extends Method> = {
[Path in keyof T]: T[Path] extends {
[K in M]: unknown;
} ? Path : never;
}[keyof T];
type PathParams<T> = T extends {
parameters: any;
} ? {
params: T['parameters'];
} : {
params?: BaseParams;
};
type MethodParams<T> = T extends {
parameters: any;
} ? {
params: T['parameters'];
} : {
params?: BaseParams;
};
type Params<T> = PathParams<T> & MethodParams<T>;
type RequestBody<T> = T extends {
requestBody: any;
} ? {
body: Unwrap<T['requestBody']>;
} : {
body?: never;
};
type FetchOptions<T> = Params<T> & RequestBody<T> & Omit<RequestInit, 'body'>;
type TruncatedResponse = Omit<Response, 'arrayBuffer' | 'blob' | 'body' | 'clone' | 'formData' | 'json' | 'text'>;

@@ -28,676 +56,85 @@ /** Infer request/response from content type */

} ? T['content']['*/*'] : T;
export default function createClient<T>(defaultOptions?: ClientOptions): {
type Success<T> = T extends {
200: any;
} ? T[200] : T extends {
201: any;
} ? T[201] : T extends {
202: any;
} ? T[202] : T extends {
default: any;
} ? T['default'] : unknown;
type Error<T> = T extends {
500: any;
} ? T[500] : T extends {
404: any;
} ? T[404] : T extends {
402: any;
} ? T[402] : T extends {
401: any;
} ? T[401] : T extends {
400: any;
} ? T[400] : T extends {
422: any;
} ? T[422] : T extends {
418: any;
} ? T[418] : T extends {
417: any;
} ? T[417] : T extends {
416: any;
} ? T[416] : T extends {
415: any;
} ? T[415] : T extends {
414: any;
} ? T[414] : T extends {
413: any;
} ? T[413] : T extends {
412: any;
} ? T[412] : T extends {
411: any;
} ? T[411] : T extends {
410: any;
} ? T[410] : T extends {
409: any;
} ? T[409] : T extends {
408: any;
} ? T[408] : T extends {
407: any;
} ? T[407] : T extends {
406: any;
} ? T[406] : T extends {
405: any;
} ? T[405] : T extends {
default: any;
} ? T['default'] : unknown;
type FetchResponse<T> = {
data: T extends {
responses: any;
} ? NonNullable<Unwrap<Success<T['responses']>>> : unknown;
error?: never;
response: TruncatedResponse;
} | {
data?: never;
error: T extends {
responses: any;
} ? NonNullable<Unwrap<Error<T['responses']>>> : unknown;
response: TruncatedResponse;
};
export default function createClient<T>(options?: ClientOptions): {
/** Call a GET endpoint */
get<U extends { [Path in keyof T]: T[Path] extends {
get: unknown;
} ? Path : never; }[keyof T], M extends keyof T[U]>(url: U, options: (T[U][M] extends infer T ? T extends T[U][M] ? T extends {
parameters: any;
} ? {
params: T["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U][M] extends infer T_1 ? T_1 extends T[U][M] ? T_1 extends {
parameters: any;
} ? {
params: T_1["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U][M] extends infer T_2 ? T_2 extends T[U][M] ? T_2 extends {
requestBody: any;
} ? {
body: Unwrap<T_2["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U][keyof T[U]] extends infer T_3 ? T_3 extends T[U][keyof T[U]] ? T_3 extends {
responses: any;
} ? NonNullable<Unwrap<T_3["responses"] extends infer T_4 ? T_4 extends T_3["responses"] ? T_4 extends {
200: any;
} ? T_4[200] : T_4 extends {
201: any;
} ? T_4[201] : T_4 extends {
202: any;
} ? T_4[202] : T_4 extends {
default: any;
} ? T_4["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U][keyof T[U]] extends infer T_5 ? T_5 extends T[U][keyof T[U]] ? T_5 extends {
responses: any;
} ? NonNullable<Unwrap<T_5["responses"] extends infer T_6 ? T_6 extends T_5["responses"] ? T_6 extends {
500: any;
} ? T_6[500] : T_6 extends {
404: any;
} ? T_6[404] : T_6 extends {
402: any;
} ? T_6[402] : T_6 extends {
401: any;
} ? T_6[401] : T_6 extends {
400: any;
} ? T_6[400] : T_6 extends {
422: any;
} ? T_6[422] : T_6 extends {
418: any;
} ? T_6[418] : T_6 extends {
417: any;
} ? T_6[417] : T_6 extends {
416: any;
} ? T_6[416] : T_6 extends {
415: any;
} ? T_6[415] : T_6 extends {
414: any;
} ? T_6[414] : T_6 extends {
413: any;
} ? T_6[413] : T_6 extends {
412: any;
} ? T_6[412] : T_6 extends {
411: any;
} ? T_6[411] : T_6 extends {
410: any;
} ? T_6[410] : T_6 extends {
409: any;
} ? T_6[409] : T_6 extends {
408: any;
} ? T_6[408] : T_6 extends {
407: any;
} ? T_6[407] : T_6 extends {
406: any;
} ? T_6[406] : T_6 extends {
405: any;
} ? T_6[405] : T_6 extends {
default: any;
} ? T_6["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
get<U extends PathsWith<T, "get">, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>): Promise<FetchResponse<T[U][keyof T[U]]>>;
/** Call a PUT endpoint */
put<U_1 extends { [Path_1 in keyof T]: T[Path_1] extends {
put: unknown;
} ? Path_1 : never; }[keyof T], M_1 extends keyof T[U_1]>(url: U_1, options: (T[U_1][M_1] extends infer T_7 ? T_7 extends T[U_1][M_1] ? T_7 extends {
parameters: any;
} ? {
params: T_7["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_1][M_1] extends infer T_8 ? T_8 extends T[U_1][M_1] ? T_8 extends {
parameters: any;
} ? {
params: T_8["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_1][M_1] extends infer T_9 ? T_9 extends T[U_1][M_1] ? T_9 extends {
requestBody: any;
} ? {
body: Unwrap<T_9["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_1][keyof T[U_1]] extends infer T_10 ? T_10 extends T[U_1][keyof T[U_1]] ? T_10 extends {
responses: any;
} ? NonNullable<Unwrap<T_10["responses"] extends infer T_11 ? T_11 extends T_10["responses"] ? T_11 extends {
200: any;
} ? T_11[200] : T_11 extends {
201: any;
} ? T_11[201] : T_11 extends {
202: any;
} ? T_11[202] : T_11 extends {
default: any;
} ? T_11["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_1][keyof T[U_1]] extends infer T_12 ? T_12 extends T[U_1][keyof T[U_1]] ? T_12 extends {
responses: any;
} ? NonNullable<Unwrap<T_12["responses"] extends infer T_13 ? T_13 extends T_12["responses"] ? T_13 extends {
500: any;
} ? T_13[500] : T_13 extends {
404: any;
} ? T_13[404] : T_13 extends {
402: any;
} ? T_13[402] : T_13 extends {
401: any;
} ? T_13[401] : T_13 extends {
400: any;
} ? T_13[400] : T_13 extends {
422: any;
} ? T_13[422] : T_13 extends {
418: any;
} ? T_13[418] : T_13 extends {
417: any;
} ? T_13[417] : T_13 extends {
416: any;
} ? T_13[416] : T_13 extends {
415: any;
} ? T_13[415] : T_13 extends {
414: any;
} ? T_13[414] : T_13 extends {
413: any;
} ? T_13[413] : T_13 extends {
412: any;
} ? T_13[412] : T_13 extends {
411: any;
} ? T_13[411] : T_13 extends {
410: any;
} ? T_13[410] : T_13 extends {
409: any;
} ? T_13[409] : T_13 extends {
408: any;
} ? T_13[408] : T_13 extends {
407: any;
} ? T_13[407] : T_13 extends {
406: any;
} ? T_13[406] : T_13 extends {
405: any;
} ? T_13[405] : T_13 extends {
default: any;
} ? T_13["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
put<U_1 extends PathsWith<T, "put">, M_1 extends keyof T[U_1]>(url: U_1, init: FetchOptions<T[U_1][M_1]>): Promise<FetchResponse<T[U_1][keyof T[U_1]]>>;
/** Call a POST endpoint */
post<U_2 extends { [Path_2 in keyof T]: T[Path_2] extends {
post: unknown;
} ? Path_2 : never; }[keyof T], M_2 extends keyof T[U_2]>(url: U_2, options: (T[U_2][M_2] extends infer T_14 ? T_14 extends T[U_2][M_2] ? T_14 extends {
parameters: any;
} ? {
params: T_14["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_2][M_2] extends infer T_15 ? T_15 extends T[U_2][M_2] ? T_15 extends {
parameters: any;
} ? {
params: T_15["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_2][M_2] extends infer T_16 ? T_16 extends T[U_2][M_2] ? T_16 extends {
requestBody: any;
} ? {
body: Unwrap<T_16["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_2][keyof T[U_2]] extends infer T_17 ? T_17 extends T[U_2][keyof T[U_2]] ? T_17 extends {
responses: any;
} ? NonNullable<Unwrap<T_17["responses"] extends infer T_18 ? T_18 extends T_17["responses"] ? T_18 extends {
200: any;
} ? T_18[200] : T_18 extends {
201: any;
} ? T_18[201] : T_18 extends {
202: any;
} ? T_18[202] : T_18 extends {
default: any;
} ? T_18["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_2][keyof T[U_2]] extends infer T_19 ? T_19 extends T[U_2][keyof T[U_2]] ? T_19 extends {
responses: any;
} ? NonNullable<Unwrap<T_19["responses"] extends infer T_20 ? T_20 extends T_19["responses"] ? T_20 extends {
500: any;
} ? T_20[500] : T_20 extends {
404: any;
} ? T_20[404] : T_20 extends {
402: any;
} ? T_20[402] : T_20 extends {
401: any;
} ? T_20[401] : T_20 extends {
400: any;
} ? T_20[400] : T_20 extends {
422: any;
} ? T_20[422] : T_20 extends {
418: any;
} ? T_20[418] : T_20 extends {
417: any;
} ? T_20[417] : T_20 extends {
416: any;
} ? T_20[416] : T_20 extends {
415: any;
} ? T_20[415] : T_20 extends {
414: any;
} ? T_20[414] : T_20 extends {
413: any;
} ? T_20[413] : T_20 extends {
412: any;
} ? T_20[412] : T_20 extends {
411: any;
} ? T_20[411] : T_20 extends {
410: any;
} ? T_20[410] : T_20 extends {
409: any;
} ? T_20[409] : T_20 extends {
408: any;
} ? T_20[408] : T_20 extends {
407: any;
} ? T_20[407] : T_20 extends {
406: any;
} ? T_20[406] : T_20 extends {
405: any;
} ? T_20[405] : T_20 extends {
default: any;
} ? T_20["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
post<U_2 extends PathsWith<T, "post">, M_2 extends keyof T[U_2]>(url: U_2, init: FetchOptions<T[U_2][M_2]>): Promise<FetchResponse<T[U_2][keyof T[U_2]]>>;
/** Call a DELETE endpoint */
del<U_3 extends { [Path_3 in keyof T]: T[Path_3] extends {
delete: unknown;
} ? Path_3 : never; }[keyof T], M_3 extends keyof T[U_3]>(url: U_3, options: (T[U_3][M_3] extends infer T_21 ? T_21 extends T[U_3][M_3] ? T_21 extends {
parameters: any;
} ? {
params: T_21["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_3][M_3] extends infer T_22 ? T_22 extends T[U_3][M_3] ? T_22 extends {
parameters: any;
} ? {
params: T_22["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_3][M_3] extends infer T_23 ? T_23 extends T[U_3][M_3] ? T_23 extends {
requestBody: any;
} ? {
body: Unwrap<T_23["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_3][keyof T[U_3]] extends infer T_24 ? T_24 extends T[U_3][keyof T[U_3]] ? T_24 extends {
responses: any;
} ? NonNullable<Unwrap<T_24["responses"] extends infer T_25 ? T_25 extends T_24["responses"] ? T_25 extends {
200: any;
} ? T_25[200] : T_25 extends {
201: any;
} ? T_25[201] : T_25 extends {
202: any;
} ? T_25[202] : T_25 extends {
default: any;
} ? T_25["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_3][keyof T[U_3]] extends infer T_26 ? T_26 extends T[U_3][keyof T[U_3]] ? T_26 extends {
responses: any;
} ? NonNullable<Unwrap<T_26["responses"] extends infer T_27 ? T_27 extends T_26["responses"] ? T_27 extends {
500: any;
} ? T_27[500] : T_27 extends {
404: any;
} ? T_27[404] : T_27 extends {
402: any;
} ? T_27[402] : T_27 extends {
401: any;
} ? T_27[401] : T_27 extends {
400: any;
} ? T_27[400] : T_27 extends {
422: any;
} ? T_27[422] : T_27 extends {
418: any;
} ? T_27[418] : T_27 extends {
417: any;
} ? T_27[417] : T_27 extends {
416: any;
} ? T_27[416] : T_27 extends {
415: any;
} ? T_27[415] : T_27 extends {
414: any;
} ? T_27[414] : T_27 extends {
413: any;
} ? T_27[413] : T_27 extends {
412: any;
} ? T_27[412] : T_27 extends {
411: any;
} ? T_27[411] : T_27 extends {
410: any;
} ? T_27[410] : T_27 extends {
409: any;
} ? T_27[409] : T_27 extends {
408: any;
} ? T_27[408] : T_27 extends {
407: any;
} ? T_27[407] : T_27 extends {
406: any;
} ? T_27[406] : T_27 extends {
405: any;
} ? T_27[405] : T_27 extends {
default: any;
} ? T_27["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
del<U_3 extends PathsWith<T, "delete">, M_3 extends keyof T[U_3]>(url: U_3, init: FetchOptions<T[U_3][M_3]>): Promise<FetchResponse<T[U_3][keyof T[U_3]]>>;
/** Call a OPTIONS endpoint */
options<U_4 extends { [Path_4 in keyof T]: T[Path_4] extends {
options: unknown;
} ? Path_4 : never; }[keyof T], M_4 extends keyof T[U_4]>(url: U_4, options: (T[U_4][M_4] extends infer T_28 ? T_28 extends T[U_4][M_4] ? T_28 extends {
parameters: any;
} ? {
params: T_28["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_4][M_4] extends infer T_29 ? T_29 extends T[U_4][M_4] ? T_29 extends {
parameters: any;
} ? {
params: T_29["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_4][M_4] extends infer T_30 ? T_30 extends T[U_4][M_4] ? T_30 extends {
requestBody: any;
} ? {
body: Unwrap<T_30["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_4][keyof T[U_4]] extends infer T_31 ? T_31 extends T[U_4][keyof T[U_4]] ? T_31 extends {
responses: any;
} ? NonNullable<Unwrap<T_31["responses"] extends infer T_32 ? T_32 extends T_31["responses"] ? T_32 extends {
200: any;
} ? T_32[200] : T_32 extends {
201: any;
} ? T_32[201] : T_32 extends {
202: any;
} ? T_32[202] : T_32 extends {
default: any;
} ? T_32["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_4][keyof T[U_4]] extends infer T_33 ? T_33 extends T[U_4][keyof T[U_4]] ? T_33 extends {
responses: any;
} ? NonNullable<Unwrap<T_33["responses"] extends infer T_34 ? T_34 extends T_33["responses"] ? T_34 extends {
500: any;
} ? T_34[500] : T_34 extends {
404: any;
} ? T_34[404] : T_34 extends {
402: any;
} ? T_34[402] : T_34 extends {
401: any;
} ? T_34[401] : T_34 extends {
400: any;
} ? T_34[400] : T_34 extends {
422: any;
} ? T_34[422] : T_34 extends {
418: any;
} ? T_34[418] : T_34 extends {
417: any;
} ? T_34[417] : T_34 extends {
416: any;
} ? T_34[416] : T_34 extends {
415: any;
} ? T_34[415] : T_34 extends {
414: any;
} ? T_34[414] : T_34 extends {
413: any;
} ? T_34[413] : T_34 extends {
412: any;
} ? T_34[412] : T_34 extends {
411: any;
} ? T_34[411] : T_34 extends {
410: any;
} ? T_34[410] : T_34 extends {
409: any;
} ? T_34[409] : T_34 extends {
408: any;
} ? T_34[408] : T_34 extends {
407: any;
} ? T_34[407] : T_34 extends {
406: any;
} ? T_34[406] : T_34 extends {
405: any;
} ? T_34[405] : T_34 extends {
default: any;
} ? T_34["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
options<U_4 extends PathsWith<T, "options">, M_4 extends keyof T[U_4]>(url: U_4, init: FetchOptions<T[U_4][M_4]>): Promise<FetchResponse<T[U_4][keyof T[U_4]]>>;
/** Call a HEAD endpoint */
head<U_5 extends { [Path_5 in keyof T]: T[Path_5] extends {
head: unknown;
} ? Path_5 : never; }[keyof T], M_5 extends keyof T[U_5]>(url: U_5, options: (T[U_5][M_5] extends infer T_35 ? T_35 extends T[U_5][M_5] ? T_35 extends {
parameters: any;
} ? {
params: T_35["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_5][M_5] extends infer T_36 ? T_36 extends T[U_5][M_5] ? T_36 extends {
parameters: any;
} ? {
params: T_36["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_5][M_5] extends infer T_37 ? T_37 extends T[U_5][M_5] ? T_37 extends {
requestBody: any;
} ? {
body: Unwrap<T_37["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_5][keyof T[U_5]] extends infer T_38 ? T_38 extends T[U_5][keyof T[U_5]] ? T_38 extends {
responses: any;
} ? NonNullable<Unwrap<T_38["responses"] extends infer T_39 ? T_39 extends T_38["responses"] ? T_39 extends {
200: any;
} ? T_39[200] : T_39 extends {
201: any;
} ? T_39[201] : T_39 extends {
202: any;
} ? T_39[202] : T_39 extends {
default: any;
} ? T_39["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_5][keyof T[U_5]] extends infer T_40 ? T_40 extends T[U_5][keyof T[U_5]] ? T_40 extends {
responses: any;
} ? NonNullable<Unwrap<T_40["responses"] extends infer T_41 ? T_41 extends T_40["responses"] ? T_41 extends {
500: any;
} ? T_41[500] : T_41 extends {
404: any;
} ? T_41[404] : T_41 extends {
402: any;
} ? T_41[402] : T_41 extends {
401: any;
} ? T_41[401] : T_41 extends {
400: any;
} ? T_41[400] : T_41 extends {
422: any;
} ? T_41[422] : T_41 extends {
418: any;
} ? T_41[418] : T_41 extends {
417: any;
} ? T_41[417] : T_41 extends {
416: any;
} ? T_41[416] : T_41 extends {
415: any;
} ? T_41[415] : T_41 extends {
414: any;
} ? T_41[414] : T_41 extends {
413: any;
} ? T_41[413] : T_41 extends {
412: any;
} ? T_41[412] : T_41 extends {
411: any;
} ? T_41[411] : T_41 extends {
410: any;
} ? T_41[410] : T_41 extends {
409: any;
} ? T_41[409] : T_41 extends {
408: any;
} ? T_41[408] : T_41 extends {
407: any;
} ? T_41[407] : T_41 extends {
406: any;
} ? T_41[406] : T_41 extends {
405: any;
} ? T_41[405] : T_41 extends {
default: any;
} ? T_41["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
head<U_5 extends PathsWith<T, "head">, M_5 extends keyof T[U_5]>(url: U_5, init: FetchOptions<T[U_5][M_5]>): Promise<FetchResponse<T[U_5][keyof T[U_5]]>>;
/** Call a PATCH endpoint */
patch<U_6 extends { [Path_6 in keyof T]: T[Path_6] extends {
patch: unknown;
} ? Path_6 : never; }[keyof T], M_6 extends keyof T[U_6]>(url: U_6, options: (T[U_6][M_6] extends infer T_42 ? T_42 extends T[U_6][M_6] ? T_42 extends {
parameters: any;
} ? {
params: T_42["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_6][M_6] extends infer T_43 ? T_43 extends T[U_6][M_6] ? T_43 extends {
parameters: any;
} ? {
params: T_43["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_6][M_6] extends infer T_44 ? T_44 extends T[U_6][M_6] ? T_44 extends {
requestBody: any;
} ? {
body: Unwrap<T_44["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_6][keyof T[U_6]] extends infer T_45 ? T_45 extends T[U_6][keyof T[U_6]] ? T_45 extends {
responses: any;
} ? NonNullable<Unwrap<T_45["responses"] extends infer T_46 ? T_46 extends T_45["responses"] ? T_46 extends {
200: any;
} ? T_46[200] : T_46 extends {
201: any;
} ? T_46[201] : T_46 extends {
202: any;
} ? T_46[202] : T_46 extends {
default: any;
} ? T_46["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_6][keyof T[U_6]] extends infer T_47 ? T_47 extends T[U_6][keyof T[U_6]] ? T_47 extends {
responses: any;
} ? NonNullable<Unwrap<T_47["responses"] extends infer T_48 ? T_48 extends T_47["responses"] ? T_48 extends {
500: any;
} ? T_48[500] : T_48 extends {
404: any;
} ? T_48[404] : T_48 extends {
402: any;
} ? T_48[402] : T_48 extends {
401: any;
} ? T_48[401] : T_48 extends {
400: any;
} ? T_48[400] : T_48 extends {
422: any;
} ? T_48[422] : T_48 extends {
418: any;
} ? T_48[418] : T_48 extends {
417: any;
} ? T_48[417] : T_48 extends {
416: any;
} ? T_48[416] : T_48 extends {
415: any;
} ? T_48[415] : T_48 extends {
414: any;
} ? T_48[414] : T_48 extends {
413: any;
} ? T_48[413] : T_48 extends {
412: any;
} ? T_48[412] : T_48 extends {
411: any;
} ? T_48[411] : T_48 extends {
410: any;
} ? T_48[410] : T_48 extends {
409: any;
} ? T_48[409] : T_48 extends {
408: any;
} ? T_48[408] : T_48 extends {
407: any;
} ? T_48[407] : T_48 extends {
406: any;
} ? T_48[406] : T_48 extends {
405: any;
} ? T_48[405] : T_48 extends {
default: any;
} ? T_48["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
patch<U_6 extends PathsWith<T, "patch">, M_6 extends keyof T[U_6]>(url: U_6, init: FetchOptions<T[U_6][M_6]>): Promise<FetchResponse<T[U_6][keyof T[U_6]]>>;
/** Call a TRACE endpoint */
trace<U_7 extends { [Path_7 in keyof T]: T[Path_7] extends {
trace: unknown;
} ? Path_7 : never; }[keyof T], M_7 extends keyof T[U_7]>(url: U_7, options: (T[U_7][M_7] extends infer T_49 ? T_49 extends T[U_7][M_7] ? T_49 extends {
parameters: any;
} ? {
params: T_49["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_7][M_7] extends infer T_50 ? T_50 extends T[U_7][M_7] ? T_50 extends {
parameters: any;
} ? {
params: T_50["parameters"];
} : {
params?: BaseParams | undefined;
} : never : never) & (T[U_7][M_7] extends infer T_51 ? T_51 extends T[U_7][M_7] ? T_51 extends {
requestBody: any;
} ? {
body: Unwrap<T_51["requestBody"]>;
} : {
body?: undefined;
} : never : never) & Omit<RequestInit, "body">): Promise<{
data: T[U_7][keyof T[U_7]] extends infer T_52 ? T_52 extends T[U_7][keyof T[U_7]] ? T_52 extends {
responses: any;
} ? NonNullable<Unwrap<T_52["responses"] extends infer T_53 ? T_53 extends T_52["responses"] ? T_53 extends {
200: any;
} ? T_53[200] : T_53 extends {
201: any;
} ? T_53[201] : T_53 extends {
202: any;
} ? T_53[202] : T_53 extends {
default: any;
} ? T_53["default"] : unknown : never : never>> : unknown : never : never;
error?: undefined;
response: TruncatedResponse;
} | {
data?: undefined;
error: T[U_7][keyof T[U_7]] extends infer T_54 ? T_54 extends T[U_7][keyof T[U_7]] ? T_54 extends {
responses: any;
} ? NonNullable<Unwrap<T_54["responses"] extends infer T_55 ? T_55 extends T_54["responses"] ? T_55 extends {
500: any;
} ? T_55[500] : T_55 extends {
404: any;
} ? T_55[404] : T_55 extends {
402: any;
} ? T_55[402] : T_55 extends {
401: any;
} ? T_55[401] : T_55 extends {
400: any;
} ? T_55[400] : T_55 extends {
422: any;
} ? T_55[422] : T_55 extends {
418: any;
} ? T_55[418] : T_55 extends {
417: any;
} ? T_55[417] : T_55 extends {
416: any;
} ? T_55[416] : T_55 extends {
415: any;
} ? T_55[415] : T_55 extends {
414: any;
} ? T_55[414] : T_55 extends {
413: any;
} ? T_55[413] : T_55 extends {
412: any;
} ? T_55[412] : T_55 extends {
411: any;
} ? T_55[411] : T_55 extends {
410: any;
} ? T_55[410] : T_55 extends {
409: any;
} ? T_55[409] : T_55 extends {
408: any;
} ? T_55[408] : T_55 extends {
407: any;
} ? T_55[407] : T_55 extends {
406: any;
} ? T_55[406] : T_55 extends {
405: any;
} ? T_55[405] : T_55 extends {
default: any;
} ? T_55["default"] : unknown : never : never>> : unknown : never : never;
response: TruncatedResponse;
}>;
trace<U_7 extends PathsWith<T, "trace">, M_7 extends keyof T[U_7]>(url: U_7, init: FetchOptions<T[U_7][M_7]>): Promise<FetchResponse<T[U_7][keyof T[U_7]]>>;
};
export {};
const DEFAULT_HEADERS = {
'Content-Type': 'application/json',
};
export const methods = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'];
export default function createClient(defaultOptions) {
export default function createClient(options) {
const defaultHeaders = new Headers({
...DEFAULT_HEADERS,
...(defaultOptions?.headers ?? {}),
...(options?.headers ?? {}),
});
async function coreFetch(url, options) {
let { headers, body, params = {}, ...init } = options || {};
async function coreFetch(url, fetchOptions) {
let { headers, body, params = {}, ...init } = fetchOptions || {};
// URL
let finalURL = `${defaultOptions?.baseUrl ?? ''}${url}`;
let finalURL = `${options?.baseUrl ?? ''}${url}`;
const { path, query } = params ?? {};

@@ -32,3 +31,3 @@ if (path)

redirect: 'follow',
...defaultOptions,
...options,
...init,

@@ -52,34 +51,34 @@ headers: baseHeaders,

/** Call a GET endpoint */
async get(url, options) {
return coreFetch(url, { ...options, method: 'GET' });
async get(url, init) {
return coreFetch(url, { ...init, method: 'GET' });
},
/** Call a PUT endpoint */
async put(url, options) {
return coreFetch(url, { ...options, method: 'PUT' });
async put(url, init) {
return coreFetch(url, { ...init, method: 'PUT' });
},
/** Call a POST endpoint */
async post(url, options) {
return coreFetch(url, { ...options, method: 'POST' });
async post(url, init) {
return coreFetch(url, { ...init, method: 'POST' });
},
/** Call a DELETE endpoint */
async del(url, options) {
return coreFetch(url, { ...options, method: 'DELETE' });
async del(url, init) {
return coreFetch(url, { ...init, method: 'DELETE' });
},
/** Call a OPTIONS endpoint */
async options(url, options) {
return coreFetch(url, { ...options, method: 'OPTIONS' });
async options(url, init) {
return coreFetch(url, { ...init, method: 'OPTIONS' });
},
/** Call a HEAD endpoint */
async head(url, options) {
return coreFetch(url, { ...options, method: 'HEAD' });
async head(url, init) {
return coreFetch(url, { ...init, method: 'HEAD' });
},
/** Call a PATCH endpoint */
async patch(url, options) {
return coreFetch(url, { ...options, method: 'PATCH' });
async patch(url, init) {
return coreFetch(url, { ...init, method: 'PATCH' });
},
/** Call a TRACE endpoint */
async trace(url, options) {
return coreFetch(url, { ...options, method: 'TRACE' });
async trace(url, init) {
return coreFetch(url, { ...init, method: 'TRACE' });
},
};
}

@@ -1,1 +0,1 @@

var l={"Content-Type":"application/json"},P=["get","put","post","delete","options","head","patch","trace"];function m(d){let h=new Headers({...l,...d?.headers??{}});async function s(e,t){let{headers:x,body:T,params:u={},...U}=t||{},a=`${d?.baseUrl??""}${e}`,{path:p,query:c}=u??{};if(p)for(let[r,o]of Object.entries(p))a=a.replace(`{${r}}`,encodeURIComponent(`${o}`.trim()));c&&(a=`${a}?${new URLSearchParams(c).toString()}`);let y=new Headers(h),f=new Headers(x);for(let[r,o]of f.entries())o==null?y.delete(r):y.set(r,o);let n=await fetch(a,{redirect:"follow",...d,...U,headers:y,body:typeof T=="string"?T:JSON.stringify(T)}),i={bodyUsed:n.bodyUsed,headers:n.headers,ok:n.ok,redirected:n.redirected,status:n.status,statusText:n.statusText,type:n.type,url:n.url};return n.ok?{data:await n.json(),response:i}:{error:await n.json(),response:i}}return{async get(e,t){return s(e,{...t,method:"GET"})},async put(e,t){return s(e,{...t,method:"PUT"})},async post(e,t){return s(e,{...t,method:"POST"})},async del(e,t){return s(e,{...t,method:"DELETE"})},async options(e,t){return s(e,{...t,method:"OPTIONS"})},async head(e,t){return s(e,{...t,method:"HEAD"})},async patch(e,t){return s(e,{...t,method:"PATCH"})},async trace(e,t){return s(e,{...t,method:"TRACE"})}}}export{m as default,P as methods};
var l={"Content-Type":"application/json"};function m(T){let h=new Headers({...l,...T?.headers??{}});async function s(e,t){let{headers:x,body:d,params:u={},...U}=t||{},a=`${T?.baseUrl??""}${e}`,{path:p,query:c}=u??{};if(p)for(let[o,r]of Object.entries(p))a=a.replace(`{${o}}`,encodeURIComponent(`${r}`.trim()));c&&(a=`${a}?${new URLSearchParams(c).toString()}`);let y=new Headers(h),f=new Headers(x);for(let[o,r]of f.entries())r==null?y.delete(o):y.set(o,r);let n=await fetch(a,{redirect:"follow",...T,...U,headers:y,body:typeof d=="string"?d:JSON.stringify(d)}),i={bodyUsed:n.bodyUsed,headers:n.headers,ok:n.ok,redirected:n.redirected,status:n.status,statusText:n.statusText,type:n.type,url:n.url};return n.ok?{data:await n.json(),response:i}:{error:await n.json(),response:i}}return{async get(e,t){return s(e,{...t,method:"GET"})},async put(e,t){return s(e,{...t,method:"PUT"})},async post(e,t){return s(e,{...t,method:"POST"})},async del(e,t){return s(e,{...t,method:"DELETE"})},async options(e,t){return s(e,{...t,method:"OPTIONS"})},async head(e,t){return s(e,{...t,method:"HEAD"})},async patch(e,t){return s(e,{...t,method:"PATCH"})},async trace(e,t){return s(e,{...t,method:"TRACE"})}}}export{m as default};
{
"name": "openapi-fetch",
"version": "0.0.7",
"version": "0.0.8",
"author": {

@@ -5,0 +5,0 @@ "name": "Drew Powers",

@@ -201,3 +201,3 @@ # 🎾 openapi-fetch

},
});
}) as typeof client;

@@ -204,0 +204,0 @@ // src/some-other-file.ts

@@ -16,5 +16,19 @@ const DEFAULT_HEADERS = {

export const methods = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'] as const;
export type Method = (typeof methods)[number];
export type Method = 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace';
/** Gets a union of paths which have method */
type PathsWith<T, M extends Method> = {
[Path in keyof T]: T[Path] extends { [K in M]: unknown } ? Path : never;
}[keyof T];
type PathParams<T> = T extends { parameters: any } ? { params: T['parameters'] } : { params?: BaseParams };
type MethodParams<T> = T extends {
parameters: any;
}
? { params: T['parameters'] }
: { params?: BaseParams };
type Params<T> = PathParams<T> & MethodParams<T>;
type RequestBody<T> = T extends { requestBody: any } ? { body: Unwrap<T['requestBody']> } : { body?: never };
type FetchOptions<T> = Params<T> & RequestBody<T> & Omit<RequestInit, 'body'>;
type TruncatedResponse = Omit<Response, 'arrayBuffer' | 'blob' | 'body' | 'clone' | 'formData' | 'json' | 'text'>;

@@ -32,86 +46,73 @@ /** Infer request/response from content type */

export default function createClient<T>(defaultOptions?: ClientOptions) {
type Success<T> = T extends { 200: any } ? T[200] : T extends { 201: any } ? T[201] : T extends { 202: any } ? T[202] : T extends { default: any } ? T['default'] : unknown;
type Error<T> = T extends { 500: any }
? T[500]
: T extends { 404: any }
? T[404]
: T extends { 402: any }
? T[402]
: T extends { 401: any }
? T[401]
: T extends { 400: any }
? T[400]
: T extends { 422: any }
? T[422]
: T extends { 418: any }
? T[418]
: T extends { 417: any }
? T[417]
: T extends { 416: any }
? T[416]
: T extends { 415: any }
? T[415]
: T extends { 414: any }
? T[414]
: T extends { 413: any }
? T[413]
: T extends { 412: any }
? T[412]
: T extends { 411: any }
? T[411]
: T extends { 410: any }
? T[410]
: T extends { 409: any }
? T[409]
: T extends { 408: any }
? T[408]
: T extends { 407: any }
? T[407]
: T extends { 406: any }
? T[406]
: T extends { 405: any }
? T[405]
: T extends { default: any }
? T['default']
: unknown;
type FetchResponse<T> =
| {
data: T extends { responses: any } ? NonNullable<Unwrap<Success<T['responses']>>> : unknown;
error?: never;
response: TruncatedResponse;
}
| {
data?: never;
error: T extends { responses: any } ? NonNullable<Unwrap<Error<T['responses']>>> : unknown;
response: TruncatedResponse;
};
export default function createClient<T>(options?: ClientOptions) {
const defaultHeaders = new Headers({
...DEFAULT_HEADERS,
...(defaultOptions?.headers ?? {}),
...(options?.headers ?? {}),
});
/** Gets a union of paths which have method */
type PathsWith<M extends Method> = {
[Path in keyof T]: T[Path] extends { [K in M]: unknown } ? Path : never;
}[keyof T];
async function coreFetch<U extends keyof T, M extends keyof T[U]>(url: U, fetchOptions: FetchOptions<T[U][M]>): Promise<FetchResponse<T[U][M]>> {
let { headers, body, params = {}, ...init } = fetchOptions || {};
type FetchResponse<T> =
| {
data: T extends { responses: any } ? NonNullable<Unwrap<Success<T['responses']>>> : unknown;
error?: never;
response: TruncatedResponse;
}
| {
data?: never;
error: T extends { responses: any } ? NonNullable<Unwrap<Error<T['responses']>>> : unknown;
response: TruncatedResponse;
};
type PathParams<T> = T extends { parameters: any } ? { params: T['parameters'] } : { params?: BaseParams };
type MethodParams<T> = T extends {
parameters: any;
}
? { params: T['parameters'] }
: { params?: BaseParams };
type Params<T> = PathParams<T> & MethodParams<T>;
type RequestBody<T> = T extends { requestBody: any } ? { body: Unwrap<T['requestBody']> } : { body?: never };
type FetchOptions<T> = Params<T> & RequestBody<T> & Omit<RequestInit, 'body'>;
type Success<T> = T extends { 200: any } ? T[200] : T extends { 201: any } ? T[201] : T extends { 202: any } ? T[202] : T extends { default: any } ? T['default'] : unknown;
type Error<T> = T extends { 500: any }
? T[500]
: T extends { 404: any }
? T[404]
: T extends { 402: any }
? T[402]
: T extends { 401: any }
? T[401]
: T extends { 400: any }
? T[400]
: T extends { 422: any }
? T[422]
: T extends { 418: any }
? T[418]
: T extends { 417: any }
? T[417]
: T extends { 416: any }
? T[416]
: T extends { 415: any }
? T[415]
: T extends { 414: any }
? T[414]
: T extends { 413: any }
? T[413]
: T extends { 412: any }
? T[412]
: T extends { 411: any }
? T[411]
: T extends { 410: any }
? T[410]
: T extends { 409: any }
? T[409]
: T extends { 408: any }
? T[408]
: T extends { 407: any }
? T[407]
: T extends { 406: any }
? T[406]
: T extends { 405: any }
? T[405]
: T extends { default: any }
? T['default']
: unknown;
async function coreFetch<U extends keyof T, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>): Promise<FetchResponse<T[U][M]>> {
let { headers, body, params = {}, ...init } = options || {};
// URL
let finalURL = `${defaultOptions?.baseUrl ?? ''}${url as string}`;
let finalURL = `${options?.baseUrl ?? ''}${url as string}`;
const { path, query } = (params as BaseParams | undefined) ?? {};
if (path) for (const [k, v] of Object.entries(path)) finalURL = finalURL.replace(`{${k}}`, encodeURIComponent(`${v}`.trim()));
if (query) finalURL = `${finalURL}?${new URLSearchParams(query as any).toString()}`;
// headers

@@ -124,6 +125,7 @@ const baseHeaders = new Headers(defaultHeaders); // clone defaults (don’t overwrite!)

}
// fetch!
const res = await fetch(finalURL, {
redirect: 'follow',
...defaultOptions,
...options,
...init,

@@ -148,34 +150,34 @@ headers: baseHeaders,

/** Call a GET endpoint */
async get<U extends PathsWith<'get'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'GET' });
async get<U extends PathsWith<T, 'get'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'GET' });
},
/** Call a PUT endpoint */
async put<U extends PathsWith<'put'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'PUT' });
async put<U extends PathsWith<T, 'put'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'PUT' });
},
/** Call a POST endpoint */
async post<U extends PathsWith<'post'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'POST' });
async post<U extends PathsWith<T, 'post'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'POST' });
},
/** Call a DELETE endpoint */
async del<U extends PathsWith<'delete'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'DELETE' });
async del<U extends PathsWith<T, 'delete'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'DELETE' });
},
/** Call a OPTIONS endpoint */
async options<U extends PathsWith<'options'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'OPTIONS' });
async options<U extends PathsWith<T, 'options'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'OPTIONS' });
},
/** Call a HEAD endpoint */
async head<U extends PathsWith<'head'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'HEAD' });
async head<U extends PathsWith<T, 'head'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'HEAD' });
},
/** Call a PATCH endpoint */
async patch<U extends PathsWith<'patch'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'PATCH' });
async patch<U extends PathsWith<T, 'patch'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'PATCH' });
},
/** Call a TRACE endpoint */
async trace<U extends PathsWith<'trace'>, M extends keyof T[U]>(url: U, options: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...options, method: 'TRACE' });
async trace<U extends PathsWith<T, 'trace'>, M extends keyof T[U]>(url: U, init: FetchOptions<T[U][M]>) {
return coreFetch(url, { ...init, method: 'TRACE' });
},
};
}

@@ -5,2 +5,3 @@ {

"declaration": true,
"downlevelIteration": false,
"esModuleInterop": true,

@@ -7,0 +8,0 @@ "module": "ESNext",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc