feathers-permissions
feathers-permissions copied to clipboard
Upgrade feathers-permissions to be compatible with Feathers v5 (Dove)
Steps to reproduce
feathers-permissions currently uses Feathers 4.5.15. This library is not compatible with the latest Feathers v5 hook types. Specifically, the return type of checkPermissions (Hook) is not compatible with the new HookFunction type - Argument of type 'Hook' is not assignable to parameter of type 'HookFunction<A, S>.
The common solution seems to be to cast the checkPermissions hook to any (or some other matching type), which isn't ideal.
- [x] Tell us what broke. The more detailed the better.
- [x] If you can, please create a simple example that reproduces the issue and link to a gist, jsbin, repo, etc.
Expected behavior
Using the checkPermissions hook with Feathers v5 does not produce a type error.
Actual behavior
Type error when using checkPermissions hook with Feathers v5.
System configuration
Tell us about the applicable parts of your setup.
Module versions (especially the part that's not working):
- "@feathersjs/feathers": "^5.0.24"
- "feathers-permissions": "^2.1.4"
NodeJS version: v20.3.0
Operating System: 14.3.1 (23D60)
Browser Version: Chrome Version 123.0.6312.59
I just noticed that this duplicates the in-progress PR https://github.com/feathersjs-ecosystem/feathers-permissions/pull/125. However, that PR updates to a pre-release version instead of the now released latest version (and hasn't been touched in a while).
Going to leave this open for now, since the issue is still ongoing and doesn't seem to be actively in progress. Feel free to close if this duplicate violates issue guidelines.
@noahsal Hello, any news on this topic ?
@aessig I think this issue has not been fixed yet. The checkPermissions function still uses Hook, but does not give any way for the user to supply generic types to make types compatible when a custom HookContext is used throughout the application.
For example, I have the following defined:
export type MyApplication = ExpressFeathers<MyServiceTypes>;
export type MyHookContext = FeathersHookContext<MyApplication>;
In order for checkPermissions to pass the type check I need to cast it as follows:
checkPermissions({
...
}) as HookFunction<MyHookContext>
It would be nice if I could just do something like checkPermissions<MyHookContext>(...), instead of needing to use an as cast.
@noahsal Thanks for the update, I hope it will be updated soon.