[SIEM] Add build step to find cyclic deps in SIEM project (#38329)

## Summary

* Adds a build step to find cyclic deps and error out in the SIEM project when found as part of a build step.

* Fixes typescript files that have cycles with their constants and types.

You run this like so:

```
cd kibana/x-pack/plugins/siem
node scripts/check_circular_deps.js
```

And get this message:
<img width="846" alt="Screen Shot 2019-06-07 at 11 22 24 AM" src="https://user-images.githubusercontent.com/1151048/59121970-b629f680-8916-11e9-8683-326a881c4725.png">

Or you will get an error with a listing of deps that need to be updated which have cycles in them.

### Checklist

Use ~~strikethroughs~~ to remove checklist items you don't feel are applicable to this PR.

~~- [ ] This was checked for cross-browser compatibility, [including a check against IE11](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility)~~
~~- [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/master/packages/kbn-i18n/README.md)~~
~~- [ ] [Documentation](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#writing-documentation) was added for features that require explanation or tutorials~~
- [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios

~~- [ ] This was checked for [keyboard-only and screenreader accessibility](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Accessibility_testing_checklist)~~

### For maintainers

~~- [ ] This was checked for breaking API changes and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~~
~~- [ ] This includes a feature addition or change that requires a release note and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~~
This commit is contained in:
Frank Hassanabad 2019-06-07 14:40:06 -06:00 committed by GitHub
parent 0f5bd4dfcc
commit fdd4621601
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 492 additions and 89 deletions

View file

@ -27,6 +27,12 @@ checks-reporter-with-killswitch "X-Pack Jest" node scripts/jest --ci --verbose
echo ""
echo ""
echo " -> Running SIEM cyclic dependency test"
cd "$XPACK_DIR"
checks-reporter-with-killswitch "X-Pack SIEM cyclic dependency test" node plugins/siem/scripts/check_circular_deps
echo ""
echo ""
# echo " -> Running jest integration tests"
# cd "$XPACK_DIR"
# node scripts/jest_integration --ci --verbose

View file

@ -133,6 +133,7 @@
"jest-cli": "^24.1.0",
"jest-styled-components": "^6.2.2",
"jsdom": "^12.0.0",
"madge": "3.4.4",
"mocha": "3.5.3",
"mustache": "^2.3.0",
"mutation-observer": "^1.0.3",

View file

@ -0,0 +1,35 @@
/*
* 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 { resolve } from 'path';
// eslint-disable-next-line import/no-extraneous-dependencies
import madge from 'madge';
import { run, createFailError } from '../../../../../src/dev/run';
run(
async ({ log }) => {
const result = await madge([resolve(__dirname, '../../public'), resolve(__dirname, '../../common')], {
fileExtensions: ['ts', 'js', 'tsx'],
});
const circularFound = result.circular();
if (circularFound.length !== 0) {
throw createFailError(
'SIEM circular dependencies of imports has been found:' +
'\n - ' +
circularFound.join('\n - ')
);
} else {
log.success('No circular deps 👍');
}
},
{
description: 'Check the SIEM plugin for circular deps',
}
);

View file

@ -12,8 +12,8 @@
"@types/react-beautiful-dnd": "^10.0.1"
},
"dependencies": {
"lodash": "^4.17.10",
"react-beautiful-dnd": "^10.0.1",
"react-markdown": "^4.0.6",
"lodash": "^4.17.10"
"react-markdown": "^4.0.6"
}
}

View file

@ -27,6 +27,7 @@ import { inputsActions } from '../../../store/inputs';
import { timelineActions } from '../../../store/actions';
import { TimelineModel } from '../../../store/timeline/model';
import { DEFAULT_TIMELINE_WIDTH } from '../../timeline/body/helpers';
import { InputsModelId } from '../../../store/inputs/constants';
interface OwnProps {
timelineId: string;
@ -61,7 +62,7 @@ interface DispatchProps {
}
) => void;
createTimeline: ActionCreator<{ id: string; show?: boolean }>;
toggleLock: ActionCreator<{ linkToId: inputsModel.InputsModelId }>;
toggleLock: ActionCreator<{ linkToId: InputsModelId }>;
updateDescription: ActionCreator<{ id: string; description: string }>;
updateIsFavorite: ActionCreator<{ id: string; isFavorite: boolean }>;
updateNote: UpdateNote;
@ -194,7 +195,7 @@ const mapDispatchToProps = (dispatch: Dispatch, { timelineId }: OwnProps) => ({
updateTitle: ({ id, title }: { id: string; title: string }) => {
dispatch(timelineActions.updateTitle({ id, title }));
},
toggleLock: ({ linkToId }: { linkToId: inputsModel.InputsModelId }) => {
toggleLock: ({ linkToId }: { linkToId: InputsModelId }) => {
dispatch(inputsActions.toggleTimelineLinkTo({ linkToId }));
},
});

View file

@ -14,8 +14,7 @@ import styled from 'styled-components';
import { DefaultDraggable } from '../draggables';
import { CountryFlag } from './country_flag';
import { SourceDestinationType } from './source_destination_ip';
import { GeoFieldsProps } from './types';
import { GeoFieldsProps, SourceDestinationType } from './types';
export const SOURCE_GEO_CONTINENT_NAME_FIELD_NAME = 'source.geo.continent_name';
export const SOURCE_GEO_COUNTRY_NAME_FIELD_NAME = 'source.geo.country_name';

View file

@ -16,9 +16,7 @@ import * as i18n from '../timeline/body/renderers/translations';
import { GeoFields } from './geo_fields';
import { IpWithPort } from './ip_with_port';
import { Label } from './label';
import { SourceDestinationIpProps } from './types';
export type SourceDestinationType = 'source' | 'destination';
import { SourceDestinationIpProps, SourceDestinationType } from './types';
export interface IpPortPair {
ip: string;

View file

@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { SourceDestinationType } from './source_destination_ip';
export type SourceDestinationType = 'source' | 'destination';
export interface GeoFieldsProps {
contextId: string;

View file

@ -19,6 +19,7 @@ import { ActionCreator } from 'typescript-fsa';
import { inputsModel, State } from '../../store';
import { inputsActions, timelineActions } from '../../store/actions';
import { InputsModelId } from '../../store/inputs/constants';
const MAX_RECENTLY_USED_RANGES = 9;
@ -52,26 +53,26 @@ interface SuperDatePickerStateRedux {
interface SuperDatePickerDispatchProps {
setAbsoluteSuperDatePicker: ActionCreator<{
id: inputsModel.InputsModelId;
id: InputsModelId;
from: number;
to: number;
timelineId?: string;
}>;
setRelativeSuperDatePicker: ActionCreator<{
id: inputsModel.InputsModelId;
id: InputsModelId;
fromStr: string;
from: number;
to: number;
toStr: string;
timelineId?: string;
}>;
startAutoReload: ActionCreator<{ id: inputsModel.InputsModelId }>;
stopAutoReload: ActionCreator<{ id: inputsModel.InputsModelId }>;
setDuration: ActionCreator<{ id: inputsModel.InputsModelId; duration: number }>;
startAutoReload: ActionCreator<{ id: InputsModelId }>;
stopAutoReload: ActionCreator<{ id: InputsModelId }>;
setDuration: ActionCreator<{ id: InputsModelId; duration: number }>;
updateTimelineRange: ActionCreator<{ id: string; start: number; end: number }>;
}
interface OwnProps {
id: inputsModel.InputsModelId;
id: InputsModelId;
disabled?: boolean;
timelineId?: string;
}

View file

@ -14,10 +14,10 @@ import { ActionCreator } from 'typescript-fsa';
import { State, timelineSelectors } from '../../../store';
import { setTimelineRangeDatePicker as dispatchSetTimelineRangeDatePicker } from '../../../store/inputs/actions';
import { TimelineModel } from '../../../store/timeline/model';
import { AutoSavedWarningMsg } from '../../../store/timeline/reducer';
import * as i18n from './translations';
import { timelineActions } from '../../../store/timeline';
import { AutoSavedWarningMsg } from '../../../store/timeline/types';
interface ReduxProps {
timelineId: string | null;

View file

@ -17,7 +17,6 @@ import * as React from 'react';
import styled, { injectGlobal } from 'styled-components';
import { Note } from '../../../lib/note';
import { inputsModel } from '../../../store';
import { AssociateNote, UpdateNote } from '../../notes/helpers';
import { SuperDatePicker } from '../../super_date_picker';
@ -31,12 +30,13 @@ import {
} from './styles';
import * as i18n from './translations';
import { OpenTimelineModalButton } from '../../open_timeline/open_timeline_modal';
import { InputsModelId } from '../../../store/inputs/constants';
type CreateTimeline = ({ id, show }: { id: string; show?: boolean }) => void;
type UpdateIsFavorite = ({ id, isFavorite }: { id: string; isFavorite: boolean }) => void;
type UpdateTitle = ({ id, title }: { id: string; title: string }) => void;
type UpdateDescription = ({ id, description }: { id: string; description: string }) => void;
type ToggleLock = ({ linkToId }: { linkToId: inputsModel.InputsModelId }) => void;
type ToggleLock = ({ linkToId }: { linkToId: InputsModelId }) => void;
// SIDE EFFECT: the following `injectGlobal` overrides `EuiPopover`
// and `EuiToolTip` global styles:

View file

@ -10,10 +10,11 @@ import { ActionCreator } from 'typescript-fsa';
import { inputsModel } from '../../store';
import { inputsActions } from '../../store/actions';
import { InputsModelId } from '../../store/inputs/constants';
interface TimelineRefetchDispatch {
setTimelineQuery: ActionCreator<{
inputId: inputsModel.InputsModelId;
inputId: InputsModelId;
id: string;
loading: boolean;
refetch: inputsModel.Refetch;

View file

@ -4,10 +4,6 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { KeyUrlState, LocationKeysType, LocationMappedToModel } from './types';
import { networkModel } from '../../store/network';
import { hostsModel } from '../../store/hosts';
export enum CONSTANTS {
hostsDetails = 'hosts.details',
hostsPage = 'hosts.page',
@ -16,19 +12,3 @@ export enum CONSTANTS {
networkPage = 'network.page',
timerange = 'timerange',
}
export const LOCATION_KEYS: LocationKeysType[] = [
CONSTANTS.hostsDetails,
CONSTANTS.hostsPage,
CONSTANTS.networkDetails,
CONSTANTS.networkPage,
];
export const URL_STATE_KEYS: KeyUrlState[] = [CONSTANTS.kqlQuery, CONSTANTS.timerange];
export const LOCATION_MAPPED_TO_MODEL: LocationMappedToModel = {
[CONSTANTS.networkPage]: networkModel.NetworkType.page,
[CONSTANTS.networkDetails]: networkModel.NetworkType.details,
[CONSTANTS.hostsPage]: hostsModel.HostsType.page,
[CONSTANTS.hostsDetails]: hostsModel.HostsType.details,
};

View file

@ -22,14 +22,12 @@ import {
} from '../../store';
import {
AbsoluteTimeRange,
InputsModelId,
LinkTo,
RelativeTimeRange,
TimeRangeKinds,
UrlInputsModel,
} from '../../store/inputs/model';
import { convertKueryToElasticSearchQuery } from '../../lib/keury';
import { URL_STATE_KEYS, CONSTANTS, LOCATION_MAPPED_TO_MODEL, LOCATION_KEYS } from './constants';
import { URL_STATE_KEYS, LOCATION_MAPPED_TO_MODEL, LOCATION_KEYS } from './types';
import {
decodeRisonUrlState,
getCurrentLocation,
@ -48,6 +46,8 @@ import {
UrlStateContainerPropTypes,
UrlStateProps,
} from './types';
import { CONSTANTS } from './constants';
import { InputsModelId, TimeRangeKinds } from '../../store/inputs/constants';
export class UrlStateContainerLifecycle extends React.Component<UrlStateContainerPropTypes> {
public render() {

View file

@ -8,10 +8,10 @@ import { shallow } from 'enzyme';
import { throttle } from 'lodash/fp';
import * as React from 'react';
import { UrlStateContainerLifecycle } from './';
import { UrlStateContainerPropTypes } from './types';
import { CONSTANTS } from './constants';
import { getMockPropsObj, mockHistory, filterQuery, testCases } from './test_dependencies';
import { networkModel } from '../../store';
import { UrlStateContainerPropTypes } from './types';
import { CONSTANTS } from './constants';
jest.mock('lodash/fp');

View file

@ -6,9 +6,9 @@
import { ActionCreator } from 'typescript-fsa';
import { hostsModel, KueryFilterQuery, networkModel, SerializedFilterQuery } from '../../store';
import { LocationTypesNoNull, UrlStateContainerPropTypes } from './types';
import { UrlStateContainerPropTypes, LocationTypesNoNull } from './types';
import { CONSTANTS } from './constants';
import { InputsModelId } from '../../store/inputs/model';
import { InputsModelId } from '../../store/inputs/constants';
type Action = 'PUSH' | 'POP' | 'REPLACE';
const pop: Action = 'POP';

View file

@ -8,8 +8,25 @@ import { StaticIndexPattern } from 'ui/index_patterns';
import { ActionCreator } from 'typescript-fsa';
import { RouteComponentProps } from 'react-router';
import { hostsModel, KueryFilterQuery, networkModel, SerializedFilterQuery } from '../../store';
import { UrlInputsModel } from '../../store/inputs/model';
import { InputsModelId } from '../../store/inputs/constants';
import { CONSTANTS } from './constants';
import { InputsModelId, UrlInputsModel } from '../../store/inputs/model';
export const LOCATION_KEYS: LocationKeysType[] = [
CONSTANTS.hostsDetails,
CONSTANTS.hostsPage,
CONSTANTS.networkDetails,
CONSTANTS.networkPage,
];
export const URL_STATE_KEYS: KeyUrlState[] = [CONSTANTS.kqlQuery, CONSTANTS.timerange];
export const LOCATION_MAPPED_TO_MODEL: LocationMappedToModel = {
[CONSTANTS.networkPage]: networkModel.NetworkType.page,
[CONSTANTS.networkDetails]: networkModel.NetworkType.details,
[CONSTANTS.hostsPage]: hostsModel.HostsType.page,
[CONSTANTS.hostsDetails]: hostsModel.HostsType.details,
};
export type LocationTypes =
| CONSTANTS.networkDetails

View file

@ -10,6 +10,7 @@ import { ActionCreator } from 'typescript-fsa';
import { inputsModel, inputsSelectors, State } from '../../store';
import { inputsActions } from '../../store/actions';
import { InputsModelId } from '../../store/inputs/constants';
interface GlobalTimeArgs {
from: number;
@ -25,12 +26,12 @@ interface OwnProps {
interface GlobalTimeDispatch {
setGlobalQuery: ActionCreator<{
inputId: inputsModel.InputsModelId;
inputId: InputsModelId;
id: string;
loading: boolean;
refetch: inputsModel.Refetch;
}>;
deleteAllQuery: ActionCreator<{ id: inputsModel.InputsModelId }>;
deleteAllQuery: ActionCreator<{ id: InputsModelId }>;
}
interface GlobalTimeReduxState {

View file

@ -6,7 +6,8 @@
import actionCreatorFactory from 'typescript-fsa';
import { InputsModelId, Refetch } from './model';
import { Refetch } from './model';
import { InputsModelId } from './constants';
const actionCreator = actionCreatorFactory('x-pack/siem/local/inputs');

View file

@ -0,0 +1,8 @@
/*
* 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.
*/
export type InputsModelId = 'global' | 'timeline';
export type TimeRangeKinds = 'absolute' | 'relative';

View file

@ -6,7 +6,8 @@
import { get } from 'lodash/fp';
import { InputsModel, InputsModelId, TimeRange } from './model';
import { InputsModel, TimeRange } from './model';
import { InputsModelId } from './constants';
export const updateInputTimerange = (
inputId: InputsModelId,

View file

@ -4,6 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { InputsModelId } from './constants';
import { CONSTANTS } from '../../components/url_state/constants';
export interface AbsoluteTimeRange {
@ -22,10 +23,6 @@ export interface RelativeTimeRange {
to: number;
}
export type InputsModelId = 'global' | 'timeline';
export type TimeRangeKinds = 'absolute' | 'relative';
export type TimeRange = AbsoluteTimeRange | RelativeTimeRange;
export interface Policy {

View file

@ -11,7 +11,8 @@ import { dragAndDropReducer, DragAndDropState, initialDragAndDropState } from '.
import { hostsReducer, HostsState, initialHostsState } from './hosts';
import { initialInputsState, inputsReducer, InputsState } from './inputs';
import { initialNetworkState, networkReducer, NetworkState } from './network';
import { TimelineState, initialTimelineState, timelineReducer } from './timeline/reducer';
import { initialTimelineState, timelineReducer } from './timeline/reducer';
import { TimelineState } from './timeline/types';
export interface State {
app: AppState;

View file

@ -57,7 +57,6 @@ import {
addTimeline,
} from './actions';
import { TimelineModel } from './model';
import { TimelineById } from './reducer';
import { epicPersistNote, timelineNoteActionsType } from './epic_note';
import { epicPersistPinnedEvent, timelinePinnedEventActionsType } from './epic_pinned_event';
import { epicPersistTimelineFavorite, timelineFavoriteActionsType } from './epic_favorite';
@ -65,6 +64,7 @@ import { isNotNull } from './helpers';
import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue';
import { refetchQueries } from './refetch_queries';
import { myEpicTimelineId } from './my_epic_timeline_id';
import { TimelineById } from './types';
interface TimelineEpicDependencies<State> {
timelineByIdSelector: (state: State) => TimelineById;

View file

@ -21,10 +21,10 @@ import {
updateTimeline,
startTimelineSaving,
} from './actions';
import { TimelineById } from './reducer';
import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue';
import { refetchQueries } from './refetch_queries';
import { myEpicTimelineId } from './my_epic_timeline_id';
import { TimelineById } from './types';
export const timelineFavoriteActionsType = [updateIsFavorite.type];

View file

@ -24,10 +24,10 @@ import {
updateTimeline,
startTimelineSaving,
} from './actions';
import { TimelineById } from './reducer';
import { myEpicTimelineId } from './my_epic_timeline_id';
import { refetchQueries } from './refetch_queries';
import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue';
import { TimelineById } from './types';
export const timelineNoteActionsType = [addNote.type, addNoteToEvent.type];
export const epicPersistNote = (

View file

@ -22,10 +22,10 @@ import {
updateTimeline,
startTimelineSaving,
} from './actions';
import { TimelineById } from './reducer';
import { myEpicTimelineId } from './my_epic_timeline_id';
import { refetchQueries } from './refetch_queries';
import { dispatcherTimelinePersistQueue } from './epic_dispatcher_timeline_persistence_queue';
import { TimelineById } from './types';
export const timelinePinnedEventActionsType = [pinEvent.type, unPinEvent.type];

View file

@ -16,7 +16,7 @@ import {
import { KueryFilterQuery, SerializedFilterQuery } from '../model';
import { KqlMode, timelineDefaults, TimelineModel } from './model';
import { TimelineById, TimelineState } from './reducer';
import { TimelineById, TimelineState } from './types';
const EMPTY_TIMELINE_BY_ID: TimelineById = {}; // stable reference

View file

@ -41,7 +41,7 @@ import {
upsertTimelineColumn,
} from './helpers';
import { timelineDefaults } from './model';
import { TimelineById } from './reducer';
import { TimelineById } from './types';
const timelineByIdMock: TimelineById = {
foo: {

View file

@ -81,25 +81,8 @@ import {
updateTimelineTitle,
upsertTimelineColumn,
} from './helpers';
import { TimelineModel } from './model';
/** A map of id to timeline */
export interface TimelineById {
[id: string]: TimelineModel;
}
export interface AutoSavedWarningMsg {
timelineId: string | null;
newTimelineModel: TimelineModel | null;
}
/** The state of all timelines is stored here */
export interface TimelineState {
timelineById: TimelineById;
autoSavedWarningMsg: AutoSavedWarningMsg;
}
const EMPTY_TIMELINE_BY_ID: TimelineById = {}; // stable reference
import { TimelineState, EMPTY_TIMELINE_BY_ID } from './types';
export const initialTimelineState: TimelineState = {
timelineById: EMPTY_TIMELINE_BY_ID,

View file

@ -10,7 +10,7 @@ import { isFromKueryExpressionValid } from '../../lib/keury';
import { State } from '../reducer';
import { timelineDefaults, TimelineModel } from './model';
import { AutoSavedWarningMsg, TimelineById } from './reducer';
import { TimelineById, AutoSavedWarningMsg } from './types';
const selectTimelineById = (state: State): TimelineById => state.timeline.timelineById;

View file

@ -0,0 +1,25 @@
/*
* 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 { TimelineModel } from './model';
export interface AutoSavedWarningMsg {
timelineId: string | null;
newTimelineModel: TimelineModel | null;
}
/** A map of id to timeline */
export interface TimelineById {
[id: string]: TimelineModel;
}
export const EMPTY_TIMELINE_BY_ID: TimelineById = {}; // stable reference
/** The state of all timelines is stored here */
export interface TimelineState {
timelineById: TimelineById;
autoSavedWarningMsg: AutoSavedWarningMsg;
}

View file

@ -0,0 +1,9 @@
/*
* 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.
*/
require('../../../../src/setup_node_env');
require('../dev_tools/circular_deps/run_check_circular_deps_cli');

352
yarn.lock
View file

@ -4248,6 +4248,14 @@
lodash.unescape "4.0.1"
semver "5.5.0"
"@typescript-eslint/typescript-estree@^1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.9.0.tgz#5d6d49be936e96fb0f859673480f89b070a5dd9b"
integrity sha512-7Eg0TEQpCkTsEwsl1lIzd6i7L3pJLQFWesV08dS87bNz0NeSjbL78gNAP1xCKaCejkds4PhpLnZkaAjx9SU8OA==
dependencies:
lodash.unescape "4.0.1"
semver "5.5.0"
"@webassemblyjs/ast@1.7.10":
version "1.7.10"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.10.tgz#0cfc61d61286240b72fc522cb755613699eea40a"
@ -5449,6 +5457,11 @@ apollo-utilities@^1.3.2:
ts-invariant "^0.4.0"
tslib "^1.9.3"
app-module-path@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5"
integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU=
app-root-dir@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118"
@ -5791,6 +5804,11 @@ assignment@^2.0.0:
resolved "https://registry.yarnpkg.com/assignment/-/assignment-2.2.1.tgz#359a7726b57e55c6b98052fa3a82f58f29052523"
integrity sha1-NZp3JrV+Vca5gFL6OoL1jykFJSM=
ast-module-types@^2.3.1, ast-module-types@^2.3.2, ast-module-types@^2.4.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-2.5.0.tgz#44b8bcd51684329a77f2af6b2587df9ea6b4d5ff"
integrity sha512-dP6vhvatex3Q+OThhvcyGRvHn4noQBg1b8lCNKUAFL05up80hr2pAExveU3YQNDGMhfNPhQit/vzIkkvBPbSXw==
ast-transform@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/ast-transform/-/ast-transform-0.0.0.tgz#74944058887d8283e189d954600947bc98fe0062"
@ -8352,7 +8370,7 @@ commander@2.17.x, commander@~2.17.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
commander@2.20.0, commander@^2.7.1:
commander@2.20.0, commander@^2.13.0, commander@^2.15.1, commander@^2.16.0, commander@^2.7.1:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
@ -9616,7 +9634,7 @@ debug@4.1.0:
dependencies:
ms "^2.1.1"
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
@ -9894,6 +9912,16 @@ depd@~1.1.1, depd@~1.1.2:
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
dependency-tree@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-7.0.2.tgz#01df8bbdc51e41438f5bb93f4a53e1a9cf8301a1"
integrity sha512-yh3qCLHl/o/ZUPq14HUF6AGEbNTMyCAu92D6AmY3SEynJHkB25o3hTDzvt3Tu/KpR0093ATyrhr4aGwcx8NnVw==
dependencies:
commander "^2.19.0"
debug "^4.1.1"
filing-cabinet "^2.3.1"
precinct "^6.1.1"
deprecated-decorator@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37"
@ -9975,6 +10003,82 @@ detect-port@^1.2.3:
address "^1.0.1"
debug "^2.6.0"
detective-amd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-3.0.0.tgz#40c8e21e229df8bca1ee2d4b952a7b67b01e2a5a"
integrity sha512-kOpKHyabdSKF9kj7PqYHLeHPw+TJT8q2u48tZYMkIcas28el1CYeLEJ42Nm+563/Fq060T5WknfwDhdX9+kkBQ==
dependencies:
ast-module-types "^2.3.1"
escodegen "^1.8.0"
get-amd-module-type "^3.0.0"
node-source-walk "^4.0.0"
detective-cjs@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-3.1.1.tgz#18da3e39a002d2098a1123d45ce1de1b0d9045a0"
integrity sha512-JQtNTBgFY6h8uT6pgph5QpV3IyxDv+z3qPk/FZRDT9TlFfm5dnRtpH39WtQEr1khqsUxVqXzKjZHpdoQvQbllg==
dependencies:
ast-module-types "^2.4.0"
node-source-walk "^4.0.0"
detective-es6@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-2.1.0.tgz#7848feaec92279d82f7b3a98d8e1f5d93483a0f7"
integrity sha512-QSHqKGOp/YBIfmIqKXaXeq2rlL+bp3bcIQMfZ+0PvKzRlELSOSZxKRvpxVcxlLuocQv4QnOfuWGniGrmPbz8MQ==
dependencies:
node-source-walk "^4.0.0"
detective-less@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/detective-less/-/detective-less-1.0.2.tgz#a68af9ca5f69d74b7d0aa190218b211d83b4f7e3"
integrity sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==
dependencies:
debug "^4.0.0"
gonzales-pe "^4.2.3"
node-source-walk "^4.0.0"
detective-postcss@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-3.0.1.tgz#511921951f66135e17d0ece2e7604c6e4966c9c6"
integrity sha512-tfTS2GdpUal5NY0aCqI4dpEy8Xfr88AehYKB0iBIZvo8y2g3UsrcDnrp9PR2FbzoW7xD5Rip3NJW7eCSvtqdUw==
dependencies:
debug "^4.1.1"
is-url "^1.2.4"
postcss "^7.0.2"
postcss-values-parser "^1.5.0"
detective-sass@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-3.0.1.tgz#496b819efd1f5c4dd3f0e19b43a8634bdd6927c4"
integrity sha512-oSbrBozRjJ+QFF4WJFbjPQKeakoaY1GiR380NPqwdbWYd5wfl5cLWv0l6LsJVqrgWfFN1bjFqSeo32Nxza8Lbw==
dependencies:
debug "^4.1.1"
gonzales-pe "^4.2.3"
node-source-walk "^4.0.0"
detective-scss@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-2.0.1.tgz#06f8c21ae6dedad1fccc26d544892d968083eaf8"
integrity sha512-VveyXW4WQE04s05KlJ8K0bG34jtHQVgTc9InspqoQxvnelj/rdgSAy7i2DXAazyQNFKlWSWbS+Ro2DWKFOKTPQ==
dependencies:
debug "^4.1.1"
gonzales-pe "^4.2.3"
node-source-walk "^4.0.0"
detective-stylus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-1.0.0.tgz#50aee7db8babb990381f010c63fabba5b58e54cd"
integrity sha1-UK7n24uruZA4HwEMY/q7pbWOVM0=
detective-typescript@^5.1.1:
version "5.3.0"
resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-5.3.0.tgz#ba2ac4aba923f87a421ae45fba3f7cf02c9ba527"
integrity sha512-J6WsrycYUZAHGTIdO1hXnoGGH8/Aw+XlCKUIOfEhqUhCkEpzwb16UHWPWiPd63ohag2NhBUY8zkZrLNKAUkHVA==
dependencies:
"@typescript-eslint/typescript-estree" "^1.9.0"
node-source-walk "^4.2.0"
typescript "^3.4.5"
dezalgo@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456"
@ -10923,6 +11027,18 @@ escodegen@^1.11.0:
optionalDependencies:
source-map "~0.6.1"
escodegen@^1.8.0:
version "1.11.1"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
source-map "~0.6.1"
escodegen@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
@ -11930,6 +12046,11 @@ file-entry-cache@^5.0.1:
dependencies:
flat-cache "^2.0.1"
file-exists-dazinatorfork@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/file-exists-dazinatorfork/-/file-exists-dazinatorfork-1.0.2.tgz#cd8d0d85f63e39dc81eceb0b687c44a2cca95c47"
integrity sha512-r70c72ln2YHzQINNfxDp02hAhbGkt1HffZ+Du8oetWDLjDtFja/Lm10lUaSh9e+wD+7VDvPee0b0C9SAy8pWZg==
file-loader@1.1.11:
version "1.1.11"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
@ -12030,6 +12151,24 @@ filesize@3.6.1:
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
filing-cabinet@^2.3.1:
version "2.3.3"
resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-2.3.3.tgz#77882b25ef0859c321a871b440823bc2ed590995"
integrity sha512-Lp9FNBm74UnZI/0tVcH8WlJZmnYf9/qImt1/VUaEj3rlBl+V7M5yVAzYPJ7X1T2WxQeCrSQN4jN64SlQa6Rbew==
dependencies:
app-module-path "^2.2.0"
commander "^2.13.0"
debug "^4.1.1"
enhanced-resolve "^4.1.0"
is-relative-path "^1.0.2"
module-definition "^3.0.0"
module-lookup-amd "^6.1.0"
resolve "^1.11.1"
resolve-dependency-path "^2.0.0"
sass-lookup "^3.0.0"
stylus-lookup "^3.0.1"
typescript "^3.0.3"
fill-keys@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20"
@ -12180,6 +12319,13 @@ find-versions@^2.0.0:
array-uniq "^1.0.0"
semver-regex "^1.0.0"
find@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8"
integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==
dependencies:
traverse-chain "~0.1.0"
findup-sync@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
@ -12254,6 +12400,11 @@ flatted@^2.0.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=
flush-write-stream@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
@ -12696,6 +12847,14 @@ geojson-vt@^3.2.1:
resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7"
integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==
get-amd-module-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-3.0.0.tgz#bb334662fa04427018c937774570de495845c288"
integrity sha512-99Q7COuACPfVt18zH9N4VAMyb81S6TUgJm2NgV6ERtkh9VIkAaByZkW530wl3lLN5KTtSrK9jVLxYsoP5hQKsw==
dependencies:
ast-module-types "^2.3.2"
node-source-walk "^4.0.0"
get-caller-file@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
@ -12716,6 +12875,11 @@ get-own-enumerable-property-symbols@^2.0.1:
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b"
integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==
get-own-enumerable-property-symbols@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
get-port@4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119"
@ -13206,6 +13370,13 @@ gonzales-pe-sl@^4.2.3:
dependencies:
minimist "1.1.x"
gonzales-pe@^4.2.3:
version "4.2.4"
resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.4.tgz#356ae36a312c46fe0f1026dd6cb539039f8500d2"
integrity sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==
dependencies:
minimist "1.1.x"
good-listener@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
@ -13508,6 +13679,13 @@ graphql@^0.13.2:
dependencies:
iterall "^1.2.1"
graphviz@^0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/graphviz/-/graphviz-0.0.8.tgz#e599e40733ef80e1653bfe89a5f031ecf2aa4aaa"
integrity sha1-5ZnkBzPvgOFlO/6JpfAx7PKqSqo=
dependencies:
temp "~0.4.0"
grid-index@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7"
@ -15527,6 +15705,11 @@ is-regexp@^1.0.0:
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
is-relative-path@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46"
integrity sha1-CRtGoNZ8HtD+hfH4z93gBrslHUY=
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
@ -15614,7 +15797,7 @@ is-upper-case@^1.1.0:
dependencies:
upper-case "^1.1.0"
is-url@^1.2.2:
is-url@^1.2.2, is-url@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
@ -17987,6 +18170,24 @@ macos-release@^2.2.0:
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8"
integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==
madge@3.4.4:
version "3.4.4"
resolved "https://registry.yarnpkg.com/madge/-/madge-3.4.4.tgz#f0b254a78f6e0fb54bb8dfe5ffdee3caee280b3d"
integrity sha512-ywk2Zca1Qn3FMH4btNcJN9q3z2+AZhJeUCzUMbUwSL/xmevCC4CzBQNF6i22V1SJ8cbXLKrXrJ6k0QQPtd9/KQ==
dependencies:
chalk "^2.4.1"
commander "^2.15.1"
commondir "^1.0.1"
debug "^4.0.1"
dependency-tree "^7.0.2"
graphviz "^0.0.8"
ora "^3.0.0"
pify "^4.0.0"
pluralize "^7.0.0"
pretty-ms "^4.0.0"
rc "^1.2.7"
walkdir "^0.0.12"
majo@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/majo/-/majo-0.4.1.tgz#5e6eeb9b63bda77e59d396b9c9ce4189ce6100bc"
@ -18003,7 +18204,7 @@ make-dir@^1.0.0, make-dir@^1.3.0:
dependencies:
pify "^3.0.0"
make-dir@^2.0.0:
make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@ -18698,6 +18899,26 @@ mocha@^2.0.1, mocha@^2.3.4:
supports-color "1.2.0"
to-iso-string "0.0.2"
module-definition@^3.0.0, module-definition@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.2.0.tgz#a1741d5ddf60d76c60d5b1f41ba8744ba08d3ef4"
integrity sha512-PO6o0BajpdRR+fb3FUSeDISgJpnyxg8UDUEalR8LPQajl0M5+m4jHWhgrMGGSEl6D9+sVl/l1fjOCvpBXIQ+2Q==
dependencies:
ast-module-types "^2.4.0"
node-source-walk "^4.0.0"
module-lookup-amd@^6.1.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-6.2.0.tgz#70600008b3f26630fde9ef9ae6165ac69de6ecbb"
integrity sha512-uxHCj5Pw9psZiC1znjU2qPsubt6haCSsN9m7xmIdoTciEgfxUkE1vhtDvjHPuOXEZrVJhjKgkmkP+w73rRuelQ==
dependencies:
commander "^2.8.1"
debug "^4.1.0"
file-exists-dazinatorfork "^1.0.2"
find "^0.3.0"
requirejs "^2.3.5"
requirejs-config-file "^3.1.1"
module-not-found-error@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0"
@ -19265,6 +19486,13 @@ node-sass@^4.9.4:
stdout-stream "^1.4.0"
"true-case-path" "^1.0.2"
node-source-walk@^4.0.0, node-source-walk@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-4.2.0.tgz#c2efe731ea8ba9c03c562aa0a9d984e54f27bc2c"
integrity sha512-hPs/QMe6zS94f5+jG3kk9E7TNm4P2SulrKiLWMzKszBfNZvL/V6wseHlTd7IvfW0NZWqPtK3+9yYNr+3USGteA==
dependencies:
"@babel/parser" "^7.0.0"
node-status-codes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
@ -19815,7 +20043,7 @@ ora@^1.3.0, ora@^1.4.0:
cli-spinners "^1.0.1"
log-symbols "^2.1.0"
ora@^3.4.0:
ora@^3.0.0, ora@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
@ -20282,6 +20510,11 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
parse-ms@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==
parse-passwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
@ -20573,7 +20806,7 @@ picomatch@^2.0.4:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
pify@4.0.1, pify@^4.0.1:
pify@4.0.1, pify@^4.0.0, pify@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
@ -20692,6 +20925,11 @@ pluralize@^1.2.1:
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=
pluralize@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
pn@^1.0.0, pn@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
@ -20843,6 +21081,15 @@ postcss-value-parser@^3.3.1:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
postcss-values-parser@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047"
integrity sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==
dependencies:
flatten "^1.0.2"
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss@^5.2.16:
version "5.2.18"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
@ -20885,6 +21132,25 @@ potpack@^1.0.1:
resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf"
integrity sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==
precinct@^6.1.1:
version "6.1.2"
resolved "https://registry.yarnpkg.com/precinct/-/precinct-6.1.2.tgz#279cc694ff109969fa0f82d77e62bcfa4a6c93be"
integrity sha512-Mk+oWvR7N2D2EY+5vKNnnXPGor1aU3ZbkcHp2ER68el5PL1nmZsvpq41s69emiNMSuL6TMoIeTabvwfe5w7vNg==
dependencies:
commander "^2.19.0"
debug "^4.1.1"
detective-amd "^3.0.0"
detective-cjs "^3.1.1"
detective-es6 "^2.0.0"
detective-less "^1.0.2"
detective-postcss "^3.0.0"
detective-sass "^3.0.0"
detective-scss "^2.0.0"
detective-stylus "^1.0.0"
detective-typescript "^5.1.1"
module-definition "^3.1.0"
node-source-walk "^4.2.0"
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@ -20966,6 +21232,13 @@ pretty-hrtime@^1.0.0, pretty-hrtime@^1.0.3:
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
pretty-ms@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-4.0.0.tgz#31baf41b94fd02227098aaa03bd62608eb0d6e92"
integrity sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q==
dependencies:
parse-ms "^2.0.0"
prismjs@^1.8.4, prismjs@~1.16.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.16.0.tgz#406eb2c8aacb0f5f0f1167930cb83835d10a4308"
@ -23298,6 +23571,20 @@ requireindex@^1.2.0, requireindex@~1.2.0:
resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef"
integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==
requirejs-config-file@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-3.1.2.tgz#de8c0b3eebdf243511c994a8a24b006f8b825997"
integrity sha512-sdLWywcDuNz7EIOhenSbRfT4YF84nItDv90coN2htbokjmU2QeyQuSBZILQUKNksepl8UPVU+hgYySFaDxbJPQ==
dependencies:
esprima "^4.0.0"
make-dir "^2.1.0"
stringify-object "^3.2.1"
requirejs@^2.3.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9"
integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==
requires-port@1.x.x, requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
@ -23330,6 +23617,11 @@ resolve-cwd@^2.0.0:
dependencies:
resolve-from "^3.0.0"
resolve-dependency-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-dependency-path/-/resolve-dependency-path-2.0.0.tgz#11700e340717b865d216c66cabeb4a2a3c696736"
integrity sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w==
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
@ -23410,6 +23702,13 @@ resolve@^1.10.1, resolve@^1.11.0:
dependencies:
path-parse "^1.0.6"
resolve@^1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
dependencies:
path-parse "^1.0.6"
resolve@^1.5.0, resolve@^1.7.1:
version "1.7.1"
resolved "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
@ -23788,6 +24087,13 @@ sass-loader@^7.1.0:
pify "^3.0.0"
semver "^5.5.0"
sass-lookup@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-3.0.0.tgz#3b395fa40569738ce857bc258e04df2617c48cac"
integrity sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg==
dependencies:
commander "^2.16.0"
sass-resources-loader@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/sass-resources-loader/-/sass-resources-loader-2.0.0.tgz#88569c542fbf1f18f33a6578b77cc5b36c56911d"
@ -24987,6 +25293,15 @@ stringify-object@3.2.2:
is-obj "^1.0.1"
is-regexp "^1.0.0"
stringify-object@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
dependencies:
get-own-enumerable-property-symbols "^3.0.0"
is-obj "^1.0.1"
is-regexp "^1.0.0"
stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
@ -25161,6 +25476,14 @@ stylis@^3.5.0:
resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.1.tgz#fd341d59f57f9aeb412bc14c9d8a8670b438e03b"
integrity sha512-yM4PyeHuwhIOUHNJxi1/Mbq8kVLv4AkyE7IYLP/LK0lIFcr3tRa2H1iZlBYKIxOlf+/jruBTe8DdKSyQX9w4OA==
stylus-lookup@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-3.0.2.tgz#c9eca3ff799691020f30b382260a67355fefdddd"
integrity sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg==
dependencies:
commander "^2.8.1"
debug "^4.1.0"
subtext@6.x.x:
version "6.0.7"
resolved "https://registry.yarnpkg.com/subtext/-/subtext-6.0.7.tgz#8e40a67901a734d598142665c90e398369b885f9"
@ -25540,6 +25863,11 @@ temp@^0.8.3:
os-tmpdir "^1.0.0"
rimraf "~2.2.6"
temp@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.4.0.tgz#671ad63d57be0fe9d7294664b3fc400636678a60"
integrity sha1-ZxrWPVe+D+nXKUZks/xABjZnimA=
tempy@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8"
@ -26025,6 +26353,11 @@ tr46@^1.0.0, tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
traverse-chain@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1"
integrity sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=
traverse@0.6.6, traverse@~0.6.6:
version "0.6.6"
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
@ -26680,7 +27013,7 @@ typescript-fsa@^2.0.0, typescript-fsa@^2.5.0:
resolved "https://registry.yarnpkg.com/typescript-fsa/-/typescript-fsa-2.5.0.tgz#1baec01b5e8f5f34c322679d1327016e9e294faf"
integrity sha1-G67AG16PXzTDImedEycBbp4pT68=
typescript@^3.3.3333, typescript@~3.0.3, typescript@~3.3.3333, typescript@~3.4.3:
typescript@^3.0.3, typescript@^3.3.3333, typescript@^3.4.5, typescript@~3.0.3, typescript@~3.3.3333, typescript@~3.4.3:
version "3.3.3333"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6"
integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==
@ -27884,6 +28217,11 @@ walk@2.3.x:
dependencies:
foreachasync "^3.0.0"
walkdir@^0.0.12:
version "0.0.12"
resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.12.tgz#2f24f1ade64aab1e458591d4442c8868356e9281"
integrity sha512-HFhaD4mMWPzFSqhpyDG48KDdrjfn409YQuVW7ckZYhW4sE87mYtWifdB/+73RA7+p4s4K18n5Jfx1kHthE1gBw==
walker@~1.0.5:
version "1.0.7"
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"