Different entrypoints in @iroha2/crypto
& dependency inversion
#77
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The problem
Before this I was sure that
web
target works fine both in web and nodejs environment, and it was! But unfortunately not in all cases and with some reservations and pitfalls. It is ok, so why not just expose different entrypoints in the same library? Because such approach produces huge problems for the libraries that would depend on this one and be target-agnostic, e.g.@iroha2/client
pkg.The solution
In this PR library contains main "types" entrypoint in
/types
and target-specific ones in sub-directories. It has the main type -IrohaCryptoInterface
, and each target-specific implementation exports the samecrypto
object that is compatible with this type (it is included into type-check of the monorepo as test). And with this type it is possible to write libraries that depends on it and injects a particular implementation in runtime.What not to check
wasm-pack
outputs atpackages/iroha-crypto/(web|node|bundler)
dirs. Btw there areindex.js
andindex.d.ts
files generated separately from it but also automatically.