Dependency transfer is not supported.
The versions of indirect dependencies are uncontrollable. If the code uses a specific version of an indirect dependency, the version of the dependency installed at different times may be inconsistent, which can lead to unexpected errors during program execution.
For example, consider this dependency relationship: project -> A (1.0.0) -> B (^1.0.0) -> C (latest).
Only A is declared in dependencies, but B and C are imported to the project. The versions of B and C are uncontrollable. If the developer of C releases a 2.0.0 version, it may be installed the next time dependencies are installed. This could lead to issues, such as errors occurring without any code changes or inconsistent behavior across builds on different PCs at different times.
To address the issue of ghost dependencies, ohpm uses a special storage structure that technically restricts references to indirect dependencies. In the preceding example, this means that the code can only reference A, and referencing B or C would result in compile errors, prompting the user to modify the dependency configuration.