why eslint sharable config has custom parser as dependency instead of peerDependency?
official docs says
If your shareable config depends on a plugin, you should also specify it as a peerDependency (plugins will be loaded relative to the end user’s project, so the end user is required to install the plugins they need). However, if your shareable config depends on a custom parser or another shareable config, you can specify these packages as dependencies in the package.json.