Commit Graph

5436 Commits

Author SHA1 Message Date
Michael Bradley, Jr 9afdbd9848 refactor(embark-ui): improve cockpit's contracts explorer
Rename contract "Transactions" tab to "Log". Display and allow filtering of all
contract methods. Disable debug button for pure/view functions and the
constructor.

Revise the filtering logic so that filters are combined together. Make the
status filter a drop down menu like the others.

Revise styling for consistent row height, alignment of text, and button sizes;
use a monospaced font in some cases to achieve the effect.

Handle enter/return correctly in forms within a contract's Interact tab.

Remove event rows from a contract's Interact tab.

Track pure/view calls in the blockchain proxy so they can be logged server-side
by console listener and reported in Cockpit within a contract's Log tab.

Eliminate double logging in the contracts manager. Ensure contracts deployed on
a fresh `embark run` have an `address` / `deployedAddress` property.
2019-03-15 12:03:52 -05:00
Andre Medeiros b15467f64a feature: decode raw transactions in tx decoder 2019-03-15 12:28:21 -04:00
Jonathan Rainville 5e4a80edec fix(embark/storage): fix hang when storage is disabled 2019-03-14 17:32:04 -04:00
Jonathan Rainville 4d424c06b9 fix(embark/solidity): fix getting the original filename of contracts 2019-03-14 14:15:45 -04:00
Andre Medeiros aba4e0e059 fix: track and debug last transaction correctly 2019-03-14 14:15:19 -04:00
Jonathan Rainville 9bb33e9274 fix(cockpit/suggestions): fix suggestions with slashes 2019-03-14 14:14:52 -04:00
Iuri Matias cfd06b5fe1 feature(@embark/ipfs) add other gateway urls for ipfs 2019-03-14 14:13:51 -04:00
Andre Medeiros 2cc0d305e6 fix: pressing enter on "Display additional results" does the expected thing 2019-03-14 14:13:35 -04:00
Jonathan Rainville 5816a79ae6 fix(cockpit/sidebar): fix closed sidebar in the dark-theme 2019-03-14 14:01:57 -04:00
Jonathan Rainville 22e771bbda fix(cockpit/console): fix cockpit's console outputting "console >" 2019-03-14 14:01:47 -04:00
Iuri Matias 785edf4c9d use e.key instead of e.which 2019-03-14 14:01:28 -04:00
emizzle 8b7a374313 fix(@embark/cockpit): Utils/Communications handle enter
Handle enter pressed when listening to channels and sending messages.
2019-03-14 14:01:28 -04:00
Michael Bradley, Jr cc8363a94b fix(embark-ui): correctly calculate which blocks to display
Revise calculations related to block numbers and pagination in the blocks
explorer and explorers overview.

Make the number of blocks to display per page configurable and set it to 5 in
the explorers overview.
2019-03-13 12:35:12 -04:00
Jonathan Rainville 618ceb6ff2 fix(embark/contracts): add the contracts back to the autocomplete 2019-03-13 12:34:54 -04:00
Jonathan Rainville dd1133d9cf fix(embark/dashboard): fix dashboard not printing repl errors 2019-03-13 12:20:25 -04:00
Jonathan Rainville dddc9d0cf6 fix(cockpit/firefox): fix bug with entities in firefox (ordering) 2019-03-13 12:13:52 -04:00
Jonathan Rainville 447f3eda06 fix(cockpit/transactions): enable filtering constructor 2019-03-13 11:08:20 -04:00
Jonathan Rainville a341a4f3b2 fix(cockpit/console): replace br with backslash n 2019-03-13 10:21:10 -04:00
Jonathan Rainville 71da423e4e fix(cockpit/console): increase number of suggestions 2019-03-13 10:21:01 -04:00
Jonathan Rainville 54698ccf53 fix(embark/dashboard): show command in the dashboard 2019-03-13 10:20:41 -04:00
emizzle 6f5efb16a6 fix(@embark/storage): Storage processes race conditions
Previously, storage providers in embarkjs were not waiting for their respective storage process (ipfs and swarm) to start before running `registerProvider` and `setProvider` in the console.

This PR forces the `registerProvider` and `setProviders` from running in the console until the storage processes have loaded. As a side effect, the code generation of `EmbarkJS` must wait for the storage module ot be fully initiated (ie once the processes have launched and the `registerProvider` and `setProviders` have been run) before generating the code.

This fixes errors pertaining to `Could not connect to a storage provider using any of the dappConnections in the storage config` as these errors were typically caused by `setProviders` being called before the storage processes had fully launched.
2019-03-13 10:15:52 -04:00
Jonathan Rainville be3817821d fix(cockpit/dashboard): fix logs not in cockpit with dashboard 2019-03-13 09:46:12 -04:00
Michael Bradley, Jr 5c2e30c26c fix: remove unneeded test_dapps/ directory in the monorepo root 2019-03-12 11:35:23 -05:00
Pascal Precht 20d3acb8b1 uiux(@embark/authenticator): Change web backend to Cockpit 2019-03-12 09:17:43 -04:00
Michael Bradley, Jr 5418f16082 feat: normalize README and package.json bugs, homepage, description
Make changes by running these commands in the root of the monorepo:

**bugs**
```shell
npx lerna exec --concurrency 1 --stream -- \
    'DIRPATH=$(realpath $PWD --relative-to=$LERNA_ROOT_PATH); \
    npx json -I -f package.json -e "this.bugs=\
        \"https://github.com/embark-framework/embark/issues\""'
```

**homepage**
```shell
npx lerna exec --concurrency 1 --stream -- \
    'DIRPATH=$(realpath $PWD --relative-to=$LERNA_ROOT_PATH); \
    npx json -I -f package.json -e "this.homepage=\
        \"https://github.com/embark-framework/embark/tree/master/${DIRPATH}#readme\""'
```

Don't commit changes to private packages, with the exceptions of embark-typings
and embark-reset because those may switch from private to public, and also
because the latter will be included in `node_modules` of embark even if it is
private since embark-reset is presently a bundled dependency of embark.

Don't include the homepage and bugs fields in dapps generated from the template
packages, except for the demo. Set those dapps' description field to an empty
string.

Ensure every package (inc. private packages) has a description.

Ensure every package (inc. private packages) has a README that begins with:

```markdown
`[pkgJson.name]`
================

> [pkgJson.description]

Visit [embark.status.im](https://embark.status.im/) to get started with
[Embark](https://github.com/embark-framework/embark).
```

Don't include the README in dapps generated from the template packages, except
for the demo.
2019-03-12 09:17:33 -04:00
emizzle 3aafde3335 fix(@embark/pipeline): Prevent crash when assets not specified
Prevent embark from crashing when app assets are not specified in `embark.json`.

Previously, if the `app` property of `embark.json` was missing, embark would crash with the error `TypeError: Cannot convert undefined or null to object`.

With this PR, the missing property is null-checked.
2019-03-12 07:55:01 -04:00
emizzle 5ea4807c90 feat(@embark/pipeline): Add `enabled` property to pipeline config
Add an `enabled` property to the pipeline config. This lets developers disable the pipeline using the config file.

Updates to the enabled property will be reflected while embark is running. For example if embark is running with the pipeline, setting `enabled: false` in the pipeline config will build/deploy the contracts but not run the pipeline. Conversely, if embark is running with the pipeline disabled, enabling the pipeline in the config will build/deploy the contracts then build the dapp.
2019-03-12 07:53:04 -04:00
Michael Bradley, Jr df0064f1a9 build: use package.json "files" instead of .npmignore
`package.json` allows for a [`"files"` whitelist][files] to be specified as an
alternative to a top-level `.npmignore` within a package root. Maintaining
whitelists is generally easier and less error-prone than maintaining
blacklists, so implement a `"files"` list for all non-private packages in the
monorepo and remove unneeded `.npmignore` files.

Switch `embark-reset` from being a private package to one that will be
published, adjust the workspace's `"nohoist"` setting accordingly, and no
longer specify `embark-reset` as a bundled dependency of `packages/embark`. I
originally thought there might be a good reason not to publish it, but I no
longer think so.

Remove unnecessary LICENSE files in `packages/{embark,embark-ui}` since Lerna
will automatically copy the root LICENSE into any packages lacking that file,
i.e. before tarballs are packed and published to the NPM registry.

Change the `"author"` field of `packages/embarkjs-connector-web3` to match the
other packages, i.e. such that it matches the copyright assignment in the root
LICENSE. If that's not a desirable thing to do, then instead that package can
have a separate LICENSE file that has a copyright assignment for `"Jonathan
Rainville"`.

Supply some missing `.npmrc` files in `packages/*`.

[files]: https://docs.npmjs.com/files/package.json#files
2019-03-12 07:50:25 -04:00
Andre Medeiros 0b530f308b fix: node_modules should be part of hidden files 2019-03-12 07:48:20 -04:00
Jonathan Rainville 88a41e7c28 fix(embark/logger): fix logs in the dashboard
they were displaying the color as text instead of as a color
2019-03-11 18:32:48 -04:00
Jonathan Rainville cba7c85242 fix(cockpit/transactions): fix a typo in the transactions page 2019-03-11 18:28:19 -04:00
Jonathan Rainville 74847ee323 feat(cockpit/transaction): display a link for contracts and accounts 2019-03-11 18:28:19 -04:00
emizzle 236f6e63e2 fix(@embark/core): Re-enable regular txs commands/api
https://github.com/embark-framework/embark/pull/1367 introduced a change that prevented the `blockchain_listener` from listening to logs until the IPC server connected. However, the restriction went too far, and included restricting registration of console commands and API endpoints for the regular transactions feature.

This fix reverts the changes that affect registration of regular txs endpoints and console commands.
2019-03-11 18:26:30 -04:00
Michael Bradley, Jr d61dc6ec2f refactor(embark): do not wrap mocha in a child process
It's possible to pass a `--require` option to mocha to load a script that sets
up `process.env.DAPP_PATH` as needed for embark's tests; that approach is
preferable to running mocha in a child process because when running in a child
process there seemed to be problems with sources maps and with VS Code's
debugger.

After the changes in this PR, the following works as expected, i.e. when there
are runtime errors line/col numbers are reported per the files in `src/`:

```
$ yarn build:no-ui
$ cd packages/embark
$ npx mocha "dist/test/**/*.js" \
            --exit \
            --no-timeouts \
            --require ./scripts/test.js \
            --require source-map-support/register
```

And the following VS Code launch config works well for me:

```json
{
  "type": "node",
  "request": "launch",
  "name": "test - packages/embark",
  "cwd": "${workspaceFolder}/packages/embark",
  "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
  "args": [
    "'dist/test/**/*.js'",
    "--exit",
    "--no-timeouts",
    "--require",
    "./scripts/test.js",
    "--require",
    "source-map-support/register"
  ],
  "autoAttachChildProcesses": true,
  "sourceMaps": true
}
```

NOTE for VS Code users: I found it's important to specify
`"'dist/test/**/*.js'"` in the launch config instead of
`"\"dist/test/**/*.js\""`, and that it's important to specify `"program":
"${workspaceFolder}/node_modules/mocha/bin/_mocha"` vs. `"program":
"${workspaceFolder}/packages/embark/node_modules/.bin/mocha"`.

KNOWN ISSUES: when there are runtime errors during `yarn test` in
`packages/embark`, line/col numbers reflect the sources in
`package/embark/dist` because `nyc` isn't setup correctly to use the
source-maps generated by babel. A solution has not yet been found.
2019-03-11 18:25:47 -04:00
Jonathan Rainville 99dcd785bc fix(cockpit/contract): remove contract profiling and use functions 2019-03-11 18:21:54 -04:00
Michael Bradley, Jr a9c5e1ade5 feat: add repository.directory field to package.json
See: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md

Make changes by running this command in the root of the monorepo:

```shell
npx lerna exec --concurrency 1 --stream -- \
    'DIRPATH=$(realpath $PWD --relative-to=$LERNA_ROOT_PATH); \
    npx json -I -f package.json -e \
    "this.repository=\
        {\"directory\": \"$DIRPATH\", \
         \"type\": \"git\", \
         \"url\": \"https://github.com/embark-framework/embark.git\"}"'
```

Don't commit changes to private packages, with the exceptions of embark-typings
and embark-reset because those may switch from private to public, and also
because the latter will be included in `node_modules` of embark even if it is
private since embark-reset is presently a bundled dependency of embark.

Don't include the repository field in dapps generated from the template
packages, except for the demo.
2019-03-11 18:21:24 -04:00
Andre Medeiros f12ca22edb fix: limit cockpit editor file size 2019-03-11 18:20:56 -04:00
Andre Medeiros 616af6d765 fix: validate whisper channel name in communication tab 2019-03-11 18:19:00 -04:00
Andre Medeiros 4340a9b482 fix: editor wasn't saving changes 2019-03-11 18:18:52 -04:00
emizzle a6b15ae98f fix(@embark/cockpit): Switching between tabs resets logs
Switching between the two tabs shown on the Dashboard for the cockpit was removing some of the logs that were previously displayed. This was due to an overlap in `id`’s being assigned to the logs from different processes.

To alleviate this, the reducers has been updated to not only check `id` but also `process.name`.

Additionally, the reducer was updated so that the number of logs for **each process** is set to `ELEMENTS_LIMIT`. For example, our `ELEMENT_LIMIT` is currently set to `200` and it would have meant that the total number of process logs across all processes would have been capped at 200. The current changes in this PR allow for 400 total logs, given that we have two processes being monitored for logs.
2019-03-11 17:39:05 -04:00
emizzle 128ecd4c51 fix(@embark/core): Prevent unnecessary re-renderings
The services websocket was initiated in the AppContainer and causing all child components to continuously re-render every time there was a service check (which is effectively every second). In addition, the socket was never stopped when not needed (ie when the services component was unmounted).

Create a ServicesContainer that initiates the websocket as part of the container, and stops the socket when the container is unmounted.

Move the ContractsList to be part of the ContractsContainer with a `mode` switch.

Add Deployment page title and description.
2019-03-11 17:38:33 -04:00
Jonathan Rainville cc495c5cab hotfix(cockpit/editor): remove test alert 2019-03-11 16:00:26 -04:00
Jonathan Rainville c30c420ae8 fix(cockpit/editor): remove delay on tooltips
This caused issues when moving from one tooltip to the other
2019-03-11 09:05:49 -04:00
Jonathan Rainville 7720eac74f codacy fix 2019-03-11 09:05:15 -04:00
Jonathan Rainville ecdfd473df feat(cockpit/editor): add status messages for file operations 2019-03-11 09:05:15 -04:00
Jonathan Rainville 3f488e1d88 fix(cockpit/editor): add delete modal to confirm deletion
Also fix cases where modals closed for no reason
2019-03-11 09:04:45 -04:00
emizzle 563ba154a3 fix(@embark/tests): Make `web3` available in test descriptions
Previous to this PR, `web3` was only made available to each test case, as it was put in to the global namespace after each test deploy. This was causing issues for tests that use `web3` in the test description (ie in `describe()` or `contract()` functions), as the deploy had not happened yet, and thus `web3` was not yet available. The error encountered in these cases was `web3 is not defined`.

This PR puts `web3` in the global namespace before setting up the tests, making it available to test descriptions.
2019-03-11 12:15:45 +11:00
Jonathan Rainville da76c8d804 fix(cockpit/deployment): filter out silent contracts 2019-03-08 12:55:58 -05:00
Jonathan Rainville 0648824646 fix(cockpit/header): fix nav not highlighted for children pages 2019-03-08 12:55:05 -05:00
Jonathan Rainville 35648eefa0 fix(cockpit): fix converter inputs and copy-button position 2019-03-08 12:55:05 -05:00