There are three separate instances of process log APIs: embark logs, blockchain logs (when in standalone mode), and child process logs (storage, communication, blockchain, etc). Each one was repeating the implementation of creating a process log API endpoint. This commit centralises the API declaration by using the class `ProcessLogsApi`.
`ProcessLogsApi` is started for all three components mentioned above: blockchain (in standalone) in the `BlockchainListener` module, embark in the `EmbarkListener` module, and for all child processes in the `ProcessLauncher`.
These listeners have two functions:
1. Create the process logs API endpoints for `get` and `ws`, and
2. Ensure that all logs are logged through the `LogHandler`, which normalises the output of the log and ensures each log has a timestamp and id (used in the cockpit for log ordering).
Also, this commit moved the pipeline in to a module, so that the `embark` object could be passed to the `ProcessLogsApi` (to be used for registering API endpoints).
display last line on tx
fix debugger call
listen to source event only after jumping to the end
keep track of last tx; add minimal debug feature; fix ast issue
initial debugger apis & ui integration
prevent crash when step is out of bounds; send all all available data in websocket
add debugger commands
fix line number tracking in editor; toggle breakpoints
replace timeouts with callbacks
add debugger manager & refactor
refactor debugger api
refactor cmd line debugger
reduce debugger decoupling
reduce debugger decoupling
fix debug buttons
trigger source update so api triggers ws event to update source location
move locals and contracts vars to a json view
improve debugger icons
simplify debugger data
update debug package
add command handler to get a contract given a tx; update debugger so it can get a contract by its tx instead of tracking latest txs only
update debugger package
- Add no cache via helmet
- Fix linting (no-return-else)
- Rebase Fix: Use option.name for process log to avoid endpoint being called
blockchainProcess.js
- Rebase Fix: use option when compiling solidity
Handle use cases:
1) handle case when temp.sol doesn’t exist - due to the new saga updates, the response from retreiving a temp fiddle from the filesystem (even if it doesn’t exist) is forward to the compilation endpoint, which returns an ENOENT, and this is handled in the selector.
2) delete all code - shouldn’t return last fiddle and should compile an empty string.
3) Switch to different tab (ie contracts) then back to fiddle - previous fiddle should remain.
Also fixed an issue (most likely due to latest rebase) when deploying fiddle contracts. The gasLimit was not being specified.
Handled issue where entities stored in the state were not being put in the correct order, so a timestamp was sent with the requests and then sorted when the response was returned.
1) hanlde case when temp.sol doesn’t exist
2) delete all code - shouldn’t return last fiddle
3) Switch to different tab (ie contracts) then back to fiddle - fiddle should now remain.
Fiddles are now stored in the filesystem so they can be preserved across page reloads, but also so that contracts deployed via fiddles can have their source code shown.
Fiddles deployed as contracts now fully work with existing contract list UI and functionality. Fiddle deployed contracts are listed in a separate section in the UI.
Current limitation is that only single contracts per file are supported. If the fiddle contains multiple contracts, it’s currently not supported.
Fiddle is properly deploying now, except the source code needs to be saved to the filesystem in order to be recalled later.
Fixes for handling errors on deploy and compilation.
Update contract state UI for determining state / interface / deployed.
Changed `fiddle` to an entity and removed unneeded fiddle reducer.
Added a selector for getting the entity.
Changed fiddle saga to `doRequest`.
Changed fiddle api call to the `post` method (did not see beofre the rebase).
Added `CompilerError` presentation component to handle displaying compiler errors and warnings.
Added spaces to css (as requested).
Removed extra space after function in solidity compiler (as requested).
Removed the compile contract event from the solidity compiler (as requested).
Handling of fatal api error in the UI.
Changed fiddle action to the one created with `createRequestTypes`.
Moved `Fiddle` nav tab before `Documentation`.
Changed `FiddleResults` DOM manipulation to be controlled via React state instead.
Compiler annotations added to editor gutter for errors and warnings
Clicking an error now scrolls editor to offending line and scrolls page to the top of the editor
Added Compiling… loader.
Added catch to live-plugin-manager install promise running in child process
Removed some `else`'s ;)
Only showing solc downloading spinner when `--nodashboard` option is used.
When installing package in main process and simultaneous downloads fail, all callbacks called with error.
Updated logging in npmTimer.
Added better error checking for solidity compilation errors
Extracted timer functionality for downloading packages so it works across the main process and child processes.
Npm class is instantiated only once and reused for event commands.
Npm class can handle concurrent requests for the same package and callback the installation result for each request.
Moved the instantiation of the live-plugin-manager in to the child solc process. This allowed us to use the live-plugin-manager to require the installed solc file.
If the module is the same version as used by embark, the module is still loading using the normal require (from node_modules), as before.
Added better error checking for solidity compilation errors
Extracted timer functionality for downloading packages so it works across the main process and child processes.
Npm class is instantiated only once and reused for event commands.
Npm class can handle concurrent requests for the same package and callback the installation result for each request.
Moved the instantiation of the live-plugin-manager in to the child solc process. This allowed us to use the live-plugin-manager to require the installed solc file.
If the module is the same version as used by embark, the module is still loading using the normal require (from node_modules), as before.