33 lines
818 B
TypeScript
33 lines
818 B
TypeScript
import { Elysia, t } from 'elysia'
|
|
|
|
// ? Elysia#83 | Proposal: Standardized way of renaming third party plugin-scoped stuff
|
|
// this would be a plugin provided by a third party
|
|
const myPlugin = new Elysia()
|
|
.decorate('myProperty', 42)
|
|
.model('salt', t.String())
|
|
|
|
new Elysia()
|
|
.use(
|
|
myPlugin
|
|
// map decorator, rename "myProperty" to "renamedProperty"
|
|
.decorate(({ myProperty, ...decorators }) => ({
|
|
renamedProperty: myProperty,
|
|
...decorators
|
|
}))
|
|
// map model, rename "salt" to "pepper"
|
|
.model(({ salt, ...models }) => ({
|
|
...models,
|
|
pepper: t.String()
|
|
}))
|
|
// Add prefix
|
|
.prefix('decorator', 'unstable')
|
|
)
|
|
.get(
|
|
'/mapped',
|
|
({ unstableRenamedProperty }) => unstableRenamedProperty
|
|
)
|
|
.post('/pepper', ({ body }) => body, {
|
|
body: 'pepper',
|
|
// response: t.String()
|
|
})
|