**Interface changes**
There are two goals behind the interface changes:
* Make it clearer which courier modules are meant for public consumption by exporting them from the top level.
* Simplify the courier object by removing responsibilities and focusing its responsibility solely on scheduling search requests via the fetch method and timefilter.refreshInterval Angular event.
I did this by taking the following steps:
* Removing redirectWhenMissing, indexPatterns, SearchSource, and SavedObject from the courier object. I also removed some unused methods from its interface.
* redirectWhenMissing is now a service registered on the kibana/url Angular module.
* indexPatterns is now a service registered on the kibana/index_patterns Angular module.
* SearchSourceProvider and SavedObjectProvider are now top-level exports of ui/courier.
* migrateFilter, decorateQuery, buildQueryFromFilters, and luceneStringToDsl are now top-level exports of ui/courier.
**Internal changes**
I also made some internal changes in an effort to organize the code clearly and reduce unnecessary complexity.
* I refactored the async code in CallClient to appear sync with async/await and encapsulated chunks of logic in helper functions. I also used an isAborted flag instead of overwriting the esPromise var with an enum.
* I combined Looper and SearchLooper into a single class and deleted unused functions.
* I reorganized the courier/fetch/request code into SearchRequest, SegmentedSearchRequest, and serializeFetchParams modules.
* Renamed various other methods and variables to improve clarity.
* use uiSettingsClient instead of angular config service
* replace timefilter service with singleton
* remove all other uses of timefilter service, get timefilter singleton working
* remove Private from brush event
* globalState
* fix timefilter jest test
* clean up rebase artifacts
* lint errors
* another lint error
* fix broken functional test _shared_links
* fix broken mocha test doc.js
* fix service load order breaking status page
* remove Provider from change_time_filter
* another round of mocha test updates
* convert create_brush_handler test to jest
* fix kbnGlobalTimepicker toogle mocha test
* remove _root_search_source - removed in another PR and somehow I added it back during rebase
* better comments around Object.assign and proper js-docs format
* use so listerners get cleaned up when scope is destroyed
* listen to correct timefilter update event
* update APM to use timefilter singleton
* update angular scope when timefilter changes
* fix APM jest test
* add listenAndDigestAsync to listen.js
* fix apm breadcrumbs jest test
* move diffTime and diffInterval into timefilter
* pass mode to updateFilter to resolve functional test failure
* call registerTimefilterWithGlobalState from APM application
* remove rootScope from kbn_global_timepicker
* use to subscribe to timefilter in cases where results need to happen in digest async
* spalger review changes
* ensure monitoring timefilter callbacks are executed inside evalAsync
* remove unneeded evalAsync calls around setTime
* adding generated spec files for xpack endpoints and adjusting code to handle the same override logic
* accounting for non URL documentation values
* fixing issue with incorrect override file
* adding support for unknown parameters in path (assuming they are ids)
* fixing autocomplete for get_categories ml API
* fixing issue with autocomplete for get_overall_buckets
* fixing issue with get_overall_buckets autocomplete
* fixing get_overall_buckets autocomplete issue for reals
* fixing __flag__ in body autocomplete specs
* fixing issue with ml put_datafeed autocomplete
* removing unnecessary overrides for rollup put_job
* fix issue with UrlPatternMatcher
* fixing tests
* fixing typos
* overriding rollup get due to bug in ES specs
* Move <kbn-dev-tools-app> Angular wrapper directive usage into route template
* Move sole directive into new directives folder
* WIP checkin: basic conversion to React components
* Fix sample custom patterns indentation
* Remove custom CSS
* Wrap button in EuiFormRow + define isSimulateDisabled
* Wire up simulate
* Cleanup
* Ace formatting options
* Better styling
* Adding spacing between custom patterns and simulate button
* Fixing form row widths
* Removing form row around button
* Add indentation/newlines in structured output
* Error handling
* Use constants
* Removing no-longer-used code
* Implement syntax highlighting via custom mode
* Making functional tests pass
* Adding trailing comma back
* Removing fixed heights
* Removing unnecessary styles
* Make Event Output form row full width as well
* Wrapping EuiCodeEditors in EuiPanels
* Adding spacer before callout; making spacing around callout consistent
* Clear out custom patterns from request if field is cleared out
* Clear out simulation results before attempting simulation
* Set state with untrimmed value
* typescript screenshot stitcher
* Throw an error if the data captured is not of the expected width and height.
* Import babel-core types
* Add babel-core types to x-pack package.json
* Dimensions => Rectangle
* Separate bulk upload behavior from CollectorSet
- takes out a lot of behavior from CollectorSet and moves it to a class called BulkUploader
- simplifies kibana monitoring init by taking out the indirection that startCollectorSet / createCollectorSet had
- removes start() method from CollectorSet and calls the collector objects' init() functions from CollectorSet.register()
- removes cleanup method from collectorSet since that was doing work for bulk uploading
* remove cleanup and fetchAfterInit methods
* test for bulk_uploader class
* improve test for collector_set
* fix reporting
* expose collectorSet if there actually is a collectorSet
* comment for enclosed function
* make collectorSet creation/expose unconditional, bulkUploader more conditional
* fix collector_set tests
* lifecycle events
* stab at collectorSet error logging from the API call
* clean up comments
* clean up comments
* fix BulkUploader mocha test
* check kibanaCollectionEnabled config before registering bulk upload and the plugin status listeners
* no singleton timer object
* just log a warning if bulk uploader start called twice
* normal quotes
* check if bulk is enabled inside of the _fetchAndUpload method
* log for stopping bulk stats
* call bulkUploader.start with the collectorSet object
* call bulkUploader.start with the collectorSet object
* roll back change for module scoped variable
* oops I broke init
* init and logging: if / elseif / elseif
* remove unnecessary check/log
* help log
* remove redundant, use data.filter.map
* use xpackInfo.onLicenseInfoChange not xpackMainPlugin.status.on('green')
* help logging
* fix unit test
* remove handler that stops upload when connection is lost
Fixes#20017
Currently the xpack_main plugin only sets its status when the elasticsearch plugin changes status, which is a fine signal that the plugin should recheck for the license info, but not the only time it can be updated. At some point recently a race condition became more likely to be triggered, which is detailed in https://github.com/elastic/kibana/issues/20017#issuecomment-398209354 and causes the xpack_main plugin to set its status to red and never return it to green, even after the license info is successfully fetched from Elasticsearch.
To fix this the `XpackInfo` class now exposes the `onLicenseInfoChange(handler)` method which will call the handler whenever the xpack info changes. This way the xpack_main plugin can reflect the current state of the license info in its status and doesn't have to wait for the elasticsearch plugin to change status again.
To test this I recommend running kibana with `--elasticsearch.healthCheck.delay=500` or even `250`, and then starting Elasticsearch after Kibana has started. Without this change Kibana is very likely to attempt a healthcheck between the time that Elasticsearch is "started" and the x-pack license info is completely loaded, triggering the race condition. With this change you should see the xpack info plugin (and all other xpack plugins) go red with a more informative message, and then after the first request or 30 second polling timer, the plugins should go green again.

* Add Inspector feature
* So long, and thanks for all the fish, spy panel
* Fix several functional tests
* Fix unit tests
* Fix spy panel button tests
* Replace old spy panel documentation
* Disable test temporarily until we have dashboard triggers
* Enter edit mode for dark theme test
* Fix some more functional tests
* Fix more functional tests
* More test fixing
* Fix more functional tests
* Allow opening the inspector via loader handler
* Refactor InspectorViewChooser, remove unused CSS
* Remove dead code
* Fix data download button style
* Remove redundant code
* Load inspectorViews for dashboard_viewer
* Extract inspector views to custom core_plugin
* Switch API to TypeScript 🎉
* Design changes
* Remove icons from views
* Design changes
* Improve typings of API
* Add typing to all adapters
* Show loading spinner in request selector
* Rewrite InspectorView to TypeScript
* Fix help text for data view
* Remove deprecated React lifecycle methods
* Embed inspector into dashboard panel actions
* Remove temporary inspector trigger
* Remove old CSS
* Fix dashboard trigger for new panel action
* Add tests for InspectorPanel and DataAdapter
* Produce a hierarchical table if the vis is hierarchical
* Remove allowJs option again
* Add missing Apache license headers
* Close inspector on dashboard when navigating away
* Use proper title for dashboard panels
* Fix functional tests
* Skip broken test for now
* Flush view chooser button
* Add request adapter tests
* Skip more tests, broken due to typescript
* Add Request Time description
* Add description for courier request
* Fix tests
* Replace icon by new (not yet released) icon
* Finalize design of inspector
* Remove discover test, that relied on spy panels
* Change API to be properly mockable in tests
* Add aria-live region for request status
* Replace old method in functional tests
* Replace abitrary magic number
* Use object destructuring in vis
* Fix issue with crashing requests view
* Add request time tooltip
* Get request body of correct search source
* Make filter buttons properly keyboard accessible
* Follow Dave's design suggestions
* Remove redundant request from name
* Remove unneeded comments
* WIP raw-formatted values
* Fix filtering issue
* Fix tests and more license headers
* Add data view tests
* Remove search from table
* Fix typos
* Implement review suggestion
* Remove artificial delays for testing
* Fix new panel action structure
* Minor design adjustments
* Fix failing functional test
* Update failing snapshot test
* Implement final wording
* Apply new EUI styling
* Fix closing inspector in tests
* Fix sorting of table
* Align punctuation between tooltips
* Patch ConfigView changes from x-pack-kibana to OSS Kibana.
* Remove old css.
* Update style for queue statement.
* WIP modifying based on designer feedback.
* Add flatten function and list class.
* Rename functions to be more descriptive.
* WIP checkin. Modify components to handle flattened object list.
* Finish moving flatten logic into classes, add tests.
* Simplify flattening, remove non-native dependency. Add more tests.
* Add defaults to simplify function call.
* Refactor two blocks into a function.
* Begin adapting components for list.
* Add collapse functionality.
* Add expand functionality.
* Nested collapsed elements remain collapsed on parent expansion.
* Style section headers.
* Update Plugin statement styles.
* Add DetailDrawer support.
* Update statement formatting.
* Add stats to plugin element rows.
* Resolve conflicts.
* Remove obsolete code.
* Reorganize code.
* Remove warnings.
* Add PropTypes. Add keys to arrays and iterables.
* Update color for borders/buttons.
* Add stat class. Clean up code.
* Convert plugin statement component from class to function.
* Update queue metrics message.
* Update style to make view more responsive.
* Change section heading size.
* Remove gutter from metrics group.
* Change name "stat" to "metric".
* Remove obsolete export line, simplify declaration, based on PR feedback.
* Add new functional component in place of model class.
* Add PropTypes to several components. Rename a function. Add keys to metrics.
* Convert stateless classes to functional components.
* Prefer ES6 syntax over bindings for Component methods.
* Do not render statement section if there are no statements.
* design cleanup for pipeline viewer
* Update CSS to add min-height to page.
* Rename "elements" to "statements". Delete unused LESS variables.
* Revert naming of "statements" to "elements" for StatementList component.
* Update jest snapshots for DetailDrawer.
This PR upgrades RxJS to version 6 and switches to a fork of `stream-to-observable` which includes an updated version of `any-observable` that supports RxJS 6 until https://github.com/jamestalmage/stream-to-observable/pull/10 is merged. The primary change in this version of RxJS is the movement of stream operators from `Obersable.prototype` to the `rxjs/operators` module. Some of the operators, like `catch` and `do`, have been renamed (`catchError`, and `tap`). The Obsevable factories have also been moved from static methods on the `Observable` class to named exports of the root `rxjs` module. Some of those factories have also changed slightly, like `fromEvent` which now emits arrays if the event handler is called with multiple arguments.
```js
// import the Rx namespace to get the Observable factories
import * as Rx from 'rxjs';
// import the operators as named imports
import { map, tap, switchMap } from 'rxjs/operators';
```
* [Monitoring/No Data] Show a "still waiting" link after 19s
* minor bug fix: spinner if _interval_ updating
* update "we tried"
* some wording changes on activating / trying to activate monitoring
* cancel the setTimeout when component gets unmounted
* more wording tweaks
* update snapshot
To get rid of angular's tooltip="..." code in the header of data cards of the data visualizer, this introduces a ml-field-title-bar directive/component.
- The directive replaces the raw template code in field_data_card.html.
- The directive itself wraps a React component which uses EUI's tooltip instead of angular's tooltip attribute.
- The previous angular template logic (about which classes and fieldnames to display) is also move to the React component
- Fixes an issue with cut off text within aggregation type dropdowns in the multi-metric and population wizard.
- Fixes the style of the dropdown to be consistent across browsers.
- Fixes 1px vertical offset between dropdown and trash-icon.
- Deprecates the use of jQuery to render the swimlanes axis labels and uses d3's axis component instead. We already used d3 features like d3.scale and others to calculate the label positions but the DOM rendering was still done using jQuery.
- Additionally, adds some logic to remove/fix overlapping labels.
1. Increases the top margin to 5 and the right margin to 1 to avoid cutting off the chart because overflow is hidden for the directives mlEventRateChart and mlMultiMetricJobChart. The top margin gives enough room to avoid cutting off y-axis labels. The right margin is a tweak to not cut off the gray border by 1 pixel to the right.
2. Fixes how the domain for mlEventRateChart is calculated. The domain gets now extended by 1 barsInterval, otherwise the last bar will start at the end of vizWidth and overflow the chart (the overflow is hidden so the visible chart missed one bar).
* adding documentation links when the endpoint is known
* making doc link reflect version user is using
* adding documentation links for xpack APIs
* fixing missing argument issue
* removing console log
* fixing issue with lingering documentation after text is deleted
* fixing issue with documentation and multiple commands in the editor
* adding $scope.$apply so documentation changes show up in UI
* removing dead code
* adding missing boost param for match_all
* fixing issue with parameterized endpoint completion
* adding keyboard shortcut for opening documentation for current request
* fixing issue with keyboard docs shortcut when you just move the cursor around