diff --git a/opensearch_dashboards.json b/opensearch_dashboards.json index e8abd481..1c6b783e 100644 --- a/opensearch_dashboards.json +++ b/opensearch_dashboards.json @@ -5,5 +5,5 @@ "server": true, "ui": true, "requiredPlugins": ["regionMap", "opensearchDashboardsReact", "opensearchDashboardsUtils", "navigation", "savedObjects", "data", "embeddable", "visualizations"], - "optionalPlugins": ["home"] + "optionalPlugins": ["home", "dataSource", "dataSourceManagement"] } diff --git a/package.json b/package.json index 3409aeb4..f70ab451 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@types/react-test-renderer": "^18.0.7", - "cypress": "^13.6.3", + "cypress": "9.5.4", "cypress-multi-reporters": "^1.5.0", "prettier": "^2.1.1" } diff --git a/public/application.tsx b/public/application.tsx index aab8c3ea..9fec4afe 100644 --- a/public/application.tsx +++ b/public/application.tsx @@ -10,7 +10,11 @@ import { MapServices } from './types'; import { MapsDashboardsApp } from './components/app'; import { OpenSearchDashboardsContextProvider } from '../../../src/plugins/opensearch_dashboards_react/public'; -export const renderApp = ({ element }: AppMountParameters, services: MapServices) => { +export const renderApp = ( + { element }: AppMountParameters, + services: MapServices, + dataSourceManagementEnabled: boolean +) => { ReactDOM.render( diff --git a/public/components/app.tsx b/public/components/app.tsx index ac725b24..f8d1b4a1 100644 --- a/public/components/app.tsx +++ b/public/components/app.tsx @@ -22,7 +22,11 @@ export const MapsDashboardsApp = () => { } /> - } /> + } + /> diff --git a/public/components/layer_control_panel/layer_control_panel.tsx b/public/components/layer_control_panel/layer_control_panel.tsx index 993fc0b2..a9a77bc4 100644 --- a/public/components/layer_control_panel/layer_control_panel.tsx +++ b/public/components/layer_control_panel/layer_control_panel.tsx @@ -29,7 +29,7 @@ import { IndexPattern } from '../../../../../src/plugins/data/public'; import { AddLayerPanel } from '../add_layer_panel'; import { LayerConfigPanel } from '../layer_config'; import { MapLayerSpecification } from '../../model/mapLayerType'; -import { LAYER_ICON_TYPE_MAP } from '../../../common'; +import { DASHBOARDS_MAPS_LAYER_TYPE, LAYER_ICON_TYPE_MAP } from '../../../common'; import { useOpenSearchDashboards } from '../../../../../src/plugins/opensearch_dashboards_react/public'; import { MapServices } from '../../types'; import { MapState } from '../../model/mapState'; @@ -49,6 +49,7 @@ interface Props { selectedLayerConfig: MapLayerSpecification | undefined; setSelectedLayerConfig: (layerConfig: MapLayerSpecification | undefined) => void; setIsUpdatingLayerRender: (isUpdatingLayerRender: boolean) => void; + setDataSourceRefIds: (dataSourceRefIds: string[]) => void; } export const LayerControlPanel = memo( @@ -56,11 +57,14 @@ export const LayerControlPanel = memo( maplibreRef, setLayers, layers, + layersIndexPatterns, + setLayersIndexPatterns, zoom, isReadOnlyMode, selectedLayerConfig, setSelectedLayerConfig, setIsUpdatingLayerRender, + setDataSourceRefIds, }: Props) => { const { services } = useOpenSearchDashboards(); @@ -205,12 +209,34 @@ export const LayerControlPanel = memo( setIsDeleteLayerModalVisible(true); }; + const removeDataLayerDataSource = (layer: MapLayerSpecification) => { + console.log('removeDataLayerDataSource is called'); + if (layer.type === DASHBOARDS_MAPS_LAYER_TYPE.DOCUMENTS) { + const indexPatternId = layer.source.indexPatternId; + const indexPattern = layersIndexPatterns.find((idp) => idp.id === indexPatternId); + if (indexPattern) { + const indexPatternClone = [...layersIndexPatterns]; + const index = indexPatternClone.findIndex((idp) => idp.id === indexPatternId); + if (index > -1) { + indexPatternClone.splice(index, 1); + setLayersIndexPatterns(indexPatternClone); + } + setDataSourceRefIds( + indexPatternClone + .filter((i) => i.dataSourceRef !== undefined) + .map((i) => indexPattern.dataSourceRef!.id) + ); + } + } + }; + const onDeleteLayerConfirm = () => { if (selectedDeleteLayer) { removeLayers(maplibreRef.current!, selectedDeleteLayer.id, true); removeLayer(selectedDeleteLayer.id); setIsDeleteLayerModalVisible(false); setSelectedDeleteLayer(undefined); + removeDataLayerDataSource(selectedDeleteLayer); } }; diff --git a/public/components/map_container/map_container.tsx b/public/components/map_container/map_container.tsx index 8fc7f120..bb83c9f1 100644 --- a/public/components/map_container/map_container.tsx +++ b/public/components/map_container/map_container.tsx @@ -46,6 +46,8 @@ interface MapContainerProps { isUpdatingLayerRender: boolean; setIsUpdatingLayerRender: (isUpdatingLayerRender: boolean) => void; addSpatialFilter: (shape: ShapeFilter, label: string | null, relation: GeoShapeRelation) => void; + dataSourceRefIds: string[]; + setDataSourceRefIds: (refIds: string[]) => void; } export class MapsServiceError extends Error { @@ -67,6 +69,7 @@ export const MapContainer = ({ isUpdatingLayerRender, setIsUpdatingLayerRender, addSpatialFilter, + setDataSourceRefIds, }: MapContainerProps) => { const { services } = useOpenSearchDashboards(); @@ -245,6 +248,12 @@ export const MapContainer = ({ ); const cloneLayersIndexPatterns = [...layersIndexPatterns, newIndexPattern]; setLayersIndexPatterns(cloneLayersIndexPatterns); + console.log('Print-------updateIndexPatterns'); + setDataSourceRefIds( + cloneLayersIndexPatterns + .filter((indexPattern) => indexPattern.dataSourceRef !== undefined) + .map((indexPattern) => indexPattern.dataSourceRef!.id) + ); } }; @@ -271,6 +280,7 @@ export const MapContainer = ({ selectedLayerConfig={selectedLayerConfig} setSelectedLayerConfig={setSelectedLayerConfig} setIsUpdatingLayerRender={setIsUpdatingLayerRender} + setDataSourceRefIds={setDataSourceRefIds} /> )} {mounted && tooltipState === TOOLTIP_STATE.DISPLAY_FEATURES && maplibreRef.current && ( diff --git a/public/components/map_page/map_page.tsx b/public/components/map_page/map_page.tsx index 8f3310fe..4e9f855e 100644 --- a/public/components/map_page/map_page.tsx +++ b/public/components/map_page/map_page.tsx @@ -32,6 +32,7 @@ import { MapState } from '../../model/mapState'; import { GeoShapeFilterMeta, ShapeFilter } from '../../../../../src/plugins/data/common'; import { buildGeoShapeFilterMeta } from '../../model/geo/filter'; import { FilterBar } from '../filter_bar/filter_bar'; +import { getDataLayers } from '../../model/layersFunctions'; export interface DashboardProps { timeRange?: TimeRange; @@ -51,13 +52,15 @@ export const MapComponent = ({ mapIdFromSavedObject, dashboardProps }: MapCompon savedObjects: { client: savedObjectsClient }, } = services; const [layers, setLayers] = useState([]); - const [savedMapObject, setSavedMapObject] = - useState | null>(); + const [savedMapObject, setSavedMapObject] = useState | null>(); const [layersIndexPatterns, setLayersIndexPatterns] = useState([]); const maplibreRef = useRef(null); const [mapState, setMapState] = useState(getInitialMapState()); const [isUpdatingLayerRender, setIsUpdatingLayerRender] = useState(true); const isReadOnlyMode = !!dashboardProps; + const [dataSourceRefIds, setDataSourceRefIds] = useState([]); useEffect(() => { if (mapIdFromSavedObject) { @@ -68,14 +71,20 @@ export const MapComponent = ({ mapIdFromSavedObject, dashboardProps }: MapCompon setMapState(savedMapState); setLayers(layerList); const savedIndexPatterns: IndexPattern[] = []; + const remoteDataSourceIds: string[] = []; layerList.forEach(async (layer: MapLayerSpecification) => { if (layer.type === DASHBOARDS_MAPS_LAYER_TYPE.DOCUMENTS) { const indexPatternId = layer.source.indexPatternId; const indexPattern = await services.data.indexPatterns.get(indexPatternId); savedIndexPatterns.push(indexPattern); + if (indexPattern.dataSourceRef) { + remoteDataSourceIds.push(indexPattern.dataSourceRef.id); + } } }); + console.log(remoteDataSourceIds, 'Print-----remoteDataSourceIds-----'); setLayersIndexPatterns(savedIndexPatterns); + setDataSourceRefIds(remoteDataSourceIds); }); } else { const initialDefaultLayer: MapLayerSpecification = getLayerConfigMap()[ @@ -87,6 +96,42 @@ export const MapComponent = ({ mapIdFromSavedObject, dashboardProps }: MapCompon // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + // useEffect(() => { + // const remoteDataSourceIds: string[] = []; + // console.log(layersIndexPatterns, 'xxxPrint--useEffect---layersIndexPatterns-----'); + // // layersIndexPatterns.forEach((indexPattern: IndexPattern) => { + // // console.log('should print', indexPattern); + // // console.log(layersIndexPatterns, 'Print-----layersIndexPatterns-----'); + // // if (indexPattern.dataSourceRef) { + // // remoteDataSourceIds.push(indexPattern.dataSourceRef.id); + // // } else { + // // remoteDataSourceIds.push(''); + // // } + // // }); + // console.log(layersIndexPatterns.length, 'Print-----layersIndexPatterns.length-----'); + // // for (let i = 0; i < layersIndexPatterns.length; i++) { + // // console.log('should print', layersIndexPatterns[i]); + // // if (layersIndexPatterns[i].dataSourceRef) { + // // remoteDataSourceIds.push(layersIndexPatterns[i].dataSourceRef.id); + // // } else { + // // remoteDataSourceIds.push(''); + // // } + // // } + // // layersIndexPatterns.map((indexPattern) => console.log(indexPattern.dataSourceRef?.id)); + // + // for await (const indexPattern of layersIndexPatterns) { + // console.log('should print', indexPattern); + // if (indexPattern.dataSourceRef) { + // remoteDataSourceIds.push(indexPattern.dataSourceRef.id); + // } else { + // remoteDataSourceIds.push(''); + // } + // } + // + // setDataSourceRefIds(remoteDataSourceIds); + // console.log(remoteDataSourceIds, 'useEffect remoteDataSourceIds'); + // }, [layersIndexPatterns]); + const addSpatialFilter = ( shape: ShapeFilter, label: string | null, @@ -124,6 +169,7 @@ export const MapComponent = ({ mapIdFromSavedObject, dashboardProps }: MapCompon mapState={mapState} setMapState={setMapState} setIsUpdatingLayerRender={setIsUpdatingLayerRender} + dataSourceRefIds={dataSourceRefIds} /> )} {!isReadOnlyMode && !!mapState.spatialMetaFilters?.length && ( @@ -149,6 +195,8 @@ export const MapComponent = ({ mapIdFromSavedObject, dashboardProps }: MapCompon isUpdatingLayerRender={isUpdatingLayerRender} setIsUpdatingLayerRender={setIsUpdatingLayerRender} addSpatialFilter={addSpatialFilter} + dataSourceRefIds={dataSourceRefIds} + setDataSourceRefIds={setDataSourceRefIds} /> ); diff --git a/public/components/map_top_nav/top_nav_menu.tsx b/public/components/map_top_nav/top_nav_menu.tsx index d6519d94..a7552642 100644 --- a/public/components/map_top_nav/top_nav_menu.tsx +++ b/public/components/map_top_nav/top_nav_menu.tsx @@ -26,6 +26,7 @@ interface MapTopNavMenuProps { setMapState: (mapState: MapState) => void; originatingApp?: string; setIsUpdatingLayerRender: (isUpdatingLayerRender: boolean) => void; + dataSourceRefIds: string[]; } export const MapTopNavMenu = ({ @@ -37,6 +38,7 @@ export const MapTopNavMenu = ({ mapState, setMapState, setIsUpdatingLayerRender, + dataSourceRefIds, }: MapTopNavMenuProps) => { const { services } = useOpenSearchDashboards(); const { @@ -48,6 +50,9 @@ export const MapTopNavMenu = ({ application: { navigateToApp }, embeddable, scopedHistory, + dataSourceManagement, + savedObjects: { client: savedObjectsClient }, + notifications, } = services; const [title, setTitle] = useState(''); @@ -132,27 +137,84 @@ export const MapTopNavMenu = ({ }); }, [services, mapIdFromUrl, layers, title, description, mapState, originatingApp]); + const dataSourceManagementEnabled: boolean = !!dataSourceManagement; + // const remoteDataSourceIds: (string | undefined)[] = Array.from( + // new Set(layersIndexPatterns.map((indexPattern) => indexPattern.dataSourceRef?.id)) + // ); + + // useEffect(() => { + // console.log(layersIndexPatterns, 'Print-----layersIndexPatterns-----'); + // console.log(layersIndexPatterns.length, 'Print-----layersIndexPatterns.length-----'); + // const remoteDataSourceIds: string[] = layersIndexPatterns + // .filter((indexPattern) => indexPattern.dataSourceRef !== undefined) + // .map((indexPattern) => indexPattern.dataSourceRef!.id); + // console.log(remoteDataSourceIds, 'Print-----remoteDataSourceIds-----'); + // setDataSourceRefIds(remoteDataSourceIds); + // }, [layersIndexPatterns]); + // + // const dataSourceRefIds1: string[] = layersIndexPatterns + // .filter((indexPattern) => indexPattern.dataSourceRef !== undefined) + // .map((indexPattern) => indexPattern.dataSourceRef!.id); + // + // console.log( + // layersIndexPatterns.length, + // 'Print-----layersIndexPatterns.length-out-of-effect-----MapTopNavMenu' + // ); + // console.log(layersIndexPatterns, 'Print-----layersIndexPatterns--out-of-effect---MapTopNavMenu'); + // console.log(dataSourceRefIds1, 'Print-----dataSourceRefIds1--out-of-effect---MapTopNavMenu'); + + // const remoteDataSourceIds: string[] = layersIndexPatterns.map( + // (indexPattern) => indexPattern.dataSourceRef!.id + // ); + // console.log(remoteDataSourceIds, 'remoteDataSourceIds'); + + // for (const indexPattern of layersIndexPatterns) { + // console.log(indexPattern, 'indexPattern'); + // console.log(indexPattern.dataSourceRef, 'indexPattern.dataSourceRef'); + // console.log(indexPattern.dataSourceRef?.id, 'indexPattern.dataSourceRef?.id'); + // } + + console.log(dataSourceRefIds, 'Print-----dataSourceRefIds-----MapTopNavMenu'); + return ( // @ts-ignore - + <> + + {dataSourceManagementEnabled && ( + // @ts-ignore + + )} + ); }; diff --git a/public/components/maps_list/maps_list.tsx b/public/components/maps_list/maps_list.tsx index 78ce10fd..b8d6da9d 100644 --- a/public/components/maps_list/maps_list.tsx +++ b/public/components/maps_list/maps_list.tsx @@ -26,10 +26,12 @@ import { APP_PATH, MAPS_APP_ID } from '../../../common'; export const MapsList = () => { const { services: { - notifications: { toasts }, + notifications, savedObjects: { client: savedObjectsClient }, application: { navigateToApp }, chrome: { docTitle, setBreadcrumbs }, + dataSourceManagement, + setActionMenu, }, } = useOpenSearchDashboards(); @@ -92,14 +94,14 @@ export const MapsList = () => { await Promise.all( selectedItems.map((item: any) => savedObjectsClient.delete(item.type, item.id)) ).catch((error) => { - toasts.addError(error, { + notifications.toasts.addError(error, { title: i18n.translate('map.mapListingDeleteErrorTitle', { defaultMessage: 'Error deleting map', }), }); }); }, - [savedObjectsClient, toasts] + [savedObjectsClient, notifications.toasts] ); const noMapItem = ( @@ -113,7 +115,7 @@ export const MapsList = () => { ]} /> ); - + const dataSourceManagementEnabled: boolean = !!dataSourceManagement; // Render the map list DOM. return ( @@ -121,6 +123,18 @@ export const MapsList = () => { + {dataSourceManagementEnabled && ( + + )} { tableListTitle={i18n.translate('maps.listing.table.listTitle', { defaultMessage: 'Maps', })} - toastNotifications={toasts} + toastNotifications={notifications.toasts} /> diff --git a/public/plugin.tsx b/public/plugin.tsx index a08c698e..66e2b085 100644 --- a/public/plugin.tsx +++ b/public/plugin.tsx @@ -38,19 +38,19 @@ import { MapEmbeddableFactoryDefinition } from './embeddable'; import { setTimeFilter } from './services'; export class CustomImportMapPlugin - implements Plugin -{ + implements Plugin { readonly _initializerContext: PluginInitializerContext; constructor(initializerContext: PluginInitializerContext) { this._initializerContext = initializerContext; } public setup( core: CoreSetup, - { regionMap, embeddable, visualizations }: AppPluginSetupDependencies + { regionMap, embeddable, visualizations, dataSourceManagement }: AppPluginSetupDependencies ): CustomImportMapPluginSetup { const mapConfig: ConfigSchema = { ...this._initializerContext.config.get(), }; + const dataSourceManagentEnabled: boolean = !!dataSourceManagement; // Register an application into the side navigation menu core.application.register({ id: MAPS_APP_ID, @@ -91,10 +91,12 @@ export class CustomImportMapPlugin scopedHistory: params.history, uiSettings: coreStart.uiSettings, mapConfig, + dataSourceManagement, + setActionMenu: params.setHeaderActionMenu, }; params.element.classList.add('mapAppContainer'); // Render the application - return renderApp(params, services); + return renderApp(params, services, dataSourceManagentEnabled); }, }); diff --git a/public/types.ts b/public/types.ts index 8d57c75a..8376ae84 100644 --- a/public/types.ts +++ b/public/types.ts @@ -9,6 +9,7 @@ import { SavedObjectsClient, ToastsStart, ScopedHistory, + MountPoint, } from '../../../src/core/public'; import { NavigationPublicPluginStart } from '../../../src/plugins/navigation/public'; import { DataPublicPluginSetup, DataPublicPluginStart } from '../../../src/plugins/data/public'; @@ -16,6 +17,7 @@ import { RegionMapPluginSetup } from '../../../src/plugins/region_map/public'; import { EmbeddableSetup, EmbeddableStart } from '../../../src/plugins/embeddable/public'; import { VisualizationsSetup } from '../../../src/plugins/visualizations/public'; import { ConfigSchema } from '../common/config'; +import { DataSourceManagementPluginSetup } from '../../../src/plugins/data_source_management/public'; export interface AppPluginStartDependencies { navigation: NavigationPublicPluginStart; @@ -41,6 +43,8 @@ export interface MapServices extends CoreStart { chrome: CoreStart['chrome']; uiSettings: CoreStart['uiSettings']; mapConfig: ConfigSchema; + dataSourceManagement: DataSourceManagementPluginSetup; + setActionMenu: (menuMount: MountPoint | undefined) => void; } // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -54,4 +58,5 @@ export interface AppPluginSetupDependencies { embeddable: EmbeddableSetup; visualizations: VisualizationsSetup; data: DataPublicPluginSetup; + dataSourceManagement: DataSourceManagementPluginSetup; } diff --git a/yarn.lock b/yarn.lock index f2c5d089..05c1669c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,10 +7,10 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cypress/request@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.0.tgz#7f58dfda087615ed4e6aab1b25fffe7630d6dd85" - integrity sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ== +"@cypress/request@^2.88.10": + version "2.88.12" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" + integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -180,6 +180,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.7.tgz#4b8ecac87fbefbc92f431d09c30e176fc0a7c377" integrity sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA== +"@types/node@^14.14.31": + version "14.18.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" + integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== + "@types/pbf@*", "@types/pbf@^3.0.2": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61" @@ -352,7 +357,7 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -buffer@^5.7.1: +buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -449,10 +454,10 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== common-tags@^1.8.0: version "1.8.2" @@ -515,49 +520,49 @@ cypress-multi-reporters@^1.5.0: debug "^4.3.4" lodash "^4.17.21" -cypress@^13.6.3: - version "13.6.6" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.6.6.tgz#5133f231ed1c6e57dc8dcbf60aade220bcd6884b" - integrity sha512-S+2S9S94611hXimH9a3EAYt81QM913ZVA03pUmGDfLTFa5gyp85NJ8dJGSlEAEmyRsYkioS1TtnWtbv/Fzt11A== +cypress@9.5.4: + version "9.5.4" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.5.4.tgz#49d9272f62eba12f2314faf29c2a865610e87550" + integrity sha512-6AyJAD8phe7IMvOL4oBsI9puRNOWxZjl8z1lgixJMcgJ85JJmyKeP6uqNA0dI1z14lmJ7Qklf2MOgP/xdAqJ/Q== dependencies: - "@cypress/request" "^3.0.0" + "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" + "@types/node" "^14.14.31" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" blob-util "^2.0.2" bluebird "^3.7.2" - buffer "^5.7.1" + buffer "^5.6.0" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-cursor "^3.1.0" cli-table3 "~0.6.1" - commander "^6.2.1" + commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" - debug "^4.3.4" + debug "^4.3.2" enquirer "^2.3.6" - eventemitter2 "6.4.7" + eventemitter2 "^6.4.3" execa "4.1.0" executable "^4.1.1" extract-zip "2.0.1" figures "^3.2.0" fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^3.0.1" + is-ci "^3.0.0" is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" - minimist "^1.2.8" + minimist "^1.2.6" ospath "^1.2.2" pretty-bytes "^5.6.0" - process "^0.11.10" proxy-from-env "1.0.0" request-progress "^3.0.0" - semver "^7.5.3" + semver "^7.3.2" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" @@ -582,7 +587,7 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.1.1, debug@^4.3.4: +debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -632,10 +637,10 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eventemitter2@6.4.7: - version "6.4.7" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" - integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== +eventemitter2@^6.4.3: + version "6.4.9" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" + integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== execa@4.1.0: version "4.1.0" @@ -901,7 +906,7 @@ install@^0.13.0: resolved "https://registry.yarnpkg.com/install/-/install-0.13.0.tgz#6af6e9da9dd0987de2ab420f78e60d9c17260776" integrity sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA== -is-ci@^3.0.1: +is-ci@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== @@ -1118,7 +1123,7 @@ minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.6, minimist@^1.2.8, minimist@~1.2.0: +minimist@^1.2.6, minimist@~1.2.0: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -1229,11 +1234,6 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - protocol-buffers-schema@^3.3.1: version "3.6.0" resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" @@ -1352,10 +1352,10 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@^7.5.3: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== +semver@^7.3.2: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0"