Commit Graph

6297 Commits

Author SHA1 Message Date
EmbarkBot c7a5c4c368 chore(prerelease): 6.0.1-nightly.1 2020-10-08 00:29:51 +00:00
Ricardo Guilherme Schmidt cfa43bc464 fix(@embark/dapps): use utf-8 in html script tag 2020-10-07 10:00:21 -04:00
EmbarkBot 23a6c8c83f chore(prerelease): 6.0.1-nightly.0 2020-08-08 00:28:40 +00:00
Ricardo Guilherme Schmidt 7702b92cf3 fix(@embark/geth): add --allow-insecure-unlock 2020-08-07 11:26:01 -05:00
Michael Bradley, Jr 6dbdf63aeb chore(release): 6.0.0 2020-04-27 16:04:43 -05:00
EmbarkBot f492456202 chore(prerelease): 5.3.1-nightly.0 2020-04-25 00:14:50 +00:00
Michael Bradley, Jr 44dfb992c7 build(deps): bump @babel/preset-env to >= 7.9.0
Node v13.13.0 introduced a change that is incompatible with `@babel/preset-env`
versions `< 7.9.0`.

See:
* https://github.com/nodejs/node/pull/32351
* https://github.com/nodejs/node/issues/32852
* https://github.com/babel/babel/pull/11283

Bump our direct dependencies to `7.9.5` and manually cause additional bumps in
`yarn.lock` that result in all versions of `@babel/preset-env` installed in the
monorepo's `node_modules` trees being `>= 7.9.0`.
2020-04-24 17:04:15 -05:00
Michael Bradley, Jr 92bad92553 chore: mark embark-dapp-test-teller-contracts as a private package
It's been published in each release since `5.3.0-nightly.0` but that was
unintentional and we shouldn't publish it to the registry going forward.
2020-04-24 13:05:23 -05:00
Michael Bradley, Jr 5fc315409b chore(release): 5.3.0 2020-04-24 12:06:40 -05:00
EmbarkBot 0935b4e4c1 chore(prerelease): 5.3.0-nightly.18 2020-04-14 00:26:27 +00:00
Pascal Precht dcf97a82e6 docs: add missing plugin configuration to migration guidee 2020-04-13 16:08:51 +02:00
Pascal Precht df68b6ef34 chore(dashboard): change currency unit to Gwei and Ether in deployment output
Closes #2271
2020-04-13 16:08:21 +02:00
EmbarkBot 0450e8291f chore(prerelease): 5.3.0-nightly.17 2020-04-11 00:16:02 +00:00
Michael Bradley, Jr 41b5b2381b style(@cockpit): remove unused var causing a linter failure in a CI environment or production build
Also fix some peer dependency related warnings seen during `yarn install`.
2020-04-10 11:14:15 -05:00
Pascal Precht d83ad01770 fix(core/utils): shortcut `embarkConfig.plugins` in case it doesn't exist 2020-04-10 12:39:48 +02:00
emizzle ec99cf6ece fix(@embark/storage): Allow upload when storage is disabled
Even when the storage config sets storage to disabled, upload should still be allowed, as uploaded dapps should have the ability to NOT use storage once uploaded.
2020-04-10 11:16:49 +02:00
Pascal Precht ae56575554 chore(core/utils): better error handling when invalid blockchain `endpoint` is defined 2020-04-10 11:16:13 +02:00
Jonathan Rainville deb682c9d2 fix(@embark/mocha): reset contracts before each test file
Caused issues because we kept in memory the old contracts, including
the onDeploys.
2020-04-07 13:32:25 -04:00
EmbarkBot 1278365768 chore(prerelease): 5.3.0-nightly.16 2020-04-03 00:14:04 +00:00
Pascal Precht 3ce666b165 fix(cockpit/console): ensure console for processes is rendered
Prior to this commit, `Console` would only be rendered when Embark's API returns
at least one registered process from `/embark-api/processes`.
`Console` itself would then add another processes "embark" resulting in two tabs
with console output. This used to work fine because Embark always registered
at least a blockchain process.

In cd934f8157 however, this has changed.
With Ganache being the default blockchain, there's no longer a processes registered for this
service, resulting in an empty list for `processes` inside Cockpit, causing `Console` not to render
at all. Which also means the `embark` process logs aren't rendered either.

This commit removes the requirement of `processes` being non-empty so that embark process
logs are always shown.

It also fixes `Console` to updates its own `processes` state when its properties change.
This is needed because it's no longer guarded by `DataWrapper`, which previously ensured
`Console` is only rendered when there are processes.

Kudos to @jrainville for helping me cracking this nut.
2020-04-02 14:03:23 -04:00
Pascal Precht de8f2170ba fix(plugins/solc): don't read pluginConfig from plugin.config
In https://github.com/embarklabs/embark/pull/2330#discussion_r389906144 we've changed the `solc` plugin to read its
`pluginConfig` from `embark.config`. This was done under the assumption that
the `embark.config` is always properly populated with a dedicated `pluginConfig`.
In our testing environment we pass `Embark` objects to plugins, while in reality, we pass `Plugin` instances.
These two are different in nature, so relying on `embark.config` inside the plugin seemed the
most pragmatic way forward without introducing a bigger refactoring in the testing APIs.

Unfortunately it turned out that `embark.config` isn't populated with a `pluginConfig`
which essentially caused it to break apps.

This commit reverts that change done in the mentioned PR and patches the Embark testing
API to behave like a `Plugin` while still being an `Embark` instance.
2020-04-02 10:55:58 +02:00
EmbarkBot 1a61bc6b8d chore(prerelease): 5.3.0-nightly.15 2020-03-26 00:15:45 +00:00
emizzle c343367223 chore(@embark/vyper): Update README for Vyper plugin
See the associated PR https://github.com/embarklabs/blog/pull/18.
2020-03-25 15:18:49 -04:00
Pascal Precht 533a2e380e test(plugins/solc): add tests for plugins/solc 2020-03-25 15:05:02 +01:00
EmbarkBot d578e548cf chore(prerelease): 5.3.0-nightly.14 2020-03-25 00:18:59 +00:00
Pascal Precht 2170753dfd test(stack/proxy): introduce tests 2020-03-24 14:49:03 +01:00
Pascal Precht 0e32cc09b5 feat(utils/testing): introduce async/await for actions in tests 2020-03-24 14:49:03 +01:00
Pascal Precht ec134b9307 fix(stack/proxy): have proxy.stop() receive callback 2020-03-24 14:49:03 +01:00
Pascal Precht d9c8109201 fix(stack/proxy): ensure wsProxy and httpProxy have correct type
Both, `httpProxy` and `wsProxy` inside `Proxymanager` have been assigned
the value of `new Proxy(...).serve()` which is an instance of `express`.

This was wrong and causes runtime errors when proxies are being stopped as
they don't have a `stop()` API.
2020-03-24 14:49:03 +01:00
EmbarkBot 7ae17612dd chore(prerelease): 5.3.0-nightly.13 2020-03-24 00:15:01 +00:00
emizzle 72e609a7e9 feat(@embark/accounts-manager): Get alternative coinbase address
In dev mode, accounts are funded per the blockchain accounts config. In specific situations, there may not be enough funds on the account returned by `eth_coinbase`. In that case, and in the case when `eth_coinbase` returns `0x0` (or equivalent), loop through all accounts and find the one that has the most funds and use that as the coinbase account.
2020-03-23 20:19:04 +01:00
emizzle edf43470e4 fix(@embark/storage): Fix hang when changing environments
Fix an issue with storage process launcher hanging when changing environments. This occurred most frequently when the IPFS process was forced to restart due to the change in environment. Change in enviroment can be considered:
1. `embark run env1`
2. `Ctrl+c`
3. `embark run env2`
2020-03-23 20:19:04 +01:00
emizzle 095bd0b971 feat(@embark/quorum): Add support for Quorum blockchains
Add support for *connecting to* Quorum blockchains. This plugin will not start a Quorum node or nodes automatically as Embark does with other chains.

This plugins supports deploying contracts publically and privately using the Tessera private transaction manager.

This plugin supports sending of public and private transactions using the Tessera private transaction manager.

Add ability to skip bytecode checking as part of the contract deployment process. Instruct the deployer to skip checking if the contract bytecode exists on-chain before deploying the contract. This is important in the case of having many private nodes in a network because if a contract is deployed privately to node 1 and 7, running Embark on node 2 should skip the bytecode check as the contract *is not* deployed on node 2, nor do we want it deployed on node 2. If the bytecode check was in place, Embark would have deployed it to node 2 and therefore not adhered to the privacy needs.

Add Ethereum contract deployer for Quorum, allowing for deploying of public and private contracts using `privateFor` and `privateFrom` (see Contract config updates below).

Add web3 extensions enabling specific functionality for Quorum. Extensions includes those provided by [`quorum-js`](https://github.com/jpmorganchase/quorum.js), as well as some custom monkeypatches that override web3 method output formatting, including:
 - web3.eth.getBlock
 - web3.eth.getTransaction
 - web3.eth.getTransactionReceipt
 - web3.eth.decodeParameters
DApps wishing to take advantage of these overrides will need to patch web3 as follows:
```
import {patchWeb3} from "embark-quorum";
import Web3 from "web3";

let web3 = new Web3(...);
web3 = patchWeb3(web3);
```

Add support for sending a raw private transaction in the Quorum network. This includes running actions from the proxy after an `eth_sendTransaction` RPC request has been transformed in to `eth_sendRawTransaction` after being signed.

fix(@embark/transaction-logger): Fix bug when sending a 0-value transaction.

Add `originalRequest` to the proxy when modifying `eth_sendTransaction` to `eth_sendRawTransaction`, so that the original transaction parameters (including `privateFor` and `privateFrom`) can be used to sign a raw private transaction in the `eth_sendRawTransaction` action.

Added the following properties on to blockchain config:
 - *`client`* `{boolean}` - Allows `quorum` to be specified as the blockchain client
 - *`clientConfig/tesseraPrivateUrl`* `{string}` - URL of the Tessera private transaction manager
```
client: "quorum",
clientConfig: {
  tesseraPrivateUrl: "http://localhost:9081" // URL of the Tessera private transaction manager
}
```
Added the following properties to the contracts config:
 - *`skipBytecodeCheck`* `{boolean}` - Instructs the deployer to skip checking if the bytecode of the contract exists on the chain before deploying the contract. This is important in the case of having many private nodes in a network because if a contract is deployed privately to node 1 and 7, running Embark on node 2 should skip the bytecode check as the contract *is not* deployed on node 2, nor do we want it deployed on node 2. If the bytecode check was in place, Embark would have deployed it to node 2 and therefore not adhered to the privacy needs.
  - *`privateFor`* `{string[]}` - When sending a private transaction, an array of the recipient nodes' base64-encoded public keys.
  - *`privateFrom`* `{string}` - When sending a private transaction, the sending party's base64-encoded public key to use
```
environment: {
  deploy: {
    SimpleStorage: {
      skipBytecodeCheck: true,
      privateFor: ["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc"],
      privateFrom: "BULeR8JyUWhiuuCMU/HLA0Q5pzkYT+cHII3ZKBey3Bo="
    }
  }
},
```

 - *`proxy:endpoint:http:get`* - get the HTTP endpoint of the proxy regardless of blockchain settings
 - *`proxy:endpoint:ws:get`* - get the WS endpoint of the proxy regardless of blockchain settings

 - *`runcode:register:<variable>`* - when variables are registered in the console using `runcode:register`, actions with the name of the variable (ie `runcode:register:web3`) will be run *before* the variable is actually registered in the console. This allows a variable to be modified by plugins before being registered in the console.
2020-03-23 20:19:04 +01:00
Pascal Precht 0c9b917371 fix(@embark/cmd_controller): don't try to load pipeline module group in build cmd
We've made the `basic-pipeline` optional in 948956ab1f but are still
trying to load the pipeline module group in inside the `build` cmd.
This breaks at runtime as no such module group exists anymore.
2020-03-23 17:01:35 +01:00
Jonathan Rainville 897aa3f839 fix(@embark-ganache): fix ganache having different node accounts
When using accounts, yes those account are always the same, but
ganache still creates it's own accounts, with a random mnemonic.
So Plugins that rely on the node accounts were crashing on second
run, because the node accounts were no longer the same.
2020-03-23 15:21:35 +01:00
Jonathan Rainville fde1eeb3a7 fix(@embark/blockchain): fix blockchain plugins' use of async whilst 2020-03-23 15:21:35 +01:00
Pascal Precht 031ebe8bb2 fix(plugins/basic-pipeline): ensure correct webpack config is loaded
When making `basic-pipeline` in 948956ab1f we've introduced a regression
and with this fix, a behaviour change as well::

1. The `webpackConfigName` passed to `Engine` is completely ignored, caused it to be
  `undefined` down the line when the plugin tries to do its work (we essentially broke bundling)
2. With that configuration being ignored, we need a new way to make this configurable.
  Since `basic-pipeline` is now a true plugin, it makes sense for itself to have configuration
  options for that, while still providing decent defaults.
3. The trickly thing is that `webpackConfigName` used to have different values per command.
  For example `build` used to use `production` while `run` used `development` as config.
4. This commit introduces new configuration options for `basic-pipeline` that lets users configure
the `webpackConfigName` per environment:

```json
// embark.json
{
  ...
  "plugins": {
    "embark-basic-pipeline": {
      "development": {
        webpackConfigName: "development"
      },
      "production": {
        webpackConfigName: "production"
      }
    }
  }
}
```
^ These are also the defaults. So not providing this configuration will make
Embark imply it.

Notice that this does not account for the "different config per command" case.
This means `embark build` will also use `development` by default.

Prior to this commit and the one mentioned above, the `webpackConfigName` was configurable
through the CMD `--pipeline` option. Since this a) no longer a built-in feature
and b) ignored at the moment anyways, I've removed the `--pipeline` options
from all commands as well.

BREAKING CHANGES

The commands `embark eject-webpack` and `embark eject-build-config` are no longer available.
The `--pipeline` option has been removed from all commands that used to support it.
2020-03-23 15:19:58 +01:00
emizzle 5fe318bf23 feat(@embark/dapps): Add blockchain config to simple template
Add blockchain config to simple template, and supporting files (ie passwords, genesis) that aid in examples set forth in the blockchain config.
2020-03-23 13:21:05 +01:00
emizzle a454ae8b11 feat(@embark/core): Support minimum truffle projects
When taking a bare-minimum truffle project, created from the [`metacoin` truffle box](https://github.com/truffle-box/metacoin-box), there were only two steps that needed to happen as a prerequisite:
1. First, run `embark init`, creating a default `embark.json`
2. Second, run `npm init`, creating a default `package.json`.

Trying to run `embark run` before those prequisites would error with appropriate directions in the console, guiding the user to run those steps explicitly.

After running these two steps, Embark would hang waiting for the namesystem plugin to come up.

Changing the default namesystem config to disabled allows Embark to start up successfully without hanging.

The rationale behind this decision is that if `embark.json` doesn’t exist, then we cannot expect that the namesystem plugin will be installed in the project either, and thefore its default value should be disabled.
2020-03-23 13:20:34 +01:00
Michael Bradley, Jr 469504f3b2 refactor: modify check-yarn-lock.js to use a blacklist instead of a whitelist
Refactor `scripts/check-yarn-lock.js` to use a dynamically calculated
blacklist (`npx lerna ls --all --json`) instead of a hard-coded whitelist to
improve accuracy and reduce future maintenance.
2020-03-22 22:30:21 -05:00
Michael Bradley, Jr bc92b7aac5 build: implement a script to fix intra-monorepo dep range specifiers in rebased branches
Range specifiers for intra-monorepo dependencies can, because of nightly or
stable releases, get out of sync between PR branches and `master`. In many
cases, what then happens is that yarn can't satisfy the dep range with the
version in the monorepo, so it installs from the registry and updates
`yarn.lock` accordingly. We have a `check-yarn-lock.js` script (`yarn cylock`)
that detects the situation and prevents CI from passing. However, to date the
problem has to be fixed manually.

Implement a script that fixes the problem by scanning all the `package.json`
files and updating mismatched ranges.

It's best to run the script *after* rebasing against `master`.
2020-03-21 15:44:54 -05:00
EmbarkBot 7f52634331 chore(prerelease): 5.3.0-nightly.12 2020-03-21 00:15:48 +00:00
Pascal Precht c9a35faa1e test(stack/storage): updates dependencies and add missing tests 2020-03-20 17:24:17 +01:00
emizzle 471a33a331 chore(@embark/blockchain): Add unit tests to blockchain stack component
fix(@embark/blockchain): Add callback to `blockchain:node:register` and `blockchain:client:register`

Add unit tests for the stack/blockchain and update supporting API documentation in the Wiki.

Add injectables `Web3` and `warnIfPackageNotDefinedLocally` to stack/blockchain so that those functions can be tested properly.

Update stack/blockchain dependencies in `package.json`.
2020-03-20 14:40:14 +01:00
emizzle 56d5b45bbb chore(@embark/testing): Add testables to embark test objects
1. Add IPC mock and assertions.
2. Add console command registration assertion and console command mock.
3. Add event emission assertions
2020-03-20 14:40:14 +01:00
EmbarkBot d5e0897231 chore(prerelease): 5.3.0-nightly.11 2020-03-20 00:17:02 +00:00
Michael Bradley, Jr a5f0a1254e test(@embark/snark): re-active test script but skip tests that need additional refactoring 2020-03-19 16:13:17 -05:00
Michael Bradley, Jr eb33aa16ee build: activate linter in ci/qa for packages that were missing it 2020-03-19 16:13:17 -05:00
Michael Bradley, Jr ece942b3a8 refactor(@embarkjs/snark): use same "main" pattern as other packages 2020-03-19 16:13:17 -05:00
Michael Bradley, Jr 11b53970fb chore: update intra-monorepo dependencies that were out of sync with current prerelease versions 2020-03-19 16:13:17 -05:00