fastify-autoload icon indicating copy to clipboard operation
fastify-autoload copied to clipboard

autoPrefix overwrites directory path set by dirNameRoutePrefix

Open mariusa opened this issue 3 years ago • 5 comments

Prerequisites

  • [X] I have written a descriptive issue title
  • [X] I have searched existing issues to ensure the issue has not already been raised

Issue

Hi,

Using the example from README

plugins
│   ├── hooked-plugin
│   │   ├── autohooks.js // req.hookOne = 'yes' # CJS syntax
│   │   ├── routes.js
│   │   └── children
│   │       ├── old-routes.js
│   │       ├── new-routes.js
│   │       └── grandchildren
│   │           ├── autohooks.mjs // req.hookTwo = 'yes' # ESM syntax
│   │           └── routes.mjs
│   └── standard-plugin
│       └── routes.js

Say new-routes.js has a route with fastify.patch('/entity', ...

That is available at http://.../hooked-plugin/children/entity , as by default dirNameRoutePrefix is set. So far so good.

In new-routes.js, I've set

export const autoPrefix = '/batch'

I would have expected the route to be now at http://.../hooked-plugin/children/batch/entity but instead is at http://.../hooked-plugin/batch/entity If this is intended behavior, would you please mention in README for autoPrefix that it overwrites, not appends, to folder structure path? This isn't consistent with When setting both options.prefix and plugin.autoPrefix they will be concatenated., but at least it's documented.

Thanks!

mariusa avatar Nov 29 '21 07:11 mariusa

Sorry for the radio silence. It seems no one is available to triage this. I'm going to tag this as "good first issue" to give some visibility.

(I encourage you to experiment and look into the code).

mcollina avatar Dec 04 '21 10:12 mcollina

Chiming in because I'm interested in 'fixing' this, but it seems like a considerable breaking change. The document is correct: when set, the prefix option passed to fastify.register() and the autoPrefix set in a plugin will be concatted. OP is asking that you also concat the prefix sourced from the directory name, which is currently overridden whenever autoPrefix is set: https://github.com/fastify/fastify-autoload/blob/master/index.js#L248.

I took a crack at it, but some tests are failing and I don't understand what the expected behavior will always be: https://github.com/fastify/fastify-autoload/pull/214/files.

mattcasey avatar Dec 29 '21 03:12 mattcasey

Any update on this?

m4rvr avatar Nov 07 '23 20:11 m4rvr

Any update on this?

Would you like to send a Pull Request to address this issue? Remember to add unit tests.

mcollina avatar Dec 26 '23 18:12 mcollina