mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[SIEM] Bootstrap Cypress Tests (#39588)
# Cypress Tests The `siem/cypress` directory contains end to end tests (specific to the `SIEM` app) that execute via [Cypress](https://www.cypress.io/). At present, these tests are only executed in a local development environment; they are **not** integrated in the Kibana CI infrastructure, and therefore do **not** run automatically when you submit a PR. See the `Server and Authentication Requirements` section below for additional details. ## Organizing Tests and (Mock) Data - Code and CSS selectors that may be re-used across tests should be added to `siem/cypress/integration/lib`, as described below - Smoke Tests are located in `siem/cypress/integration/smoke_tests` - Mocked responses from the server are located in `siem/cypress/fixtures` ### `cypress/integration/lib` The `cypress/integration/lib` folder contains code intended to be re-used across many different tests. - Files named `helpers.ts` (e.g. `siem/cypress/integration/lib/login/helpers.ts`) contain functions (e.g. `login`) that may be imported and invoked from multiple tests. - Files named `selectors.ts` export CSS selectors for re-use. For example, `siem/cypress/integration/lib/login/selectors.ts` exports the following selector that matches the Username text area in the Kibana login page: ``` export const USERNAME = '[data-test-subj="loginUsername"]'; ``` ## Server and Authentication Requirements The current version of the Smoke Tests require running a local Kibana server that connects to an instance of `elasticsearch`. A file named `config/kibana.dev.yml` like the example below is required to run the tests: ```yaml elasticsearch: username: 'elastic' password: '<password>' hosts: ['https://<server>:9200'] ``` The `username` and `password` from `config/kibana.dev.yml` will be read by the `login` test helper function when tests authenticate with Kibana. See the `Running Tests Interactively` section for details. ## Running Tests Interactively To run tests in interactively via the Cypress test runner: 1. Create and configure a `config/kibana.dev.yml`, as described in the `Server and Authentication Requirements` section above. 2. Start a local instance of the Kibana development server: ``` yarn start --no-base-path ``` 3. Launch the Cypress interactive test runner: ```sh cd x-pack/legacy/plugins/siem yarn cypress:open ``` 4. Click the `Run all specs` button in the Cypress test runner  https://github.com/elastic/ingest-dev/issues/515
This commit is contained in:
parent
90c89382c2
commit
95fc980203
37 changed files with 3344 additions and 1871 deletions
4085
packages/kbn-pm/dist/index.js
vendored
4085
packages/kbn-pm/dist/index.js
vendored
File diff suppressed because one or more lines are too long
|
@ -116,6 +116,7 @@ export default class ClusterManager {
|
|||
resolve(path, 'target'),
|
||||
resolve(path, 'scripts'),
|
||||
resolve(path, 'docs'),
|
||||
resolve(path, 'legacy/plugins/siem/cypress'),
|
||||
resolve(path, 'x-pack/legacy/plugins/canvas/canvas_plugin_src') // prevents server from restarting twice for Canvas plugin changes
|
||||
),
|
||||
[]
|
||||
|
|
|
@ -28,6 +28,10 @@ export const PROJECTS = [
|
|||
new Project(resolve(REPO_ROOT, 'test/tsconfig.json'), 'kibana/test'),
|
||||
new Project(resolve(REPO_ROOT, 'x-pack/tsconfig.json')),
|
||||
new Project(resolve(REPO_ROOT, 'x-pack/test/tsconfig.json'), 'x-pack/test'),
|
||||
new Project(
|
||||
resolve(REPO_ROOT, 'x-pack/legacy/plugins/siem/cypress/tsconfig.json'),
|
||||
'siem/cypress'
|
||||
),
|
||||
|
||||
// NOTE: using glob.sync rather than glob-all or globby
|
||||
// because it takes less than 10 ms, while the other modules
|
||||
|
|
1
x-pack/legacy/plugins/siem/cypress.json
Normal file
1
x-pack/legacy/plugins/siem/cypress.json
Normal file
|
@ -0,0 +1 @@
|
|||
{}
|
2
x-pack/legacy/plugins/siem/cypress/.gitignore
vendored
Normal file
2
x-pack/legacy/plugins/siem/cypress/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
videos
|
||||
screenshots
|
61
x-pack/legacy/plugins/siem/cypress/README.md
Normal file
61
x-pack/legacy/plugins/siem/cypress/README.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Cypress Tests
|
||||
|
||||
The `siem/cypress` directory contains end to end tests (specific to the `SIEM` app) that execute via [Cypress](https://www.cypress.io/).
|
||||
|
||||
At present, these tests are only executed in a local development environment; they are **not** integrated in the Kibana CI infrastructure, and therefore do **not** run automatically when you submit a PR.
|
||||
|
||||
See the `Server and Authentication Requirements` section below for additional details.
|
||||
|
||||
## Organizing Tests and (Mock) Data
|
||||
|
||||
- Code and CSS selectors that may be re-used across tests should be added to `siem/cypress/integration/lib`, as described below
|
||||
- Smoke Tests are located in `siem/cypress/integration/smoke_tests`
|
||||
- Mocked responses from the server are located in `siem/cypress/fixtures`
|
||||
|
||||
### `cypress/integration/lib`
|
||||
|
||||
The `cypress/integration/lib` folder contains code intended to be re-used across many different tests.
|
||||
|
||||
- Files named `helpers.ts` (e.g. `siem/cypress/integration/lib/login/helpers.ts`) contain functions (e.g. `login`) that may be imported and invoked from multiple tests.
|
||||
|
||||
- Files named `selectors.ts` export CSS selectors for re-use. For example, `siem/cypress/integration/lib/login/selectors.ts` exports the following selector that matches the Username text area in the Kibana login page:
|
||||
|
||||
```
|
||||
export const USERNAME = '[data-test-subj="loginUsername"]';
|
||||
```
|
||||
|
||||
## Server and Authentication Requirements
|
||||
|
||||
The current version of the Smoke Tests require running a local Kibana server that connects to an instance of `elasticsearch`. A file named `config/kibana.dev.yml` like the example below is required to run the tests:
|
||||
|
||||
```yaml
|
||||
elasticsearch:
|
||||
username: 'elastic'
|
||||
password: '<password>'
|
||||
hosts: ['https://<server>:9200']
|
||||
```
|
||||
|
||||
The `username` and `password` from `config/kibana.dev.yml` will be read by the `login` test helper function when tests authenticate with Kibana.
|
||||
|
||||
See the `Running Tests Interactively` section for details.
|
||||
|
||||
## Running Tests Interactively
|
||||
|
||||
To run tests in interactively via the Cypress test runner:
|
||||
|
||||
1. Create and configure a `config/kibana.dev.yml`, as described in the `Server and Authentication Requirements` section above.
|
||||
|
||||
2. Start a local instance of the Kibana development server:
|
||||
|
||||
```
|
||||
yarn start --no-base-path
|
||||
```
|
||||
|
||||
3. Launch the Cypress interactive test runner:
|
||||
|
||||
```sh
|
||||
cd x-pack/legacy/plugins/siem
|
||||
yarn cypress:open
|
||||
```
|
||||
|
||||
4. Click the `Run all specs` button in the Cypress test runner
|
31
x-pack/legacy/plugins/siem/cypress/fixtures/overview.json
Normal file
31
x-pack/legacy/plugins/siem/cypress/fixtures/overview.json
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"data": {
|
||||
"source": {
|
||||
"id": "default",
|
||||
"OverviewNetwork": {
|
||||
"auditbeatSocket": 578502,
|
||||
"filebeatCisco": 999,
|
||||
"filebeatNetflow": 2544,
|
||||
"filebeatPanw": 678,
|
||||
"filebeatSuricata": 303699,
|
||||
"filebeatZeek": 71129,
|
||||
"packetbeatDNS": 1090,
|
||||
"packetbeatFlow": 722153,
|
||||
"packetbeatTLS": 340,
|
||||
"__typename": "OverviewNetworkData"
|
||||
},
|
||||
"OverviewHost": {
|
||||
"auditbeatAuditd": 123,
|
||||
"auditbeatFIM": 345,
|
||||
"auditbeatLogin": 456,
|
||||
"auditbeatPackage": 567,
|
||||
"auditbeatProcess": 678,
|
||||
"auditbeatUser": 789,
|
||||
"filebeatSystemModule": 890,
|
||||
"winlogbeat": 100,
|
||||
"__typename": "OverviewHostData"
|
||||
},
|
||||
"__typename": "Source"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
const primaryButton = 0;
|
||||
|
||||
/**
|
||||
* To overcome the React Beautiful DND sloppy click detection threshold:
|
||||
* https://github.com/atlassian/react-beautiful-dnd/blob/67b96c8d04f64af6b63ae1315f74fc02b5db032b/docs/sensors/mouse.md#sloppy-clicks-and-click-prevention-
|
||||
*/
|
||||
const dndSloppyClickDetectionThreshold = 5;
|
||||
|
||||
/** Starts dragging the subject */
|
||||
export const drag = (subject: JQuery<HTMLElement>) => {
|
||||
const subjectLocation = subject[0].getBoundingClientRect();
|
||||
|
||||
cy.wrap(subject)
|
||||
.trigger('mousedown', {
|
||||
button: primaryButton,
|
||||
clientX: subjectLocation.left,
|
||||
clientY: subjectLocation.top,
|
||||
force: true,
|
||||
})
|
||||
.trigger('mousemove', {
|
||||
button: primaryButton,
|
||||
clientX: subjectLocation.left + dndSloppyClickDetectionThreshold,
|
||||
clientY: subjectLocation.top,
|
||||
force: true,
|
||||
});
|
||||
};
|
||||
|
||||
/** "Drops" the subject being dragged on the specified drop target */
|
||||
export const drop = (dropTarget: JQuery<HTMLElement>) => {
|
||||
cy.wrap(dropTarget)
|
||||
.trigger('mousemove', { button: primaryButton })
|
||||
.trigger('mouseup');
|
||||
};
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
// Cypress workaround to hijack XHR
|
||||
// https://github.com/cypress-io/cypress/issues/687
|
||||
export const clearFetch = () =>
|
||||
cy.on('window:before:load', win => {
|
||||
// @ts-ignore no null, this is a temp hack see issue above
|
||||
win.fetch = null;
|
||||
});
|
||||
|
||||
export const stubApi = (dataFileName: string) => {
|
||||
cy.server();
|
||||
cy.fixture(dataFileName).as(`${dataFileName}JSON`);
|
||||
cy.route('POST', 'api/siem/graphql', `@${dataFileName}JSON`);
|
||||
};
|
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { ALL_HOSTS_WIDGET } from './selectors';
|
||||
|
||||
/** Wait this long for the for the `All Hosts` widget on the `Hosts` page to load */
|
||||
const ALL_HOSTS_TIMEOUT = 10 * 1000;
|
||||
|
||||
/** Wait for the for the `All Hosts` widget on the `Hosts` page to load */
|
||||
export const waitForAllHostsWidget = () => cy.get(ALL_HOSTS_WIDGET, { timeout: ALL_HOSTS_TIMEOUT });
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
/** The `All Hosts` widget on the `Hosts` page */
|
||||
export const ALL_HOSTS_WIDGET = '[data-test-subj="all-hosts"]';
|
||||
|
||||
/** A single draggable host in the `All Hosts` widget on the `Hosts` page */
|
||||
export const ALL_HOSTS_WIDGET_HOST = '[data-react-beautiful-dnd-drag-handle]';
|
||||
|
||||
/** All the draggable hosts in the `All Hosts` widget on the `Hosts` page */
|
||||
export const ALL_HOSTS_WIDGET_DRAGGABLE_HOSTS = `${ALL_HOSTS_WIDGET} ${ALL_HOSTS_WIDGET_HOST}`;
|
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import * as yaml from 'js-yaml';
|
||||
|
||||
import { LOGIN_PAGE } from '../urls';
|
||||
|
||||
import { DEFAULT_SPACE_BUTTON, PASSWORD, USERNAME } from './selectors';
|
||||
|
||||
/**
|
||||
* The `username` and `password` values in the `elasticsearch` section of this
|
||||
* file will be used to login to Kibana
|
||||
*/
|
||||
const KIBANA_DEV_YML_PATH = '../../../../config/kibana.dev.yml';
|
||||
|
||||
/** Wait this long for the login page wait (ms) */
|
||||
const USERNAME_TIMEOUT = 10 * 1000;
|
||||
|
||||
/**
|
||||
* Authenticates with Kibana by POSTing the username and password directly to
|
||||
* Kibana's `security/v1/login` endpoint, bypassing the login page (for speed).
|
||||
*
|
||||
* To speed the execution of tests, prefer this function over authenticating
|
||||
* via an interactive login.
|
||||
*/
|
||||
export const login = () => {
|
||||
cy.log(
|
||||
`NON-interactively logging into Kibana with the \`username\` and \`password\` from the \`elasticsearch\` section of \`${KIBANA_DEV_YML_PATH}\``
|
||||
);
|
||||
|
||||
// read the login details
|
||||
cy.readFile(KIBANA_DEV_YML_PATH).then(kibanaDevYml => {
|
||||
const config = yaml.safeLoad(kibanaDevYml);
|
||||
|
||||
// programmatically log us in without needing the UI
|
||||
cy.request({
|
||||
body: {
|
||||
username: config.elasticsearch.username,
|
||||
password: config.elasticsearch.password,
|
||||
},
|
||||
followRedirect: false,
|
||||
headers: { 'kbn-xsrf': 'cypress' },
|
||||
method: 'POST',
|
||||
url: 'http://localhost:5601/api/security/v1/login',
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* This (slower) login function authenticates with Kibana via the login page.
|
||||
* To speed the execution of tests, is generally preferable to use the
|
||||
* NON-interactive `login` function (in this file) instead, because in
|
||||
* addition to having to wait for the interactive Kibana login page to load,
|
||||
* this function also waits for the "spaces" page to load after
|
||||
* authenticating so it can click on the default space.
|
||||
*/
|
||||
export const interactiveLogin = () => {
|
||||
cy.log(
|
||||
`Interactively logging into Kibana with the \`username\` and \`password\` from the \`elasticsearch\` section of \`${KIBANA_DEV_YML_PATH}\``
|
||||
);
|
||||
|
||||
// read the login details
|
||||
cy.readFile(KIBANA_DEV_YML_PATH).then(kibanaDevYml => {
|
||||
const config = yaml.safeLoad(kibanaDevYml);
|
||||
|
||||
cy.visit(LOGIN_PAGE);
|
||||
|
||||
cy.get(USERNAME, { timeout: USERNAME_TIMEOUT }).type(config.elasticsearch.username);
|
||||
cy.get(PASSWORD).type(`${config.elasticsearch.password}{enter}`, {
|
||||
log: false,
|
||||
});
|
||||
|
||||
cy.get(DEFAULT_SPACE_BUTTON).click(); // click the `Default` space in the `Select Your Space` page
|
||||
});
|
||||
};
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
/** The Username field in the Kibana login page */
|
||||
export const USERNAME = '[data-test-subj="loginUsername"]';
|
||||
|
||||
/** The Password field in the Kibana login page */
|
||||
export const PASSWORD = '[data-test-subj="loginPassword"]';
|
||||
|
||||
/** The `Default` space button on the `Select your space` page */
|
||||
export const DEFAULT_SPACE_BUTTON = '[data-test-subj="space-card-default"]';
|
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { LOGOUT_LINK, USER_MENU } from './selectors';
|
||||
|
||||
export const logout = () => {
|
||||
cy.get(USER_MENU).click();
|
||||
|
||||
cy.get(LOGOUT_LINK).click();
|
||||
};
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
/** The avatar / button that represents the logged-in Kibana user */
|
||||
export const USER_MENU = '[data-test-subj="userMenuButton"]';
|
||||
|
||||
/** Clicking this link logs out the currently logged-in Kibana user */
|
||||
export const LOGOUT_LINK = '[data-test-subj="logoutLink"]';
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
/** Top-level (global) navigation link to the `Hosts` page */
|
||||
export const NAVIGATION_HOSTS = '[data-test-subj="navigation-hosts"]';
|
||||
|
||||
/** Top-level (global) navigation link to the `Network` page */
|
||||
export const NAVIGATION_NETWORK = '[data-test-subj="navigation-network"]';
|
||||
|
||||
/** Top-level (global) navigation link to the `Overview` page */
|
||||
export const NAVIGATION_OVERVIEW = '[data-test-subj="navigation-overview"]';
|
||||
|
||||
/** Top-level (global) navigation link to the `Timelines` page */
|
||||
export const NAVIGATION_TIMELINES = '[data-test-subj="navigation-timelines"]';
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
// Host Stats
|
||||
export const STAT_AUDITD = {
|
||||
value: '123',
|
||||
domId: '[data-test-subj="host-stat-auditbeatAuditd"]',
|
||||
};
|
||||
export const STAT_FILEBEAT = {
|
||||
value: '890',
|
||||
domId: '[data-test-subj="host-stat-filebeatSystemModule"]',
|
||||
};
|
||||
export const STAT_FIM = {
|
||||
value: '345',
|
||||
domId: '[data-test-subj="host-stat-auditbeatFIM"]',
|
||||
};
|
||||
export const STAT_LOGIN = {
|
||||
value: '456',
|
||||
domId: '[data-test-subj="host-stat-auditbeatLogin"]',
|
||||
};
|
||||
export const STAT_PACKAGE = {
|
||||
value: '567',
|
||||
domId: '[data-test-subj="host-stat-auditbeatPackage"]',
|
||||
};
|
||||
export const STAT_PROCESS = {
|
||||
value: '678',
|
||||
domId: '[data-test-subj="host-stat-auditbeatProcess"]',
|
||||
};
|
||||
export const STAT_USER = {
|
||||
value: '789',
|
||||
domId: '[data-test-subj="host-stat-auditbeatUser"]',
|
||||
};
|
||||
export const STAT_WINLOGBEAT = {
|
||||
value: '100',
|
||||
domId: '[data-test-subj="host-stat-winlogbeat"]',
|
||||
};
|
||||
|
||||
export const HOST_STATS = [
|
||||
STAT_AUDITD,
|
||||
STAT_FILEBEAT,
|
||||
STAT_FIM,
|
||||
STAT_LOGIN,
|
||||
STAT_PACKAGE,
|
||||
STAT_PROCESS,
|
||||
STAT_USER,
|
||||
STAT_WINLOGBEAT,
|
||||
];
|
||||
|
||||
// Network Stats
|
||||
export const STAT_SOCKET = {
|
||||
value: '578,502',
|
||||
domId: '[data-test-subj="network-stat-auditbeatSocket"]',
|
||||
};
|
||||
export const STAT_CISCO = {
|
||||
value: '999',
|
||||
domId: '[data-test-subj="network-stat-filebeatCisco"]',
|
||||
};
|
||||
export const STAT_NETFLOW = {
|
||||
value: '2,544',
|
||||
domId: '[data-test-subj="network-stat-filebeatNetflow"]',
|
||||
};
|
||||
export const STAT_PANW = {
|
||||
value: '678',
|
||||
domId: '[data-test-subj="network-stat-filebeatPanw"]',
|
||||
};
|
||||
export const STAT_SURICATA = {
|
||||
value: '303,699',
|
||||
domId: '[data-test-subj="network-stat-filebeatSuricata"]',
|
||||
};
|
||||
export const STAT_ZEEK = {
|
||||
value: '71,129',
|
||||
domId: '[data-test-subj="network-stat-filebeatZeek"]',
|
||||
};
|
||||
export const STAT_DNS = {
|
||||
value: '1,090',
|
||||
domId: '[data-test-subj="network-stat-packetbeatDNS"]',
|
||||
};
|
||||
export const STAT_FLOW = {
|
||||
value: '722,153',
|
||||
domId: '[data-test-subj="network-stat-packetbeatFlow"]',
|
||||
};
|
||||
export const STAT_TLS = {
|
||||
value: '340',
|
||||
domId: '[data-test-subj="network-stat-packetbeatTLS"]',
|
||||
};
|
||||
|
||||
export const NETWORK_STATS = [
|
||||
STAT_SOCKET,
|
||||
STAT_CISCO,
|
||||
STAT_NETFLOW,
|
||||
STAT_PANW,
|
||||
STAT_SURICATA,
|
||||
STAT_ZEEK,
|
||||
STAT_DNS,
|
||||
STAT_FLOW,
|
||||
STAT_TLS,
|
||||
];
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { drag, drop } from '../drag_n_drop/helpers';
|
||||
import { ALL_HOSTS_WIDGET_DRAGGABLE_HOSTS } from '../hosts/selectors';
|
||||
|
||||
import { TIMELINE_DATA_PROVIDERS, TIMELINE_TOGGLE_BUTTON } from './selectors';
|
||||
|
||||
/** Wait up to this many ms for the timeline to render data providers that were dropped in the timeline */
|
||||
export const TIMELINE_RENDER_DATA_PROVIDERS_TIMEOUT = 10 * 1000;
|
||||
|
||||
/** Toggles the timeline's open / closed state by clicking the `T I M E L I N E` button */
|
||||
export const toggleTimelineVisibility = () =>
|
||||
cy
|
||||
.get(TIMELINE_TOGGLE_BUTTON)
|
||||
.first()
|
||||
.click();
|
||||
|
||||
/** Drags and drops a host from the `All Hosts` widget on the `Hosts` page to the timeline */
|
||||
export const dragFromAllHostsToTimeline = () => {
|
||||
cy.get(ALL_HOSTS_WIDGET_DRAGGABLE_HOSTS)
|
||||
.first()
|
||||
.then(host => drag(host));
|
||||
|
||||
cy.get(TIMELINE_DATA_PROVIDERS)
|
||||
.first()
|
||||
.then(dataProvidersDropArea => drop(dataProvidersDropArea));
|
||||
};
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
/** A data provider rendered in the timeline's data providers drop area */
|
||||
export const DATA_PROVIDER = '[data-test-subj="providerContainer"]';
|
||||
|
||||
/** Data providers are dropped and rendered in this area of the timeline */
|
||||
export const TIMELINE_DATA_PROVIDERS = '[data-test-subj="dataProviders"]';
|
||||
|
||||
/** Data providers that were dropped on a timeline */
|
||||
export const TIMELINE_DROPPED_DATA_PROVIDERS = `${TIMELINE_DATA_PROVIDERS} ${DATA_PROVIDER}`;
|
||||
|
||||
/** The `T I M E L I N E` button that toggles visibility of the Timeline */
|
||||
export const TIMELINE_TOGGLE_BUTTON = '[data-test-subj="flyoutOverlay"]';
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
/** The SIEM app's Hosts page */
|
||||
export const HOSTS_PAGE = 'http://localhost:5601/app/siem#/hosts';
|
||||
|
||||
/** Kibana's login page */
|
||||
export const LOGIN_PAGE = 'http://localhost:5601/login';
|
||||
|
||||
/** The SIEM app's Network page */
|
||||
export const NETWORK_PAGE = 'http://localhost:5601/app/siem#/network';
|
||||
|
||||
/** The SIEM app's Overview page */
|
||||
export const OVERVIEW_PAGE = 'http://localhost:5601/app/siem#/overview';
|
||||
|
||||
/** The SIEM app's Timelines page */
|
||||
export const TIMELINES_PAGE = 'http://localhost:5601/app/siem#/timelines';
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { login } from '../login/helpers';
|
||||
|
||||
const KIBANA_LOGO_TIMEOUT = 10 * 1000;
|
||||
|
||||
/**
|
||||
* Authenticates with Kibana, visits the specified `url`, and waits for the
|
||||
* Kibana logo to be displayed before continuing
|
||||
*/
|
||||
export const loginAndWaitForPage = (url: string) => {
|
||||
login();
|
||||
|
||||
cy.visit(url);
|
||||
|
||||
cy.viewport('macbook-15');
|
||||
|
||||
cy.contains('a', 'SIEM', { timeout: KIBANA_LOGO_TIMEOUT });
|
||||
};
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { logout } from '../../lib/logout';
|
||||
import { HOSTS_PAGE, NETWORK_PAGE, OVERVIEW_PAGE, TIMELINES_PAGE } from '../../lib/urls';
|
||||
import {
|
||||
NAVIGATION_HOSTS,
|
||||
NAVIGATION_NETWORK,
|
||||
NAVIGATION_OVERVIEW,
|
||||
NAVIGATION_TIMELINES,
|
||||
} from '../../lib/navigation/selectors';
|
||||
import { loginAndWaitForPage } from '../../lib/util/helpers';
|
||||
|
||||
describe('top-level navigation common to all pages in the SIEM app', () => {
|
||||
afterEach(() => {
|
||||
logout();
|
||||
});
|
||||
|
||||
it('navigates to the Overview page', () => {
|
||||
loginAndWaitForPage(TIMELINES_PAGE);
|
||||
|
||||
cy.get(NAVIGATION_OVERVIEW).click({ force: true });
|
||||
|
||||
cy.url().should('include', '/siem#/overview');
|
||||
});
|
||||
|
||||
it('navigates to the Hosts page', () => {
|
||||
loginAndWaitForPage(NETWORK_PAGE);
|
||||
|
||||
cy.get(NAVIGATION_HOSTS).click({ force: true });
|
||||
|
||||
cy.url().should('include', '/siem#/hosts');
|
||||
});
|
||||
|
||||
it('navigates to the Network page', () => {
|
||||
loginAndWaitForPage(HOSTS_PAGE);
|
||||
|
||||
cy.get(NAVIGATION_NETWORK).click({ force: true });
|
||||
|
||||
cy.url().should('include', '/siem#/network');
|
||||
});
|
||||
|
||||
it('navigates to the Timelines page', () => {
|
||||
loginAndWaitForPage(OVERVIEW_PAGE);
|
||||
|
||||
cy.get(NAVIGATION_TIMELINES).click({ force: true });
|
||||
|
||||
cy.url().should('include', '/siem#/timelines');
|
||||
});
|
||||
});
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { logout } from '../../lib/logout';
|
||||
import { OVERVIEW_PAGE } from '../../lib/urls';
|
||||
import { clearFetch, stubApi } from '../../lib/fixtures/helpers';
|
||||
import { HOST_STATS, NETWORK_STATS, STAT_AUDITD } from '../../lib/overview/selectors';
|
||||
import { loginAndWaitForPage } from '../../lib/util/helpers';
|
||||
|
||||
describe('Overview Page', () => {
|
||||
beforeEach(() => {
|
||||
clearFetch();
|
||||
stubApi('overview');
|
||||
loginAndWaitForPage(OVERVIEW_PAGE);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
logout();
|
||||
});
|
||||
|
||||
it('Host and Network stats render with correct values', () => {
|
||||
cy.get(STAT_AUDITD.domId);
|
||||
|
||||
HOST_STATS.forEach(stat => {
|
||||
cy.get(stat.domId)
|
||||
.invoke('text')
|
||||
.should(statValue => {
|
||||
expect(statValue).to.eq(stat.value);
|
||||
});
|
||||
});
|
||||
|
||||
NETWORK_STATS.forEach(stat => {
|
||||
cy.get(stat.domId)
|
||||
.invoke('text')
|
||||
.should(statValue => {
|
||||
expect(statValue).to.eq(stat.value);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { logout } from '../../lib/logout';
|
||||
import { TIMELINE_DROPPED_DATA_PROVIDERS } from '../../lib/timeline/selectors';
|
||||
import {
|
||||
dragFromAllHostsToTimeline,
|
||||
TIMELINE_RENDER_DATA_PROVIDERS_TIMEOUT,
|
||||
toggleTimelineVisibility,
|
||||
} from '../../lib/timeline/helpers';
|
||||
import { ALL_HOSTS_WIDGET_DRAGGABLE_HOSTS } from '../../lib/hosts/selectors';
|
||||
import { HOSTS_PAGE } from '../../lib/urls';
|
||||
import { waitForAllHostsWidget } from '../../lib/hosts/helpers';
|
||||
import { loginAndWaitForPage } from '../../lib/util/helpers';
|
||||
|
||||
describe('timeline data providers', () => {
|
||||
beforeEach(() => {
|
||||
loginAndWaitForPage(HOSTS_PAGE);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
logout();
|
||||
});
|
||||
|
||||
// eslint-disable-next-line ban/ban
|
||||
it('renders the data provider of a host dragged from the All Hosts widget on the hosts page', () => {
|
||||
waitForAllHostsWidget();
|
||||
|
||||
toggleTimelineVisibility();
|
||||
|
||||
dragFromAllHostsToTimeline();
|
||||
|
||||
cy.get(TIMELINE_DROPPED_DATA_PROVIDERS, {
|
||||
timeout: TIMELINE_RENDER_DATA_PROVIDERS_TIMEOUT,
|
||||
})
|
||||
.first()
|
||||
.invoke('text')
|
||||
.then(dataProviderText => {
|
||||
// verify the data provider displays the same `host.name` as the host dragged from the `All Hosts` widget
|
||||
cy.get(ALL_HOSTS_WIDGET_DRAGGABLE_HOSTS)
|
||||
.first()
|
||||
.invoke('text')
|
||||
.should(hostname => {
|
||||
expect(dataProviderText).to.eq(`host.name: "${hostname}"`);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
40
x-pack/legacy/plugins/siem/cypress/plugins/index.js
Normal file
40
x-pack/legacy/plugins/siem/cypress/plugins/index.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
// ***********************************************************
|
||||
// This example plugins/index.js can be used to load plugins
|
||||
//
|
||||
// You can change the location of this file or turn off loading
|
||||
// the plugins file with the 'pluginsFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/plugins-guide
|
||||
// ***********************************************************
|
||||
|
||||
// This function is called when a project is opened or re-opened (e.g. due to
|
||||
// the project's config changing)
|
||||
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
const wp = require('@cypress/webpack-preprocessor');
|
||||
module.exports = on => {
|
||||
const options = {
|
||||
webpackOptions: {
|
||||
resolve: {
|
||||
extensions: ['.ts', '.tsx', '.js'],
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.tsx?$/,
|
||||
loader: 'ts-loader',
|
||||
options: { transpileOnly: true },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
on('file:preprocessor', wp(options));
|
||||
};
|
31
x-pack/legacy/plugins/siem/cypress/support/commands.js
Normal file
31
x-pack/legacy/plugins/siem/cypress/support/commands.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
// ***********************************************
|
||||
// This example commands.js shows you how to
|
||||
// create various custom commands and overwrite
|
||||
// existing commands.
|
||||
//
|
||||
// For more comprehensive examples of custom
|
||||
// commands please read more here:
|
||||
// https://on.cypress.io/custom-commands
|
||||
// ***********************************************
|
||||
//
|
||||
//
|
||||
// -- This is a parent command --
|
||||
// Cypress.Commands.add("login", (email, password) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is a child command --
|
||||
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is a dual command --
|
||||
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is will overwrite an existing command --
|
||||
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
26
x-pack/legacy/plugins/siem/cypress/support/index.js
Normal file
26
x-pack/legacy/plugins/siem/cypress/support/index.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
// ***********************************************************
|
||||
// This example support/index.js is processed and
|
||||
// loaded automatically before your test files.
|
||||
//
|
||||
// This is a great place to put global configuration and
|
||||
// behavior that modifies Cypress.
|
||||
//
|
||||
// You can change the location of this file or turn off
|
||||
// automatically serving support files with the
|
||||
// 'supportFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/configuration
|
||||
// ***********************************************************
|
||||
|
||||
// Import commands.js using ES2015 syntax:
|
||||
import './commands';
|
||||
|
||||
// Alternatively you can use CommonJS syntax:
|
||||
// require('./commands')
|
13
x-pack/legacy/plugins/siem/cypress/tsconfig.json
Normal file
13
x-pack/legacy/plugins/siem/cypress/tsconfig.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"extends": "../../../../tsconfig.json",
|
||||
"exclude": [],
|
||||
"include": [
|
||||
"./**/*"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"types": [
|
||||
"cypress",
|
||||
"node"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -5,11 +5,17 @@
|
|||
"private": true,
|
||||
"license": "Elastic-License",
|
||||
"scripts": {
|
||||
"build-graphql-types": "node scripts/generate_types_from_graphql.js"
|
||||
"build-graphql-types": "node scripts/generate_types_from_graphql.js",
|
||||
"cypress:open": "cypress open"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@cypress/webpack-preprocessor": "^4.1.0",
|
||||
"@types/js-yaml": "^3.12.1",
|
||||
"@types/lodash": "^4.14.110",
|
||||
"@types/react-beautiful-dnd": "^10.0.1"
|
||||
"@types/react-beautiful-dnd": "^10.0.1",
|
||||
"cypress": "^3.3.1",
|
||||
"js-yaml": "^3.13.1",
|
||||
"ts-loader": "^6.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"lodash": "^4.17.10",
|
||||
|
|
|
@ -25,6 +25,8 @@ import { LoadingPanel } from '../loading';
|
|||
|
||||
import * as i18n from './translations';
|
||||
|
||||
const DEFAULT_DATA_TEST_SUBJ = 'load-more-table';
|
||||
|
||||
export interface ItemsPerRow {
|
||||
text: string;
|
||||
numberOfRow: number;
|
||||
|
@ -73,6 +75,7 @@ interface BasicTableProps<T, U = T, V = T, W = T, X = T, Y = T, Z = T, AA = T, A
|
|||
Columns<AB>
|
||||
];
|
||||
hasNextPage: boolean;
|
||||
dataTestSubj?: string;
|
||||
headerCount: number;
|
||||
headerSupplement?: React.ReactElement;
|
||||
headerTitle: string | React.ReactElement;
|
||||
|
@ -133,6 +136,7 @@ export class LoadMoreTable<T, U, V, W, X, Y, Z, AA, AB> extends React.PureCompon
|
|||
public render() {
|
||||
const {
|
||||
columns,
|
||||
dataTestSubj = DEFAULT_DATA_TEST_SUBJ,
|
||||
hasNextPage,
|
||||
headerCount,
|
||||
headerSupplement,
|
||||
|
@ -190,7 +194,7 @@ export class LoadMoreTable<T, U, V, W, X, Y, Z, AA, AB> extends React.PureCompon
|
|||
</EuiContextMenuItem>
|
||||
));
|
||||
return (
|
||||
<EuiPanel>
|
||||
<EuiPanel data-test-subj={dataTestSubj}>
|
||||
<BasicTableContainer>
|
||||
{loading && (
|
||||
<>
|
||||
|
|
|
@ -116,6 +116,7 @@ class HostsTableComponent extends React.PureComponent<HostsTableProps> {
|
|||
return (
|
||||
<LoadMoreTable
|
||||
columns={this.memoizedColumns(type, indexPattern)}
|
||||
dataTestSubj="all-hosts"
|
||||
hasNextPage={hasNextPage}
|
||||
headerCount={totalCount}
|
||||
headerTitle={i18n.HOSTS}
|
||||
|
|
|
@ -23,16 +23,16 @@ describe('Overview Host Stat Data', () => {
|
|||
const wrapper = shallow(<OverviewHostStats data={mockData.OverviewHost} loading={false} />);
|
||||
const loadingWrapper = wrapper
|
||||
.dive()
|
||||
.find('[data-test-subj="stat-loader-description"]')
|
||||
.find('[data-test-subj="host-stat-auditbeatAuditd"]')
|
||||
.first()
|
||||
.childAt(0);
|
||||
expect(loadingWrapper.prop('isLoading')).toBe(false);
|
||||
});
|
||||
test('it does show loading indicator when not loading', () => {
|
||||
test('it does show loading indicator when loading', () => {
|
||||
const wrapper = shallow(<OverviewHostStats data={mockData.OverviewHost} loading={true} />);
|
||||
const loadingWrapper = wrapper
|
||||
.dive()
|
||||
.find('[data-test-subj="stat-loader-description"]')
|
||||
.find('[data-test-subj="host-stat-auditbeatAuditd"]')
|
||||
.first()
|
||||
.childAt(0);
|
||||
expect(loadingWrapper.prop('isLoading')).toBe(true);
|
||||
|
|
|
@ -37,6 +37,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Auditbeat Audit"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatAuditd',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -49,6 +50,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Auditbeat File Integrity Module"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatFIM',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -61,6 +63,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Auditbeat Login"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatLogin',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -73,6 +76,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Auditbeat Package"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatPackage',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -85,6 +89,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Auditbeat Process"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatProcess',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -97,6 +102,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Auditbeat User"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatUser',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -109,6 +115,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
defaultMessage="Filebeat System Module"
|
||||
/>
|
||||
),
|
||||
id: 'filebeatSystemModule',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -118,6 +125,7 @@ const overviewHostStats = (data: OverviewHostData) => [
|
|||
title: (
|
||||
<FormattedMessage id="xpack.siem.overview.winlogbeatTitle" defaultMessage="Winlogbeat" />
|
||||
),
|
||||
id: 'winlogbeat',
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -136,7 +144,7 @@ export const OverviewHostStats = pure<OverviewHostProps>(({ data, loading }) =>
|
|||
{overviewHostStats(data).map((item, index) => (
|
||||
<React.Fragment key={index}>
|
||||
<EuiDescriptionListTitle>{item.title}</EuiDescriptionListTitle>
|
||||
<DescriptionListDescription data-test-subj="stat-loader-description">
|
||||
<DescriptionListDescription data-test-subj={`host-stat-${item.id}`}>
|
||||
<StatValue isLoading={loading} value={item.description} />
|
||||
</DescriptionListDescription>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -25,9 +25,10 @@ describe('Overview Network Stat Data', () => {
|
|||
const wrapper = shallow(
|
||||
<OverviewNetworkStats data={mockData.OverviewNetwork} loading={false} />
|
||||
);
|
||||
|
||||
const loadingWrapper = wrapper
|
||||
.dive()
|
||||
.find('[data-test-subj="stat-loader-description"]')
|
||||
.find('[data-test-subj="network-stat-auditbeatSocket"]')
|
||||
.first()
|
||||
.childAt(0);
|
||||
expect(loadingWrapper.prop('isLoading')).toBe(false);
|
||||
|
@ -38,7 +39,7 @@ describe('Overview Network Stat Data', () => {
|
|||
);
|
||||
const loadingWrapper = wrapper
|
||||
.dive()
|
||||
.find('[data-test-subj="stat-loader-description"]')
|
||||
.find('[data-test-subj="network-stat-auditbeatSocket"]')
|
||||
.first()
|
||||
.childAt(0);
|
||||
expect(loadingWrapper.prop('isLoading')).toBe(true);
|
||||
|
|
|
@ -37,6 +37,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Auditbeat Socket"
|
||||
/>
|
||||
),
|
||||
id: 'auditbeatSocket',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -49,6 +50,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Filebeat Cisco"
|
||||
/>
|
||||
),
|
||||
id: 'filebeatCisco',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -61,6 +63,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Filebeat Netflow"
|
||||
/>
|
||||
),
|
||||
id: 'filebeatNetflow',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -73,6 +76,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Filebeat Palo Alto Network"
|
||||
/>
|
||||
),
|
||||
id: 'filebeatPanw',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -85,6 +89,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Filebeat Suricata"
|
||||
/>
|
||||
),
|
||||
id: 'filebeatSuricata',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -94,6 +99,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
title: (
|
||||
<FormattedMessage id="xpack.siem.overview.fileBeatZeekTitle" defaultMessage="Filebeat Zeek" />
|
||||
),
|
||||
id: 'filebeatZeek',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -106,6 +112,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Packetbeat DNS"
|
||||
/>
|
||||
),
|
||||
id: 'packetbeatDNS',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -118,6 +125,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Packetbeat Flow"
|
||||
/>
|
||||
),
|
||||
id: 'packetbeatFlow',
|
||||
},
|
||||
{
|
||||
description:
|
||||
|
@ -130,6 +138,7 @@ const overviewNetworkStats = (data: OverviewNetworkData) => [
|
|||
defaultMessage="Packetbeat TLS"
|
||||
/>
|
||||
),
|
||||
id: 'packetbeatTLS',
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -148,7 +157,7 @@ export const OverviewNetworkStats = pure<OverviewNetworkProps>(({ data, loading
|
|||
{overviewNetworkStats(data).map((item, index) => (
|
||||
<React.Fragment key={index}>
|
||||
<EuiDescriptionListTitle>{item.title}</EuiDescriptionListTitle>
|
||||
<DescriptionListDescription data-test-subj="stat-loader-description">
|
||||
<DescriptionListDescription data-test-subj={`network-stat-${item.id}`}>
|
||||
<StatValue isLoading={loading} value={item.description} />
|
||||
</DescriptionListDescription>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
],
|
||||
"exclude": [
|
||||
"test/**/*",
|
||||
"legacy/plugins/siem/cypress/**/*",
|
||||
"**/typespec_tests.ts"
|
||||
],
|
||||
"compilerOptions": {
|
||||
|
|
314
yarn.lock
314
yarn.lock
|
@ -55,7 +55,7 @@
|
|||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@7.4.5", "@babel/core@^7.4.3":
|
||||
"@babel/core@7.4.5", "@babel/core@^7.0.1", "@babel/core@^7.4.3":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
|
||||
integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==
|
||||
|
@ -1271,7 +1271,7 @@
|
|||
js-levenshtein "^1.1.3"
|
||||
semver "^5.3.0"
|
||||
|
||||
"@babel/preset-env@7.4.5", "@babel/preset-env@^7.4.3":
|
||||
"@babel/preset-env@7.4.5", "@babel/preset-env@^7.0.0", "@babel/preset-env@^7.4.3":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58"
|
||||
integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==
|
||||
|
@ -1546,6 +1546,36 @@
|
|||
lodash "^4.17.11"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@cypress/listr-verbose-renderer@0.4.1":
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
|
||||
integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cli-cursor "^1.0.2"
|
||||
date-fns "^1.27.2"
|
||||
figures "^1.7.0"
|
||||
|
||||
"@cypress/webpack-preprocessor@^4.1.0":
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-4.1.0.tgz#8c4debc0b1abf045b62524d1996dd9aeaf7e86a8"
|
||||
integrity sha512-LbxsdYVpHGoC2fMOdW0aQvuvVRD7aZx8p8DrP53HISpl7bD1PqLGWKzhHn7cGG24UHycBJrbaEeKEosW29W1dg==
|
||||
dependencies:
|
||||
bluebird "3.5.0"
|
||||
debug "3.1.0"
|
||||
optionalDependencies:
|
||||
"@babel/core" "^7.0.1"
|
||||
"@babel/preset-env" "^7.0.0"
|
||||
babel-loader "^8.0.2"
|
||||
|
||||
"@cypress/xvfb@1.2.4":
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
|
||||
integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
|
||||
dependencies:
|
||||
debug "^3.1.0"
|
||||
lodash.once "^4.1.1"
|
||||
|
||||
"@elastic/charts@^7.0.1":
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-7.0.1.tgz#0ddc6d5444def8ed5d45c4113359c311e1e15fb7"
|
||||
|
@ -3714,7 +3744,7 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.11.2.tgz#699ad86054cc20043c30d66a6fcde30bbf5d3d5e"
|
||||
integrity sha512-JRDtMPEqXrzfuYAdqbxLot1GvAr/QvicIZAnOAigZaj8xVMhuSJTg/xsv9E1TvyL+wujYhRLx9ZsQ0oFOSmwyA==
|
||||
|
||||
"@types/js-yaml@^3.11.2":
|
||||
"@types/js-yaml@^3.11.2", "@types/js-yaml@^3.12.1":
|
||||
version "3.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.1.tgz#5c6f4a1eabca84792fbd916f0cb40847f123c656"
|
||||
integrity sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==
|
||||
|
@ -5330,6 +5360,11 @@ aproba@^1.0.3, aproba@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
|
||||
|
||||
arch@2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e"
|
||||
integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==
|
||||
|
||||
archiver-utils@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.0.0.tgz#5639818a8b5d89d0ffc51b72c39283cf4fea14a1"
|
||||
|
@ -5780,6 +5815,13 @@ async@2.4.0:
|
|||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
async@2.6.1, async@^2.5.0, async@^2.6.0, async@^2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
|
||||
integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==
|
||||
dependencies:
|
||||
lodash "^4.17.10"
|
||||
|
||||
async@^2.0.0, async@^2.1.4:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
|
||||
|
@ -5787,13 +5829,6 @@ async@^2.0.0, async@^2.1.4:
|
|||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
async@^2.5.0, async@^2.6.0, async@^2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
|
||||
integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==
|
||||
dependencies:
|
||||
lodash "^4.17.10"
|
||||
|
||||
async@~0.2.9:
|
||||
version "0.2.10"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
|
||||
|
@ -6015,7 +6050,7 @@ babel-loader@8.0.5:
|
|||
mkdirp "^0.5.1"
|
||||
util.promisify "^1.0.0"
|
||||
|
||||
babel-loader@8.0.6:
|
||||
babel-loader@8.0.6, babel-loader@^8.0.2:
|
||||
version "8.0.6"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
|
||||
integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
|
||||
|
@ -6633,6 +6668,11 @@ bluebird@3.4.6:
|
|||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f"
|
||||
integrity sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=
|
||||
|
||||
bluebird@3.5.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
|
||||
integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=
|
||||
|
||||
bluebird@3.5.5, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3:
|
||||
version "3.5.5"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
|
||||
|
@ -6857,7 +6897,7 @@ braces@^2.3.0, braces@^2.3.1, braces@^2.3.2:
|
|||
split-string "^3.0.2"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
braces@^3.0.2:
|
||||
braces@^3.0.1, braces@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
||||
|
@ -7249,6 +7289,13 @@ cacheable-request@^2.1.1:
|
|||
normalize-url "2.0.1"
|
||||
responselike "1.0.2"
|
||||
|
||||
cachedir@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-1.3.0.tgz#5e01928bf2d95b5edd94b0942188246740e0dbc4"
|
||||
integrity sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==
|
||||
dependencies:
|
||||
os-homedir "^1.0.1"
|
||||
|
||||
call-me-maybe@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
|
||||
|
@ -7632,6 +7679,11 @@ check-error@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
|
||||
|
||||
check-more-types@2.24.0:
|
||||
version "2.24.0"
|
||||
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
|
||||
integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=
|
||||
|
||||
checksum@0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9"
|
||||
|
@ -7769,6 +7821,11 @@ ci-info@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
|
||||
integrity sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==
|
||||
|
||||
ci-info@^1.5.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
|
||||
integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
|
||||
|
||||
ci-info@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
|
||||
|
@ -8267,6 +8324,11 @@ commander@2, commander@2.19.0, commander@^2.11.0, commander@^2.12.2, commander@^
|
|||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
|
||||
|
||||
commander@2.15.1:
|
||||
version "2.15.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
|
||||
integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
|
||||
|
||||
commander@2.17.x, commander@~2.17.1:
|
||||
version "2.17.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
|
||||
|
@ -9209,6 +9271,43 @@ cyclist@~0.2.2:
|
|||
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
|
||||
integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
|
||||
|
||||
cypress@^3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-3.3.1.tgz#8a127b1d9fa74bff21f111705abfef58d595fdef"
|
||||
integrity sha512-JIo47ZD9P3jAw7oaK7YKUoODzszJbNw41JmBrlMMiupHOlhmXvZz75htuo7mfRFPC9/1MDQktO4lX/V2+a6lGQ==
|
||||
dependencies:
|
||||
"@cypress/listr-verbose-renderer" "0.4.1"
|
||||
"@cypress/xvfb" "1.2.4"
|
||||
arch "2.1.1"
|
||||
bluebird "3.5.0"
|
||||
cachedir "1.3.0"
|
||||
chalk "2.4.2"
|
||||
check-more-types "2.24.0"
|
||||
commander "2.15.1"
|
||||
common-tags "1.8.0"
|
||||
debug "3.2.6"
|
||||
execa "0.10.0"
|
||||
executable "4.1.1"
|
||||
extract-zip "1.6.7"
|
||||
fs-extra "4.0.1"
|
||||
getos "3.1.1"
|
||||
glob "7.1.3"
|
||||
is-ci "1.2.1"
|
||||
is-installed-globally "0.1.0"
|
||||
lazy-ass "1.6.0"
|
||||
listr "0.12.0"
|
||||
lodash "4.17.11"
|
||||
log-symbols "2.2.0"
|
||||
minimist "1.2.0"
|
||||
moment "2.24.0"
|
||||
ramda "0.24.1"
|
||||
request "2.88.0"
|
||||
request-progress "0.4.0"
|
||||
supports-color "5.5.0"
|
||||
tmp "0.1.0"
|
||||
url "0.11.0"
|
||||
yauzl "2.10.0"
|
||||
|
||||
d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0, d3-array@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
|
||||
|
@ -9562,7 +9661,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0:
|
|||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@3.X, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
|
||||
debug@3.2.6, debug@3.X, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
|
@ -10661,7 +10760,7 @@ engine.io@~3.2.0:
|
|||
engine.io-parser "~2.1.0"
|
||||
ws "~3.3.1"
|
||||
|
||||
enhanced-resolve@^4.1.0:
|
||||
enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
|
||||
integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
|
||||
|
@ -11473,16 +11572,7 @@ exec-sh@^0.2.0:
|
|||
dependencies:
|
||||
merge "^1.1.3"
|
||||
|
||||
execa@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.1.1.tgz#b09c2a9309bc0ef0501479472db3180f8d4c3edd"
|
||||
integrity sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=
|
||||
dependencies:
|
||||
cross-spawn-async "^2.1.1"
|
||||
object-assign "^4.0.1"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^0.10.0:
|
||||
execa@0.10.0, execa@^0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
|
||||
integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
|
||||
|
@ -11495,6 +11585,15 @@ execa@^0.10.0:
|
|||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.1.1.tgz#b09c2a9309bc0ef0501479472db3180f8d4c3edd"
|
||||
integrity sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=
|
||||
dependencies:
|
||||
cross-spawn-async "^2.1.1"
|
||||
object-assign "^4.0.1"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3"
|
||||
|
@ -11553,6 +11652,13 @@ execall@^1.0.0:
|
|||
dependencies:
|
||||
clone-regexp "^1.0.0"
|
||||
|
||||
executable@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
|
||||
integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
|
||||
dependencies:
|
||||
pify "^2.2.0"
|
||||
|
||||
exenv@^1.2.0:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
|
||||
|
@ -12671,6 +12777,15 @@ fs-exists-sync@^0.1.0:
|
|||
resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
|
||||
integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=
|
||||
|
||||
fs-extra@4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880"
|
||||
integrity sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^3.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^0.30.0:
|
||||
version "0.30.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
|
||||
|
@ -13013,6 +13128,13 @@ getopts@^2.2.4:
|
|||
resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.4.tgz#3137fe8a5fddf304904059a851bdc1c22f0f54fb"
|
||||
integrity sha512-Rz7DGyomZjrenu9Jx4qmzdlvJgvrEFHXHvjK0FcZtcTC1U5FmES7OdZHUwMuSnEE6QvBvwse1JODKj7TgbSEjQ==
|
||||
|
||||
getos@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.1.tgz#967a813cceafee0156b0483f7cffa5b3eff029c5"
|
||||
integrity sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==
|
||||
dependencies:
|
||||
async "2.6.1"
|
||||
|
||||
getos@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.0.tgz#db3aa4df15a3295557ce5e81aa9e3e5cdfaa6567"
|
||||
|
@ -15450,6 +15572,13 @@ is-callable@^1.1.3, is-callable@^1.1.4:
|
|||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
|
||||
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
|
||||
|
||||
is-ci@1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
|
||||
integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
|
||||
dependencies:
|
||||
ci-info "^1.5.0"
|
||||
|
||||
is-ci@^1.0.10:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
|
||||
|
@ -15625,7 +15754,7 @@ is-hexadecimal@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69"
|
||||
integrity sha1-bghLvJIGH7sJcexYts5tQE4k2mk=
|
||||
|
||||
is-installed-globally@^0.1.0:
|
||||
is-installed-globally@0.1.0, is-installed-globally@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
|
||||
integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
|
||||
|
@ -17304,6 +17433,11 @@ latest-version@^3.0.0, latest-version@^3.1.0:
|
|||
dependencies:
|
||||
package-json "^4.0.0"
|
||||
|
||||
lazy-ass@1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
|
||||
integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
|
||||
|
||||
lazy-cache@^0.2.3:
|
||||
version "0.2.7"
|
||||
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
|
||||
|
@ -17486,6 +17620,20 @@ listr-silent-renderer@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
|
||||
integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
|
||||
|
||||
listr-update-renderer@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9"
|
||||
integrity sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cli-truncate "^0.2.1"
|
||||
elegant-spinner "^1.0.1"
|
||||
figures "^1.7.0"
|
||||
indent-string "^3.0.0"
|
||||
log-symbols "^1.0.2"
|
||||
log-update "^1.0.2"
|
||||
strip-ansi "^3.0.1"
|
||||
|
||||
listr-update-renderer@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7"
|
||||
|
@ -17510,6 +17658,28 @@ listr-verbose-renderer@^0.4.0:
|
|||
date-fns "^1.27.2"
|
||||
figures "^1.7.0"
|
||||
|
||||
listr@0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a"
|
||||
integrity sha1-a84sD1YD+klYDqF81qAMwOX6RRo=
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cli-truncate "^0.2.1"
|
||||
figures "^1.7.0"
|
||||
indent-string "^2.1.0"
|
||||
is-promise "^2.1.0"
|
||||
is-stream "^1.1.0"
|
||||
listr-silent-renderer "^1.1.1"
|
||||
listr-update-renderer "^0.2.0"
|
||||
listr-verbose-renderer "^0.4.0"
|
||||
log-symbols "^1.0.2"
|
||||
log-update "^1.0.2"
|
||||
ora "^0.2.3"
|
||||
p-map "^1.1.1"
|
||||
rxjs "^5.0.0-beta.11"
|
||||
stream-to-observable "^0.1.0"
|
||||
strip-ansi "^3.0.1"
|
||||
|
||||
listr@^0.14.1:
|
||||
version "0.14.1"
|
||||
resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.1.tgz#8a7afa4a7135cee4c921d128e0b7dfc6e522d43d"
|
||||
|
@ -17947,7 +18117,7 @@ lodash.omitby@^4.6.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791"
|
||||
integrity sha1-XBX/R1StVVAWtTwEExHo8HkgR5E=
|
||||
|
||||
lodash.once@^4.0.0:
|
||||
lodash.once@^4.0.0, lodash.once@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
|
||||
integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
|
||||
|
@ -18105,7 +18275,7 @@ lodash.uniqby@^4.7.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302"
|
||||
integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=
|
||||
|
||||
lodash@>4.17.4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1, lodash@~4.17.10, lodash@~4.17.5:
|
||||
lodash@4.17.11, lodash@>4.17.4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1, lodash@~4.17.10, lodash@~4.17.5:
|
||||
version "4.17.11"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
||||
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
||||
|
@ -18138,6 +18308,13 @@ log-ok@^0.1.1:
|
|||
ansi-green "^0.1.1"
|
||||
success-symbol "^0.1.0"
|
||||
|
||||
log-symbols@2.2.0, log-symbols@^2.1.0, log-symbols@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
|
||||
integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
|
||||
log-symbols@^1.0.1, log-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
|
||||
|
@ -18145,13 +18322,6 @@ log-symbols@^1.0.1, log-symbols@^1.0.2:
|
|||
dependencies:
|
||||
chalk "^1.0.0"
|
||||
|
||||
log-symbols@^2.1.0, log-symbols@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
|
||||
integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
|
||||
log-update@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
|
||||
|
@ -18758,6 +18928,14 @@ micromatch@^2.3.11:
|
|||
parse-glob "^3.0.4"
|
||||
regex-cache "^0.4.2"
|
||||
|
||||
micromatch@^4.0.0:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
|
||||
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
|
||||
dependencies:
|
||||
braces "^3.0.1"
|
||||
picomatch "^2.0.5"
|
||||
|
||||
miller-rabin@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
|
||||
|
@ -19117,6 +19295,11 @@ moment@2.22.2, moment@>=2.14.0:
|
|||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
|
||||
integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=
|
||||
|
||||
moment@2.24.0:
|
||||
version "2.24.0"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
|
||||
integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
|
||||
|
||||
"moment@>= 2.9.0", moment@^2.13.0, moment@^2.20.1:
|
||||
version "2.20.1"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd"
|
||||
|
@ -19468,6 +19651,11 @@ node-ensure@^0.0.0:
|
|||
resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7"
|
||||
integrity sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=
|
||||
|
||||
node-eta@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.1.1.tgz#4066109b39371c761c72b7ebda9a9ea0a5de121f"
|
||||
integrity sha1-QGYQmzk3HHYccrfr2pqeoKXeEh8=
|
||||
|
||||
node-fetch@1.7.3, node-fetch@^1.0.1:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
|
||||
|
@ -20284,7 +20472,7 @@ os-browserify@^0.3.0:
|
|||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
|
||||
|
||||
os-homedir@^1.0.0:
|
||||
os-homedir@^1.0.0, os-homedir@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
|
||||
|
@ -21036,7 +21224,7 @@ phin@^2.9.1:
|
|||
resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c"
|
||||
integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==
|
||||
|
||||
picomatch@^2.0.4:
|
||||
picomatch@^2.0.4, picomatch@^2.0.5:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
|
||||
integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
|
||||
|
@ -21046,7 +21234,7 @@ pify@4.0.1, pify@^4.0.0, pify@^4.0.1:
|
|||
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||
|
||||
pify@^2.0.0, pify@^2.3.0:
|
||||
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
|
||||
|
@ -22025,6 +22213,11 @@ railroad-diagrams@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
|
||||
integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=
|
||||
|
||||
ramda@0.24.1:
|
||||
version "0.24.1"
|
||||
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857"
|
||||
integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc=
|
||||
|
||||
ramda@^0.21.0:
|
||||
version "0.21.0"
|
||||
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35"
|
||||
|
@ -23689,6 +23882,14 @@ replace-ext@1.0.0, replace-ext@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
|
||||
integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
|
||||
|
||||
request-progress@0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.4.0.tgz#c1954e39086aa85269c5660bcee0142a6a70d7e7"
|
||||
integrity sha1-wZVOOQhqqFJpxWYLzuAUKmpw1+c=
|
||||
dependencies:
|
||||
node-eta "^0.1.1"
|
||||
throttleit "^0.0.2"
|
||||
|
||||
request-promise-core@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
|
||||
|
@ -24248,7 +24449,7 @@ rx@^4.1.0:
|
|||
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
|
||||
integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=
|
||||
|
||||
rxjs@^5.5.0, rxjs@^5.5.2:
|
||||
rxjs@^5.0.0-beta.11, rxjs@^5.5.0, rxjs@^5.5.2:
|
||||
version "5.5.12"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc"
|
||||
integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==
|
||||
|
@ -25511,6 +25712,11 @@ stream-stream@^1.2.6:
|
|||
resolved "https://registry.yarnpkg.com/stream-stream/-/stream-stream-1.2.6.tgz#a9ae071c64c11b8584f52973f7715e37e5144c43"
|
||||
integrity sha1-qa4HHGTBG4WE9Slz93FeN+UUTEM=
|
||||
|
||||
stream-to-observable@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
|
||||
integrity sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=
|
||||
|
||||
streamroller@0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b"
|
||||
|
@ -25929,6 +26135,13 @@ supports-color@3.1.2:
|
|||
dependencies:
|
||||
has-flag "^1.0.0"
|
||||
|
||||
supports-color@5.5.0, supports-color@^5.0.0, supports-color@^5.4.0, supports-color@^5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
supports-color@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
|
||||
|
@ -25946,13 +26159,6 @@ supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3:
|
|||
dependencies:
|
||||
has-flag "^1.0.0"
|
||||
|
||||
supports-color@^5.0.0, supports-color@^5.4.0, supports-color@^5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
supports-color@^5.2.0, supports-color@^5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
|
||||
|
@ -26368,6 +26574,11 @@ throat@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
|
||||
integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=
|
||||
|
||||
throttleit@^0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
|
||||
integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8=
|
||||
|
||||
through2-filter@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec"
|
||||
|
@ -26829,6 +27040,17 @@ ts-invariant@^0.4.0:
|
|||
dependencies:
|
||||
tslib "^1.9.3"
|
||||
|
||||
ts-loader@^6.0.4:
|
||||
version "6.0.4"
|
||||
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.0.4.tgz#bc331ad91a887a60632d94c9f79448666f2c4b63"
|
||||
integrity sha512-p2zJYe7OtwR+49kv4gs7v4dMrfYD1IPpOtqiSPCbe8oR+4zEBtdHwzM7A7M91F+suReqgzZrlClk4LRSSp882g==
|
||||
dependencies:
|
||||
chalk "^2.3.0"
|
||||
enhanced-resolve "^4.0.0"
|
||||
loader-utils "^1.0.2"
|
||||
micromatch "^4.0.0"
|
||||
semver "^6.0.0"
|
||||
|
||||
ts-log@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340"
|
||||
|
@ -27857,7 +28079,7 @@ url-to-options@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
|
||||
integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=
|
||||
|
||||
url@^0.11.0:
|
||||
url@0.11.0, url@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
|
||||
integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue