53 lines
2.1 KiB
Markdown
53 lines
2.1 KiB
Markdown
# Module kompendium-core
|
|
|
|
This is where the magic happens. This module houses all the reflective goodness that powers Kompendium.
|
|
|
|
It is also the only mandatory client-facing module for a basic setup.
|
|
|
|
# Package io.bkbn.kompendium.core
|
|
|
|
## Plugins
|
|
|
|
As mentioned in the root documentation, there are two core Kompendium plugins.
|
|
|
|
1. The application level plugin that handles app level metadata, configuring up your OpenAPI spec, managing custom data
|
|
types, etc.
|
|
2. The route level plugin, which is how users declare the documentation for the given route. It _must_ be installed on
|
|
every route you wish to document
|
|
|
|
### Serialization
|
|
|
|
Kompendium relies on your API to provide a properly-configured `ContentNegotiator` in order to convert the `OpenApiSpec`
|
|
into JSON. The advantage to this approach is that all of your data classes will be serialized precisely how you define.
|
|
The downside is that issues could exist in serialization frameworks that have not been tested. At the moment, Jackson,
|
|
Gson and KotlinX serialization have all been tested. If you run into any serialization issues, particularly with a
|
|
serializer not listed above, please open an issue on GitHub 🙏
|
|
|
|
Note for Kotlinx ⚠️
|
|
|
|
You will need to include the `SerializersModule` provided in `KompendiumSerializersModule` in order to serialize
|
|
any provided defaults. This comes down to how Kotlinx expects users to handle serializing `Any`. Essentially, this
|
|
serializer module will convert any `Any` serialization to be `Contextual`. This is pretty hacky, but seemed to be the
|
|
only way to get Kotlinx to play nice with serializing `Any`. If you come up with a better solution, definitely go ahead
|
|
and open up a PR!
|
|
|
|
## NotarizedApplication
|
|
|
|
TODO
|
|
|
|
## NotarizedRoute
|
|
|
|
TODO
|
|
|
|
# Package io.bkbn.kompendium.core.metadata
|
|
|
|
Houses all interfaces and types related to describing route metadata.
|
|
|
|
# Package io.bkbn.kompendium.core.routes
|
|
|
|
Houses any routes provided by the core module. At the moment the only supported route is to enable ReDoc support.
|
|
|
|
# Package io.bkbn.kompendium.core.util
|
|
|
|
Collection of utility functions used by Kompendium
|