Created by: bodograumann
To be able to use the new typescript generator as a replacement for the existing typescript-inversify generator, we need to add a few things. This PR does just that.
This is not a 1:1 replacement. Instead I have tried to incorporate my experience with using typescript-inversify and not pollute the templates too much.
The option for enabling this functionality is called useInversify
.
I had to change the way the SecurityAuthentication objects are generated in order to allow injecting parameters into them.
Normally we should depend on abstractions (interfaces), not implementations, so I added some interfaces. For <service>RequestFactory
and <service>ResponseProcessor
this seemed like overkill though.
Abstract classes are used as service identifiers. This has the advantage that during binding the types can be checked automatically and they are compiled into just an empty object.
It would be nice to have tests here, though I'm not quite sure where to put them. Just create a new sample with useInversify enabled and copy the default test setup? @TiFu
My previous PR #6425, is still included here, so if that is merged I can rebase.
PR checklist
-
Read the contribution guidelines. -
If contributing template-only or documentation-only changes which will change sample output, build the project before. -
Run the shell script(s) under ./bin/
(or Windows batch scripts under.\bin\windows
) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the code or mustache templates for a language ({LANG}
) (e.g. php, ruby, python, etc). -
File the PR against the correct branch: master
,4.3.x
,5.0.x
. Default:master
. -
Copy the technical committee to review the pull request if your PR is targeting a particular programming language.
CC @TiFu CC TS Committee @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @topce (2018/10) @akehir (2019/07) @petejohansonxo (2019/11) @amakhrov (2020/02)
Possible next steps
- Bind to provider and dynamic import
- More convenience method on the ApiServiceBinder