Commit Graph

5065 Commits

Author SHA1 Message Date
Jonathan Rainville d0711305fc fix(contracts): fix linking libraries with long paths using output 2019-01-09 17:13:08 -05:00
Michael Bradley, Jr 2dea50ab13 fix(@embark/coderunner): use custom require function in vm context
Supply a custom require function to the vm context for `doEval` so that module
resolution succeeds for both DApp dependencies and Embark dependencies.
2019-01-09 17:12:16 -05:00
emizzle c6c6af01c9 Expose embark version to plugin constructor
Expose Embark’s version to the plugin constructor, allowing plugins to make logical decisions based on the version of Embark.
2019-01-09 16:56:47 -05:00
emizzle f54982254d fix(@embark/core): fix to allow large ether values
Specifying large ether values in the configs was causing embark to crash as javascript could not handle the large integer after the value was converted to wei.

The fix involves converting all values to BigNumbers and then comparing and adding/subtracting BigNumbers from that point forward.

There are two specific components that this affected: `config/contracts > accounts > balance` and `config/blockchain > account > balance`. The contracts config is used to fund accounts for contract deployment while the blockchain config is used for dev_funds accounts.

JSON.stringify unknown log messages

Add a unit test in the test app that sets a large ether value in the config before contract deployment and ensures the account balance is the value specified in the config.

Prior to this commit, if subsequent unit tests contained different account configurations, the blockchain VM was essentially reset, however EmbarkJS was hanging on to the old providers it used from the previous configuation.

In addition, there is a limitation with `embark.registerActionForEvent` in that the action will be persisted across configuration changes. In our case, once the configuration was updated in a subsequent unit test, the directive subdomains would be attempted to be registered in ENS using the old configuration.

This commit does two things:
1) It resets the EmbarkJS.Blockchain and EmbarkJS.Names providers to the new chain configuration
2) Update to the ENS directives that prevents attempts at registered configured subdomains for previous configurations.
2019-01-09 16:56:23 -05:00
Anthony Laibe d67863cff6 feat: add API server 2019-01-09 14:11:03 +00:00
Anthony Laibe df3435f02b feat: coverage without emit
For solc version below 0.4.21

fixes #1230
2019-01-09 13:44:48 +00:00
Jonathan Rainville 749c32cf07 fix(blockchain): fix metamask using the old web3 2019-01-08 09:24:13 -05:00
Michael Bradley, Jr 919d271996 feat(@embark/cli): unify command history without needing a restart
Send a message over IPC when a command is executed from the REPL so that
command history is immediately unified across `embark run` and one/more `embark
console`. Previously, for `embark console` to pick up a command entered in the
REPL of an `embark run` of which it was an IPC client it would have to be
restarted, and vice versa.
2019-01-07 17:02:28 -06:00
Iuri Matias 39d5e9f205 chore(release): 4.0.0-alpha.3 2018-12-31 15:10:59 -05:00
Iuri Matias 0958a17f3c refactor(@embark/contracts_manager) fix: The for-in loop variable 'className' should be explicitly scoped with var to avoid pollution 2018-12-24 16:14:01 -05:00
Iuri Matias d2a37f9bdf chore(@embark) remove extra line 2018-12-24 16:14:01 -05:00
Iuri Matias 035dfb84cf refactor(@embark/embark-ui) remove unused variables 2018-12-24 16:14:01 -05:00
Iuri Matias c693db9c2e refactor(@embark/embark-ui) remove usage of use strict 2018-12-24 16:14:01 -05:00
Michael Bradley, Jr 9e7bc53ebf fix(@embark/blockchain_process): proxy listens on the specified host
Change the blockchain proxy so that it listens on the `host` argument passed to
`Proxy#serve` rather than on `defaultHost`.
2018-12-21 22:06:46 -06:00
Michael Bradley d840198fc1 Revert "Fix for error running anything on Windows"
This reverts commit 0bea97c98a.
2018-12-21 21:45:57 -06:00
Wil Bown 0bea97c98a Fix for error running anything on Windows
I had to eject the webpack config and add this to get any project at all to run on Windows/Git Bash without this error:

Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.                                                                                                                                                                              ││  - configuration.context: The provided value "C:/Users/xxx/GitHub/xxxxxx" is not an absolute path!                                                                                                                                                                                              ││    -> The base directory (absolute path!) for resolving the `entry` option. If `output.pathinfo` is set, the included pathinfo is shortened to this directory.

Not sure if this is the best place, but should work on any platform.

Context (Environment)
OS: Windows 10, Git Bash v2.20.0 64bit
Embark Version: 3.2.7
Node Version: 10.14.2
NPM Version: 6.4.1
2018-12-21 13:01:41 -05:00
Jonathan Rainville d5f6da3599 fix(ens/web3): use blockchain connector for ens and fix global web3
Use the blockchain connector for the ENS module to remove direct web3 usages
Fix global web3 being overidden by the code generator
2018-12-21 12:55:39 -05:00
Jonathan Rainville 604e267e9d fix(proxy): delete old ids for accounts
Caused issues because the different ids come in
2018-12-21 12:55:39 -05:00
Jonathan Rainville 9a6149fef7 fix(gethClient): clear timeout when call backing 2018-12-21 12:48:41 -05:00
Jonathan Rainville b20bce9880 fix(ws): up fragmentation threshold to patch Geth bug with WS 2018-12-21 12:48:41 -05:00
Jonathan Rainville f2d6f609ba chore(browser): change Go to refresh since that's what they do 2018-12-21 12:48:13 -05:00
emizzle 1ccc3e7796 fix(@embark/core): Support legacy Parity version parsing
Parse legacy version of Parity. Pre-version 2 of Parity outputs “Parity <version>” instead of the post-version 2 “Parity-Ethereum”. Embark was emitting an error when the version of an older Parity client could not be parsed, and no warning messages regarding the version were shown.

This PR modifies the regex that parses the version so that older versions of Parity can be detected and the appropriate warning message can appear.
2018-12-21 11:49:21 -05:00
Michael Bradley, Jr a91a4dd7c0 feat(@embark/core): store IPC files in a dir within os.tmpdir()
This PR replaces #1202.

When embark is running on Linux and macOS, unix socket files are used for
geth's and embark's IPC files. A problem can arise if a DApp is in a deeply
nested directory structure such that character-length of the path to a socket
file exceeds the maximum supported length. See #450.

Also, if the DApp context is a Linux container running on a Windows Docker
host, and if the DApp is mounted from the host's file system, there is a
problem: unix socket files are incompatible with the Windows file system.

Solve both problems at once by storing a DApp's `.ipc` files in a directory
within `os.tmpdir()`. Introduce `ipcPath()` in `core/fs.js` and use a truncated
SHA-512 hash of the DApp's path in the name of the temporary directory created
for that purpose so that DApps won't collide (with an acceptably low
probability of collision).
2018-12-21 11:31:49 -05:00
Jonathan Rainville 9c37f9738e fix(debugger): fix debugger displays 2018-12-20 19:04:21 -05:00
Jonathan Rainville e207537d6e fix(profiler): do not exit on error but print it 2018-12-20 17:42:54 -05:00
Andre Medeiros b0c226a13f feature: disallow eval and require in cockpit 2018-12-20 17:41:03 -05:00
Jonathan Rainville af48788ab5 fix(test): use logger instead of engine.logger 2018-12-20 17:39:45 -05:00
Jonathan Rainville 7811211f91 fix(blockchain/geth): create geth dev account before other accounts 2018-12-20 17:39:45 -05:00
Michael Bradley, Jr 6c7782c435 fix(@embark/cli): start the dashboard after services are started
Start the `embark run` dashboard after services have been started so the REPL
instantiated by the dashboard can successfully request the `console:history`
event.

Delete `cmd/dashboard/command_history.js` since it's no longer in use.
2018-12-20 17:19:18 -05:00
Anthony Laibe e3a7b74284 feat: apply contract change to test
Give the same ability to config function on test
than when running with embark run
2018-12-20 16:38:14 -05:00
Andre Medeiros 3a8808e2f5 fix: allow message signing with wallet address 2018-12-20 16:36:22 -05:00
Pascal Precht 2195475fe6 fix(@embark/ens): make resolve() work with promises and callbacks
Changes in c64c093a48 resulted in a regression
that ENS functions within console/dashboard didn't work properly anymore.

This commit ensures that both APIs, `EmbarkJS.Names.resolve()` as well as
`EmbarkJS.Names.lookup()` can be either used using `async/await` or promised
based syntax within the console/dashboard.

Example:

```
await EmbarkJS.Names.resolve('me.eth.eth');

EmbarkJS.Names.resolve('me.eth.eth').then(val => ..., err => ...)

EmbarkJS.Names.resolve('me.eth.eth', (err, val) => ...)
```

Same with:

```
await EmbarkJS.Names.lookup('0x...');

EmbarkJS.Names.lookup('0x...').then(val => ..., err => ...)

EmbarkJS.Names.lookup('0x...', (err, val) => ...)
```
2018-12-20 16:33:41 -05:00
emizzle ffcff4a16c fix(@embark/core): Proxy support for raw transactions
Contract logs were not occuring in the test_app for reasons unknown, except that it seemed to be pinned to the fact that accounts were being defined using a mnemonic. Turns out this caused transactions to be signed, and therefore sent using `eth_sendRawTransaction`.

Add ability to decode raw transactions in the proxy so that those transactions are also logged.

Refactor Proxy in to a class and add a Proxy unit test test.

Remove RLP package, as there is another way to decode a tx without needed an additional package.

Replace eth transaction methods with constants throughout the codebase.

Add unit tests for Console Listener.
2018-12-20 16:29:33 -05:00
emizzle f1206b4cb9 fix(@embark/core): Fix `—template` URL support
Support for all template URL syntax as spec’d in https://our.status.im/embark-3-2-much-more-than-a-moonshot/ (Everyone Gets A Template section).

Unit tests were added for all missing cases.

| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 1a. Normal React template, no URL  			| `embark new 1-normal-template-react --template react` | No | see below |
```
Installing template from https://github.com/embark-framework/embark-react-template/tree/4.0
Downloading template...
Download failed, response code 404
Retrying with the default branch...
It may not be compatible with your Embark version 4.0.0-alpha.2
Installing template from https://github.com/embark-framework/embark-react-template
Downloading template...
Download failed, response code 404
Does the template really exist?
Embark's supported templates: https://embark.status.im/templates/
```
**Failure reason**: https://github.com/embark-framework/embark-react-template repo doesn't exist

| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 1b. Normal TypeScript template, no URL  			| `embark new 1-normal-template-typescript --template typescript` |  Yes | see below |
```
Installing template from https://github.com/embark-framework/embark-typescript-template/tree/4.0
Downloading template...
Download failed, response code 404
Retrying with the default branch...
It may not be compatible with your Embark version 4.0.0-alpha.2
Installing template from https://github.com/embark-framework/embark-typescript-template
Downloading template...
Installing packages...
Init complete

App ready at 1-normal-template-typescript
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 1c. Normal Vyper template, no URL  			| `embark new 1-normal-template-vyper --template vyper` | Yes |see below |
```
Installing template from https://github.com/embark-framework/embark-vyper-template/tree/4.0
Downloading template...
Download failed, response code 404
Retrying with the default branch...
It may not be compatible with your Embark version 4.0.0-alpha.2
Installing template from https://github.com/embark-framework/embark-vyper-template
Downloading template...
Installing packages...
Init complete

App ready at 1-normal-template-vyper
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 1d. Normal Vue.js template, no URL  			| `embark new 1-normal-template-vue --template vue` |  Yes |see below|
```
Installing template from https://github.com/embark-framework/embark-vue-template/tree/4.0
Downloading template...
Download failed, response code 404
Retrying with the default branch...
It may not be compatible with your Embark version 4.0.0-alpha.2
Installing template from https://github.com/embark-framework/embark-vue-template
Downloading template...
Installing packages...
Init complete

App ready at 1-normal-template-vue
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 1e. Normal Bamboo template, no URL  			| `embark new 1-normal-template-bamboo --template bamboo` |  Yes |see below|
```
Installing template from https://github.com/embark-framework/embark-bamboo-template/tree/4.0
Downloading template...
Download failed, response code 404
Retrying with the default branch...
It may not be compatible with your Embark version 4.0.0-alpha.2
Installing template from https://github.com/embark-framework/embark-bamboo-template
Downloading template...
Installing packages...
Init complete

App ready at 1-normal-template-bamboo
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 2. Github repo download  	 			| `embark new 2-github-repo --template status-im/dreddit-devcon`      |   Yes  |see below|
```
Installing template from https://github.com/status-im/dreddit-devcon
Downloading template...
Installing packages...
Init complete

App ready at 2-github-repo
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 3a. Github template with non-existant branch  	| `embark new 3-github-branch --template status-im/dreddit-devcon#start-here`      |  Yes   |
```
Installing template from https://github.com/status-im/dreddit-devcon/tree/start-here
Downloading template...
Download failed, response code 404
Does the template really exist?
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 3b. Github template with other branch  	| `embark new 3-github-branch --template status-im/dreddit-devcon#start`      |  Yes  |see below|
```
Installing template from https://github.com/status-im/dreddit-devcon/tree/start
Downloading template...
Installing packages...
Init complete

App ready at 3-github-branch
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 4. Github download with git url  		| `embark new 4-github-git-url --template git@github.com/status-im/dreddit-devcon`      |  No  |see below|
```
Unsupported template name or git host URL
```
**Failure reason:** Incorrect syntax. Repo owner need to postfix the host, ie `git@github.com:status-im/dreddit-devcon`. Fixed in this PR.

| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 5. Github download with https url  		| `embark new 5-github-https-url --template https://github.com/status-im/dappcon-workshop-dapp` |  Yes  |see below|
```
Installing template from https://github.com/status-im/dappcon-workshop-dapp
Downloading template...
Installing packages...
Init complete

App ready at 5-github-https-url
```
| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 6. Github download with no protocol  	| `embark new 6-github-url-no-protocol --template github.com/status-im/dappcon-workshop-dapp` |  No  |see below|
```
Unsupported template name or git host URL
```
**Failure reason:** Incorrect syntax. Can remove the github host, ie `status-im/dappcon-workshop-dapp`. Fixed in this PR.

| Test case        | Command           | Successful?  | Output |
| :----------------------------------------- | :--------------------------------------------------------- | :---: | :-------- |
| 7. Github repo with no branch, and a default branch that is not `master` | `embark new 7-github-default-branch-not-master --template status-im/dreddit-devcon`      |  Yes  |see below|
```
Installing template from https://github.com/status-im/dreddit-devcon
Downloading template...
Installing packages...
Init complete

App ready at 7-github-default-branch-not-master
```

Update replacements for less variance

Update URL replacements for less result variance if the `hosted-git-info` library were to change it’s functionality.

Move replacements to a constant.

Add unit test for additional `bitbucket.org/gitlab.com` URL shortcuts.
2018-12-20 16:21:58 -05:00
Anthony Laibe 0118b1a409 feat(coverage): gas usage improvements
Do not submit event for function and branch
but detect where the statement is
2018-12-20 16:21:31 -05:00
Anthony Laibe 8a6d075cd1 feat: add coverage events
Instead of looking at the transaction, instrument the
source to publish coverage event
2018-12-20 16:21:31 -05:00
Andre Medeiros 7574e141fa fix: consistent service order in cockpit 2018-12-20 16:18:01 -05:00
Jonathan Rainville 33d6e29286 fix(logHandler): stringify objects instead of trying to split it 2018-12-20 08:33:12 -05:00
Michael Bradley, Jr 1a4b0aaf07 test(@embark/cli): remove the cli_shim demo scripts
The demo scripts in `src/test/cli_shim`, while very useful when developing the
shim, were never fully completed and are not part of embark's CI, so remove
them. A future cross-platform test suite of the shim should be written in the
usual way (with TS/JS) instead of using bash scripts running in a Docker
container.
2018-12-19 10:48:41 -06:00
Michael Bradley, Jr 27ad343dfa fix(@embark/whisper): use a new WebsocketProvider on each retry
`waitForWeb3Ready` was never making it to the point it sets
`this.web3Ready = true` and invokes its callback because once the provider's
connection's `readyState` is `3` ("closed or couldn't be opened") there is no
possibility it will change to `1` ("open and ready").

Call the `connectToProvider` method before setting up a retry with `setTimeout`
so that a new instance of `Web3.providers.WebsocketProvider` is used on each
retry.
2018-12-19 10:46:44 -06:00
Jonathan Rainville bf8629dadd fix(blockchain): add cert options to blockchain initialization 2018-12-19 10:01:14 -05:00
Jonathan Rainville 34d5923d54 fix(simulator): fix simulator when there is no accounts 2018-12-19 10:00:52 -05:00
Jonathan Rainville 06553b5981 fix(ens): fix error message by checking for directives before 2018-12-19 10:00:31 -05:00
Jonathan Rainville 50858dc063 fix(names): fix ens console commands 2018-12-19 10:00:31 -05:00
Michael Bradley, Jr 735e38017e refactor(@embark/utils): use a 'ws' websocket client in pingEndpoint
This PR replaces #1166. The "stuck sockets" bug is addressed in #1195 so there
is no longer a need to use timeouts. However a few aspects of the original PR
are still useful, and lessons learned from #1166, #1181, and #1195 can be put
to good use.

Use a websocket client from the `ws` package when pinging websocket endpoints
instead of manually building a request header. The `'upgrade'` event being
listened for was never actually firing; and though a response was received for
those pings, the response messages indicated problems with those requests. It
seems cleaner to use a proper websocket client and callback success upon the
`ws` client's `'open'` event.

Abstract error and success handling across websocket and http pings.

Report network errors other than `ECONNREFUSED`. Only `ECONNREFUSED` is
expected, as that genuinely indicates an endpoint isn't accepting connections
at the specified host and port. If other kinds of network errors are occurring,
it will be helpful to have a visual indicator to prompt investigation.

After success or the first error, cleanup the ping's request/connection
immediately since we're not awaiting `'data'` events on an http request and we
don't want to leave a websocket connection open. Don't callback any `'error'`
events that might fire after the first `'error'` event or a success event, but
do report them.
2018-12-18 14:08:05 -06:00
Michael Bradley, Jr aba551e84f refactor(proxy): proxy blockchain accounts so that they are available in the Dapp 2018-12-18 14:07:46 -06:00
Michael Bradley, Jr acf62668ab refactor(@embark/blockchain_process): remove http-proxy-middleware
The problems described in embark PR #1166 can be resolved by implementing the
blockchain proxy with `http-proxy` directly instead of using `express` together
with `http-proxy-middleware`. The ultimate cause of the buggy behavior (the
"stuck sockets" problems described in #1166) is unknown.

The need to swallow some errors as described in embark PR #1181 is also
eliminated by dropping `http-proxy-middleware` and `express`.
2018-12-18 14:07:46 -06:00
Anthony Laibe 944b392cc5 feat: code runner use fs overrided 2018-12-17 18:31:22 +00:00
Jonathan Rainville a147e2706b refactor: change registerConsoleCommands to the new API 2018-12-17 09:59:03 -05:00
Anthony Laibe bbcfe9b1de fix: all ws endpoint use new technique
This is dues to those 2 endpoints being added
as the same time of the new technique
2018-12-17 10:05:58 +00:00