-
-
Notifications
You must be signed in to change notification settings - Fork 528
/
Copy pathindex.bench.js
101 lines (82 loc) · 2.63 KB
/
index.bench.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import axios from "axios";
import { Fetcher } from "openapi-typescript-fetch";
import superagent from "superagent";
import { afterAll, bench, describe, vi } from "vitest";
import createFetchMock from "vitest-fetch-mock";
import createClient from "../dist/index.js";
import * as openapiTSCodegen from "./openapi-typescript-codegen.min.js";
const BASE_URL = "https://api.test.local";
const fetchMocker = createFetchMock(vi);
fetchMocker.enableMocks();
fetchMocker.mockResponse("{}");
afterAll(() => {
fetchMocker.resetMocks();
});
describe("setup", () => {
bench("openapi-fetch", async () => {
createClient();
});
bench("openapi-typescript-fetch", async () => {
const fetcher = Fetcher.for();
fetcher.path("/pet/findByStatus").method("get").create();
});
bench("axios", async () => {
axios.create({
baseURL: "https://api.test.local",
});
});
// superagent: N/A
});
describe("get (only URL)", () => {
let openapiFetch = createClient({ baseUrl: BASE_URL });
let openapiTSFetch = Fetcher.for();
openapiTSFetch.configure({
init: { baseUrl: BASE_URL },
});
bench("openapi-fetch", async () => {
await openapiFetch.GET("/url");
});
bench("openapi-typescript-fetch", async () => {
await openapiTSFetch.path("/url").method("get").create()();
});
bench("openapi-typescript-codegen", async () => {
await openapiTSCodegen.PullsService.pullsGet();
});
bench("axios", async () => {
await axios.get("/url", {
async adapter() {
return { data: {} };
},
});
});
bench("superagent", async () => {
await superagent.get("/url").end();
});
});
describe("get (headers)", () => {
let openapiFetch = createClient({ baseUrl: BASE_URL, headers: { "x-base-header": 123 } });
let openapiTSFetch = Fetcher.for();
openapiTSFetch.configure({
init: { baseUrl: BASE_URL, headers: { "x-base-header": 123 } },
});
bench("openapi-fetch", async () => {
await openapiFetch.GET("/url", { headers: { "x-header-1": 123, "x-header-2": 456 } });
});
bench("openapi-typescript-fetch", async () => {
await openapiTSFetch.path("/url").method("get").create()(null, { headers: { "x-header-1": 123, "x-header-2": 456 } });
});
bench("openapi-typescript-codegen", async () => {
await openapiTSCodegen.PullsService.pullsGet();
});
bench("axios", async () => {
await axios.get(`${BASE_URL}/url`, {
headers: { "x-header-1": 123, "x-header-2": 456 },
async adapter() {
return { data: {} };
},
});
});
bench("superagent", async () => {
await superagent.get(`${BASE_URL}/url`).set("x-header-1", 123).set("x-header-2", 456).end();
});
});