@geekmidas/constructs 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/{AWSLambdaFunction-H65WfXLt.mjs → AWSLambdaFunction-C54a1doJ.mjs} +3 -3
  2. package/dist/{AWSLambdaFunction-H65WfXLt.mjs.map → AWSLambdaFunction-C54a1doJ.mjs.map} +1 -1
  3. package/dist/{AWSLambdaFunction-C-fuCLA3.cjs → AWSLambdaFunction-EPGY4s7i.cjs} +3 -3
  4. package/dist/{AWSLambdaFunction-C-fuCLA3.cjs.map → AWSLambdaFunction-EPGY4s7i.cjs.map} +1 -1
  5. package/dist/{AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs → AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs} +2 -2
  6. package/dist/{AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs.map → AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map} +1 -1
  7. package/dist/{AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs → AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs} +2 -2
  8. package/dist/{AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs.map → AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map} +1 -1
  9. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs → AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs} +2 -2
  10. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs.map → AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs.map} +1 -1
  11. package/dist/{AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs → AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs} +2 -2
  12. package/dist/{AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs.map → AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs.map} +1 -1
  13. package/dist/{AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs → AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs} +2 -2
  14. package/dist/{AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs.map} +1 -1
  15. package/dist/{AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs → AmazonApiGatewayV2EndpointAdaptor-jRrQrIdm.mjs} +2 -2
  16. package/dist/{AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs.map → AmazonApiGatewayV2EndpointAdaptor-jRrQrIdm.mjs.map} +1 -1
  17. package/dist/{BaseFunctionBuilder-B5gkW0Kt.mjs → BaseFunctionBuilder-Czi1Jwza.mjs} +2 -2
  18. package/dist/{BaseFunctionBuilder-B5gkW0Kt.mjs.map → BaseFunctionBuilder-Czi1Jwza.mjs.map} +1 -1
  19. package/dist/{BaseFunctionBuilder-C5Se7pdL.cjs → BaseFunctionBuilder-MYG3C9ug.cjs} +2 -2
  20. package/dist/{BaseFunctionBuilder-C5Se7pdL.cjs.map → BaseFunctionBuilder-MYG3C9ug.cjs.map} +1 -1
  21. package/dist/{Construct-BYSPikVm.cjs → Construct-Ba5cMxib.cjs} +2 -2
  22. package/dist/{Construct-BYSPikVm.cjs.map → Construct-Ba5cMxib.cjs.map} +1 -1
  23. package/dist/{Construct-LWeB1rSQ.mjs → Construct-DdyGHuag.mjs} +2 -2
  24. package/dist/{Construct-LWeB1rSQ.mjs.map → Construct-DdyGHuag.mjs.map} +1 -1
  25. package/dist/Construct.cjs +1 -1
  26. package/dist/Construct.mjs +1 -1
  27. package/dist/{Cron-Dy_HW2Vv.mjs → Cron-BxhGs5up.mjs} +3 -3
  28. package/dist/{Cron-Dy_HW2Vv.mjs.map → Cron-BxhGs5up.mjs.map} +1 -1
  29. package/dist/{Cron-Bi3QOge_.cjs → Cron-CGF4YAfM.cjs} +3 -3
  30. package/dist/{Cron-Bi3QOge_.cjs.map → Cron-CGF4YAfM.cjs.map} +1 -1
  31. package/dist/{CronBuilder-Dv_w7Yri.cjs → CronBuilder-CcxKRtVP.cjs} +4 -4
  32. package/dist/{CronBuilder-Dv_w7Yri.cjs.map → CronBuilder-CcxKRtVP.cjs.map} +1 -1
  33. package/dist/{CronBuilder-Bl3A2Zp4.mjs → CronBuilder-d2jh-IB2.mjs} +4 -4
  34. package/dist/{CronBuilder-Bl3A2Zp4.mjs.map → CronBuilder-d2jh-IB2.mjs.map} +1 -1
  35. package/dist/{Endpoint-BJo9Hhwm.cjs → Endpoint-BVGZXFyV.cjs} +3 -3
  36. package/dist/{Endpoint-BJo9Hhwm.cjs.map → Endpoint-BVGZXFyV.cjs.map} +1 -1
  37. package/dist/{Endpoint-B70_KKhu.mjs → Endpoint-CuOEswxJ.mjs} +3 -3
  38. package/dist/{Endpoint-B70_KKhu.mjs.map → Endpoint-CuOEswxJ.mjs.map} +1 -1
  39. package/dist/{EndpointBuilder-DeswNQdG.cjs → EndpointBuilder-Cgj1P_ra.cjs} +4 -4
  40. package/dist/{EndpointBuilder-DeswNQdG.cjs.map → EndpointBuilder-Cgj1P_ra.cjs.map} +1 -1
  41. package/dist/{EndpointBuilder-FyyoFTJ5.mjs → EndpointBuilder-DnCB1h1j.mjs} +4 -4
  42. package/dist/{EndpointBuilder-FyyoFTJ5.mjs.map → EndpointBuilder-DnCB1h1j.mjs.map} +1 -1
  43. package/dist/{EndpointFactory-eZc-XpNm.cjs → EndpointFactory-CYj6BYok.cjs} +2 -2
  44. package/dist/{EndpointFactory-eZc-XpNm.cjs.map → EndpointFactory-CYj6BYok.cjs.map} +1 -1
  45. package/dist/{EndpointFactory-CAneQs06.mjs → EndpointFactory-CbdxPCIH.mjs} +2 -2
  46. package/dist/{EndpointFactory-CAneQs06.mjs.map → EndpointFactory-CbdxPCIH.mjs.map} +1 -1
  47. package/dist/{Function-DfKsM5Kx.mjs → Function-BVHqIDp9.mjs} +2 -2
  48. package/dist/{Function-DfKsM5Kx.mjs.map → Function-BVHqIDp9.mjs.map} +1 -1
  49. package/dist/{Function-DagDbeXo.cjs → Function-DDZb1525.cjs} +2 -2
  50. package/dist/{Function-DagDbeXo.cjs.map → Function-DDZb1525.cjs.map} +1 -1
  51. package/dist/{FunctionBuilder-CVT7bG2o.mjs → FunctionBuilder-CrDYgfiI.mjs} +4 -4
  52. package/dist/{FunctionBuilder-CVT7bG2o.mjs.map → FunctionBuilder-CrDYgfiI.mjs.map} +1 -1
  53. package/dist/{FunctionBuilder-DXvG_XD-.cjs → FunctionBuilder-DswJ-9sD.cjs} +4 -4
  54. package/dist/{FunctionBuilder-DXvG_XD-.cjs.map → FunctionBuilder-DswJ-9sD.cjs.map} +1 -1
  55. package/dist/{FunctionExecutionWrapper-DkNycmOh.cjs → FunctionExecutionWrapper-BYI2bGTL.cjs} +2 -2
  56. package/dist/{FunctionExecutionWrapper-DkNycmOh.cjs.map → FunctionExecutionWrapper-BYI2bGTL.cjs.map} +1 -1
  57. package/dist/{FunctionExecutionWrapper-Bubnr0zA.mjs → FunctionExecutionWrapper-CLDh7Z2_.mjs} +2 -2
  58. package/dist/{FunctionExecutionWrapper-Bubnr0zA.mjs.map → FunctionExecutionWrapper-CLDh7Z2_.mjs.map} +1 -1
  59. package/dist/{HonoEndpointAdaptor-BusUWu1w.d.cts → HonoEndpointAdaptor-Bx9Y1bCZ.d.cts} +3 -3
  60. package/dist/{HonoEndpointAdaptor-CcvXzoYV.mjs → HonoEndpointAdaptor-NLlQk5iU.mjs} +4 -5
  61. package/dist/{HonoEndpointAdaptor-CcvXzoYV.mjs.map → HonoEndpointAdaptor-NLlQk5iU.mjs.map} +1 -1
  62. package/dist/{HonoEndpointAdaptor-DodwLM0-.cjs → HonoEndpointAdaptor-e6l9eVDU.cjs} +4 -5
  63. package/dist/{HonoEndpointAdaptor-DodwLM0-.cjs.map → HonoEndpointAdaptor-e6l9eVDU.cjs.map} +1 -1
  64. package/dist/{HonoEndpointAdaptor-g8xxh3tS.d.mts → HonoEndpointAdaptor-kb1ByjUL.d.mts} +3 -3
  65. package/dist/{Subscriber-DOt3svUC.cjs → Subscriber-BiHjVXtM.cjs} +2 -2
  66. package/dist/{Subscriber-DOt3svUC.cjs.map → Subscriber-BiHjVXtM.cjs.map} +1 -1
  67. package/dist/{Subscriber-kCHbH2fZ.mjs → Subscriber-BmPf9GFb.mjs} +2 -2
  68. package/dist/{Subscriber-kCHbH2fZ.mjs.map → Subscriber-BmPf9GFb.mjs.map} +1 -1
  69. package/dist/{SubscriberBuilder-Cj2u9k5Q.cjs → SubscriberBuilder-Cp1C-xtT.cjs} +2 -2
  70. package/dist/{SubscriberBuilder-Cj2u9k5Q.cjs.map → SubscriberBuilder-Cp1C-xtT.cjs.map} +1 -1
  71. package/dist/{SubscriberBuilder-DmxMU89X.mjs → SubscriberBuilder-DJPEeYDJ.mjs} +2 -2
  72. package/dist/{SubscriberBuilder-DmxMU89X.mjs.map → SubscriberBuilder-DJPEeYDJ.mjs.map} +1 -1
  73. package/dist/{TestEndpointAdaptor-wA-fmq4v.cjs → TestEndpointAdaptor-opEisC30.cjs} +2 -2
  74. package/dist/{TestEndpointAdaptor-wA-fmq4v.cjs.map → TestEndpointAdaptor-opEisC30.cjs.map} +1 -1
  75. package/dist/{TestEndpointAdaptor-1pPixE6y.mjs → TestEndpointAdaptor-oq5mfglM.mjs} +2 -2
  76. package/dist/{TestEndpointAdaptor-1pPixE6y.mjs.map → TestEndpointAdaptor-oq5mfglM.mjs.map} +1 -1
  77. package/dist/adaptors/aws.cjs +11 -11
  78. package/dist/adaptors/aws.mjs +11 -11
  79. package/dist/adaptors/hono.cjs +8 -8
  80. package/dist/adaptors/hono.d.cts +1 -1
  81. package/dist/adaptors/hono.d.mts +1 -1
  82. package/dist/adaptors/hono.mjs +8 -8
  83. package/dist/adaptors/testing.cjs +7 -7
  84. package/dist/adaptors/testing.mjs +7 -7
  85. package/dist/crons/Cron.cjs +6 -6
  86. package/dist/crons/Cron.mjs +6 -6
  87. package/dist/crons/CronBuilder.cjs +7 -7
  88. package/dist/crons/CronBuilder.mjs +7 -7
  89. package/dist/crons/index.cjs +7 -7
  90. package/dist/crons/index.d.mts +4 -4
  91. package/dist/crons/index.mjs +7 -7
  92. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  93. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  94. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  95. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  96. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  97. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  98. package/dist/endpoints/Endpoint.cjs +6 -6
  99. package/dist/endpoints/Endpoint.mjs +6 -6
  100. package/dist/endpoints/EndpointBuilder.cjs +7 -7
  101. package/dist/endpoints/EndpointBuilder.mjs +7 -7
  102. package/dist/endpoints/EndpointFactory.cjs +8 -8
  103. package/dist/endpoints/EndpointFactory.mjs +8 -8
  104. package/dist/endpoints/HonoEndpointAdaptor.cjs +8 -8
  105. package/dist/endpoints/HonoEndpointAdaptor.d.cts +1 -1
  106. package/dist/endpoints/HonoEndpointAdaptor.d.mts +1 -1
  107. package/dist/endpoints/HonoEndpointAdaptor.mjs +8 -8
  108. package/dist/endpoints/TestEndpointAdaptor.cjs +7 -7
  109. package/dist/endpoints/TestEndpointAdaptor.mjs +7 -7
  110. package/dist/endpoints/helpers.cjs +7 -7
  111. package/dist/endpoints/helpers.mjs +7 -7
  112. package/dist/endpoints/index.cjs +8 -8
  113. package/dist/endpoints/index.d.cts +2 -2
  114. package/dist/endpoints/index.d.mts +2 -2
  115. package/dist/endpoints/index.mjs +8 -8
  116. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  117. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  118. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  119. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  120. package/dist/functions/Function.cjs +2 -2
  121. package/dist/functions/Function.mjs +2 -2
  122. package/dist/functions/FunctionBuilder.cjs +4 -4
  123. package/dist/functions/FunctionBuilder.mjs +4 -4
  124. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  125. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  126. package/dist/functions/TestFunctionAdaptor.cjs +4 -4
  127. package/dist/functions/TestFunctionAdaptor.mjs +4 -4
  128. package/dist/functions/index.cjs +5 -5
  129. package/dist/functions/index.mjs +5 -5
  130. package/dist/functions-C6EK1xL6.mjs +8 -0
  131. package/dist/{functions-JhRsNoAZ.mjs.map → functions-C6EK1xL6.mjs.map} +1 -1
  132. package/dist/{functions-FCb-wWFC.cjs → functions-fTid0RMK.cjs} +2 -2
  133. package/dist/{functions-FCb-wWFC.cjs.map → functions-fTid0RMK.cjs.map} +1 -1
  134. package/dist/{helpers-DxxSpLfw.cjs → helpers-BcP1tXAi.cjs} +2 -2
  135. package/dist/{helpers-DxxSpLfw.cjs.map → helpers-BcP1tXAi.cjs.map} +1 -1
  136. package/dist/{helpers-C3B2lVrM.mjs → helpers-ByRTDO_m.mjs} +2 -2
  137. package/dist/{helpers-C3B2lVrM.mjs.map → helpers-ByRTDO_m.mjs.map} +1 -1
  138. package/dist/index.cjs +1 -1
  139. package/dist/index.mjs +1 -1
  140. package/dist/subscribers/Subscriber.cjs +2 -2
  141. package/dist/subscribers/Subscriber.mjs +2 -2
  142. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  143. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  144. package/dist/subscribers/index.cjs +3 -3
  145. package/dist/subscribers/index.d.cts +2 -2
  146. package/dist/subscribers/index.mjs +3 -3
  147. package/package.json +64 -13
  148. package/src/Construct.ts +3 -3
  149. package/src/__benchmarks__/endpoint.bench.ts +494 -0
  150. package/src/__benchmarks__/hono-server.bench.ts +249 -0
  151. package/src/endpoints/HonoEndpointAdaptor.ts +1 -2
  152. package/dist/functions-JhRsNoAZ.mjs +0 -8
@@ -0,0 +1,249 @@
1
+ import { LogLevel } from '@geekmidas/logger';
2
+ import { ConsoleLogger } from '@geekmidas/logger/console';
3
+ import { Hono } from 'hono';
4
+ import { bench, describe } from 'vitest';
5
+ import { z } from 'zod';
6
+ import { e } from '../endpoints';
7
+ import type { Endpoint } from '../endpoints/Endpoint';
8
+ import { HonoEndpoint } from '../endpoints/HonoEndpointAdaptor';
9
+
10
+ /**
11
+ * E2E benchmarks with Hono app.request() - tests the full request/response cycle
12
+ * through the Hono framework without network overhead.
13
+ */
14
+
15
+ // Silent logger for benchmarks - no console output
16
+ const silentLogger = new ConsoleLogger({}, LogLevel.Silent);
17
+ const api = e.logger(silentLogger);
18
+
19
+ // Helper to create a Hono app from endpoints
20
+ function createApp(
21
+ endpoints: Endpoint<any, any, any, any, any, any, any, any, any, any, any>[],
22
+ ): Hono {
23
+ const app = new Hono();
24
+
25
+ // Silent error handler for benchmarks
26
+ app.onError((err, c) => {
27
+ return c.json({ error: err.message }, 500);
28
+ });
29
+
30
+ // Add routes using a mock service discovery
31
+ const mockServiceDiscovery = {
32
+ register: async () => ({}),
33
+ } as any;
34
+
35
+ HonoEndpoint.addRoutes(endpoints, mockServiceDiscovery, app, {
36
+ docsPath: false,
37
+ });
38
+
39
+ return app;
40
+ }
41
+
42
+ describe('Hono E2E - Simple Endpoints', () => {
43
+ const healthEndpoint = api
44
+ .get('/health')
45
+ .handle(async () => ({ status: 'ok' }));
46
+
47
+ const app = createApp([healthEndpoint]);
48
+
49
+ bench('GET /health - minimal response', async () => {
50
+ await app.request('/health');
51
+ });
52
+ });
53
+
54
+ describe('Hono E2E - CRUD Operations', () => {
55
+ const endpoints = [
56
+ api
57
+ .get('/users')
58
+ .output(z.array(z.object({ id: z.string(), name: z.string() })))
59
+ .handle(async () => [
60
+ { id: '1', name: 'Alice' },
61
+ { id: '2', name: 'Bob' },
62
+ ]),
63
+
64
+ api
65
+ .get('/users/:id')
66
+ .params(z.object({ id: z.string() }))
67
+ .output(z.object({ id: z.string(), name: z.string() }))
68
+ .handle(async ({ params }) => ({ id: params.id, name: 'User' })),
69
+
70
+ api
71
+ .post('/users')
72
+ .body(z.object({ name: z.string(), email: z.string().email() }))
73
+ .output(z.object({ id: z.string() }))
74
+ .handle(async () => ({ id: crypto.randomUUID() })),
75
+
76
+ api
77
+ .put('/users/:id')
78
+ .params(z.object({ id: z.string() }))
79
+ .body(z.object({ name: z.string() }))
80
+ .output(z.object({ success: z.boolean() }))
81
+ .handle(async () => ({ success: true })),
82
+
83
+ api
84
+ .delete('/users/:id')
85
+ .params(z.object({ id: z.string() }))
86
+ .output(z.object({ deleted: z.boolean() }))
87
+ .handle(async () => ({ deleted: true })),
88
+ ];
89
+
90
+ const app = createApp(endpoints);
91
+
92
+ bench('GET /users - list response', async () => {
93
+ await app.request('/users');
94
+ });
95
+
96
+ bench('GET /users/:id - path params', async () => {
97
+ await app.request('/users/123');
98
+ });
99
+
100
+ bench('POST /users - body validation', async () => {
101
+ await app.request('/users', {
102
+ method: 'POST',
103
+ headers: { 'Content-Type': 'application/json' },
104
+ body: JSON.stringify({ name: 'Test', email: 'test@example.com' }),
105
+ });
106
+ });
107
+
108
+ bench('PUT /users/:id - params + body', async () => {
109
+ await app.request('/users/123', {
110
+ method: 'PUT',
111
+ headers: { 'Content-Type': 'application/json' },
112
+ body: JSON.stringify({ name: 'Updated' }),
113
+ });
114
+ });
115
+
116
+ bench('DELETE /users/:id - params only', async () => {
117
+ await app.request('/users/123', { method: 'DELETE' });
118
+ });
119
+ });
120
+
121
+ describe('Hono E2E - Complex Validation', () => {
122
+ const complexEndpoint = api
123
+ .post('/orders')
124
+ .body(
125
+ z.object({
126
+ customer: z.object({
127
+ name: z.string(),
128
+ email: z.string().email(),
129
+ address: z.object({
130
+ street: z.string(),
131
+ city: z.string(),
132
+ zip: z.string(),
133
+ }),
134
+ }),
135
+ items: z.array(
136
+ z.object({
137
+ productId: z.string(),
138
+ quantity: z.number().int().positive(),
139
+ price: z.number().positive(),
140
+ }),
141
+ ),
142
+ payment: z.object({
143
+ method: z.enum(['credit_card', 'paypal', 'bank_transfer']),
144
+ details: z.record(z.string(), z.string()),
145
+ }),
146
+ }),
147
+ )
148
+ .output(z.object({ orderId: z.string(), total: z.number() }))
149
+ .handle(async () => ({ orderId: 'order-123', total: 99.99 }));
150
+
151
+ const app = createApp([complexEndpoint]);
152
+
153
+ bench('POST /orders - complex nested body', async () => {
154
+ await app.request('/orders', {
155
+ method: 'POST',
156
+ headers: { 'Content-Type': 'application/json' },
157
+ body: JSON.stringify({
158
+ customer: {
159
+ name: 'John Doe',
160
+ email: 'john@example.com',
161
+ address: {
162
+ street: '123 Main St',
163
+ city: 'Boston',
164
+ zip: '02101',
165
+ },
166
+ },
167
+ items: [
168
+ { productId: 'prod-1', quantity: 2, price: 29.99 },
169
+ { productId: 'prod-2', quantity: 1, price: 39.99 },
170
+ ],
171
+ payment: {
172
+ method: 'credit_card',
173
+ details: { last4: '4242' },
174
+ },
175
+ }),
176
+ });
177
+ });
178
+ });
179
+
180
+ describe('Hono E2E - Query Parameters', () => {
181
+ const searchEndpoint = api
182
+ .get('/search')
183
+ .query(
184
+ z.object({
185
+ q: z.string(),
186
+ page: z.coerce.number().default(1),
187
+ limit: z.coerce.number().default(10),
188
+ sort: z.enum(['asc', 'desc']).optional(),
189
+ filters: z.string().optional(),
190
+ }),
191
+ )
192
+ .output(
193
+ z.object({
194
+ results: z.array(z.unknown()),
195
+ total: z.number(),
196
+ page: z.number(),
197
+ }),
198
+ )
199
+ .handle(async ({ query }) => ({
200
+ results: [],
201
+ total: 0,
202
+ page: query.page,
203
+ }));
204
+
205
+ const app = createApp([searchEndpoint]);
206
+
207
+ bench('GET /search - with query params', async () => {
208
+ await app.request('/search?q=test&page=2&limit=20&sort=desc');
209
+ });
210
+ });
211
+
212
+ describe('Hono E2E - Concurrent Requests', () => {
213
+ const endpoints = [
214
+ api.get('/health').handle(async () => ({ status: 'ok' })),
215
+ api.get('/users').handle(async () => [{ id: '1' }]),
216
+ api
217
+ .get('/users/:id')
218
+ .params(z.object({ id: z.string() }))
219
+ .handle(async () => ({ id: '1' })),
220
+ ];
221
+
222
+ const app = createApp(endpoints);
223
+
224
+ bench('10 concurrent requests', async () => {
225
+ await Promise.all([
226
+ app.request('/health'),
227
+ app.request('/users'),
228
+ app.request('/users/1'),
229
+ app.request('/users/2'),
230
+ app.request('/users/3'),
231
+ app.request('/health'),
232
+ app.request('/users'),
233
+ app.request('/users/4'),
234
+ app.request('/users/5'),
235
+ app.request('/health'),
236
+ ]);
237
+ });
238
+
239
+ bench('50 concurrent requests', async () => {
240
+ const requests = Array.from({ length: 50 }, (_, i) =>
241
+ i % 3 === 0
242
+ ? app.request('/health')
243
+ : i % 3 === 1
244
+ ? app.request('/users')
245
+ : app.request(`/users/${i}`),
246
+ );
247
+ await Promise.all(requests);
248
+ });
249
+ });
@@ -561,8 +561,7 @@ export class HonoEndpoint<
561
561
  );
562
562
 
563
563
  return c.json(openApiSchema);
564
- } catch (error) {
565
- console.error('Error generating OpenAPI schema:', error);
564
+ } catch {
566
565
  return c.json(
567
566
  { error: 'Failed to generate OpenAPI documentation' },
568
567
  500,
@@ -1,8 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-CVT7bG2o.mjs";
2
-
3
- //#region src/functions/index.ts
4
- const f = new FunctionBuilder();
5
-
6
- //#endregion
7
- export { f };
8
- //# sourceMappingURL=functions-JhRsNoAZ.mjs.map