acacode / acacode/swagger-typescript-api
async/promises are unable to resolve in ETA templates
- Langage dominant
- TypeScript
- Étoiles
- 4.1k
- Forks
- 436
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Hi!
Love your package, very useful. We were attempting to use custom ETA templates but we noticed promises don't appear to be supported currently by `swagger-typescript-api`.
# Minimal replicable example
**templates/api.eta**
```
<%
const test = Promise.resolve('test');
%>
<%~ await test %>
```
**openapi.json**
Copied from https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/examples/v2.0/json/petstore.json (doesn't really matter what the contents of this file are in this case)
**Command to run**
`yarn swagger-typescript-api --templates ./templates -p ./openapi.json`
## The error
```
(node:35256) UnhandledPromiseRejectionWarning: Error: Swagger schema parse error!
Eta Error: Bad template syntax
await is only valid in async function
```
# Why would this be useful?
Our current use case is to allow the ability to use `import` syntax. You can technically use `import` already like so:
```
<%
import('micromatch').then(console.log);
%>
```
but it's not useful without being able to, ultimately, resolve the promise as mentioned previously. Another alternative would be to add support for `require` but I think supporting promises would be more useful as it would enable anything that returns a promise to be used (E.g. `readFile` or `fetch`), not just `import`.
# Potential solution
I believe all that needs to be done in order to support this feature is to make the functions that render the template internally within swagger-typescript-api `async`.
I'm quite happy to add this feature myself if you agree with the solution.
For instance:

Would be come:
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.