Commit 37cfac1
committed
fix: named macros with function syntax now infer previous macro resolve types (#1574)
This commit fixes issue #1574 where named macros defined with function syntax
did not properly infer the resolve types from previous macros.
The fix adds a new overload specifically for function-based named macros that:
1. Computes MacroContext from ALL previous macros (assuming all are enabled)
2. Properly threads the MacroContext['resolve'] to the Singleton type
This approach works around a TypeScript inference limitation where the compiler
cannot determine which macros are selected from the function's return type
before the function's parameter types are resolved.
The key insight is that for function syntax, we need to make all previous
macro resolves available since we can't know at type-check time which ones
will be enabled at runtime.
Changes:
- Added new overload for function-based named macros in Elysia.macro()
- Added dedicated object-syntax overload for clarity
- Updated implementation signature to accept functions
- Added test case demonstrating the fix
Example that now works:
.macro('auth', { resolve: () => ({ user: 'bob' }) })
.macro('permission', (perm: string) => ({
auth: true,
resolve: ({ user }) => { /* user is now properly inferred! */ }
}))1 parent 36bc9b8 commit 37cfac1
2 files changed
+155
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5261 | 5261 | | |
5262 | 5262 | | |
5263 | 5263 | | |
| 5264 | + | |
| 5265 | + | |
| 5266 | + | |
| 5267 | + | |
| 5268 | + | |
| 5269 | + | |
| 5270 | + | |
| 5271 | + | |
| 5272 | + | |
| 5273 | + | |
| 5274 | + | |
| 5275 | + | |
| 5276 | + | |
| 5277 | + | |
| 5278 | + | |
| 5279 | + | |
| 5280 | + | |
| 5281 | + | |
| 5282 | + | |
| 5283 | + | |
| 5284 | + | |
| 5285 | + | |
| 5286 | + | |
| 5287 | + | |
| 5288 | + | |
| 5289 | + | |
| 5290 | + | |
| 5291 | + | |
| 5292 | + | |
| 5293 | + | |
| 5294 | + | |
| 5295 | + | |
| 5296 | + | |
| 5297 | + | |
| 5298 | + | |
| 5299 | + | |
| 5300 | + | |
| 5301 | + | |
| 5302 | + | |
| 5303 | + | |
| 5304 | + | |
| 5305 | + | |
| 5306 | + | |
| 5307 | + | |
| 5308 | + | |
| 5309 | + | |
| 5310 | + | |
| 5311 | + | |
| 5312 | + | |
| 5313 | + | |
| 5314 | + | |
| 5315 | + | |
| 5316 | + | |
| 5317 | + | |
| 5318 | + | |
| 5319 | + | |
| 5320 | + | |
| 5321 | + | |
| 5322 | + | |
| 5323 | + | |
| 5324 | + | |
| 5325 | + | |
| 5326 | + | |
| 5327 | + | |
| 5328 | + | |
| 5329 | + | |
| 5330 | + | |
| 5331 | + | |
| 5332 | + | |
| 5333 | + | |
| 5334 | + | |
| 5335 | + | |
| 5336 | + | |
| 5337 | + | |
| 5338 | + | |
| 5339 | + | |
| 5340 | + | |
| 5341 | + | |
| 5342 | + | |
| 5343 | + | |
| 5344 | + | |
| 5345 | + | |
| 5346 | + | |
| 5347 | + | |
| 5348 | + | |
| 5349 | + | |
| 5350 | + | |
| 5351 | + | |
| 5352 | + | |
| 5353 | + | |
| 5354 | + | |
| 5355 | + | |
| 5356 | + | |
| 5357 | + | |
| 5358 | + | |
| 5359 | + | |
| 5360 | + | |
| 5361 | + | |
| 5362 | + | |
| 5363 | + | |
| 5364 | + | |
| 5365 | + | |
| 5366 | + | |
| 5367 | + | |
| 5368 | + | |
| 5369 | + | |
| 5370 | + | |
| 5371 | + | |
| 5372 | + | |
| 5373 | + | |
| 5374 | + | |
| 5375 | + | |
| 5376 | + | |
| 5377 | + | |
| 5378 | + | |
| 5379 | + | |
| 5380 | + | |
| 5381 | + | |
| 5382 | + | |
| 5383 | + | |
5264 | 5384 | | |
5265 | 5385 | | |
5266 | 5386 | | |
| |||
5415 | 5535 | | |
5416 | 5536 | | |
5417 | 5537 | | |
5418 | | - | |
| 5538 | + | |
| 5539 | + | |
| 5540 | + | |
| 5541 | + | |
5419 | 5542 | | |
5420 | 5543 | | |
5421 | 5544 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1438 | 1438 | | |
1439 | 1439 | | |
1440 | 1440 | | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
1441 | 1472 | | |
0 commit comments