@geekmidas/constructs 7.0.1 → 10.0.0-alpha.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.
- package/README.md +71 -44
- package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts → AWSScheduledFunction-BvFvBsBN.d.cts} +10 -5
- package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts.map → AWSScheduledFunction-BvFvBsBN.d.cts.map} +1 -1
- package/dist/{AWSScheduledFunction-CTIa90EH.d.cts → AWSScheduledFunction-CVccZO-L.d.mts} +10 -5
- package/dist/{AWSScheduledFunction-CTIa90EH.d.cts.map → AWSScheduledFunction-CVccZO-L.d.mts.map} +1 -1
- package/dist/{AWSScheduledFunction-CufMMhGB.mjs → AWSScheduledFunction-Db1lttJH.mjs} +3 -3
- package/dist/{AWSScheduledFunction-CufMMhGB.mjs.map → AWSScheduledFunction-Db1lttJH.mjs.map} +1 -1
- package/dist/{AWSScheduledFunction-DbkDr8CA.cjs → AWSScheduledFunction-qu4ieRZR.cjs} +9 -9
- package/dist/{AWSScheduledFunction-DbkDr8CA.cjs.map → AWSScheduledFunction-qu4ieRZR.cjs.map} +1 -1
- package/dist/{Construct-_1wX7p_Y.d.cts → Construct-B-xc0SE9.d.mts} +27 -5
- package/dist/Construct-B-xc0SE9.d.mts.map +1 -0
- package/dist/{Construct-r0U2zBwW.mjs → Construct-HmWM6YYu.mjs} +4 -3
- package/dist/Construct-HmWM6YYu.mjs.map +1 -0
- package/dist/{Construct-DCMuYOox.d.mts → Construct-WhCXIOPV.d.cts} +29 -7
- package/dist/Construct-WhCXIOPV.d.cts.map +1 -0
- package/dist/{Construct-vXMZJgRp.cjs → Construct-roId57cU.cjs} +7 -43
- package/dist/Construct-roId57cU.cjs.map +1 -0
- package/dist/{lazyAccessors-DmTG8sQH.cjs → Endpoint-BBkV6l0k.cjs} +869 -1079
- package/dist/Endpoint-BBkV6l0k.cjs.map +1 -0
- package/dist/{lazyAccessors-DfqZR6C4.mjs → Endpoint-BGwpNEX4.mjs} +840 -1003
- package/dist/Endpoint-BGwpNEX4.mjs.map +1 -0
- package/dist/{Endpoint-CAzNbDEt.d.cts → Endpoint-BnxZqIX-.d.cts} +53 -4
- package/dist/Endpoint-BnxZqIX-.d.cts.map +1 -0
- package/dist/{Endpoint-CLPSIl6S.d.mts → Endpoint-ROcXU-eH.d.mts} +55 -6
- package/dist/Endpoint-ROcXU-eH.d.mts.map +1 -0
- package/dist/EndpointFactory-DYoGLaIT.cjs +850 -0
- package/dist/EndpointFactory-DYoGLaIT.cjs.map +1 -0
- package/dist/EndpointFactory-Di0X9AWp.mjs +808 -0
- package/dist/EndpointFactory-Di0X9AWp.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-DJDT3PMx.mjs → HonoEndpointAdaptor-DFKIIG2o.mjs} +5 -4
- package/dist/HonoEndpointAdaptor-DFKIIG2o.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-CkJENANP.cjs → HonoEndpointAdaptor-wMsCyMgt.cjs} +24 -23
- package/dist/HonoEndpointAdaptor-wMsCyMgt.cjs.map +1 -0
- package/dist/{Queue-DaxjwmOQ.d.cts → Queue-D6WeziRD.d.cts} +43 -4
- package/dist/Queue-D6WeziRD.d.cts.map +1 -0
- package/dist/{Queue-HBDf0fqz.d.mts → Queue-DpUeqdC8.d.mts} +43 -4
- package/dist/Queue-DpUeqdC8.d.mts.map +1 -0
- package/dist/{Subscriber-B69ngPwl.d.cts → Subscriber-4rBJgDKI.d.mts} +9 -4
- package/dist/{Subscriber-B69ngPwl.d.cts.map → Subscriber-4rBJgDKI.d.mts.map} +1 -1
- package/dist/{Subscriber-D8Xm-86W.d.mts → Subscriber-DVQowdyj.d.cts} +11 -6
- package/dist/Subscriber-DVQowdyj.d.cts.map +1 -0
- package/dist/{Topic-C5ZMfveW.d.cts → Topic-Ohx9dvWr.d.cts} +33 -2
- package/dist/Topic-Ohx9dvWr.d.cts.map +1 -0
- package/dist/{Topic-DT10AqHk.d.mts → Topic-cmy2jOUy.d.mts} +33 -2
- package/dist/Topic-cmy2jOUy.d.mts.map +1 -0
- package/dist/adaptors/aws.cjs +39 -26
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +24 -16
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +25 -17
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +26 -14
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +9 -6
- package/dist/adaptors/hono.d.cts +7 -6
- package/dist/adaptors/hono.d.cts.map +1 -1
- package/dist/adaptors/hono.d.mts +8 -7
- package/dist/adaptors/hono.d.mts.map +1 -1
- package/dist/adaptors/hono.mjs +9 -6
- package/dist/adaptors/testing.cjs +18 -14
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +7 -6
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +11 -10
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +10 -7
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/auth.cjs +165 -0
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.d.cts +108 -0
- package/dist/auth.d.cts.map +1 -0
- package/dist/auth.d.mts +108 -0
- package/dist/auth.d.mts.map +1 -0
- package/dist/auth.mjs +164 -0
- package/dist/auth.mjs.map +1 -0
- package/dist/cache-0ANvRQnD.mjs +51 -0
- package/dist/cache-0ANvRQnD.mjs.map +1 -0
- package/dist/cache-3WSvAulx.cjs +57 -0
- package/dist/cache-3WSvAulx.cjs.map +1 -0
- package/dist/cache-CdQ7OLpR.d.cts +47 -0
- package/dist/cache-CdQ7OLpR.d.cts.map +1 -0
- package/dist/cache-DYoJFcfd.d.mts +47 -0
- package/dist/cache-DYoJFcfd.d.mts.map +1 -0
- package/dist/cache.cjs +3 -0
- package/dist/cache.d.cts +3 -0
- package/dist/cache.d.mts +3 -0
- package/dist/cache.mjs +3 -0
- package/dist/chunk-DWy1uDak.cjs +39 -0
- package/dist/clone-DblgEZZa.mjs +39 -0
- package/dist/clone-DblgEZZa.mjs.map +1 -0
- package/dist/clone-Dy0cR2SZ.cjs +45 -0
- package/dist/clone-Dy0cR2SZ.cjs.map +1 -0
- package/dist/construct-interface-BfjcOD_E.cjs +117 -0
- package/dist/construct-interface-BfjcOD_E.cjs.map +1 -0
- package/dist/construct-interface-BqwRNYA2.d.mts +131 -0
- package/dist/construct-interface-BqwRNYA2.d.mts.map +1 -0
- package/dist/construct-interface-D2nNkHUN.d.cts +131 -0
- package/dist/construct-interface-D2nNkHUN.d.cts.map +1 -0
- package/dist/construct-interface-Z4CpS8tK.mjs +81 -0
- package/dist/construct-interface-Z4CpS8tK.mjs.map +1 -0
- package/dist/construct-interface.cjs +8 -0
- package/dist/construct-interface.d.cts +2 -0
- package/dist/construct-interface.d.mts +2 -0
- package/dist/construct-interface.mjs +3 -0
- package/dist/credential.cjs +96 -0
- package/dist/credential.cjs.map +1 -0
- package/dist/credential.d.cts +61 -0
- package/dist/credential.d.cts.map +1 -0
- package/dist/credential.d.mts +61 -0
- package/dist/credential.d.mts.map +1 -0
- package/dist/credential.mjs +94 -0
- package/dist/credential.mjs.map +1 -0
- package/dist/crons/index.cjs +39 -37
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +21 -8
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +29 -13
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +37 -36
- package/dist/crons/index.mjs.map +1 -1
- package/dist/database/kysely.cjs +181 -0
- package/dist/database/kysely.cjs.map +1 -0
- package/dist/database/kysely.d.cts +152 -0
- package/dist/database/kysely.d.cts.map +1 -0
- package/dist/database/kysely.d.mts +152 -0
- package/dist/database/kysely.d.mts.map +1 -0
- package/dist/database/kysely.mjs +180 -0
- package/dist/database/kysely.mjs.map +1 -0
- package/dist/email.cjs +59 -0
- package/dist/email.cjs.map +1 -0
- package/dist/email.d.cts +50 -0
- package/dist/email.d.cts.map +1 -0
- package/dist/email.d.mts +50 -0
- package/dist/email.d.mts.map +1 -0
- package/dist/email.mjs +58 -0
- package/dist/email.mjs.map +1 -0
- package/dist/endpoints/index.cjs +21 -747
- package/dist/endpoints/index.d.cts +7 -343
- package/dist/endpoints/index.d.mts +7 -342
- package/dist/endpoints/index.mjs +11 -738
- package/dist/file-server.cjs +154 -0
- package/dist/file-server.cjs.map +1 -0
- package/dist/file-server.d.cts +156 -0
- package/dist/file-server.d.cts.map +1 -0
- package/dist/file-server.d.mts +156 -0
- package/dist/file-server.d.mts.map +1 -0
- package/dist/file-server.mjs +152 -0
- package/dist/file-server.mjs.map +1 -0
- package/dist/functions/index.cjs +4 -2
- package/dist/functions/index.d.cts +3 -2
- package/dist/functions/index.d.mts +3 -2
- package/dist/functions/index.mjs +4 -2
- package/dist/{functions-B-qt91O7.mjs → functions-CvT_q7Y4.mjs} +55 -51
- package/dist/functions-CvT_q7Y4.mjs.map +1 -0
- package/dist/{functions-C8i1kCMM.cjs → functions-DukjG8ov.cjs} +62 -57
- package/dist/functions-DukjG8ov.cjs.map +1 -0
- package/dist/index-7OcOWe75.d.cts +419 -0
- package/dist/index-7OcOWe75.d.cts.map +1 -0
- package/dist/index-Bt-F7u8L.d.mts +419 -0
- package/dist/index-Bt-F7u8L.d.mts.map +1 -0
- package/dist/{index-DP6fqv0I.d.mts → index-CPeqtKgq.d.mts} +48 -19
- package/dist/index-CPeqtKgq.d.mts.map +1 -0
- package/dist/{index-BGeTScmi.d.cts → index-Dadljnh_.d.cts} +36 -9
- package/dist/index-Dadljnh_.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/lazyAccessors-DM6HcXQk.mjs +175 -0
- package/dist/lazyAccessors-DM6HcXQk.mjs.map +1 -0
- package/dist/lazyAccessors-DrJj8NpA.cjs +223 -0
- package/dist/lazyAccessors-DrJj8NpA.cjs.map +1 -0
- package/dist/object-storage.cjs +48 -0
- package/dist/object-storage.cjs.map +1 -0
- package/dist/object-storage.d.cts +36 -0
- package/dist/object-storage.d.cts.map +1 -0
- package/dist/object-storage.d.mts +36 -0
- package/dist/object-storage.d.mts.map +1 -0
- package/dist/object-storage.mjs +47 -0
- package/dist/object-storage.mjs.map +1 -0
- package/dist/{processAudits-CKjjivyz.cjs → processAudits-Bc8rz6Ev.cjs} +3 -3
- package/dist/{processAudits-CKjjivyz.cjs.map → processAudits-Bc8rz6Ev.cjs.map} +1 -1
- package/dist/{processAudits-ySnizdMG.mjs → processAudits-D89tICM4.mjs} +1 -1
- package/dist/{processAudits-ySnizdMG.mjs.map → processAudits-D89tICM4.mjs.map} +1 -1
- package/dist/{publisher-BrFOF847.mjs → publisher-CGEo8UKD.mjs} +1 -1
- package/dist/{publisher-BrFOF847.mjs.map → publisher-CGEo8UKD.mjs.map} +1 -1
- package/dist/{publisher-lFQleddL.cjs → publisher-CqGsXB2X.cjs} +1 -1
- package/dist/{publisher-lFQleddL.cjs.map → publisher-CqGsXB2X.cjs.map} +1 -1
- package/dist/queue/index.cjs +92 -30
- package/dist/queue/index.cjs.map +1 -1
- package/dist/queue/index.d.cts +19 -4
- package/dist/queue/index.d.cts.map +1 -1
- package/dist/queue/index.d.mts +22 -6
- package/dist/queue/index.d.mts.map +1 -1
- package/dist/queue/index.mjs +90 -29
- package/dist/queue/index.mjs.map +1 -1
- package/dist/rest-api.cjs +187 -0
- package/dist/rest-api.cjs.map +1 -0
- package/dist/rest-api.d.cts +221 -0
- package/dist/rest-api.d.cts.map +1 -0
- package/dist/rest-api.d.mts +221 -0
- package/dist/rest-api.d.mts.map +1 -0
- package/dist/rest-api.mjs +186 -0
- package/dist/rest-api.mjs.map +1 -0
- package/dist/site.cjs +48 -0
- package/dist/site.cjs.map +1 -0
- package/dist/site.d.cts +101 -0
- package/dist/site.d.cts.map +1 -0
- package/dist/site.d.mts +101 -0
- package/dist/site.d.mts.map +1 -0
- package/dist/site.mjs +47 -0
- package/dist/site.mjs.map +1 -0
- package/dist/subscribers/index.cjs +35 -27
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +20 -5
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +23 -7
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +34 -27
- package/dist/subscribers/index.mjs.map +1 -1
- package/dist/surfaceEnv-BFXEms2f.cjs +39 -0
- package/dist/surfaceEnv-BFXEms2f.cjs.map +1 -0
- package/dist/surfaceEnv-C3Ktahea.mjs +27 -0
- package/dist/surfaceEnv-C3Ktahea.mjs.map +1 -0
- package/dist/{telemetry-3vdxGn4q.d.mts → telemetry-C3L0iS28.d.cts} +2 -2
- package/dist/{telemetry-3vdxGn4q.d.mts.map → telemetry-C3L0iS28.d.cts.map} +1 -1
- package/dist/{telemetry-Dqx-D3F7.d.cts → telemetry-D7bVFLGi.d.mts} +2 -2
- package/dist/{telemetry-Dqx-D3F7.d.cts.map → telemetry-D7bVFLGi.d.mts.map} +1 -1
- package/dist/topic/index.cjs +56 -13
- package/dist/topic/index.cjs.map +1 -1
- package/dist/topic/index.d.cts +2 -2
- package/dist/topic/index.d.cts.map +1 -1
- package/dist/topic/index.d.mts +2 -2
- package/dist/topic/index.d.mts.map +1 -1
- package/dist/topic/index.mjs +54 -12
- package/dist/topic/index.mjs.map +1 -1
- package/dist/{types-BDNGr7pv.d.mts → types-BlAkSuGI.d.cts} +1 -1
- package/dist/{types-BDNGr7pv.d.mts.map → types-BlAkSuGI.d.cts.map} +1 -1
- package/dist/{types-BdAaYDvd.d.cts → types-aKksMEWL.d.mts} +1 -1
- package/dist/{types-BdAaYDvd.d.cts.map → types-aKksMEWL.d.mts.map} +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +155 -23
- package/CHANGELOG.md +0 -366
- package/dist/Construct-DCMuYOox.d.mts.map +0 -1
- package/dist/Construct-_1wX7p_Y.d.cts.map +0 -1
- package/dist/Construct-r0U2zBwW.mjs.map +0 -1
- package/dist/Construct-vXMZJgRp.cjs.map +0 -1
- package/dist/Endpoint-CAzNbDEt.d.cts.map +0 -1
- package/dist/Endpoint-CLPSIl6S.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-CkJENANP.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-DJDT3PMx.mjs.map +0 -1
- package/dist/Queue-DaxjwmOQ.d.cts.map +0 -1
- package/dist/Queue-HBDf0fqz.d.mts.map +0 -1
- package/dist/Subscriber-D8Xm-86W.d.mts.map +0 -1
- package/dist/Topic-C5ZMfveW.d.cts.map +0 -1
- package/dist/Topic-DT10AqHk.d.mts.map +0 -1
- package/dist/endpoints/index.cjs.map +0 -1
- package/dist/endpoints/index.d.cts.map +0 -1
- package/dist/endpoints/index.d.mts.map +0 -1
- package/dist/endpoints/index.mjs.map +0 -1
- package/dist/functions-B-qt91O7.mjs.map +0 -1
- package/dist/functions-C8i1kCMM.cjs.map +0 -1
- package/dist/index-BGeTScmi.d.cts.map +0 -1
- package/dist/index-DP6fqv0I.d.mts.map +0 -1
- package/dist/lazyAccessors-DfqZR6C4.mjs.map +0 -1
- package/dist/lazyAccessors-DmTG8sQH.cjs.map +0 -1
- package/src/Construct.ts +0 -204
- package/src/__benchmarks__/build-time-optimization.bench.ts +0 -274
- package/src/__benchmarks__/endpoint.bench.ts +0 -494
- package/src/__benchmarks__/fixtures.ts +0 -241
- package/src/__benchmarks__/hono-adaptor.bench.ts +0 -533
- package/src/__benchmarks__/hono-server.bench.ts +0 -249
- package/src/__benchmarks__/response-builder.bench.ts +0 -428
- package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +0 -319
- package/src/__benchmarks__/strategies/strategy-c-middleware.ts +0 -530
- package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +0 -567
- package/src/__tests__/Construct.environment.spec.ts +0 -704
- package/src/__tests__/publisher.setting.spec.ts +0 -508
- package/src/__tests__/publisher.spec.ts +0 -452
- package/src/adaptors/aws.ts +0 -6
- package/src/adaptors/hono.ts +0 -1
- package/src/adaptors/testing.ts +0 -11
- package/src/crons/AWSScheduledFunction.ts +0 -73
- package/src/crons/Cron.ts +0 -149
- package/src/crons/CronBuilder.ts +0 -271
- package/src/crons/__tests__/AWSScheduledFunction.spec.ts +0 -152
- package/src/crons/__tests__/Cron.spec.ts +0 -464
- package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +0 -227
- package/src/crons/index.ts +0 -12
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +0 -677
- package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +0 -105
- package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +0 -97
- package/src/endpoints/Authorizer.ts +0 -152
- package/src/endpoints/Endpoint.ts +0 -1287
- package/src/endpoints/EndpointBuilder.ts +0 -758
- package/src/endpoints/EndpointFactory.ts +0 -1148
- package/src/endpoints/HonoEndpointAdaptor.ts +0 -677
- package/src/endpoints/MswEndpointAdaptor.ts +0 -226
- package/src/endpoints/TestEndpointAdaptor.ts +0 -422
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +0 -499
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +0 -560
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +0 -1304
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +0 -626
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +0 -732
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +0 -296
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +0 -951
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.responseType.spec.ts +0 -111
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +0 -307
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +0 -629
- package/src/endpoints/__tests__/Authorizer.spec.ts +0 -286
- package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +0 -207
- package/src/endpoints/__tests__/Endpoint.headers.spec.ts +0 -187
- package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +0 -175
- package/src/endpoints/__tests__/Endpoint.spec.ts +0 -857
- package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +0 -448
- package/src/endpoints/__tests__/EndpointBuilder.responseType.spec.ts +0 -47
- package/src/endpoints/__tests__/EndpointBuilder.spec.ts +0 -523
- package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +0 -492
- package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +0 -509
- package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +0 -190
- package/src/endpoints/__tests__/EndpointFactory.spec.ts +0 -479
- package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +0 -155
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +0 -703
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +0 -632
- package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +0 -577
- package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +0 -1067
- package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +0 -317
- package/src/endpoints/__tests__/HonoEndpointAdaptor.pgboss-publisher.spec.ts +0 -289
- package/src/endpoints/__tests__/HonoEndpointAdaptor.responseType.spec.ts +0 -128
- package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +0 -1207
- package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +0 -211
- package/src/endpoints/__tests__/ResponseBuilder.spec.ts +0 -235
- package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +0 -602
- package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +0 -1044
- package/src/endpoints/__tests__/__snapshots__/HonoEndpointAdaptor.spec.ts.snap +0 -54
- package/src/endpoints/__tests__/endpoint-types.test.ts +0 -88
- package/src/endpoints/__tests__/helpers.spec.ts +0 -37
- package/src/endpoints/__tests__/lazyAccessors.spec.ts +0 -330
- package/src/endpoints/__tests__/processAudits.spec.ts +0 -631
- package/src/endpoints/audit.ts +0 -87
- package/src/endpoints/helpers.ts +0 -98
- package/src/endpoints/index.ts +0 -42
- package/src/endpoints/lazyAccessors.ts +0 -241
- package/src/endpoints/parseHonoQuery.ts +0 -16
- package/src/endpoints/parseQueryParams.ts +0 -32
- package/src/endpoints/processAudits.ts +0 -371
- package/src/endpoints/rls.ts +0 -67
- package/src/functions/AWSLambdaFunction.ts +0 -348
- package/src/functions/BaseFunctionBuilder.ts +0 -201
- package/src/functions/Function.ts +0 -238
- package/src/functions/FunctionBuilder.ts +0 -391
- package/src/functions/FunctionExecutionWrapper.ts +0 -216
- package/src/functions/TestFunctionAdaptor.ts +0 -217
- package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +0 -513
- package/src/functions/__tests__/Function.audits.spec.ts +0 -393
- package/src/functions/__tests__/Function.spec.ts +0 -477
- package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +0 -207
- package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +0 -480
- package/src/functions/index.ts +0 -12
- package/src/index.ts +0 -23
- package/src/publisher.ts +0 -93
- package/src/queue/AWSLambdaQueueAdaptor.ts +0 -162
- package/src/queue/Queue.ts +0 -128
- package/src/queue/QueueBuilder.ts +0 -115
- package/src/queue/TestQueueAdaptor.ts +0 -63
- package/src/queue/__tests__/QueueBuilder.spec.ts +0 -137
- package/src/queue/index.ts +0 -12
- package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +0 -342
- package/src/subscribers/Subscriber.ts +0 -117
- package/src/subscribers/SubscriberBuilder.ts +0 -186
- package/src/subscribers/TestSubscriberAdaptor.ts +0 -133
- package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +0 -1018
- package/src/subscribers/__tests__/Subscriber.spec.ts +0 -430
- package/src/subscribers/__tests__/TestSubscriberAdaptor.spec.ts +0 -652
- package/src/subscribers/index.ts +0 -6
- package/src/telemetry.ts +0 -103
- package/src/topic/Topic.ts +0 -103
- package/src/topic/TopicBuilder.ts +0 -51
- package/src/topic/__tests__/TopicBuilder.spec.ts +0 -82
- package/src/topic/index.ts +0 -11
- package/src/types.ts +0 -13
- package/test.ts +0 -91
- package/tsconfig.json +0 -9
- package/tsdown.config.ts +0 -34
|
@@ -1,533 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck - Experimental benchmark file
|
|
2
|
-
/**
|
|
3
|
-
* Hono Adaptor Performance Benchmarks
|
|
4
|
-
*
|
|
5
|
-
* Run with: pnpm bench packages/constructs/src/__benchmarks__/hono-adaptor.bench.ts
|
|
6
|
-
*
|
|
7
|
-
* Compares:
|
|
8
|
-
* - Current HonoEndpoint implementation
|
|
9
|
-
* - Strategy A: Lazy Service Resolution
|
|
10
|
-
* - Strategy C: Middleware Composition
|
|
11
|
-
* - Strategy D: Opt-in Event Publishing
|
|
12
|
-
* - Combined: Fully Optimized (A + C + D)
|
|
13
|
-
*/
|
|
14
|
-
import { EnvironmentParser } from '@geekmidas/envkit';
|
|
15
|
-
import { ServiceDiscovery } from '@geekmidas/services';
|
|
16
|
-
import { Hono } from 'hono';
|
|
17
|
-
import { bench, describe } from 'vitest';
|
|
18
|
-
import { HonoEndpoint } from '../endpoints/HonoEndpointAdaptor';
|
|
19
|
-
import { allEndpoints, mockLogger, simpleEndpoint } from './fixtures';
|
|
20
|
-
import { OptimizedHonoEndpoint } from './strategies/strategy-a-lazy-services';
|
|
21
|
-
import {
|
|
22
|
-
MiddlewareHonoEndpoint,
|
|
23
|
-
MinimalHonoEndpoint,
|
|
24
|
-
} from './strategies/strategy-c-middleware';
|
|
25
|
-
import {
|
|
26
|
-
FullyOptimizedHonoEndpoint,
|
|
27
|
-
OptInEventHonoEndpoint,
|
|
28
|
-
} from './strategies/strategy-d-opt-in-events';
|
|
29
|
-
|
|
30
|
-
// ============================================================================
|
|
31
|
-
// Test Setup
|
|
32
|
-
// ============================================================================
|
|
33
|
-
|
|
34
|
-
const envParser = new EnvironmentParser({});
|
|
35
|
-
|
|
36
|
-
function createTestApp(
|
|
37
|
-
endpoints: typeof allEndpoints,
|
|
38
|
-
adaptor: typeof HonoEndpoint = HonoEndpoint,
|
|
39
|
-
) {
|
|
40
|
-
const app = new Hono();
|
|
41
|
-
const serviceDiscovery = ServiceDiscovery.getInstance(envParser);
|
|
42
|
-
adaptor.addRoutes(endpoints as any, serviceDiscovery as any, app);
|
|
43
|
-
return app;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Pre-create apps for benchmarks (measure request handling, not setup)
|
|
47
|
-
const currentApp = createTestApp(allEndpoints, HonoEndpoint);
|
|
48
|
-
const lazyServicesApp = createTestApp(allEndpoints, OptimizedHonoEndpoint);
|
|
49
|
-
const middlewareApp = createTestApp(allEndpoints, MiddlewareHonoEndpoint);
|
|
50
|
-
const _minimalApp = createTestApp(allEndpoints, MinimalHonoEndpoint);
|
|
51
|
-
const optInEventsApp = createTestApp(allEndpoints, OptInEventHonoEndpoint);
|
|
52
|
-
const fullyOptimizedApp = createTestApp(
|
|
53
|
-
allEndpoints,
|
|
54
|
-
FullyOptimizedHonoEndpoint,
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
// Simple apps for focused comparison
|
|
58
|
-
const currentSimpleApp = createTestApp([simpleEndpoint] as any, HonoEndpoint);
|
|
59
|
-
const lazySimpleApp = createTestApp(
|
|
60
|
-
[simpleEndpoint] as any,
|
|
61
|
-
OptimizedHonoEndpoint,
|
|
62
|
-
);
|
|
63
|
-
const middlewareSimpleApp = createTestApp(
|
|
64
|
-
[simpleEndpoint] as any,
|
|
65
|
-
MiddlewareHonoEndpoint,
|
|
66
|
-
);
|
|
67
|
-
const minimalSimpleApp = createTestApp(
|
|
68
|
-
[simpleEndpoint] as any,
|
|
69
|
-
MinimalHonoEndpoint,
|
|
70
|
-
);
|
|
71
|
-
const optInSimpleApp = createTestApp(
|
|
72
|
-
[simpleEndpoint] as any,
|
|
73
|
-
OptInEventHonoEndpoint,
|
|
74
|
-
);
|
|
75
|
-
const fullyOptimizedSimpleApp = createTestApp(
|
|
76
|
-
[simpleEndpoint] as any,
|
|
77
|
-
FullyOptimizedHonoEndpoint,
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
// ============================================================================
|
|
81
|
-
// Request Factory Helpers
|
|
82
|
-
// ============================================================================
|
|
83
|
-
|
|
84
|
-
function createRequest(
|
|
85
|
-
path: string,
|
|
86
|
-
options: {
|
|
87
|
-
method?: string;
|
|
88
|
-
body?: unknown;
|
|
89
|
-
headers?: Record<string, string>;
|
|
90
|
-
} = {},
|
|
91
|
-
) {
|
|
92
|
-
const { method = 'GET', body, headers = {} } = options;
|
|
93
|
-
|
|
94
|
-
const init: RequestInit = {
|
|
95
|
-
method,
|
|
96
|
-
headers: {
|
|
97
|
-
'Content-Type': 'application/json',
|
|
98
|
-
...headers,
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
if (body) {
|
|
103
|
-
init.body = JSON.stringify(body);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return new Request(`http://localhost${path}`, init);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// ============================================================================
|
|
110
|
-
// Baseline: Raw Hono vs Current Implementation
|
|
111
|
-
// ============================================================================
|
|
112
|
-
|
|
113
|
-
describe('Baseline: Raw Hono vs HonoEndpoint', () => {
|
|
114
|
-
// Raw Hono baseline
|
|
115
|
-
const rawHono = new Hono();
|
|
116
|
-
rawHono.get('/health', (c) =>
|
|
117
|
-
c.json({ status: 'ok', timestamp: Date.now() }),
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
bench('raw Hono (baseline)', async () => {
|
|
121
|
-
const req = createRequest('/health');
|
|
122
|
-
await rawHono.fetch(req);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
bench('HonoEndpoint adaptor (current)', async () => {
|
|
126
|
-
const req = createRequest('/health');
|
|
127
|
-
await currentSimpleApp.fetch(req);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
// ============================================================================
|
|
132
|
-
// Strategy Comparison: Simple Endpoint
|
|
133
|
-
// ============================================================================
|
|
134
|
-
|
|
135
|
-
describe('Strategy Comparison: Simple Endpoint (GET /health)', () => {
|
|
136
|
-
const req = createRequest('/health');
|
|
137
|
-
|
|
138
|
-
bench('Current Implementation', async () => {
|
|
139
|
-
await currentSimpleApp.fetch(req);
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
143
|
-
await lazySimpleApp.fetch(req);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
147
|
-
await middlewareSimpleApp.fetch(req);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
bench('Strategy C: Minimal (no middleware)', async () => {
|
|
151
|
-
await minimalSimpleApp.fetch(req);
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
155
|
-
await optInSimpleApp.fetch(req);
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
bench('Combined: Fully Optimized (A+C+D)', async () => {
|
|
159
|
-
await fullyOptimizedSimpleApp.fetch(req);
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
// ============================================================================
|
|
164
|
-
// Strategy Comparison: Auth Endpoint
|
|
165
|
-
// ============================================================================
|
|
166
|
-
|
|
167
|
-
describe('Strategy Comparison: Auth Endpoint (GET /profile)', () => {
|
|
168
|
-
const req = createRequest('/profile', {
|
|
169
|
-
headers: { Authorization: 'Bearer test-token' },
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
bench('Current Implementation', async () => {
|
|
173
|
-
await currentApp.fetch(req);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
177
|
-
await lazyServicesApp.fetch(req);
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
181
|
-
await middlewareApp.fetch(req);
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
185
|
-
await optInEventsApp.fetch(req);
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
bench('Combined: Fully Optimized (A+C+D)', async () => {
|
|
189
|
-
await fullyOptimizedApp.fetch(req);
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
// ============================================================================
|
|
194
|
-
// Strategy Comparison: Database Endpoint
|
|
195
|
-
// ============================================================================
|
|
196
|
-
|
|
197
|
-
describe('Strategy Comparison: Database Endpoint (GET /users)', () => {
|
|
198
|
-
const req = createRequest('/users');
|
|
199
|
-
|
|
200
|
-
bench('Current Implementation', async () => {
|
|
201
|
-
await currentApp.fetch(req);
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
205
|
-
await lazyServicesApp.fetch(req);
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
209
|
-
await middlewareApp.fetch(req);
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
213
|
-
await optInEventsApp.fetch(req);
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
bench('Combined: Fully Optimized (A+C+D)', async () => {
|
|
217
|
-
await fullyOptimizedApp.fetch(req);
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
// ============================================================================
|
|
222
|
-
// Strategy Comparison: Complex Endpoint
|
|
223
|
-
// ============================================================================
|
|
224
|
-
|
|
225
|
-
describe('Strategy Comparison: Complex Endpoint (POST /orders)', () => {
|
|
226
|
-
const req = createRequest('/orders', {
|
|
227
|
-
method: 'POST',
|
|
228
|
-
body: { items: [{ sku: 'SKU001', qty: 2 }] },
|
|
229
|
-
headers: { Authorization: 'Bearer test-token' },
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
bench('Current Implementation', async () => {
|
|
233
|
-
await currentApp.fetch(req);
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
237
|
-
await lazyServicesApp.fetch(req);
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
241
|
-
await middlewareApp.fetch(req);
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
245
|
-
await optInEventsApp.fetch(req);
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
bench('Combined: Fully Optimized (A+C+D)', async () => {
|
|
249
|
-
await fullyOptimizedApp.fetch(req);
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
// ============================================================================
|
|
254
|
-
// Strategy Comparison: POST with Validation
|
|
255
|
-
// ============================================================================
|
|
256
|
-
|
|
257
|
-
describe('Strategy Comparison: POST with Body Validation (POST /users)', () => {
|
|
258
|
-
const req = createRequest('/users', {
|
|
259
|
-
method: 'POST',
|
|
260
|
-
body: { name: 'Test User', email: 'test@example.com' },
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
bench('Current Implementation', async () => {
|
|
264
|
-
await currentApp.fetch(req);
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
268
|
-
await lazyServicesApp.fetch(req);
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
272
|
-
await middlewareApp.fetch(req);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
276
|
-
await optInEventsApp.fetch(req);
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
bench('Combined: Fully Optimized (A+C+D)', async () => {
|
|
280
|
-
await fullyOptimizedApp.fetch(req);
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
// ============================================================================
|
|
285
|
-
// Strategy Comparison: Query Parameters
|
|
286
|
-
// ============================================================================
|
|
287
|
-
|
|
288
|
-
describe('Strategy Comparison: Query Params (GET /search)', () => {
|
|
289
|
-
const req = createRequest('/search?q=test&page=1&limit=10');
|
|
290
|
-
|
|
291
|
-
bench('Current Implementation', async () => {
|
|
292
|
-
await currentApp.fetch(req);
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
296
|
-
await lazyServicesApp.fetch(req);
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
300
|
-
await middlewareApp.fetch(req);
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
304
|
-
await optInEventsApp.fetch(req);
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
bench('Combined: Fully Optimized (A+C+D)', async () => {
|
|
308
|
-
await fullyOptimizedApp.fetch(req);
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
// ============================================================================
|
|
313
|
-
// App Setup Performance
|
|
314
|
-
// ============================================================================
|
|
315
|
-
|
|
316
|
-
describe('App Setup Performance', () => {
|
|
317
|
-
bench('Current: setup with 8 endpoints', () => {
|
|
318
|
-
const app = new Hono();
|
|
319
|
-
const sd = ServiceDiscovery.getInstance(mockLogger, envParser);
|
|
320
|
-
HonoEndpoint.addRoutes(allEndpoints as any, sd as any, app);
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
bench('Strategy A: setup with 8 endpoints', () => {
|
|
324
|
-
const app = new Hono();
|
|
325
|
-
const sd = ServiceDiscovery.getInstance(mockLogger, envParser);
|
|
326
|
-
OptimizedHonoEndpoint.addRoutes(allEndpoints as any, sd as any, app);
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
bench('Strategy C: setup with 8 endpoints', () => {
|
|
330
|
-
const app = new Hono();
|
|
331
|
-
const sd = ServiceDiscovery.getInstance(mockLogger, envParser);
|
|
332
|
-
MiddlewareHonoEndpoint.addRoutes(allEndpoints as any, sd as any, app);
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
bench('Strategy D: setup with 8 endpoints', () => {
|
|
336
|
-
const app = new Hono();
|
|
337
|
-
const sd = ServiceDiscovery.getInstance(mockLogger, envParser);
|
|
338
|
-
OptInEventHonoEndpoint.addRoutes(allEndpoints as any, sd as any, app);
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
bench('Combined: setup with 8 endpoints', () => {
|
|
342
|
-
const app = new Hono();
|
|
343
|
-
const sd = ServiceDiscovery.getInstance(mockLogger, envParser);
|
|
344
|
-
FullyOptimizedHonoEndpoint.addRoutes(allEndpoints as any, sd as any, app);
|
|
345
|
-
});
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
// ============================================================================
|
|
349
|
-
// Memory Pressure Tests
|
|
350
|
-
// ============================================================================
|
|
351
|
-
|
|
352
|
-
describe('Memory Pressure: 100 Sequential Requests', () => {
|
|
353
|
-
const req = createRequest('/health');
|
|
354
|
-
|
|
355
|
-
bench('Current Implementation', async () => {
|
|
356
|
-
for (let i = 0; i < 100; i++) {
|
|
357
|
-
await currentApp.fetch(req);
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
362
|
-
for (let i = 0; i < 100; i++) {
|
|
363
|
-
await lazyServicesApp.fetch(req);
|
|
364
|
-
}
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
368
|
-
for (let i = 0; i < 100; i++) {
|
|
369
|
-
await middlewareApp.fetch(req);
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
|
|
373
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
374
|
-
for (let i = 0; i < 100; i++) {
|
|
375
|
-
await optInEventsApp.fetch(req);
|
|
376
|
-
}
|
|
377
|
-
});
|
|
378
|
-
|
|
379
|
-
bench('Combined: Fully Optimized', async () => {
|
|
380
|
-
for (let i = 0; i < 100; i++) {
|
|
381
|
-
await fullyOptimizedApp.fetch(req);
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
});
|
|
385
|
-
|
|
386
|
-
// ============================================================================
|
|
387
|
-
// Concurrent Requests
|
|
388
|
-
// ============================================================================
|
|
389
|
-
|
|
390
|
-
describe('Concurrent Requests: 100 Parallel', () => {
|
|
391
|
-
const req = createRequest('/health');
|
|
392
|
-
|
|
393
|
-
bench('Current Implementation', async () => {
|
|
394
|
-
await Promise.all(
|
|
395
|
-
Array(100)
|
|
396
|
-
.fill(null)
|
|
397
|
-
.map(() => currentApp.fetch(req)),
|
|
398
|
-
);
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
bench('Strategy A: Lazy Services', async () => {
|
|
402
|
-
await Promise.all(
|
|
403
|
-
Array(100)
|
|
404
|
-
.fill(null)
|
|
405
|
-
.map(() => lazyServicesApp.fetch(req)),
|
|
406
|
-
);
|
|
407
|
-
});
|
|
408
|
-
|
|
409
|
-
bench('Strategy C: Middleware Composition', async () => {
|
|
410
|
-
await Promise.all(
|
|
411
|
-
Array(100)
|
|
412
|
-
.fill(null)
|
|
413
|
-
.map(() => middlewareApp.fetch(req)),
|
|
414
|
-
);
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
bench('Strategy D: Opt-in Events', async () => {
|
|
418
|
-
await Promise.all(
|
|
419
|
-
Array(100)
|
|
420
|
-
.fill(null)
|
|
421
|
-
.map(() => optInEventsApp.fetch(req)),
|
|
422
|
-
);
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
bench('Combined: Fully Optimized', async () => {
|
|
426
|
-
await Promise.all(
|
|
427
|
-
Array(100)
|
|
428
|
-
.fill(null)
|
|
429
|
-
.map(() => fullyOptimizedApp.fetch(req)),
|
|
430
|
-
);
|
|
431
|
-
});
|
|
432
|
-
});
|
|
433
|
-
|
|
434
|
-
// ============================================================================
|
|
435
|
-
// Validation Overhead Comparison
|
|
436
|
-
// ============================================================================
|
|
437
|
-
|
|
438
|
-
describe('Validation Overhead', () => {
|
|
439
|
-
// Without validation
|
|
440
|
-
const noValidationApp = new Hono();
|
|
441
|
-
noValidationApp.post('/test', async (c) => {
|
|
442
|
-
const body = await c.req.json();
|
|
443
|
-
return c.json({ received: body });
|
|
444
|
-
});
|
|
445
|
-
|
|
446
|
-
// With manual Zod validation
|
|
447
|
-
const { z } = require('zod');
|
|
448
|
-
const schema = z.object({ name: z.string(), email: z.string().email() });
|
|
449
|
-
|
|
450
|
-
const manualValidationApp = new Hono();
|
|
451
|
-
manualValidationApp.post('/test', async (c) => {
|
|
452
|
-
const body = await c.req.json();
|
|
453
|
-
const parsed = schema.safeParse(body);
|
|
454
|
-
if (!parsed.success) {
|
|
455
|
-
return c.json({ error: parsed.error }, 400);
|
|
456
|
-
}
|
|
457
|
-
return c.json({ received: parsed.data });
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
const testBody = { name: 'Test', email: 'test@example.com' };
|
|
461
|
-
|
|
462
|
-
bench('no validation (baseline)', async () => {
|
|
463
|
-
await noValidationApp.fetch(
|
|
464
|
-
createRequest('/test', { method: 'POST', body: testBody }),
|
|
465
|
-
);
|
|
466
|
-
});
|
|
467
|
-
|
|
468
|
-
bench('manual Zod validation', async () => {
|
|
469
|
-
await manualValidationApp.fetch(
|
|
470
|
-
createRequest('/test', { method: 'POST', body: testBody }),
|
|
471
|
-
);
|
|
472
|
-
});
|
|
473
|
-
|
|
474
|
-
bench('Current HonoEndpoint validation', async () => {
|
|
475
|
-
await currentApp.fetch(
|
|
476
|
-
createRequest('/users', { method: 'POST', body: testBody }),
|
|
477
|
-
);
|
|
478
|
-
});
|
|
479
|
-
|
|
480
|
-
bench('Optimized HonoEndpoint validation', async () => {
|
|
481
|
-
await fullyOptimizedApp.fetch(
|
|
482
|
-
createRequest('/users', { method: 'POST', body: testBody }),
|
|
483
|
-
);
|
|
484
|
-
});
|
|
485
|
-
});
|
|
486
|
-
|
|
487
|
-
// ============================================================================
|
|
488
|
-
// Middleware Overhead Analysis
|
|
489
|
-
// ============================================================================
|
|
490
|
-
|
|
491
|
-
describe('Middleware Overhead Analysis', () => {
|
|
492
|
-
// App with no middleware
|
|
493
|
-
const noMiddlewareApp = new Hono();
|
|
494
|
-
noMiddlewareApp.get('/test', (c) => c.json({ ok: true }));
|
|
495
|
-
|
|
496
|
-
// App with timing middleware
|
|
497
|
-
const { timing } = require('hono/timing');
|
|
498
|
-
const timingApp = new Hono();
|
|
499
|
-
timingApp.use('*', timing());
|
|
500
|
-
timingApp.get('/test', (c) => c.json({ ok: true }));
|
|
501
|
-
|
|
502
|
-
// App with multiple middleware
|
|
503
|
-
const multiMiddlewareApp = new Hono();
|
|
504
|
-
multiMiddlewareApp.use('*', async (c, next) => {
|
|
505
|
-
c.set('startTime' as any, Date.now());
|
|
506
|
-
await next();
|
|
507
|
-
});
|
|
508
|
-
multiMiddlewareApp.use('*', async (_c, next) => {
|
|
509
|
-
await next();
|
|
510
|
-
// Post-processing
|
|
511
|
-
});
|
|
512
|
-
multiMiddlewareApp.get('/test', (c) => c.json({ ok: true }));
|
|
513
|
-
|
|
514
|
-
bench('no middleware (baseline)', async () => {
|
|
515
|
-
await noMiddlewareApp.fetch(createRequest('/test'));
|
|
516
|
-
});
|
|
517
|
-
|
|
518
|
-
bench('timing middleware only', async () => {
|
|
519
|
-
await timingApp.fetch(createRequest('/test'));
|
|
520
|
-
});
|
|
521
|
-
|
|
522
|
-
bench('multiple custom middleware', async () => {
|
|
523
|
-
await multiMiddlewareApp.fetch(createRequest('/test'));
|
|
524
|
-
});
|
|
525
|
-
|
|
526
|
-
bench('HonoEndpoint (all features)', async () => {
|
|
527
|
-
await currentApp.fetch(createRequest('/health'));
|
|
528
|
-
});
|
|
529
|
-
|
|
530
|
-
bench('Fully Optimized (minimal middleware)', async () => {
|
|
531
|
-
await fullyOptimizedApp.fetch(createRequest('/health'));
|
|
532
|
-
});
|
|
533
|
-
});
|