You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Request Network uses config variables at runtime. This means that the package MUST contain code to support all possible configurations even if they're not used.
Proposed Solution
Use dependency injection to empower the user to select the features and dependencies they want. This will involve API BREAKING CHANGES and refactoring package boundaries.
Definition of Done
This issue is an EPIC that encompasses the following subtasks:
Fix request-client.js to make epk-signature depencency injectable (like web3-signature). Unclear why this dependency exists.
Example
In the following code snippet, notice that the currencyManager, chains, and balanceDetectors are all injected.
constrequestNetwork=newRequestNetwork({
decryptionProvider,
signatureProvider,
currencyManager,
chains,// if no compatible balance detector is found, the balance will be null. balanceDetectors: [newEvmTheGraphBalanceDetector(chains,currencyManager),newNearTheGraphBalanceDetector(chains),newBtcBalanceDetector(),newSolanaBalanceDetector(),newSuperfluidBalanceDetector(chains),// ...]})
If we (@skiv and I) were to rebuild this system from scratch, we would write it in a functional style, with less OOP and inheritance. We believe a functional style would lend itself to automated static analysis and tree-shaking. But we've already got a system that uses OOP and inheritance, so we're choosing to double down and make it manually composable via dependency injection so that the user chooses the packages that fit their use case.
MantisClone
changed the title
Eliminate runtime configs and maximize static composition using dependency injection to reduce build size, download time
Reduce download time by maximizing static composition and dependency injection. Eliminate runtime configs.
Oct 23, 2023
Problem
Request Network uses config variables at runtime. This means that the package MUST contain code to support all possible configurations even if they're not used.
Proposed Solution
Use dependency injection to empower the user to select the features and dependencies they want. This will involve API BREAKING CHANGES and refactoring package boundaries.
Definition of Done
This issue is an EPIC that encompasses the following subtasks:
skipPaymentDetection
flag. #1211request-client.js
to makeepk-signature
depencency injectable (likeweb3-signature
). Unclear why this dependency exists.Example
In the following code snippet, notice that the currencyManager, chains, and balanceDetectors are all injected.
Reference
The text was updated successfully, but these errors were encountered: