diff --git a/docs/blog/elysia-02.md b/docs/blog/elysia-02.md index 06631ee6..3929bed2 100644 --- a/docs/blog/elysia-02.md +++ b/docs/blog/elysia-02.md @@ -38,16 +38,17 @@ head: date="29 Jan 2023" > -「[Blessing](https://youtu.be/3eytpBOkOFA)」brings more improvement, mainly on TypeScript performance, type-inference, and better auto-completion and some new features to reduce boilerplate. + +「[Blessing](https://youtu.be/3eytpBOkOFA)」brings many improvements, mainly in TypeScript performance, type-inference, better auto-completion, and new features to reduce boilerplate. Named after YOASOBI's song「祝福」, an opening for Witch from "Mobile Suit Gundam: The Witch from Mercury". ## Defers / Lazy Loading Module -With Elysia 0.2 now add support for the lazy loading module and async plugin. +Elysia 0.2 now adds support for lazy loading modules and async plugins. -This made it possible to defer plugin registration and incrementally apply after the Elysia server is started to achieve the fastest possible start-up time in Serverless/Edge environments. +This makes it possible to defer plugin registration and incrementally apply plugins after the Elysia server has started, achieving the fastest possible start-up time in Serverless/Edge environments. -To create defers module, simply mark the plugin as async: +To create a deferred module, simply mark the plugin as async: ```typescript const plugin = async (app: Elysia) => { const stuff = await doSomeHeavyWork() @@ -68,13 +69,12 @@ app.use(import('./some-heavy-module')) This will register the module after the import is finished making the module lazy-load. -Defers Plugin and lazy loading module will have all type-inference available right out of the box. - +Deferred plugins and lazy loading modules will have full type-inference available right out of the box. ## Reference Model -Now Elysia can memorize schema and reference the schema directly in Schema fields, without creating an import file via `Elysia.setModel` +Now Elysia can memorize schemas and reference them directly in Schema fields, without creating an import file via `Elysia.setModel`. -This list of schema available, brings auto-completion, complete type-inference, and validation as you expected from inline schema. +This list of available schemas brings auto-completion, complete type-inference, and validation as you would expect from inline schemas. To use a reference model, first, register the model with `setModel`, then write a model name to reference a model in `schema` ```typescript @@ -93,34 +93,34 @@ const app = new Elysia() }) ``` -This will bring auto-completion of known models. +This will provide auto-completion of known models. Screenshot 2566-01-23 at 13 24 28 -And type reference stopping you from accidentally returning invalid type. +And type references prevent you from accidentally returning an invalid type. Screenshot 2566-01-23 at 13 26 00 -Using `@elysiajs/swagger` will also create a separate `Model` section for listing available models. +Using `@elysiajs/swagger` will also create a separate `Model` section to list available models. Screenshot 2566-01-23 at 13 23 41 -Reference also handles validation as you expected. +References also handle validation as you would expect. -In short, it's as same as inline schema but now you only need to type the name of the schema to handle validation and typing instead of a long list of imports. +In short, it's the same as using inline schemas, but now you only need to type the name of the schema to handle validation and typing, instead of a long list of imports. ## OpenAPI Detail field -Introducing new field `schema.detail` for customizing detail for the route following the standard of OpenAPI Schema V2 with auto-completion. +Introducing a new field, `schema.detail`, for customizing details for the route, following the standard of OpenAPI Schema V2 with auto-completion. Screenshot 2566-01-23 at 13 54 11 -This allows you to write better documentation and fully editable Swagger as you want: +This allows you to write better documentation and have a fully editable Swagger as you want: Screenshot 2566-01-23 at 13 23 41 ## Union Type -The previous version of Elysia sometime has a problem with distinct Union types, as Elysia tries to catch the response to create a full type reference for Eden. +The previous version of Elysia sometimes had problems with distinct Union types, as Elysia tried to catch the response to create a full type reference for Eden. -Results in invalidation of possible types, +This resulted in invalidation of possible types. ## Union Response -Made possible by Union Type, now returning multiple response status for `schema` now available using `schema.response[statusCode]` +Made possible by Union Type, returning multiple response statuses for `schema` is now available using `schema.response[statusCode]`. ```typescript app @@ -148,43 +148,43 @@ app ) ``` -Elysia will try to validate all schema in `response` allowing one of the types to be returned. +Elysia will try to validate all schemas in `response`, allowing one of the types to be returned. -Return types are also supported report in Swagger's response. +Return types are also supported and reported in Swagger's response. ## Faster Type Inference -As Elysia 0.1 explore the possibility of using type inference for improving better Developer Experience, we found that sometimes it takes a long time to update type inference because of heavy type inference and in-efficient custom generic. +As Elysia 0.1 explored the possibility of using type inference to improve Developer Experience, we found that sometimes it took a long time to update type inference because of heavy type inference and inefficient custom generics. -With Elysia 0.2 now optimized for faster type-inference, preventing duplication of heavy type unwrap, results in better performance for updating type and inference. +With Elysia 0.2, type inference is now optimized for speed, preventing duplication of heavy type unwrapping, resulting in better performance for updating types and inference. ## Ecosystem -With Elysia 0.2 enabling async plugin and deferred module many new plugins that isn't possible before became reality. +With Elysia 0.2 enabling async plugins and deferred modules, many new plugins that weren't possible before have become a reality. -Like: -- Elysia Static plugin with the non-blocking capability +For example: +- Elysia Static plugin with non-blocking capability - Eden with union-type inference for multiple responses - New Elysia Apollo Plugin for Elysia -### Notable Improvement: -- `onRequest` and `onParse` now can access `PreContext` +### Notable Improvements: +- `onRequest` and `onParse` can now access `PreContext` - Support `application/x-www-form-urlencoded` by default -- body parser now parse `content-type` with extra attribute eg. `application/json;charset=utf-8` -- Decode URI parameter path parameter +- Body parser now parses `content-type` with extra attributes, e.g., `application/json;charset=utf-8` +- Decode URI path parameters - Eden now reports an error if Elysia is not installed -- Skip declaration of existing model and decorators +- Skip declaration of existing models and decorators ### Breaking Changes: - `onParse` now accepts `(context: PreContext, contentType: string)` instead of `(request: Request, contentType: string)` - To migrate, add `.request` to context to access `Request` ### Afterward -Thank you for supporting Elysia and being interested in this project. +Thank you for supporting Elysia and for your interest in this project. -This release brings better DX and hopefully all you need to write great software with Bun. +This release brings better DX and hopefully everything you need to write great software with Bun. -Now we have [Discord server](https://discord.gg/eaFJ2KDJck) where you can ask any questions about Elysia or just hang out and chill around is also welcome. +We now have a [Discord server](https://discord.gg/eaFJ2KDJck) where you can ask any questions about Elysia or just hang out and chill—everyone is welcome. -With the wonderful tools, we are happy to see what wonderful software you will build. +With these wonderful tools, we are excited to see what amazing software you will build. > Not to be part of those images someone paints >