Replaces custom VM with custom "Urbit" element #26
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.
This is a continuation of #25.
To improve the developer experience and align the other "custom VM" implementations (Livepeer, Vara Network), this pull request replaces the near-social-vm with the most recent version and exposes a
<Urbit />
custom element (see Configuring custom VM elements).This custom element is a higher order component that has a "provides" prop, in order to pass helpful Urbit methods from the gateway to any widgets visible through the gateway. For example, for Poke:
Although it may be clearer when used like a "Provider" to a Widget, like this:
Then poke is accessible via props.
This pattern removes the need for a custom VM (and no longer needs to update and adjust for security vulnerabilities), and is more convenient for initializing the api as this can be done by the gateway, rather than inside the widget. It removes the "setApi" method.
It also provides developers with an easier to manage + customize Urbit API within the gateway code itself, rather than needing to modify the VM