diff --git a/platform/built-in-server/start-up-visualizer/out/index.js b/platform/built-in-server/start-up-visualizer/out/index.js index 6ceb86a841ff..ec04154dd52a 100644 --- a/platform/built-in-server/start-up-visualizer/out/index.js +++ b/platform/built-in-server/start-up-visualizer/out/index.js @@ -88,6 +88,7 @@ define("ComponentsChartManager", ["require", "exports", "@amcharts/amcharts4/cha nameAxisLabel.horizontalCenter = "right"; nameAxis.renderer.minGridDistance = 1; nameAxis.renderer.grid.template.location = 0; + nameAxis.renderer.grid.template.disabled = true; } configureDurationAxis() { const durationAxis = this.chart.yAxes.push(new am4charts.DurationAxis()); @@ -119,7 +120,31 @@ define("ComponentsChartManager", ["require", "exports", "@amcharts/amcharts4/cha } exports.ComponentsChartManager = ComponentsChartManager; }); -define("TimeLineChartManager", ["require", "exports", "core", "@amcharts/amcharts4/charts", "@amcharts/amcharts4/core"], function (require, exports, core_2, am4charts, am4core) { +define("timeLineChartHelper", ["require", "exports"], function (require, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function computeLevels(items) { + let lastAllocatedColorIndex = 0; + for (let i = 0; i < items.length; i++) { + const item = items[i]; + let level = 0; + for (let j = i - 1; j >= 0; j--) { + const prevItem = items[j]; + if (prevItem.end >= item.end) { + level = prevItem.level + 1; + item.colorIndex = prevItem.colorIndex; + break; + } + } + if (item.colorIndex === undefined) { + item.colorIndex = lastAllocatedColorIndex++; + } + item.level = level; + } + } + exports.computeLevels = computeLevels; +}); +define("TimeLineChartManager", ["require", "exports", "core", "@amcharts/amcharts4/charts", "@amcharts/amcharts4/core", "timeLineChartHelper"], function (require, exports, core_2, am4charts, am4core, timeLineChartHelper_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // https://github.com/almende/vis/blob/master/examples/timeline/dataHandling/dataSerialization.html @@ -145,6 +170,7 @@ define("TimeLineChartManager", ["require", "exports", "core", "@amcharts/amchart levelAxis.renderer.grid.template.location = 0; levelAxis.renderer.minGridDistance = 1; levelAxis.renderer.labels.template.disabled = true; + // levelAxis.renderer.grid.template.disabled = true return levelAxis; } configureDurationAxis() { @@ -182,6 +208,11 @@ define("TimeLineChartManager", ["require", "exports", "core", "@amcharts/amchart // https://www.amcharts.com/docs/v4/tutorials/auto-adjusting-chart-height-based-on-a-number-of-data-items/ // noinspection SpellCheckingInspection this.chart.events.on("datavalidated", () => { + const grid = this.chart.yAxes.getIndex(0).renderer.grid; + // hide all grid lines except first and last + for (let i = 1; i < (grid.length - 1); i++) { + grid.getIndex(i).disabled = true; + } const chart = this.chart; const adjustHeight = chart.data.reduce((max, item) => Math.max(item.rowIndex, max), 0) * 35 - levelAxis.pixelHeight; // get current chart height @@ -193,7 +224,7 @@ define("TimeLineChartManager", ["require", "exports", "core", "@amcharts/amchart render(ijData) { const items = ijData.items; const firstStart = new Date(items[0].start); - const timeOffset = items[0].start; + const timeOffset = 0; const data = transformIjData(ijData, timeOffset); this.chart.data = data; const originalItems = items; @@ -202,45 +233,27 @@ define("TimeLineChartManager", ["require", "exports", "core", "@amcharts/amchart } } exports.TimelineChartManager = TimelineChartManager; - function computeLevels(items) { - for (let i = 0; i < items.length; i++) { - const item = items[i]; - let level = 0; - for (let j = i - 1; j >= 0; j--) { - const prevItem = items[j]; - if (prevItem.end >= item.end) { - level = prevItem.level + 1; - break; - } - } - item.level = level; - } - } function transformIjData(input, timeOffset) { const colorSet = new am4core.ColorSet(); const transformedItems = new Array(input.items.length); - computeLevels(input.items); + timeLineChartHelper_1.computeLevels(input.items); // we cannot use actual level as row index because in this case labels will be overlapped, so, // row index simply incremented till empirical limit (6). let rowIndex = 0; for (let i = 0; i < input.items.length; i++) { const item = input.items[i]; + if (rowIndex > 5 && item.level === 0) { + rowIndex = 0; + } const result = { name: item.name, start: item.start - timeOffset, end: item.end - timeOffset, duration: item.duration, - // level: item.isSubItem ? 2 : 1 - // level: "l" + getLevel(i, input.items, transformedItems).toString(), - // level: getLevel(i, input.items, transformedItems), - // level: item.level, rowIndex: rowIndex++, - color: colorSet.getIndex(item.level), + color: colorSet.getIndex(item.colorIndex), level: item.level, }; - if (rowIndex > 6) { - rowIndex = 0; - } transformedItems[i] = result; } transformedItems.sort((a, b) => a.rowIndex - b.rowIndex); @@ -253,550 +266,527 @@ define("dev", ["require", "exports", "TimeLineChartManager"], function (require, Object.defineProperty(exports, "__esModule", { value: true }); const data = { "items": [ + { + "name": "app initialization preparation", + "duration": 2744, + "start": 0, + "end": 2744 + }, { "name": "app initialization", - "duration": 307, - "start": 1550844299966, - "end": 1550844300273 + "duration": 302, + "start": 2744, + "end": 3046 }, { "name": "plugins initialization", "description": "plugin count: 189", - "duration": 353, - "start": 1550844300280, - "end": 1550844300633 + "duration": 369, + "start": 3053, + "end": 3423 }, { "name": "plugin descriptors loading", - "isSubItem": true, - "duration": 265, - "start": 1550844300281, - "end": 1550844300546 + "duration": 281, + "start": 3054, + "end": 3335 }, { "name": "app components initialization", "description": "component count: 101", - "duration": 3254, - "start": 1550844300634, - "end": 1550844303888 + "duration": 3029, + "start": 3424, + "end": 6453 }, { "name": "app components registration", - "isSubItem": true, - "duration": 330, - "start": 1550844300634, - "end": 1550844300964 + "duration": 323, + "start": 3424, + "end": 3747 }, { "name": "app components registered callback", - "isSubItem": true, "duration": 111, - "start": 1550844300964, - "end": 1550844301075 + "start": 3747, + "end": 3859 }, { "name": "app components creation", - "isSubItem": true, - "duration": 2813, - "start": 1550844301075, - "end": 1550844303888 + "duration": 2594, + "start": 3859, + "end": 6453 }, { "name": "app initialized callback", - "duration": 242, - "start": 1550844303888, - "end": 1550844304130 + "duration": 229, + "start": 6453, + "end": 6683 }, { "name": "project components initialization", "description": "component count: 210", - "duration": 2295, - "start": 1550844304955, - "end": 1550844307250 + "duration": 2008, + "start": 7490, + "end": 9498 }, { "name": "project components registration", - "isSubItem": true, - "duration": 782, - "start": 1550844304955, - "end": 1550844305737 + "duration": 760, + "start": 7490, + "end": 8250 }, { "name": "project components creation", - "isSubItem": true, - "duration": 1513, - "start": 1550844305737, - "end": 1550844307250 + "duration": 1248, + "start": 8250, + "end": 9498 }, { "name": "project pre-startup", - "isSubItem": true, - "duration": 33, - "start": 1550844310824, - "end": 1550844310857 + "duration": 29, + "start": 11277, + "end": 11307 }, { "name": "project startup", - "isSubItem": true, - "duration": 1, - "start": 1550844310857, - "end": 1550844310858 - }, - { - "name": "default project components creation", - "isSubItem": true, - "duration": 17, - "start": 1550844311117, - "end": 1550844311134 + "duration": 0, + "start": 11307, + "end": 11307 }, { "name": "default project components initialization", "description": "component count: 24", - "isSubItem": true, - "duration": 17, - "start": 1550844311117, - "end": 1550844311134 + "duration": 11, + "start": 11510, + "end": 11522 }, { "name": "default project components registration", - "isSubItem": true, "duration": 0, - "start": 1550844311117, - "end": 1550844311117 + "start": 11510, + "end": 11511 + }, + { + "name": "default project components creation", + "duration": 11, + "start": 11511, + "end": 11522 }, { "name": "unknown", - "duration": 1251, - "start": 1550844311117, - "end": 1550844312368 + "duration": 1157, + "start": 11522, + "end": 12679 } ], "components": [ { "name": "com.intellij.openapi.components.impl.ServiceManagerImpl", - "duration": 35, - "start": 1550844300964, - "end": 1550844300999 + "duration": 37, + "start": 3747, + "end": 3785 }, { "name": "com.intellij.openapi.util.registry.RegistryState", - "duration": 95, - "start": 1550844301079, - "end": 1550844301174 + "duration": 99, + "start": 3862, + "end": 3962 }, { "name": "com.intellij.internal.statistic.updater.StatisticsJobsScheduler", "duration": 16, - "start": 1550844301175, - "end": 1550844301191 + "start": 3962, + "end": 3978 }, { "name": "com.intellij.configurationStore.StoreAwareProjectManager", - "duration": 121, - "start": 1550844301191, - "end": 1550844301312 + "duration": 122, + "start": 3978, + "end": 4101 }, { "name": "com.intellij.openapi.vfs.PlatformVirtualFileManager", - "duration": 117, - "start": 1550844301191, - "end": 1550844301308 + "duration": 118, + "start": 3978, + "end": 4097 }, { "name": "com.intellij.openapi.vfs.impl.local.LocalFileSystemImpl", - "duration": 99, - "start": 1550844301193, - "end": 1550844301292 + "duration": 98, + "start": 3981, + "end": 4080 }, { "name": "com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl", "duration": 93, - "start": 1550844301193, - "end": 1550844301286 + "start": 3981, + "end": 4074 }, { "name": "com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl", - "duration": 543, - "start": 1550844301312, - "end": 1550844301855 + "duration": 448, + "start": 4101, + "end": 4549 }, { "name": "com.intellij.openapi.editor.impl.EditorFactoryImpl", - "duration": 308, - "start": 1550844301860, - "end": 1550844302168 + "duration": 306, + "start": 4554, + "end": 4861 }, { "name": "com.intellij.openapi.actionSystem.impl.ActionManagerImpl", - "duration": 294, - "start": 1550844301862, - "end": 1550844302156 + "duration": 293, + "start": 4556, + "end": 4849 }, { "name": "com.intellij.openapi.keymap.impl.KeymapManagerImpl", - "duration": 17, - "start": 1550844301862, - "end": 1550844301879 + "duration": 15, + "start": 4556, + "end": 4571 }, { "name": "com.intellij.history.integration.LocalHistoryImpl", - "duration": 15, - "start": 1550844302168, - "end": 1550844302183 + "duration": 13, + "start": 4861, + "end": 4874 }, { "name": "com.intellij.ide.ui.laf.LafManagerImpl", - "duration": 222, - "start": 1550844302196, - "end": 1550844302418 + "duration": 220, + "start": 4885, + "end": 5105 }, { "name": "com.intellij.util.net.ssl.CertificateManager", - "duration": 68, - "start": 1550844302446, - "end": 1550844302514 + "duration": 72, + "start": 5131, + "end": 5204 }, { "name": "com.intellij.openapi.util.registry.RegistryExtensionCollector", "duration": 13, - "start": 1550844302523, - "end": 1550844302536 + "start": 5210, + "end": 5223 }, { "name": "com.intellij.openapi.wm.impl.FocusManagerImpl", - "duration": 19, - "start": 1550844302536, - "end": 1550844302555 + "duration": 20, + "start": 5223, + "end": 5243 }, { "name": "com.intellij.openapi.wm.impl.WindowManagerImpl", - "duration": 16, - "start": 1550844302537, - "end": 1550844302553 + "duration": 15, + "start": 5225, + "end": 5241 }, { "name": "com.intellij.ide.IdeTooltipManager", "duration": 16, - "start": 1550844302555, - "end": 1550844302571 + "start": 5243, + "end": 5260 }, { "name": "com.intellij.ide.MacOSApplicationProvider", "duration": 21, - "start": 1550844302583, - "end": 1550844302604 + "start": 5271, + "end": 5292 }, { "name": "com.intellij.openapi.updateSettings.impl.UpdateCheckerComponent", - "duration": 52, - "start": 1550844302604, - "end": 1550844302656 + "duration": 50, + "start": 5292, + "end": 5343 }, { "name": "com.intellij.util.indexing.FileBasedIndexImpl", - "duration": 617, - "start": 1550844302656, - "end": 1550844303273 + "duration": 527, + "start": 5343, + "end": 5871 }, { "name": "com.intellij.psi.stubs.SerializationManagerImpl", - "duration": 15, - "start": 1550844303272, - "end": 1550844303287 + "duration": 11, + "start": 5871, + "end": 5883 }, { "name": "com.intellij.psi.stubs.StubIndexImpl", - "duration": 139, - "start": 1550844303279, - "end": 1550844303418 + "duration": 100, + "start": 5872, + "end": 5973 }, { "name": "com.intellij.openapi.actionSystem.ex.QuickListsManager", - "duration": 20, - "start": 1550844303426, - "end": 1550844303446 + "duration": 18, + "start": 5978, + "end": 5996 }, { "name": "com.intellij.execution.ExecutorRegistryImpl", - "duration": 23, - "start": 1550844303457, - "end": 1550844303480 + "duration": 22, + "start": 6006, + "end": 6029 + }, + { + "name": "com.intellij.util.xml.impl.JavaDomApplicationComponent", + "duration": 11, + "start": 6031, + "end": 6042 }, { "name": "com.intellij.openapi.projectRoots.impl.DefaultJdkConfigurator", - "duration": 92, - "start": 1550844303493, - "end": 1550844303585 + "duration": 84, + "start": 6044, + "end": 6129 }, { "name": "org.intellij.lang.xpath.xslt.impl.XsltConfigImpl", - "duration": 11, - "start": 1550844303595, - "end": 1550844303606 - }, - { - "name": "com.intellij.stats.completion.CompletionTrackerInitializer", - "duration": 11, - "start": 1550844303612, - "end": 1550844303623 + "duration": 10, + "start": 6138, + "end": 6149 }, { "name": "com.intellij.stats.personalization.impl.ApplicationUserFactorStorage", - "duration": 13, - "start": 1550844303623, - "end": 1550844303636 + "duration": 14, + "start": 6165, + "end": 6180 }, { "name": "com.intellij.completion.FeatureManagerImpl", - "duration": 15, - "start": 1550844303636, - "end": 1550844303651 + "duration": 13, + "start": 6180, + "end": 6193 }, { "name": "com.jetbrains.cidr.lang.dfa.contextSensitive.OCSourceGliderComponent", - "duration": 154, - "start": 1550844303651, - "end": 1550844303805 + "duration": 160, + "start": 6194, + "end": 6354 + }, + { + "name": "com.intellij.j2ee.appServerIntegrations.impl.ApplicationServersManagerImpl", + "duration": 14, + "start": 6354, + "end": 6369 }, { "name": "org.jetbrains.android.AndroidPlugin", "duration": 23, - "start": 1550844303819, - "end": 1550844303842 + "start": 6376, + "end": 6400 }, { - "name": "org.jetbrains.plugins.ruby.gem.GemManager", - "duration": 12, - "start": 1550844303873, - "end": 1550844303885 + "name": "com.jetbrains.python.testing.VFSTestFrameworkListener", + "duration": 15, + "start": 6425, + "end": 6440 }, { "name": "com.intellij.openapi.vfs.encoding.EncodingProjectManagerImpl", - "duration": 21, - "start": 1550844305756, - "end": 1550844305777 + "duration": 20, + "start": 8266, + "end": 8286 }, { "name": "com.intellij.openapi.wm.impl.ToolWindowManagerImpl", - "duration": 19, - "start": 1550844305777, - "end": 1550844305796 + "duration": 20, + "start": 8287, + "end": 8307 }, { "name": "com.intellij.openapi.roots.impl.ProjectRootManagerComponent", "duration": 13, - "start": 1550844305797, - "end": 1550844305810 + "start": 8308, + "end": 8321 }, { "name": "com.intellij.psi.impl.PsiManagerImpl", - "duration": 14, - "start": 1550844305810, - "end": 1550844305824 + "duration": 13, + "start": 8321, + "end": 8335 + }, + { + "name": "com.intellij.psi.impl.PsiDocumentManagerImpl", + "duration": 16, + "start": 8336, + "end": 8353 }, { "name": "com.intellij.openapi.module.impl.ModuleManagerComponent", - "duration": 42, - "start": 1550844305832, - "end": 1550844305874 + "duration": 35, + "start": 8353, + "end": 8388 }, { "name": "com.intellij.openapi.fileEditor.impl.PsiAwareFileEditorManagerImpl", - "duration": 21, - "start": 1550844305875, - "end": 1550844305896 + "duration": 20, + "start": 8389, + "end": 8410 }, { "name": "com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl", - "duration": 17, - "start": 1550844305904, - "end": 1550844305921 + "duration": 16, + "start": 8418, + "end": 8434 }, { "name": "com.intellij.codeInsight.daemon.impl.DaemonListeners", - "duration": 211, - "start": 1550844305921, - "end": 1550844306132 + "duration": 202, + "start": 8434, + "end": 8637 }, { "name": "com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl", "duration": 21, - "start": 1550844305975, - "end": 1550844305996 + "start": 8487, + "end": 8509 }, { "name": "com.intellij.openapi.vcs.changes.VcsDirtyScopeManagerImpl", - "duration": 115, - "start": 1550844305996, - "end": 1550844306111 + "duration": 109, + "start": 8509, + "end": 8618 }, { "name": "com.intellij.openapi.vcs.changes.ChangeListManagerImpl", - "duration": 113, - "start": 1550844305997, - "end": 1550844306110 + "duration": 107, + "start": 8509, + "end": 8617 }, { "name": "com.intellij.openapi.vcs.changes.ChangesViewManager", - "duration": 68, - "start": 1550844306003, - "end": 1550844306071 + "duration": 62, + "start": 8515, + "end": 8577 }, { "name": "com.intellij.codeInsight.daemon.impl.GeneralHighlightingPassFactory", - "duration": 35, - "start": 1550844306132, - "end": 1550844306167 + "duration": 32, + "start": 8637, + "end": 8669 }, { "name": "com.intellij.codeInsight.navigation.CtrlMouseHandler", - "duration": 16, - "start": 1550844306171, - "end": 1550844306187 + "duration": 13, + "start": 8673, + "end": 8687 }, { "name": "com.intellij.openapi.roots.impl.PushedFilePropertiesUpdaterImpl", - "duration": 16, - "start": 1550844306187, - "end": 1550844306203 + "duration": 13, + "start": 8687, + "end": 8701 + }, + { + "name": "com.intellij.packaging.impl.artifacts.ArtifactManagerImpl", + "duration": 10, + "start": 8717, + "end": 8727 + }, + { + "name": "com.intellij.compiler.CompilerConfigurationImpl", + "duration": 10, + "start": 8728, + "end": 8738 }, { "name": "com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager", - "duration": 30, - "start": 1550844306259, - "end": 1550844306289 + "duration": 27, + "start": 8754, + "end": 8781 }, { "name": "com.intellij.xdebugger.impl.XDebuggerManagerImpl", - "duration": 89, - "start": 1550844306302, - "end": 1550844306391 + "duration": 88, + "start": 8794, + "end": 8882 }, { "name": "com.intellij.execution.scratch.JavaScratchCompilationSupport", - "duration": 37, - "start": 1550844306421, - "end": 1550844306458 + "duration": 41, + "start": 8911, + "end": 8953 }, { "name": "com.intellij.stats.personalization.impl.UserFactorsManagerImpl", - "duration": 18, - "start": 1550844306474, - "end": 1550844306492 + "duration": 19, + "start": 8973, + "end": 8992 }, { "name": "com.intellij.tasks.impl.TaskManagerImpl", - "duration": 48, - "start": 1550844306492, - "end": 1550844306540 + "duration": 50, + "start": 8992, + "end": 9043 }, { "name": "com.intellij.uiDesigner.propertyInspector.DesignerToolWindowManager", - "duration": 193, - "start": 1550844306540, - "end": 1550844306733 + "duration": 212, + "start": 9043, + "end": 9256 }, { "name": "com.intellij.ide.palette.impl.PaletteToolWindowManager", - "duration": 20, - "start": 1550844306733, - "end": 1550844306753 - }, - { - "name": "org.jetbrains.idea.maven.navigator.MavenProjectsNavigator", - "duration": 18, - "start": 1550844306764, - "end": 1550844306782 - }, - { - "name": "org.osmorc.OsmorcProjectComponent", - "duration": 19, - "start": 1550844306786, - "end": 1550844306805 + "duration": 14, + "start": 9256, + "end": 9270 }, { "name": "com.jetbrains.cidr.lang.symbols.symtable.FileSymbolTablesCache", - "duration": 14, - "start": 1550844306805, - "end": 1550844306819 + "duration": 10, + "start": 9298, + "end": 9308 }, { "name": "com.jetbrains.cidr.lang.hmap.OCHeaderMapManager", - "duration": 86, - "start": 1550844306821, - "end": 1550844306907 - }, - { - "name": "com.jetbrains.cidr.cpp.compdb.CompDBWorkspace", - "duration": 21, - "start": 1550844306913, - "end": 1550844306934 + "duration": 45, + "start": 9309, + "end": 9354 }, { "name": "com.intellij.jpa.JpaProjectComponent", - "duration": 67, - "start": 1550844306934, - "end": 1550844307001 - }, - { - "name": "com.intellij.psi.impl.source.jsp.JspContextManagerImpl", - "duration": 11, - "start": 1550844307010, - "end": 1550844307021 + "duration": 31, + "start": 9362, + "end": 9394 }, { "name": "com.android.tools.idea.gradle.project.AndroidGradleProjectComponent", - "duration": 75, - "start": 1550844307031, - "end": 1550844307106 + "duration": 33, + "start": 9414, + "end": 9447 }, { "name": "com.android.tools.idea.res.PsiProjectListener", - "duration": 62, - "start": 1550844307106, - "end": 1550844307168 - }, - { - "name": "org.jetbrains.plugins.terminal.TerminalView", - "duration": 15, - "start": 1550844307178, - "end": 1550844307193 - }, - { - "name": "com.intellij.lang.javascript.frameworks.webpack.Webpack4PluginProviderRegistrar", - "duration": 21, - "start": 1550844307199, - "end": 1550844307220 + "duration": 12, + "start": 9447, + "end": 9459 }, { "name": "com.intellij.openapi.roots.impl.ModuleRootManagerComponent", - "duration": 123, - "start": 1550844307294, - "end": 1550844307417 + "duration": 75, + "start": 9530, + "end": 9605 }, { "name": "com.intellij.facet.FacetManagerImpl", - "duration": 33, - "start": 1550844307417, - "end": 1550844307450 + "duration": 18, + "start": 9605, + "end": 9624 } ], "preloadActivities": [ { "name": "com.intellij.ide.ui.OptionsTopHitProvider$Activity", - "duration": 1726, - "start": 1550844303962, - "end": 1550844305688 - }, - { - "name": "com.intellij.openapi.actionSystem.impl.ActionPreloader", - "duration": 6322, - "start": 1550844305688, - "end": 1550844312010 + "duration": 1639, + "start": 6530, + "end": 8169 } ], - "totalDurationComputed": 7702, - "totalDurationActual": 12402 + "totalDurationComputed": 9883, + "totalDurationActual": 12679 }; function main() { const container = document.getElementById("visualization"); @@ -888,3 +878,49 @@ define("main", ["require", "exports", "@amcharts/amcharts4/core", "@amcharts/amc return core_3.getInputElement("ijPort"); } }); +define("timeLineChartHelper.test", ["require", "exports", "timeLineChartHelper"], function (require, exports, timeLineChartHelper_2) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + test("adds 1 + 2 to equal 3", () => { + const items = [ + { + "name": "default project components creation", + "duration": 13, + "start": 1550854187320, + "end": 1550854187333 + }, + { + "name": "default project components registration", + "isSubItem": true, + "duration": 0, + "start": 1550854187320, + "end": 1550854187320 + }, + { + "name": "default project components initialization", + "description": "component count: 24", + "isSubItem": true, + "duration": 13, + "start": 1550854187320, + "end": 1550854187333 + }, + ]; + timeLineChartHelper_2.computeLevels(items); + expect(items.map(it => { + return { name: it.name, level: it.level }; + })).toMatchObject([ + { + "name": "default project components creation", + "level": 0, + }, + { + "name": "default project components registration", + "level": 1, + }, + { + "name": "default project components initialization", + "level": 1, + }, + ]); + }); +}); diff --git a/platform/built-in-server/start-up-visualizer/package.json b/platform/built-in-server/start-up-visualizer/package.json index 9c1f4d760e6b..fecd1606fe45 100644 --- a/platform/built-in-server/start-up-visualizer/package.json +++ b/platform/built-in-server/start-up-visualizer/package.json @@ -6,7 +6,9 @@ "@amcharts/amcharts4": "4.1.9" }, "devDependencies": { + "@types/jest": "^24.0.6", "@types/parcel-env": "^0.0.0", + "jest": "^24.1.0", "parcel-bundler": "^1.11.0", "typescript": "^3.3.3" }, @@ -14,6 +16,7 @@ "compile": "tsc --outFile out/index.js --module amd", "//": "chrome://flags/#allow-insecure-localhost to tell Chrome to ignore cert warnings on localhost", "serve": "caddy -quic -host localhost -port 8080 \"ext .html\" \"log stdout\" \"tls self_signed\" \"bind 127.0.0.1\"", - "dev": "parcel dev.html" + "dev": "parcel dev.html", + "test": "parcel build src/timeLineChartHelper.test.ts --out-dir dist/test --no-minify && jest dist/test" } } diff --git a/platform/built-in-server/start-up-visualizer/src/ComponentsChartManager.ts b/platform/built-in-server/start-up-visualizer/src/ComponentsChartManager.ts index 491cabde7b4a..2174374b80cf 100644 --- a/platform/built-in-server/start-up-visualizer/src/ComponentsChartManager.ts +++ b/platform/built-in-server/start-up-visualizer/src/ComponentsChartManager.ts @@ -26,6 +26,7 @@ export class ComponentsChartManager extends XYChartManager { nameAxisLabel.horizontalCenter = "right" nameAxis.renderer.minGridDistance = 1 nameAxis.renderer.grid.template.location = 0 + nameAxis.renderer.grid.template.disabled = true } private configureDurationAxis(): void { diff --git a/platform/built-in-server/start-up-visualizer/src/TimeLineChartManager.ts b/platform/built-in-server/start-up-visualizer/src/TimeLineChartManager.ts index c6bb777adb32..31baa544cb58 100644 --- a/platform/built-in-server/start-up-visualizer/src/TimeLineChartManager.ts +++ b/platform/built-in-server/start-up-visualizer/src/TimeLineChartManager.ts @@ -1,7 +1,8 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -import {InputData, Item, XYChartManager} from "./core" +import {InputData, XYChartManager} from "./core" import * as am4charts from "@amcharts/amcharts4/charts" import * as am4core from "@amcharts/amcharts4/core" +import {computeLevels, TimeLineItem} from "./timeLineChartHelper" // https://github.com/almende/vis/blob/master/examples/timeline/dataHandling/dataSerialization.html // do not group because it makes hard to understand results @@ -30,6 +31,7 @@ export class TimelineChartManager extends XYChartManager { levelAxis.renderer.grid.template.location = 0 levelAxis.renderer.minGridDistance = 1 levelAxis.renderer.labels.template.disabled = true + // levelAxis.renderer.grid.template.disabled = true return levelAxis } @@ -72,6 +74,12 @@ export class TimelineChartManager extends XYChartManager { // https://www.amcharts.com/docs/v4/tutorials/auto-adjusting-chart-height-based-on-a-number-of-data-items/ // noinspection SpellCheckingInspection this.chart.events.on("datavalidated", () => { + const grid = this.chart.yAxes.getIndex(0)!!.renderer.grid + // hide all grid lines except first and last + for (let i = 1; i < (grid.length - 1); i++) { + grid.getIndex(i)!!.disabled = true + } + const chart = this.chart const adjustHeight = chart.data.reduce((max, item) => Math.max(item.rowIndex, max), 0) * 35 - levelAxis.pixelHeight @@ -86,7 +94,7 @@ export class TimelineChartManager extends XYChartManager { render(ijData: InputData) { const items = ijData.items const firstStart = new Date(items[0].start) - const timeOffset = items[0].start + const timeOffset = 0 const data = transformIjData(ijData, timeOffset) this.chart.data = data @@ -97,22 +105,6 @@ export class TimelineChartManager extends XYChartManager { } } -function computeLevels(items: Array) { - for (let i = 0; i < items.length; i++) { - const item = items[i] - let level = 0 - for (let j = i - 1; j >= 0; j--) { - const prevItem = items[j] as TimeLineItem - if (prevItem.end >= item.end) { - level = prevItem.level + 1 - break - } - } - - (item as TimeLineItem).level = level - } -} - function transformIjData(input: InputData, timeOffset: number): Array { const colorSet = new am4core.ColorSet() const transformedItems = new Array(input.items.length) @@ -123,31 +115,24 @@ function transformIjData(input: InputData, timeOffset: number): Array { let rowIndex = 0 for (let i = 0; i < input.items.length; i++) { const item = input.items[i] as TimeLineItem + + if (rowIndex > 5 && item.level === 0) { + rowIndex = 0 + } + const result: any = { name: item.name, start: item.start - timeOffset, end: item.end - timeOffset, duration: item.duration, - // level: item.isSubItem ? 2 : 1 - // level: "l" + getLevel(i, input.items, transformedItems).toString(), - // level: getLevel(i, input.items, transformedItems), - // level: item.level, rowIndex: rowIndex++, - color: colorSet.getIndex(item.level), + color: colorSet.getIndex(item.colorIndex), level: item.level, } - if (rowIndex > 6) { - rowIndex = 0 - } transformedItems[i] = result } transformedItems.sort((a, b) => a.rowIndex - b.rowIndex) return transformedItems -} - -interface TimeLineItem extends Item { - level: number - rowIndex: number } \ No newline at end of file diff --git a/platform/built-in-server/start-up-visualizer/src/core.ts b/platform/built-in-server/start-up-visualizer/src/core.ts index 5ebb32597294..973eb3a4bce2 100644 --- a/platform/built-in-server/start-up-visualizer/src/core.ts +++ b/platform/built-in-server/start-up-visualizer/src/core.ts @@ -10,8 +10,6 @@ export interface Item { end: number duration: number - - isSubItem?: boolean } export interface InputData { diff --git a/platform/built-in-server/start-up-visualizer/src/dev.ts b/platform/built-in-server/start-up-visualizer/src/dev.ts index ffae8cbd0b1b..8a188243e538 100644 --- a/platform/built-in-server/start-up-visualizer/src/dev.ts +++ b/platform/built-in-server/start-up-visualizer/src/dev.ts @@ -5,550 +5,527 @@ import {TimelineChartManager} from "./TimeLineChartManager" const data: InputData = { "items": [ + { + "name": "app initialization preparation", + "duration": 2744, + "start": 0, + "end": 2744 + }, { "name": "app initialization", - "duration": 307, - "start": 1550844299966, - "end": 1550844300273 + "duration": 302, + "start": 2744, + "end": 3046 }, { "name": "plugins initialization", "description": "plugin count: 189", - "duration": 353, - "start": 1550844300280, - "end": 1550844300633 + "duration": 369, + "start": 3053, + "end": 3423 }, { "name": "plugin descriptors loading", - "isSubItem": true, - "duration": 265, - "start": 1550844300281, - "end": 1550844300546 + "duration": 281, + "start": 3054, + "end": 3335 }, { "name": "app components initialization", "description": "component count: 101", - "duration": 3254, - "start": 1550844300634, - "end": 1550844303888 + "duration": 3029, + "start": 3424, + "end": 6453 }, { "name": "app components registration", - "isSubItem": true, - "duration": 330, - "start": 1550844300634, - "end": 1550844300964 + "duration": 323, + "start": 3424, + "end": 3747 }, { "name": "app components registered callback", - "isSubItem": true, "duration": 111, - "start": 1550844300964, - "end": 1550844301075 + "start": 3747, + "end": 3859 }, { "name": "app components creation", - "isSubItem": true, - "duration": 2813, - "start": 1550844301075, - "end": 1550844303888 + "duration": 2594, + "start": 3859, + "end": 6453 }, { "name": "app initialized callback", - "duration": 242, - "start": 1550844303888, - "end": 1550844304130 + "duration": 229, + "start": 6453, + "end": 6683 }, { "name": "project components initialization", "description": "component count: 210", - "duration": 2295, - "start": 1550844304955, - "end": 1550844307250 + "duration": 2008, + "start": 7490, + "end": 9498 }, { "name": "project components registration", - "isSubItem": true, - "duration": 782, - "start": 1550844304955, - "end": 1550844305737 + "duration": 760, + "start": 7490, + "end": 8250 }, { "name": "project components creation", - "isSubItem": true, - "duration": 1513, - "start": 1550844305737, - "end": 1550844307250 + "duration": 1248, + "start": 8250, + "end": 9498 }, { "name": "project pre-startup", - "isSubItem": true, - "duration": 33, - "start": 1550844310824, - "end": 1550844310857 + "duration": 29, + "start": 11277, + "end": 11307 }, { "name": "project startup", - "isSubItem": true, - "duration": 1, - "start": 1550844310857, - "end": 1550844310858 - }, - { - "name": "default project components creation", - "isSubItem": true, - "duration": 17, - "start": 1550844311117, - "end": 1550844311134 + "duration": 0, + "start": 11307, + "end": 11307 }, { "name": "default project components initialization", "description": "component count: 24", - "isSubItem": true, - "duration": 17, - "start": 1550844311117, - "end": 1550844311134 + "duration": 11, + "start": 11510, + "end": 11522 }, { "name": "default project components registration", - "isSubItem": true, "duration": 0, - "start": 1550844311117, - "end": 1550844311117 + "start": 11510, + "end": 11511 + }, + { + "name": "default project components creation", + "duration": 11, + "start": 11511, + "end": 11522 }, { "name": "unknown", - "duration": 1251, - "start": 1550844311117, - "end": 1550844312368 + "duration": 1157, + "start": 11522, + "end": 12679 } ], "components": [ { "name": "com.intellij.openapi.components.impl.ServiceManagerImpl", - "duration": 35, - "start": 1550844300964, - "end": 1550844300999 + "duration": 37, + "start": 3747, + "end": 3785 }, { "name": "com.intellij.openapi.util.registry.RegistryState", - "duration": 95, - "start": 1550844301079, - "end": 1550844301174 + "duration": 99, + "start": 3862, + "end": 3962 }, { "name": "com.intellij.internal.statistic.updater.StatisticsJobsScheduler", "duration": 16, - "start": 1550844301175, - "end": 1550844301191 + "start": 3962, + "end": 3978 }, { "name": "com.intellij.configurationStore.StoreAwareProjectManager", - "duration": 121, - "start": 1550844301191, - "end": 1550844301312 + "duration": 122, + "start": 3978, + "end": 4101 }, { "name": "com.intellij.openapi.vfs.PlatformVirtualFileManager", - "duration": 117, - "start": 1550844301191, - "end": 1550844301308 + "duration": 118, + "start": 3978, + "end": 4097 }, { "name": "com.intellij.openapi.vfs.impl.local.LocalFileSystemImpl", - "duration": 99, - "start": 1550844301193, - "end": 1550844301292 + "duration": 98, + "start": 3981, + "end": 4080 }, { "name": "com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl", "duration": 93, - "start": 1550844301193, - "end": 1550844301286 + "start": 3981, + "end": 4074 }, { "name": "com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl", - "duration": 543, - "start": 1550844301312, - "end": 1550844301855 + "duration": 448, + "start": 4101, + "end": 4549 }, { "name": "com.intellij.openapi.editor.impl.EditorFactoryImpl", - "duration": 308, - "start": 1550844301860, - "end": 1550844302168 + "duration": 306, + "start": 4554, + "end": 4861 }, { "name": "com.intellij.openapi.actionSystem.impl.ActionManagerImpl", - "duration": 294, - "start": 1550844301862, - "end": 1550844302156 + "duration": 293, + "start": 4556, + "end": 4849 }, { "name": "com.intellij.openapi.keymap.impl.KeymapManagerImpl", - "duration": 17, - "start": 1550844301862, - "end": 1550844301879 + "duration": 15, + "start": 4556, + "end": 4571 }, { "name": "com.intellij.history.integration.LocalHistoryImpl", - "duration": 15, - "start": 1550844302168, - "end": 1550844302183 + "duration": 13, + "start": 4861, + "end": 4874 }, { "name": "com.intellij.ide.ui.laf.LafManagerImpl", - "duration": 222, - "start": 1550844302196, - "end": 1550844302418 + "duration": 220, + "start": 4885, + "end": 5105 }, { "name": "com.intellij.util.net.ssl.CertificateManager", - "duration": 68, - "start": 1550844302446, - "end": 1550844302514 + "duration": 72, + "start": 5131, + "end": 5204 }, { "name": "com.intellij.openapi.util.registry.RegistryExtensionCollector", "duration": 13, - "start": 1550844302523, - "end": 1550844302536 + "start": 5210, + "end": 5223 }, { "name": "com.intellij.openapi.wm.impl.FocusManagerImpl", - "duration": 19, - "start": 1550844302536, - "end": 1550844302555 + "duration": 20, + "start": 5223, + "end": 5243 }, { "name": "com.intellij.openapi.wm.impl.WindowManagerImpl", - "duration": 16, - "start": 1550844302537, - "end": 1550844302553 + "duration": 15, + "start": 5225, + "end": 5241 }, { "name": "com.intellij.ide.IdeTooltipManager", "duration": 16, - "start": 1550844302555, - "end": 1550844302571 + "start": 5243, + "end": 5260 }, { "name": "com.intellij.ide.MacOSApplicationProvider", "duration": 21, - "start": 1550844302583, - "end": 1550844302604 + "start": 5271, + "end": 5292 }, { "name": "com.intellij.openapi.updateSettings.impl.UpdateCheckerComponent", - "duration": 52, - "start": 1550844302604, - "end": 1550844302656 + "duration": 50, + "start": 5292, + "end": 5343 }, { "name": "com.intellij.util.indexing.FileBasedIndexImpl", - "duration": 617, - "start": 1550844302656, - "end": 1550844303273 + "duration": 527, + "start": 5343, + "end": 5871 }, { "name": "com.intellij.psi.stubs.SerializationManagerImpl", - "duration": 15, - "start": 1550844303272, - "end": 1550844303287 + "duration": 11, + "start": 5871, + "end": 5883 }, { "name": "com.intellij.psi.stubs.StubIndexImpl", - "duration": 139, - "start": 1550844303279, - "end": 1550844303418 + "duration": 100, + "start": 5872, + "end": 5973 }, { "name": "com.intellij.openapi.actionSystem.ex.QuickListsManager", - "duration": 20, - "start": 1550844303426, - "end": 1550844303446 + "duration": 18, + "start": 5978, + "end": 5996 }, { "name": "com.intellij.execution.ExecutorRegistryImpl", - "duration": 23, - "start": 1550844303457, - "end": 1550844303480 + "duration": 22, + "start": 6006, + "end": 6029 + }, + { + "name": "com.intellij.util.xml.impl.JavaDomApplicationComponent", + "duration": 11, + "start": 6031, + "end": 6042 }, { "name": "com.intellij.openapi.projectRoots.impl.DefaultJdkConfigurator", - "duration": 92, - "start": 1550844303493, - "end": 1550844303585 + "duration": 84, + "start": 6044, + "end": 6129 }, { "name": "org.intellij.lang.xpath.xslt.impl.XsltConfigImpl", - "duration": 11, - "start": 1550844303595, - "end": 1550844303606 - }, - { - "name": "com.intellij.stats.completion.CompletionTrackerInitializer", - "duration": 11, - "start": 1550844303612, - "end": 1550844303623 + "duration": 10, + "start": 6138, + "end": 6149 }, { "name": "com.intellij.stats.personalization.impl.ApplicationUserFactorStorage", - "duration": 13, - "start": 1550844303623, - "end": 1550844303636 + "duration": 14, + "start": 6165, + "end": 6180 }, { "name": "com.intellij.completion.FeatureManagerImpl", - "duration": 15, - "start": 1550844303636, - "end": 1550844303651 + "duration": 13, + "start": 6180, + "end": 6193 }, { "name": "com.jetbrains.cidr.lang.dfa.contextSensitive.OCSourceGliderComponent", - "duration": 154, - "start": 1550844303651, - "end": 1550844303805 + "duration": 160, + "start": 6194, + "end": 6354 + }, + { + "name": "com.intellij.j2ee.appServerIntegrations.impl.ApplicationServersManagerImpl", + "duration": 14, + "start": 6354, + "end": 6369 }, { "name": "org.jetbrains.android.AndroidPlugin", "duration": 23, - "start": 1550844303819, - "end": 1550844303842 + "start": 6376, + "end": 6400 }, { - "name": "org.jetbrains.plugins.ruby.gem.GemManager", - "duration": 12, - "start": 1550844303873, - "end": 1550844303885 + "name": "com.jetbrains.python.testing.VFSTestFrameworkListener", + "duration": 15, + "start": 6425, + "end": 6440 }, { "name": "com.intellij.openapi.vfs.encoding.EncodingProjectManagerImpl", - "duration": 21, - "start": 1550844305756, - "end": 1550844305777 + "duration": 20, + "start": 8266, + "end": 8286 }, { "name": "com.intellij.openapi.wm.impl.ToolWindowManagerImpl", - "duration": 19, - "start": 1550844305777, - "end": 1550844305796 + "duration": 20, + "start": 8287, + "end": 8307 }, { "name": "com.intellij.openapi.roots.impl.ProjectRootManagerComponent", "duration": 13, - "start": 1550844305797, - "end": 1550844305810 + "start": 8308, + "end": 8321 }, { "name": "com.intellij.psi.impl.PsiManagerImpl", - "duration": 14, - "start": 1550844305810, - "end": 1550844305824 + "duration": 13, + "start": 8321, + "end": 8335 + }, + { + "name": "com.intellij.psi.impl.PsiDocumentManagerImpl", + "duration": 16, + "start": 8336, + "end": 8353 }, { "name": "com.intellij.openapi.module.impl.ModuleManagerComponent", - "duration": 42, - "start": 1550844305832, - "end": 1550844305874 + "duration": 35, + "start": 8353, + "end": 8388 }, { "name": "com.intellij.openapi.fileEditor.impl.PsiAwareFileEditorManagerImpl", - "duration": 21, - "start": 1550844305875, - "end": 1550844305896 + "duration": 20, + "start": 8389, + "end": 8410 }, { "name": "com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl", - "duration": 17, - "start": 1550844305904, - "end": 1550844305921 + "duration": 16, + "start": 8418, + "end": 8434 }, { "name": "com.intellij.codeInsight.daemon.impl.DaemonListeners", - "duration": 211, - "start": 1550844305921, - "end": 1550844306132 + "duration": 202, + "start": 8434, + "end": 8637 }, { "name": "com.intellij.openapi.vcs.impl.ProjectLevelVcsManagerImpl", "duration": 21, - "start": 1550844305975, - "end": 1550844305996 + "start": 8487, + "end": 8509 }, { "name": "com.intellij.openapi.vcs.changes.VcsDirtyScopeManagerImpl", - "duration": 115, - "start": 1550844305996, - "end": 1550844306111 + "duration": 109, + "start": 8509, + "end": 8618 }, { "name": "com.intellij.openapi.vcs.changes.ChangeListManagerImpl", - "duration": 113, - "start": 1550844305997, - "end": 1550844306110 + "duration": 107, + "start": 8509, + "end": 8617 }, { "name": "com.intellij.openapi.vcs.changes.ChangesViewManager", - "duration": 68, - "start": 1550844306003, - "end": 1550844306071 + "duration": 62, + "start": 8515, + "end": 8577 }, { "name": "com.intellij.codeInsight.daemon.impl.GeneralHighlightingPassFactory", - "duration": 35, - "start": 1550844306132, - "end": 1550844306167 + "duration": 32, + "start": 8637, + "end": 8669 }, { "name": "com.intellij.codeInsight.navigation.CtrlMouseHandler", - "duration": 16, - "start": 1550844306171, - "end": 1550844306187 + "duration": 13, + "start": 8673, + "end": 8687 }, { "name": "com.intellij.openapi.roots.impl.PushedFilePropertiesUpdaterImpl", - "duration": 16, - "start": 1550844306187, - "end": 1550844306203 + "duration": 13, + "start": 8687, + "end": 8701 + }, + { + "name": "com.intellij.packaging.impl.artifacts.ArtifactManagerImpl", + "duration": 10, + "start": 8717, + "end": 8727 + }, + { + "name": "com.intellij.compiler.CompilerConfigurationImpl", + "duration": 10, + "start": 8728, + "end": 8738 }, { "name": "com.intellij.openapi.vcs.changes.shelf.ShelvedChangesViewManager", - "duration": 30, - "start": 1550844306259, - "end": 1550844306289 + "duration": 27, + "start": 8754, + "end": 8781 }, { "name": "com.intellij.xdebugger.impl.XDebuggerManagerImpl", - "duration": 89, - "start": 1550844306302, - "end": 1550844306391 + "duration": 88, + "start": 8794, + "end": 8882 }, { "name": "com.intellij.execution.scratch.JavaScratchCompilationSupport", - "duration": 37, - "start": 1550844306421, - "end": 1550844306458 + "duration": 41, + "start": 8911, + "end": 8953 }, { "name": "com.intellij.stats.personalization.impl.UserFactorsManagerImpl", - "duration": 18, - "start": 1550844306474, - "end": 1550844306492 + "duration": 19, + "start": 8973, + "end": 8992 }, { "name": "com.intellij.tasks.impl.TaskManagerImpl", - "duration": 48, - "start": 1550844306492, - "end": 1550844306540 + "duration": 50, + "start": 8992, + "end": 9043 }, { "name": "com.intellij.uiDesigner.propertyInspector.DesignerToolWindowManager", - "duration": 193, - "start": 1550844306540, - "end": 1550844306733 + "duration": 212, + "start": 9043, + "end": 9256 }, { "name": "com.intellij.ide.palette.impl.PaletteToolWindowManager", - "duration": 20, - "start": 1550844306733, - "end": 1550844306753 - }, - { - "name": "org.jetbrains.idea.maven.navigator.MavenProjectsNavigator", - "duration": 18, - "start": 1550844306764, - "end": 1550844306782 - }, - { - "name": "org.osmorc.OsmorcProjectComponent", - "duration": 19, - "start": 1550844306786, - "end": 1550844306805 + "duration": 14, + "start": 9256, + "end": 9270 }, { "name": "com.jetbrains.cidr.lang.symbols.symtable.FileSymbolTablesCache", - "duration": 14, - "start": 1550844306805, - "end": 1550844306819 + "duration": 10, + "start": 9298, + "end": 9308 }, { "name": "com.jetbrains.cidr.lang.hmap.OCHeaderMapManager", - "duration": 86, - "start": 1550844306821, - "end": 1550844306907 - }, - { - "name": "com.jetbrains.cidr.cpp.compdb.CompDBWorkspace", - "duration": 21, - "start": 1550844306913, - "end": 1550844306934 + "duration": 45, + "start": 9309, + "end": 9354 }, { "name": "com.intellij.jpa.JpaProjectComponent", - "duration": 67, - "start": 1550844306934, - "end": 1550844307001 - }, - { - "name": "com.intellij.psi.impl.source.jsp.JspContextManagerImpl", - "duration": 11, - "start": 1550844307010, - "end": 1550844307021 + "duration": 31, + "start": 9362, + "end": 9394 }, { "name": "com.android.tools.idea.gradle.project.AndroidGradleProjectComponent", - "duration": 75, - "start": 1550844307031, - "end": 1550844307106 + "duration": 33, + "start": 9414, + "end": 9447 }, { "name": "com.android.tools.idea.res.PsiProjectListener", - "duration": 62, - "start": 1550844307106, - "end": 1550844307168 - }, - { - "name": "org.jetbrains.plugins.terminal.TerminalView", - "duration": 15, - "start": 1550844307178, - "end": 1550844307193 - }, - { - "name": "com.intellij.lang.javascript.frameworks.webpack.Webpack4PluginProviderRegistrar", - "duration": 21, - "start": 1550844307199, - "end": 1550844307220 + "duration": 12, + "start": 9447, + "end": 9459 }, { "name": "com.intellij.openapi.roots.impl.ModuleRootManagerComponent", - "duration": 123, - "start": 1550844307294, - "end": 1550844307417 + "duration": 75, + "start": 9530, + "end": 9605 }, { "name": "com.intellij.facet.FacetManagerImpl", - "duration": 33, - "start": 1550844307417, - "end": 1550844307450 + "duration": 18, + "start": 9605, + "end": 9624 } ], "preloadActivities": [ { "name": "com.intellij.ide.ui.OptionsTopHitProvider$Activity", - "duration": 1726, - "start": 1550844303962, - "end": 1550844305688 - }, - { - "name": "com.intellij.openapi.actionSystem.impl.ActionPreloader", - "duration": 6322, - "start": 1550844305688, - "end": 1550844312010 + "duration": 1639, + "start": 6530, + "end": 8169 } ], - "totalDurationComputed": 7702, - "totalDurationActual": 12402 + "totalDurationComputed": 9883, + "totalDurationActual": 12679 } function main() { diff --git a/platform/built-in-server/start-up-visualizer/src/timeLineChartHelper.test.ts b/platform/built-in-server/start-up-visualizer/src/timeLineChartHelper.test.ts new file mode 100644 index 000000000000..767da9b77631 --- /dev/null +++ b/platform/built-in-server/start-up-visualizer/src/timeLineChartHelper.test.ts @@ -0,0 +1,45 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +import {computeLevels, TimeLineItem} from "./timeLineChartHelper" + +test("sort", () => { + const items = [ + { + "name": "default project components creation", + "duration": 13, + "start": 1550854187320, + "end": 1550854187333 + }, + { + "name": "default project components registration", + "isSubItem": true, + "duration": 0, + "start": 1550854187320, + "end": 1550854187320 + }, + { + "name": "default project components initialization", + "description": "component count: 24", + "isSubItem": true, + "duration": 13, + "start": 1550854187320, + "end": 1550854187333 + }, + ] + computeLevels(items) + expect(items.map(it => { + return {name: it.name, level: (it as TimeLineItem).level} + })).toMatchObject([ + { + "name": "default project components creation", + "level": 0, + }, + { + "name": "default project components registration", + "level": 1, + }, + { + "name": "default project components initialization", + "level": 1, + }, + ]) +}) \ No newline at end of file diff --git a/platform/built-in-server/start-up-visualizer/src/timeLineChartHelper.ts b/platform/built-in-server/start-up-visualizer/src/timeLineChartHelper.ts new file mode 100644 index 000000000000..28beb742f40a --- /dev/null +++ b/platform/built-in-server/start-up-visualizer/src/timeLineChartHelper.ts @@ -0,0 +1,30 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +import {Item} from "./core" + +export interface TimeLineItem extends Item { + level: number + rowIndex: number + + colorIndex: number +} + +export function computeLevels(items: Array) { + let lastAllocatedColorIndex = 0 + for (let i = 0; i < items.length; i++) { + const item = items[i] as TimeLineItem + let level = 0 + for (let j = i - 1; j >= 0; j--) { + const prevItem = items[j] as TimeLineItem + if (prevItem.end >= item.end) { + level = prevItem.level + 1 + item.colorIndex = prevItem.colorIndex + break + } + } + + if (item.colorIndex === undefined) { + item.colorIndex = lastAllocatedColorIndex++ + } + item.level = level + } +} \ No newline at end of file diff --git a/platform/built-in-server/start-up-visualizer/yarn.lock b/platform/built-in-server/start-up-visualizer/yarn.lock index 49cc294ce8dc..9b6119cfff0d 100644 --- a/platform/built-in-server/start-up-visualizer/yarn.lock +++ b/platform/built-in-server/start-up-visualizer/yarn.lock @@ -20,7 +20,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.0.0": +"@babel/core@^7.0.0", "@babel/core@^7.1.0": version "7.3.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.3.tgz#d090d157b7c5060d05a05acaebc048bd2b037947" integrity sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ== @@ -307,7 +307,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.2.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== @@ -708,6 +708,18 @@ "@parcel/utils" "^1.11.0" physical-cpu-count "^2.0.0" +"@types/jest-diff@*": + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" + integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== + +"@types/jest@^24.0.6": + version "24.0.6" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.6.tgz#ba4c8c7900ce098a82ca99293cbe4192bde4f355" + integrity sha512-NE7FBG/F4cMDKdCBqgyd+Sa6JZ5GiMOyA5QwJdeS4Ii/Z9a18WgGbFrHbcr48/7I9HdnkaAYP+S2MmQ27qoqJA== + dependencies: + "@types/jest-diff" "*" + "@types/node@^10.11.7": version "10.12.26" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.26.tgz#2dec19f1f7981c95cb54bab8f618ecb5dc983d0e" @@ -733,6 +745,11 @@ abab@^1.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= +abab@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -745,16 +762,34 @@ acorn-globals@^1.0.4: dependencies: acorn "^2.1.0" +acorn-globals@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" + integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" + integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + acorn@^2.1.0, acorn@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= -acorn@^5.0.0: +acorn@^5.0.0, acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== +acorn@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" + integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== + adler-32@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25" @@ -783,6 +818,11 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -793,12 +833,17 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -820,6 +865,13 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== + dependencies: + default-require-extensions "^2.0.0" + aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -865,6 +917,11 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -912,6 +969,11 @@ ast-types@^0.7.0: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" integrity sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk= +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -922,6 +984,13 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== +async@^2.5.0, async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" + integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== + dependencies: + lodash "^4.17.11" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -954,6 +1023,38 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +babel-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" + integrity sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw== + dependencies: + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.1.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-plugin-istanbul@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893" + integrity sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ== + dependencies: + find-up "^3.0.0" + istanbul-lib-instrument "^3.0.0" + test-exclude "^5.0.0" + +babel-plugin-jest-hoist@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" + integrity sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw== + +babel-preset-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e" + integrity sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.1.0" + babel-runtime@^6.11.6, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -1087,7 +1188,12 @@ brotli@^1.2.0: dependencies: base64-js "^1.1.2" -browser-resolve@^1.8.1: +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +browser-resolve@^1.11.3, browser-resolve@^1.8.1: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== @@ -1179,6 +1285,13 @@ browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.3.4: electron-to-chromium "^1.3.103" node-releases "^1.1.3" +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + dependencies: + node-int64 "^0.4.0" + buffer-equal@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" @@ -1247,6 +1360,16 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +callsites@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" + integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + caniuse-api@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" @@ -1287,6 +1410,13 @@ canvg@^1.5.3: stackblur-canvas "^1.4.1" xmldom "^0.1.22" +capture-exit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= + dependencies: + rsvp "^3.3.3" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1344,6 +1474,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1381,6 +1516,15 @@ cli-spinners@^1.1.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + clone@^1.0.1, clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -1396,6 +1540,11 @@ clones@^1.2.0: resolved "https://registry.yarnpkg.com/clones/-/clones-1.2.0.tgz#b34c872045446a9f264ccceb7731bca05c529b71" integrity sha512-FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ== +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + coa@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" @@ -1528,6 +1677,11 @@ commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== +compare-versions@^3.2.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" + integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg== + component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1573,7 +1727,7 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -convert-source-map@^1.1.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -1645,7 +1799,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^6.0.4: +cross-spawn@^6.0.0, cross-spawn@^6.0.4: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -1868,7 +2022,7 @@ csso@~2.3.1: clap "^1.0.9" source-map "^0.5.3" -cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0", "cssom@>= 0.3.2 < 0.4.0": version "0.3.6" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== @@ -1880,6 +2034,13 @@ cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": dependencies: cssom "0.3.x" +cssstyle@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.1.tgz#3aceb2759eaf514ac1a21628d723d6043a819495" + integrity sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A== + dependencies: + cssom "0.3.x" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1887,6 +2048,15 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -1907,14 +2077,14 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^4.1.0: +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== dependencies: ms "^2.1.1" -decamelize@^1.1.2: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1939,6 +2109,13 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= + dependencies: + strip-bom "^3.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2013,6 +2190,11 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + dfa@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.1.0.tgz#d30218bd10d030fa421df3ebbc82285463a31781" @@ -2020,6 +2202,11 @@ dfa@^1.0.0: dependencies: babel-runtime "^6.11.6" +diff-sequences@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" + integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -2047,6 +2234,13 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -2134,6 +2328,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -2177,7 +2378,7 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.6.1, escodegen@^1.8.1: +escodegen@^1.6.1, escodegen@^1.8.1, escodegen@^1.9.1: version "1.11.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== @@ -2270,11 +2471,36 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-sh@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== + dependencies: + merge "^1.2.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2288,6 +2514,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.1.0.tgz#88e73301c4c785cde5f16da130ab407bdaf8c0f2" + integrity sha512-lVcAPhaYkQcIyMS+F8RVwzbm1jro20IG8OkvxQ6f1JfqhVZyyudCwYogQ7wnktlf14iF3ii7ArIUO/mqvrW9Gw== + dependencies: + ansi-styles "^3.2.0" + jest-get-type "^24.0.0" + jest-matcher-utils "^24.0.0" + jest-message-util "^24.0.0" + jest-regex-util "^24.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2369,6 +2606,21 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +fileset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + filesize@^3.6.0: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -2384,6 +2636,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -2459,7 +2718,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: +fsevents@^1.2.3, fsevents@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== @@ -2486,11 +2745,23 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.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" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2516,7 +2787,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.1.3: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -2533,7 +2804,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== -graceful-fs@^4.1.11: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -2546,6 +2817,22 @@ grapheme-breaker@^0.3.2: brfs "^1.2.0" unicode-trie "^0.3.1" +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +handlebars@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" + integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2654,6 +2941,11 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + hsl-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" @@ -2669,6 +2961,13 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + htmlnano@^0.1.9: version "0.1.10" resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.10.tgz#a0a548eb4c76ae2cf2423ec7a25c881734d3dea6" @@ -2717,7 +3016,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@^0.4.13, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.13, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2744,6 +3043,19 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -2777,13 +3089,18 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" @@ -2830,6 +3147,13 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -2913,6 +3237,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-generator-fn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" + integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2963,6 +3292,11 @@ is-resolvable@^1.0.0: resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + is-svg@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" @@ -3036,6 +3370,406 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-api@^2.0.8: + version "2.1.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0" + integrity sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw== + dependencies: + async "^2.6.1" + compare-versions "^3.2.1" + fileset "^2.0.3" + istanbul-lib-coverage "^2.0.3" + istanbul-lib-hook "^2.0.3" + istanbul-lib-instrument "^3.1.0" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.2" + istanbul-reports "^2.1.1" + js-yaml "^3.12.0" + make-dir "^1.3.0" + minimatch "^3.0.4" + once "^1.4.0" + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" + integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== + +istanbul-lib-hook@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb" + integrity sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA== + dependencies: + append-transform "^1.0.0" + +istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" + integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== + dependencies: + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + istanbul-lib-coverage "^2.0.3" + semver "^5.5.0" + +istanbul-lib-report@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" + integrity sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA== + dependencies: + istanbul-lib-coverage "^2.0.3" + make-dir "^1.3.0" + supports-color "^6.0.0" + +istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" + integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.3" + make-dir "^1.3.0" + rimraf "^2.6.2" + source-map "^0.6.1" + +istanbul-reports@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9" + integrity sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw== + dependencies: + handlebars "^4.1.0" + +jest-changed-files@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7" + integrity sha512-nnuU510R9U+UX0WNb5XFEcsrMqriSiRLeO9KWDFgPrpToaQm60prfQYpxsXigdClpvNot5bekDY440x9dNGnsQ== + dependencies: + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.1.0.tgz#f7cc98995f36e7210cce3cbb12974cbf60940843" + integrity sha512-U/iyWPwOI0T1CIxVLtk/2uviOTJ/OiSWJSe8qt6X1VkbbgP+nrtLJlmT9lPBe4lK78VNFJtrJ7pttcNv/s7yCw== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.15" + import-local "^2.0.0" + is-ci "^2.0.0" + istanbul-api "^2.0.8" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-source-maps "^3.0.1" + jest-changed-files "^24.0.0" + jest-config "^24.1.0" + jest-environment-jsdom "^24.0.0" + jest-get-type "^24.0.0" + jest-haste-map "^24.0.0" + jest-message-util "^24.0.0" + jest-regex-util "^24.0.0" + jest-resolve-dependencies "^24.1.0" + jest-runner "^24.1.0" + jest-runtime "^24.1.0" + jest-snapshot "^24.1.0" + jest-util "^24.0.0" + jest-validate "^24.0.0" + jest-watcher "^24.0.0" + jest-worker "^24.0.0" + micromatch "^3.1.10" + node-notifier "^5.2.1" + p-each-series "^1.0.0" + pirates "^4.0.0" + prompts "^2.0.1" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^2.0.0" + string-length "^2.0.0" + strip-ansi "^5.0.0" + which "^1.2.12" + yargs "^12.0.2" + +jest-config@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.1.0.tgz#6ea6881cfdd299bc86cc144ee36d937c97c3850c" + integrity sha512-FbbRzRqtFC6eGjG5VwsbW4E5dW3zqJKLWYiZWhB0/4E5fgsMw8GODLbGSrY5t17kKOtCWb/Z7nsIThRoDpuVyg== + dependencies: + "@babel/core" "^7.1.0" + babel-jest "^24.1.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.0.0" + jest-environment-node "^24.0.0" + jest-get-type "^24.0.0" + jest-jasmine2 "^24.1.0" + jest-regex-util "^24.0.0" + jest-resolve "^24.1.0" + jest-util "^24.0.0" + jest-validate "^24.0.0" + micromatch "^3.1.10" + pretty-format "^24.0.0" + realpath-native "^1.0.2" + +jest-diff@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34" + integrity sha512-XY5wMpRaTsuMoU+1/B2zQSKQ9RdE9gsLkGydx3nvApeyPijLA8GtEvIcPwISRCer+VDf9W1mStTYYq6fPt8ryA== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.0.0" + jest-get-type "^24.0.0" + pretty-format "^24.0.0" + +jest-docblock@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e" + integrity sha512-KfAKZ4SN7CFOZpWg4i7g7MSlY0M+mq7K0aMqENaG2vHuhC9fc3vkpU/iNN9sOus7v3h3Y48uEjqz3+Gdn2iptA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55" + integrity sha512-gFcbY4Cu55yxExXMkjrnLXov3bWO3dbPAW7HXb31h/DNWdNc/6X8MtxGff8nh3/MjkF9DpVqnj0KsPKuPK0cpA== + dependencies: + chalk "^2.0.1" + jest-get-type "^24.0.0" + jest-util "^24.0.0" + pretty-format "^24.0.0" + +jest-environment-jsdom@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11" + integrity sha512-1YNp7xtxajTRaxbylDc2pWvFnfDTH5BJJGyVzyGAKNt/lEULohwEV9zFqTgG4bXRcq7xzdd+sGFws+LxThXXOw== + dependencies: + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^11.5.1" + +jest-environment-node@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190" + integrity sha512-62fOFcaEdU0VLaq8JL90TqwI7hLn0cOKOl8vY2n477vRkCJRojiRRtJVRzzCcgFvs6gqU97DNqX5R0BrBP6Rxg== + dependencies: + jest-mock "^24.0.0" + jest-util "^24.0.0" + +jest-get-type@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" + integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== + +jest-haste-map@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" + integrity sha512-CcViJyUo41IQqttLxXVdI41YErkzBKbE6cS6dRAploCeutePYfUimWd3C9rQEWhX0YBOQzvNsC0O9nYxK2nnxQ== + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.0.0" + jest-util "^24.0.0" + jest-worker "^24.0.0" + micromatch "^3.1.10" + sane "^3.0.0" + +jest-jasmine2@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz#8377324b967037c440f0a549ee0bbd9912055db6" + integrity sha512-H+o76SdSNyCh9fM5K8upK45YTo/DiFx5w2YAzblQebSQmukDcoVBVeXynyr7DDnxh+0NTHYRCLwJVf3tC518wg== + dependencies: + "@babel/traverse" "^7.1.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.1.0" + is-generator-fn "^2.0.0" + jest-each "^24.0.0" + jest-matcher-utils "^24.0.0" + jest-message-util "^24.0.0" + jest-snapshot "^24.1.0" + jest-util "^24.0.0" + pretty-format "^24.0.0" + throat "^4.0.0" + +jest-leak-detector@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6" + integrity sha512-ZYHJYFeibxfsDSKowjDP332pStuiFT2xfc5R67Rjm/l+HFJWJgNIOCOlQGeXLCtyUn3A23+VVDdiCcnB6dTTrg== + dependencies: + pretty-format "^24.0.0" + +jest-matcher-utils@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579" + integrity sha512-LQTDmO+aWRz1Tf9HJg+HlPHhDh1E1c65kVwRFo5mwCVp5aQDzlkz4+vCvXhOKFjitV2f0kMdHxnODrXVoi+rlA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.0.0" + jest-get-type "^24.0.0" + pretty-format "^24.0.0" + +jest-message-util@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619" + integrity sha512-J9ROJIwz/IeC+eV1XSwnRK4oAwPuhmxEyYx1+K5UI+pIYwFZDSrfZaiWTdq0d2xYFw4Xiu+0KQWsdsQpgJMf3Q== + dependencies: + "@babel/code-frame" "^7.0.0" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d" + integrity sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A== + +jest-regex-util@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a" + integrity sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q== + +jest-resolve-dependencies@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz#78f738a2ec59ff4d00751d9da56f176e3f589f6c" + integrity sha512-2VwPsjd3kRPu7qe2cpytAgowCObk5AKeizfXuuiwgm1a9sijJDZe8Kh1sFj6FKvSaNEfCPlBVkZEJa2482m/Uw== + dependencies: + jest-regex-util "^24.0.0" + jest-snapshot "^24.1.0" + +jest-resolve@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.1.0.tgz#42ff0169b0ea47bfdbd0c52a0067ca7d022c7688" + integrity sha512-TPiAIVp3TG6zAxH28u/6eogbwrvZjBMWroSLBDkwkHKrqxB/RIdwkWDye4uqPlZIXWIaHtifY3L0/eO5Z0f2wg== + dependencies: + browser-resolve "^1.11.3" + chalk "^2.0.1" + realpath-native "^1.0.0" + +jest-runner@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.1.0.tgz#3686a2bb89ce62800da23d7fdc3da2c32792943b" + integrity sha512-CDGOkT3AIFl16BLL/OdbtYgYvbAprwJ+ExKuLZmGSCSldwsuU2dEGauqkpvd9nphVdAnJUcP12e/EIlnTX0QXg== + dependencies: + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.1.0" + jest-docblock "^24.0.0" + jest-haste-map "^24.0.0" + jest-jasmine2 "^24.1.0" + jest-leak-detector "^24.0.0" + jest-message-util "^24.0.0" + jest-runtime "^24.1.0" + jest-util "^24.0.0" + jest-worker "^24.0.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.1.0.tgz#7c157a2e776609e8cf552f956a5a19ec9c985214" + integrity sha512-59/BY6OCuTXxGeDhEMU7+N33dpMQyXq7MLK07cNSIY/QYt2QZgJ7Tjx+rykBI0skAoigFl0A5tmT8UdwX92YuQ== + dependencies: + "@babel/core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + fast-json-stable-stringify "^2.0.0" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.1.0" + jest-haste-map "^24.0.0" + jest-message-util "^24.0.0" + jest-regex-util "^24.0.0" + jest-resolve "^24.1.0" + jest-snapshot "^24.1.0" + jest-util "^24.0.0" + jest-validate "^24.0.0" + micromatch "^3.1.10" + realpath-native "^1.0.0" + slash "^2.0.0" + strip-bom "^3.0.0" + write-file-atomic "2.4.1" + yargs "^12.0.2" + +jest-serializer@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b" + integrity sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw== + +jest-snapshot@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.1.0.tgz#85e22f810357aa5994ab61f236617dc2205f2f5b" + integrity sha512-th6TDfFqEmXvuViacU1ikD7xFb7lQsPn2rJl7OEmnfIVpnrx3QNY2t3PE88meeg0u/mQ0nkyvmC05PBqO4USFA== + dependencies: + "@babel/types" "^7.0.0" + chalk "^2.0.1" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + jest-message-util "^24.0.0" + jest-resolve "^24.1.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.0.0" + semver "^5.5.0" + +jest-util@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6" + integrity sha512-QxsALc4wguYS7cfjdQSOr5HTkmjzkHgmZvIDkcmPfl1ib8PNV8QUWLwbKefCudWS0PRKioV+VbQ0oCUPC691fQ== + dependencies: + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + jest-message-util "^24.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" + integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g== + dependencies: + camelcase "^5.0.0" + chalk "^2.0.1" + jest-get-type "^24.0.0" + leven "^2.1.0" + pretty-format "^24.0.0" + +jest-watcher@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890" + integrity sha512-GxkW2QrZ4YxmW1GUWER05McjVDunBlKMFfExu+VsGmXJmpej1saTEKvONdx5RJBlVdpPI5x6E3+EDQSIGgl53g== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.0.0" + string-length "^2.0.0" + +jest-worker@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" + integrity sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg== + dependencies: + merge-stream "^1.0.1" + supports-color "^6.1.0" + +jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.1.0.tgz#b1e1135caefcf2397950ecf7f90e395fde866fd2" + integrity sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A== + dependencies: + import-local "^2.0.0" + jest-cli "^24.1.0" + js-base64@^2.1.9: version "2.5.1" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" @@ -3083,6 +3817,38 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + jsdom@^8.1.0: version "8.5.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-8.5.0.tgz#d4d8f5dbf2768635b62a62823b947cf7071ebc98" @@ -3184,6 +3950,28 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +kleur@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz#83c7ec858a41098b613d5998a7b653962b504f68" + integrity sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q== + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -3201,6 +3989,24 @@ linebreak@^0.3.0: brfs "^1.3.0" unicode-trie "^0.3.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.clone@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" @@ -3216,6 +4022,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -3255,6 +4066,27 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" +make-dir@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -3286,6 +4118,15 @@ mdn-data@~1.1.0: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== +mem@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" + integrity sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^2.0.0" + merge-source-map@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" @@ -3293,11 +4134,23 @@ merge-source-map@1.0.4: dependencies: source-map "^0.5.6" +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + merge2@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== +merge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -3357,7 +4210,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.4: +minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -3369,11 +4222,16 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + minipass@^2.2.1, minipass@^2.3.4: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" @@ -3436,6 +4294,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + needle@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" @@ -3460,6 +4323,11 @@ node-forge@^0.7.1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + node-libs-browser@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" @@ -3489,6 +4357,22 @@ node-libs-browser@^2.0.0: util "^0.11.0" vm-browserify "0.0.4" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.2.1: + version "5.4.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" + integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -3520,6 +4404,16 @@ nopt@^4.0.1, nopt@~4.0.1: abbrev "1" osenv "^0.1.4" +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -3565,6 +4459,13 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -3597,6 +4498,11 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== +nwsapi@^2.0.7: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f" + integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -3665,7 +4571,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -3686,6 +4592,14 @@ opn@^5.1.0: dependencies: is-wsl "^1.1.0" +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -3720,6 +4634,15 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3733,6 +4656,52 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" + integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== + +p-limit@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + pako@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -3825,6 +4794,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" @@ -3850,12 +4824,17 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.1: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -3865,6 +4844,13 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -3906,6 +4892,30 @@ physical-cpu-count@^2.0.0: resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pirates@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + png-js@>=0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/png-js/-/png-js-0.1.1.tgz#1cc7c212303acabe74263ec3ac78009580242d93" @@ -4471,6 +5481,14 @@ prepend-http@^1.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +pretty-format@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" + integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g== + dependencies: + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + printj@~1.1.0, printj@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" @@ -4491,6 +5509,14 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +prompts@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz#c5ccb324010b2e8f74752aadceeb57134c1d2522" + integrity sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ== + dependencies: + kleur "^3.0.2" + sisteransi "^1.0.0" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -4518,6 +5544,14 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -4600,7 +5634,24 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -4631,6 +5682,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +realpath-native@^1.0.0, realpath-native@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + reduce-css-calc@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -4728,7 +5786,23 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.55.0: +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.55.0, request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -4754,6 +5828,23 @@ request@^2.55.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -4769,7 +5860,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0: +resolve@^1.1.5, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== @@ -4811,7 +5902,7 @@ rgbcolor@^1.0.1: resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d" integrity sha1-1lBezbMEplldom+ktDMHMGd1lF0= -rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -4826,6 +5917,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rsvp@^3.3.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -4850,6 +5946,23 @@ safer-eval@^1.3.0: dependencies: clones "^1.2.0" +sane@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-3.1.0.tgz#995193b7dc1445ef1fe41ddfca2faf9f111854c6" + integrity sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q== + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + saslprep@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.1.tgz#b644e0ba25b156b652f3cb90df7542f896049ba6" @@ -4860,7 +5973,7 @@ sax@^1.1.4, sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -4902,7 +6015,7 @@ serve-static@^1.12.4: parseurl "~1.3.2" send "0.16.2" -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -4962,6 +6075,11 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + sigmund@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" @@ -4979,6 +6097,16 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +sisteransi@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" + integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5027,7 +6155,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@~0.5.9: +source-map-support@^0.5.6, source-map-support@~0.5.9: version "0.5.10" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== @@ -5057,6 +6185,32 @@ source-map@~0.1.30: dependencies: amdefine ">=0.0.4" +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" + integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -5096,6 +6250,11 @@ stable@~0.1.6: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + stackblur-canvas@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-1.4.1.tgz#849aa6f94b272ff26f6471fa4130ed1f7e47955b" @@ -5146,6 +6305,11 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -5170,6 +6334,14 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -5179,7 +6351,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -5215,6 +6387,23 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -5248,7 +6437,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: +supports-color@^6.0.0, supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== @@ -5288,7 +6477,7 @@ svgo@^1.0.0, svgo@^1.0.5: unquote "~1.1.1" util.promisify "~1.0.0" -"symbol-tree@>= 3.1.0 < 4.0.0": +"symbol-tree@>= 3.1.0 < 4.0.0", symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= @@ -5315,6 +6504,21 @@ terser@^3.7.3, terser@^3.8.1: source-map "~0.6.1" source-map-support "~0.5.9" +test-exclude@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" + integrity sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA== + dependencies: + arrify "^1.0.1" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^1.0.1" + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + through2@^2.0.0, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -5345,6 +6549,11 @@ tiny-inflate@^1.0.0, tiny-inflate@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c= +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -5385,7 +6594,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.2.0: +tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -5401,6 +6610,13 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -5450,6 +6666,14 @@ typescript@^3.3.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6" integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw== +uglify-js@^3.1.4: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -5557,7 +6781,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@~1.0.0: +util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -5589,6 +6813,14 @@ v8-compile-cache@^2.0.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + vendors@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" @@ -5615,6 +6847,28 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -5627,6 +6881,23 @@ webidl-conversions@^3.0.0, webidl-conversions@^3.0.1: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + whatwg-url@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-2.0.1.tgz#5396b2043f020ee6f704d9c45ea8519e724de659" @@ -5635,12 +6906,35 @@ whatwg-url@^2.0.1: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= -which@^1.2.9: +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.12, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -5654,17 +6948,39 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@^5.1.1: +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^5.1.1, ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== @@ -5689,6 +7005,11 @@ xlsx@^0.12.8: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + xmldom@^0.1.22: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" @@ -5699,6 +7020,11 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= +"y18n@^3.2.1 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -5708,3 +7034,29 @@ yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^12.0.2: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" diff --git a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java index cc5b43a434ed..9a9d65882c9e 100644 --- a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java @@ -43,9 +43,11 @@ import org.picocontainer.*; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; public abstract class ComponentManagerImpl extends UserDataHolderBase implements ComponentManagerEx, Disposable { private static final Logger LOG = Logger.getInstance("#com.intellij.components.ComponentManager"); + public static final long COMPONENT_MEASURE_THRESHOLD = TimeUnit.MILLISECONDS.toNanos(10); private volatile MutablePicoContainer myPicoContainer; private volatile boolean myDisposed; @@ -110,14 +112,14 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements myComponentConfigCount = componentConfigCount; if (componentsRegistered != null) { - measureToken = isNeededToMeasure ? StartUpMeasurer.start(measureTokenNamePrefix + StartUpMeasurer.Phases.COMPONENTS_REGISTERED_CALLBACK_SUFFIX) : null; + measureToken = isNeededToMeasure ? totalMeasureToken.startChild(measureTokenNamePrefix + StartUpMeasurer.Phases.COMPONENTS_REGISTERED_CALLBACK_SUFFIX) : null; componentsRegistered.run(); if (measureToken != null) { measureToken.end(); } } - measureToken = isNeededToMeasure ? StartUpMeasurer.start(measureTokenNamePrefix + StartUpMeasurer.Phases.CREATE_COMPONENTS_SUFFIX) : null; + measureToken = isNeededToMeasure ? totalMeasureToken.startChild(measureTokenNamePrefix + StartUpMeasurer.Phases.CREATE_COMPONENTS_SUFFIX) : null; createComponents(indicator); if (measureToken != null) { measureToken.end(); @@ -465,7 +467,7 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements return instance; } - long startTime = System.currentTimeMillis(); + long startTime = System.nanoTime(); instance = super.getComponentInstance(picoContainer); @@ -494,8 +496,8 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements ((BaseComponent)instance).initComponent(); } - long endTime = System.currentTimeMillis(); - if ((endTime - startTime) > 10 && (LOG.isDebugEnabled() || ApplicationInfoImpl.getShadowInstance().isEAP())) { + long endTime = System.nanoTime(); + if ((endTime - startTime) > COMPONENT_MEASURE_THRESHOLD && (LOG.isDebugEnabled() || ApplicationInfoImpl.getShadowInstance().isEAP())) { StartUpMeasurer.reportComponentInitialized(instance.getClass(), startTime, endTime); } } diff --git a/platform/core-impl/src/com/intellij/util/StartUpMeasurer.java b/platform/core-impl/src/com/intellij/util/StartUpMeasurer.java index 4c7526917638..cdefbf6c0289 100644 --- a/platform/core-impl/src/com/intellij/util/StartUpMeasurer.java +++ b/platform/core-impl/src/com/intellij/util/StartUpMeasurer.java @@ -8,11 +8,14 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.function.Consumer; public final class StartUpMeasurer { // use constants for better overview of existing phases (and preserve consistent naming) // `what + noun` is used as scheme for name to make analyzing easier (to visually group - `components loading/initialization/etc`, not to put common part of name to end of) public static final class Phases { + // this phase name is not fully clear - it is time from `PluginManager.start` to `IdeaApplication.initApplication` + public static final String PREPARE_TO_INIT_APP = "app initialization preparation"; // this phase name is not fully clear - it is time from `IdeaApplication.initApplication` to `IdeaApplication.run` public static final String INIT_APP = "app initialization"; @@ -35,7 +38,7 @@ public final class StartUpMeasurer { public static final String COMPONENT_INITIALIZED_INTERNAL_NAME = "_component initialized"; public static final String PRELOAD_ACTIVITY_FINISHED = "_preload activity finished"; - private static final long startTime = System.currentTimeMillis(); + private static final long startTime = System.nanoTime(); private static final ConcurrentLinkedQueue items = new ConcurrentLinkedQueue<>(); @@ -54,11 +57,11 @@ public final class StartUpMeasurer { } public static void reportComponentInitialized(@NotNull Class componentClass, long startTime, long endTime) { - new Item(COMPONENT_INITIALIZED_INTERNAL_NAME, componentClass.getName(), startTime).end(endTime); + new Item(COMPONENT_INITIALIZED_INTERNAL_NAME, componentClass.getName(), startTime, null).end(endTime); } @NotNull - public static List getAndClear() { + public static List processAndClear(@NotNull Consumer consumer) { ArrayList list = new ArrayList<>(); while (true) { Item item = items.poll(); @@ -66,7 +69,7 @@ public final class StartUpMeasurer { break; } - list.add(item); + consumer.accept(item); } return list; } @@ -78,14 +81,31 @@ public final class StartUpMeasurer { private final long start; private long end; + // null doesn't mean root - not obligated to set parent, only as hint + private final Item parent; + private Item(@Nullable String name, @Nullable String description) { - this(name, description, System.currentTimeMillis()); + this(name, description, System.nanoTime(), null); } - private Item(@Nullable String name, @Nullable String description, long start) { + private Item(@Nullable String name, @Nullable String description, long start, @Nullable Item parent) { this.name = name; this.description = StringUtil.nullize(description); this.start = start; + this.parent = parent; + } + + @Nullable + public Item getParent() { + return parent; + } + + // and how do we can sort correctly, when parent item equals to child (start and end) and also there is another child with start equals to end? + // so, parent added to API but as it was not enough, decided to measure time in nanoseconds instead of ms to mitigate such situations + @Override + @NotNull + public Item startChild(@NotNull String name) { + return new Item(name, null, System.nanoTime(), this); } @NotNull @@ -111,7 +131,7 @@ public final class StartUpMeasurer { if (description != null) { this.description = description; } - end = System.currentTimeMillis(); + end = System.nanoTime(); items.add(this); } @@ -124,11 +144,19 @@ public final class StartUpMeasurer { public void close() { end(); } + + @Override + public String toString() { + return name; + } } public interface MeasureToken extends AutoCloseable { void end(@Nullable String description); + @NotNull + Item startChild(@NotNull String name); + default void end() { end(null); } diff --git a/platform/platform-impl/src/com/intellij/ide/StartUpPerformanceReporter.kt b/platform/platform-impl/src/com/intellij/ide/StartUpPerformanceReporter.kt index fb4712e38821..3f53cdd8ee7b 100644 --- a/platform/platform-impl/src/com/intellij/ide/StartUpPerformanceReporter.kt +++ b/platform/platform-impl/src/com/intellij/ide/StartUpPerformanceReporter.kt @@ -8,9 +8,12 @@ import com.intellij.openapi.project.DumbAware import com.intellij.openapi.project.Project import com.intellij.openapi.startup.StartupActivity import com.intellij.util.StartUpMeasurer +import com.intellij.util.StartUpMeasurer.Item import gnu.trove.THashMap import java.io.StringWriter +import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicInteger +import java.util.function.Consumer class StartUpPerformanceReporter : StartupActivity, DumbAware { private val activationCount = AtomicInteger() @@ -18,8 +21,34 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { var lastReport: String? = null private set + companion object { + // need to be exposed for tests, but I don't want to expose as top-level function, so, as companion object + fun sortItems(items: MutableList) { + items.sortWith(Comparator { o1, o2 -> + if (o1 == o2.parent) { + return@Comparator -1 + } + else if (o2 == o1.parent) { + return@Comparator 1 + } + + when { + o1.start > o2.start -> 1 + o1.start < o2.start -> -1 + else -> { + when { + o1.end > o2.end -> -1 + o1.end < o2.end -> 1 + else -> 0 + } + } + } + }) + } + } + override fun runActivity(project: Project) { - val end = System.currentTimeMillis() + val end = System.nanoTime() val activationNumber = activationCount.incrementAndGet() // even if this activity executed in a pooled thread, better if it will not affect start-up in any way, ApplicationManager.getApplication().executeOnPooledThread { @@ -30,40 +59,24 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { private fun logStats(end: Long, activationNumber: Int) { val log = Logger.getInstance(StartUpMeasurer::class.java) - val items: MutableList = StartUpMeasurer.getAndClear() + val activityDescriptors = listOf(ActivityDescriptor(StartUpMeasurer.COMPONENT_INITIALIZED_INTERNAL_NAME, "components"), + ActivityDescriptor(StartUpMeasurer.PRELOAD_ACTIVITY_FINISHED, "preloadActivities")) + + val items = mutableListOf() + val activities = THashMap>() + StartUpMeasurer.processAndClear(Consumer { item -> + if (activityDescriptors.any { it.itemName === item.name }) { + activities.getOrPut(item.name) { mutableListOf() }.add(item) + } + else { + items.add(item) + } + }) if (items.isEmpty() || (ApplicationManager.getApplication().isUnitTestMode && activationNumber > 2)) { return } - // project components initialization must be first -// { -// "name": "project components registration", -// "duration": 398, -// "start": 1550307664977, -// "end": 1550307665375 -// }, -// { -// "name": "project components initialization", -// "description": "component count: 212", -// "duration": 1302, -// "start": 1550307664977, -// "end": 1550307666279 -// }, -// { -// "name": "project components creation", -// "isSubItem": true, -// "duration": 904, -// "start": 1550307665375, -// "end": 1550307666279 -// }, - items.sortWith(Comparator { o1, o2 -> - val diff = (o1.start - o2.start).toInt() - if (diff != 0) { - return@Comparator diff - } - - (o2.end - o1.end).toInt() - }) + sortItems(items) val stringWriter = StringWriter() val logPrefix = "=== Start: StartUp Measurement ===\n" @@ -72,18 +85,14 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { writer.setIndent(" ") writer.beginObject() + writer.name("version").value("1") + + val startTime = if (activationNumber == 0) StartUpMeasurer.getStartTime() else items.first().start + writer.name("items") writer.beginArray() - var totalDuration = if (activationNumber == 0) writeUnknown(writer, StartUpMeasurer.getStartTime(), items.get(0).start) else 0 - val activities = THashMap>() - val activityDescriptors = listOf(ActivityDescriptor(StartUpMeasurer.COMPONENT_INITIALIZED_INTERNAL_NAME, "components"), - ActivityDescriptor(StartUpMeasurer.PRELOAD_ACTIVITY_FINISHED, "preloadActivities")) + var totalDuration = if (activationNumber == 0) writeUnknown(writer, startTime, items.first().start, startTime) else 0 for ((index, item) in items.withIndex()) { - if (activityDescriptors.any { it.itemName === item.name }) { - activities.getOrPut(item.name) { mutableListOf() }.add(item) - continue - } - writer.beginObject() writer.name("name").value(item.name) if (item.description != null) { @@ -91,28 +100,24 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { } val duration = item.end - item.start - - if (isSubItem(item, index, items)) { - // for debug purposes (check that isSubItem computed correctly) - writer.name("isSubItem").value(true) - } - else { + if (!isSubItem(item, index, items)) { totalDuration += duration } - writeItemTimeInfo(item, duration, writer) + writeItemTimeInfo(item, duration, startTime, writer) writer.endObject() } - totalDuration += writeUnknown(writer, items.last().end, end) + totalDuration += writeUnknown(writer, items.last().end, end, startTime) writer.endArray() for (activityDescriptor in activityDescriptors) { val list = activities.get(activityDescriptor.itemName) ?: continue - writeActivities(list, writer, activityDescriptor.jsonFieldName) + sortItems(list) + writeActivities(list, startTime, writer, activityDescriptor.jsonFieldName) } - writer.name("totalDurationComputed").value(totalDuration) - writer.name("totalDurationActual").value(end - items.first().start) + writer.name("totalDurationComputed").value(TimeUnit.NANOSECONDS.toMillis(totalDuration)) + writer.name("totalDurationActual").value(TimeUnit.NANOSECONDS.toMillis(end - startTime)) writer.endObject() writer.flush() @@ -126,7 +131,7 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { log.info(string) } - private fun writeActivities(slowComponents: List, writer: JsonWriter, fieldName: String) { + private fun writeActivities(slowComponents: List, offset: Long, writer: JsonWriter, fieldName: String) { if (slowComponents.isEmpty()) { return } @@ -138,20 +143,24 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { for (item in slowComponents) { writer.beginObject() writer.name("name").value(item.description) - writeItemTimeInfo(item, item.end - item.start, writer) + writeItemTimeInfo(item, item.end - item.start, offset, writer) writer.endObject() } writer.endArray() } - private fun writeItemTimeInfo(item: StartUpMeasurer.Item, duration: Long, writer: JsonWriter) { - writer.name("duration").value(duration) - writer.name("start").value(item.start) - writer.name("end").value(item.end) + private fun writeItemTimeInfo(item: Item, duration: Long, offset: Long, writer: JsonWriter) { + writer.name("duration").value(TimeUnit.NANOSECONDS.toMillis(duration)) + writer.name("start").value(TimeUnit.NANOSECONDS.toMillis(item.start - offset)) + writer.name("end").value(TimeUnit.NANOSECONDS.toMillis(item.end - offset)) } - private fun isSubItem(item: StartUpMeasurer.Item, itemIndex: Int, list: List): Boolean { + private fun isSubItem(item: Item, itemIndex: Int, list: List): Boolean { + if (item.parent != null) { + return true + } + var index = itemIndex while (true) { val prevItem = list.getOrNull(--index) ?: return false @@ -162,17 +171,18 @@ class StartUpPerformanceReporter : StartupActivity, DumbAware { } } - private fun writeUnknown(writer: JsonWriter, start: Long, end: Long): Long { + private fun writeUnknown(writer: JsonWriter, start: Long, end: Long, offset: Long): Long { val duration = end - start - if (duration <= 1) { + val durationInMs = TimeUnit.NANOSECONDS.toMillis(duration) + if (durationInMs <= 1) { return 0 } writer.beginObject() writer.name("name").value("unknown") - writer.name("duration").value(duration) - writer.name("start").value(start) - writer.name("end").value(end) + writer.name("duration").value(durationInMs) + writer.name("start").value(TimeUnit.NANOSECONDS.toMillis(start - offset)) + writer.name("end").value(TimeUnit.NANOSECONDS.toMillis(end - offset)) writer.endObject() return duration } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java index 688f52542df7..a39d8ebc77fe 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java @@ -1,4 +1,4 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.plugins; import com.intellij.diagnostic.IdeErrorsDialog; @@ -27,6 +27,7 @@ import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.util.ArrayUtil; import com.intellij.util.ExceptionUtil; +import com.intellij.util.StartUpMeasurer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -46,14 +47,15 @@ import java.util.stream.Collectors; public class PluginManager extends PluginManagerCore { public static final String INSTALLED_TXT = "installed.txt"; - @SuppressWarnings("StaticNonFinalField") public static long startupStart; + @SuppressWarnings("StaticNonFinalField") + public static StartUpMeasurer.MeasureToken startupStart; /** * Called via reflection */ @SuppressWarnings({"UnusedDeclaration", "HardCodedStringLiteral"}) protected static void start(final String mainClass, final String methodName, final String[] args) { - startupStart = System.nanoTime(); + startupStart = StartUpMeasurer.start(StartUpMeasurer.Phases.PREPARE_TO_INIT_APP); Main.setFlags(args); diff --git a/platform/platform-impl/src/com/intellij/idea/IdeaApplication.java b/platform/platform-impl/src/com/intellij/idea/IdeaApplication.java index af3dfcd27689..3783f3493d74 100644 --- a/platform/platform-impl/src/com/intellij/idea/IdeaApplication.java +++ b/platform/platform-impl/src/com/intellij/idea/IdeaApplication.java @@ -68,6 +68,7 @@ public class IdeaApplication { @SuppressWarnings("SSBasedInspection") public static void initApplication(String[] args) { + PluginManager.startupStart.end(); StartUpMeasurer.MeasureToken measureToken = StartUpMeasurer.start(StartUpMeasurer.Phases.INIT_APP); IdeaApplication app = new IdeaApplication(args); // this invokeLater() call is needed to place the app starting code on a freshly minted IdeEventQueue instance @@ -346,7 +347,6 @@ public class IdeaApplication { AppLifecycleListener lifecyclePublisher = app.getMessageBus().syncPublisher(AppLifecycleListener.TOPIC); lifecyclePublisher.appFrameCreated(args, willOpenProject); - LOG.info("App initialization took " + (System.nanoTime() - PluginManager.startupStart) / 1000000 + " ms"); PluginManagerCore.dumpPluginClassStatistics(); // Temporary check until the jre implementation has been checked and bundled @@ -379,7 +379,6 @@ public class IdeaApplication { LifecycleUsageTriggerCollector.onIdeStart(); }); } - } /**