Skip to content

Releases: thomas3577/oakest

v0.1.1

Choose a tag to compare

@thomas3577 thomas3577 released this 27 Sep 09:38
5c805ce

What's Changed

  • Document and export public types for full JSR symbol docs by @thomas3577 in #15

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@thomas3577 thomas3577 released this 27 Sep 09:12
66e3652

What's Changed

New Contributors

Full Changelog: 0.0.20...v0.1.0

v0.1.0-alpha.3

v0.1.0-alpha.3 Pre-release
Pre-release

Choose a tag to compare

@thomas3577 thomas3577 released this 13 Sep 06:45
80b3a29

What's Changed

Full Changelog: v0.1.0-alpha.2...0.1.0-alpha.3

v0.1.0-alpha.2

v0.1.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@thomas3577 thomas3577 released this 22 Aug 15:25
053d403

What's Changed

New Contributors

Full Changelog: v0.1.0-alpha.1...v0.1.0-alpha.2

v0.1.0-alpha.1

v0.1.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@thomas3577 thomas3577 released this 11 Apr 15:59
26dd7dc

Oakest 0.1.0-alpha.1

This release is a substantial modernization of Oakest. It removes legacy metadata dependencies, switches dependency injection to Needle, replaces parameter decorators with explicit route argument resolvers, and moves the project to standard decorators.

Highlights

  • Replaced @dx/inject with @needle-di/core
  • Removed the need for reflect-metadata
  • Removed the need for emitDecoratorMetadata
  • Migrated Oakest to standard decorators, so experimentalDecorators is no longer required
  • Replaced parameter decorators with explicit route argument resolvers on @Get(), @Post(), and the other HTTP decorators
  • Expanded test coverage and fixed multiple routing and metadata issues in the process

Breaking Changes

  • Implicit constructor injection based on emitted type metadata no longer works

  • Constructor dependencies must now be declared explicitly with inject(...)

  • Parameter decorators such as @Body(), @Param(), @Query(), @Headers(), @Req(), @Res(), and @Ctx() have been removed

  • Route handler arguments must now be declared directly on the route decorator, for example:

    @Post(':id', [param<string>('id'), body<UpdateDto>(), query<string | null>('dryRun')])
  • @Controller({ injectables: [...] }) has been removed

  • @Injectable({ isSingleton: false }) is no longer supported in the current Needle-based DI flow

  • Custom middleware decorators must use the standard decorator signature and call registerMiddlewareMethodDecorator(context, handler)

Migration

Constructor injection before:

constructor(private readonly usersService: UsersService) {}

Constructor injection now:

constructor(private readonly usersService = inject(UsersService)) {}

Route arguments before:

@Post(':id')
update(@Param('id') id: string, @Body() body: UpdateDto) {}

Route arguments now:

@Post(':id', [param<string>('id'), body<UpdateDto>()])
update(id: string, body: UpdateDto) {}

Custom middleware decorator before:

return function (target, methodName) {
  registerMiddlewareMethodDecorator(target, methodName, handler);
};

Custom middleware decorator now:

return function (_value, context) {
  registerMiddlewareMethodDecorator(context, handler);
};

Additional Improvements

  • Fixed nested routePrefix composition across module trees
  • Fixed controller deduplication leaking across separate router builds
  • Fixed controller registration when multiple controllers share the same class name
  • Ensured providers are aggregated consistently across nested modules so singleton behavior is preserved
  • Improved the error message when @Module() metadata is missing
  • Cleaned up lint and typing issues uncovered during the migration

Summary

This release makes Oakest more explicit, more predictable, and easier to maintain. If you are upgrading an existing codebase, the main things to review are constructor injection, route handler arguments, and any custom middleware decorators.