diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..88fa742 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,11 @@ +module.exports = { + extends: ['@impargo/eslint-config'], + plugins: ['react-hooks'], + rules: { + 'react-hooks/rules-of-hooks': 'error', + 'react-hooks/exhaustive-deps': 'warn', + }, + env: { + browser: true, + }, +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e56bee3..422e8d6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,9 +8,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v4 with: - node-version: 14 + node-version: 20 - name: Cache uses: actions/cache@v1.0.3 with: @@ -24,9 +24,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v4 with: - node-version: 14 + node-version: 20 - name: Restore cache uses: actions/cache@v1.0.3 with: @@ -40,9 +40,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v4 with: - node-version: 14 + node-version: 20 - name: Restore cache uses: actions/cache@v1.0.3 with: @@ -55,9 +55,9 @@ jobs: # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v2 - # - uses: actions/setup-node@v1 + # - uses: actions/setup-node@v4 # with: - # node-version: 14 + # node-version: 20 # - name: Restore cache # uses: actions/cache@v1.0.3 # with: diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3662b37 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib" +} \ No newline at end of file diff --git a/package.json b/package.json index cf2dcbd..1c7dc63 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "coverage:post": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", "prepublishOnly": "gulp", "transpile": "gulp transpile", - "lint": "tslint --config tslint.json --project tsconfig.json --type-check", + "lint": "eslint 'src/**/*.{js,ts,tsx}' 'test/**/*.{js,ts,tsx}' 'testbench/**/*.{js,ts,tsx}'", "dev": "parcel testbench/index.html" }, "repository": { @@ -46,6 +46,7 @@ "homepage": "https://github.com/impargo/react-here-maps#readme", "devDependencies": { "@babel/core": "^7.12.0", + "@impargo/eslint-config": "^1.4.0", "@types/chai": "^4.0.1", "@types/enzyme": "^3.10.8", "@types/heremaps": "^3.1.5", @@ -67,6 +68,7 @@ "coveralls": "^2.11.12", "css-loader": "^0.28.4", "enzyme": "^3.11.0", + "eslint-plugin-react-hooks": "^4.6.0", "gulp": "^4.0.2", "gulp-sass": "^5.1.0", "gulp-typescript": "^5.0.1", @@ -105,8 +107,6 @@ "source-map-loader": "^0.2.1", "style-loader": "^0.18.2", "ts-loader": "^2.2.2", - "tslint": "^5.5.0", - "tslint-react": "^3.0.0", "typescript": "^4.0.5", "vinyl-source-stream": "^1.1.0", "watchify": "^3.7.0" diff --git a/src/Cluster.tsx b/src/Cluster.tsx index 32058da..59e483c 100644 --- a/src/Cluster.tsx +++ b/src/Cluster.tsx @@ -1,14 +1,15 @@ -import { useCallback, useContext, useEffect, useMemo, useRef } from "react"; -import { HEREMapContext } from "./context"; -import getMarkerIcon from "./utils/get-marker-icon"; +import { useCallback, useContext, useEffect, useMemo, useRef } from 'react' + +import { HEREMapContext } from './context' +import getMarkerIcon from './utils/get-marker-icon' export interface Datapoint<T> { - lat: number; - lon: number; + lat: number, + lon: number, /** * Any generic data that can be stored in the datapoint. */ - data: T; + data: T, } export interface ClusterProps<T> { @@ -16,32 +17,32 @@ export interface ClusterProps<T> { * The datapoints that should be clustered. They should contain coordinates, a bitmap, and any generic type of data. * Note: a change in this array will force a reclustering of the entire cluster. */ - points: Array<Datapoint<T>>; + points: Array<Datapoint<T>>, /** * Clustering options used by HERE maps clustering provider. * Note: a change in these options will recreate the clustering provider. */ - clusteringOptions?: H.clustering.Provider.ClusteringOptions; + clusteringOptions?: H.clustering.Provider.ClusteringOptions, /** * A function that should return the marker bitmap to be used for a specific set of cluster points. * Note: a change in this function will trigger a redraw for all the datapoints in the cluster. * So make sure to wrap it in a `useCallback` and only change its reference when necessary. */ - getBitmapForCluster: (points: T[]) => string; + getBitmapForCluster: (points: T[]) => string, /** * A function that should return the marker bitmap for a single point. * Note: a change in this function will trigger a redraw for all the datapoints in the cluster. * So make sure to wrap it in a `useCallback` and only change its reference when necessary. */ - getBitmapForPoint: (point: T) => string; + getBitmapForPoint: (point: T) => string, /** * A callback for when a cluster of points are clicked. */ - onClusterClick: (data: T[], e: H.mapevents.Event) => void; + onClusterClick: (data: T[], e: H.mapevents.Event) => void, /** * A callback for when a single point in the cluster is clicked. */ - onPointClick: (data: T, e: H.mapevents.Event) => void; + onPointClick: (data: T, e: H.mapevents.Event) => void, } export const defaultClusteringOptions: H.clustering.Provider.ClusteringOptions = { @@ -53,42 +54,42 @@ export const defaultClusteringOptions: H.clustering.Provider.ClusteringOptions = * Minimum weight of points required to form a cluster (default weight for a cluster point is 1). */ minWeight: 2, -}; +} -function createTheme<T>( +function createTheme<T> ( getBitmapForCluster: (points: T[]) => string, getBitmapForPoint: (point: T) => string, ): H.clustering.ITheme { return { getClusterPresentation: (cluster) => { - const clusterPoints: T[] = []; - cluster.forEachDataPoint((point) => clusterPoints.push(point.getData())); + const clusterPoints: T[] = [] + cluster.forEachDataPoint((point) => clusterPoints.push(point.getData())) return new H.map.Marker(cluster.getPosition(), { data: clusterPoints, icon: getMarkerIcon(getBitmapForCluster(clusterPoints)), max: cluster.getMaxZoom(), min: cluster.getMinZoom(), - }); + }) }, getNoisePresentation: (point) => { - const data: T = point.getData(); + const data: T = point.getData() return new H.map.Marker(point.getPosition(), { data, icon: getMarkerIcon(getBitmapForPoint(data)), min: point.getMinZoom(), - }); + }) }, - }; + } } -function pointToDatapoint<T>(point: Datapoint<T>): H.clustering.DataPoint { - return new H.clustering.DataPoint(point.lat, point.lon, null, point.data); +function pointToDatapoint<T> (point: Datapoint<T>): H.clustering.DataPoint { + return new H.clustering.DataPoint(point.lat, point.lon, null, point.data) } /** * A component that can automatically cluster a group of datapoints. */ -export default function Cluster<T>({ +export default function Cluster<T> ({ points, clusteringOptions = defaultClusteringOptions, getBitmapForCluster, @@ -96,55 +97,55 @@ export default function Cluster<T>({ onClusterClick, onPointClick, }: ClusterProps<T>): null { - const { map } = useContext(HEREMapContext); + const { map } = useContext(HEREMapContext) - const onClusterClickRef = useRef(onClusterClick); - onClusterClickRef.current = onClusterClick; + const onClusterClickRef = useRef(onClusterClick) + onClusterClickRef.current = onClusterClick - const onPointClickRef = useRef(onPointClick); - onPointClickRef.current = onPointClick; + const onPointClickRef = useRef(onPointClick) + onPointClickRef.current = onPointClick const theme: H.clustering.ITheme = useMemo(() => createTheme( getBitmapForCluster, getBitmapForPoint, - ), [getBitmapForCluster, getBitmapForPoint]); + ), [getBitmapForCluster, getBitmapForPoint]) - const datapoints = useMemo(() => points.map(pointToDatapoint), [points]); + const datapoints = useMemo(() => points.map(pointToDatapoint), [points]) const onClick = useCallback((evt: Event) => { - const e = evt as unknown as H.mapevents.Event; - const data: T | T[] = (e.target as H.map.Object).getData(); + const e = evt as unknown as H.mapevents.Event + const data: T | T[] = (e.target as H.map.Object).getData() if (Array.isArray(data)) { - onClusterClickRef.current(data, e); + onClusterClickRef.current(data, e) } else { - onPointClickRef.current(data, e); + onPointClickRef.current(data, e) } - }, []); + }, []) const clusteredDataProvider = useMemo(() => { const provider = new H.clustering.Provider(datapoints, { clusteringOptions, theme, - }); - provider.addEventListener("tap", onClick); - return provider; - }, [clusteringOptions, onClick /* theme, datapoints */]); + }) + provider.addEventListener('tap', onClick) + return provider + }, [clusteringOptions, onClick]) useEffect(() => { - clusteredDataProvider.setTheme(theme); - }, [theme, clusteredDataProvider]); + clusteredDataProvider.setTheme(theme) + }, [theme, clusteredDataProvider]) useEffect(() => { - clusteredDataProvider.setDataPoints(datapoints); - }, [datapoints, clusteredDataProvider]); + clusteredDataProvider.setDataPoints(datapoints) + }, [datapoints, clusteredDataProvider]) useEffect(() => { - const layer = new H.map.layer.ObjectLayer(clusteredDataProvider); - map?.addLayer(layer); + const layer = new H.map.layer.ObjectLayer(clusteredDataProvider) + map?.addLayer(layer) return () => { - map?.removeLayer(layer); - }; - }, [map, clusteredDataProvider]); + map?.removeLayer(layer) + } + }, [map, clusteredDataProvider]) - return null; + return null } diff --git a/src/HEREMap.tsx b/src/HEREMap.tsx index a5720a6..f21515a 100644 --- a/src/HEREMap.tsx +++ b/src/HEREMap.tsx @@ -1,67 +1,67 @@ -import { debounce, uniqueId } from "lodash"; -import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react"; +import { debounce, uniqueId } from 'lodash' +import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react' -import { HEREMapContext } from "./context"; -import { useRasterLayers } from "./useRasterLayers"; -import { useVectorLayers } from "./useVectorLayers"; -import { loadScripts } from "./utils/cache"; -import getPlatform from "./utils/get-platform"; -import { Language } from "./utils/languages"; +import { HEREMapContext } from './context' +import { useRasterLayers } from './useRasterLayers' +import { useVectorLayers } from './useVectorLayers' +import { loadScripts } from './utils/cache' +import getPlatform from './utils/get-platform' +import { Language } from './utils/languages' // declare an interface containing the required and potential // props that can be passed to the HEREMap component export interface HEREMapProps extends H.Map.Options { - children: React.ReactNode; - apiKey: string; - animateCenter?: boolean; - animateZoom?: boolean; - hidpi?: boolean; - interactive?: boolean; - lg?: Language; - secure?: boolean; - routes?: object[]; - truckRestrictions?: boolean; - trafficLayer?: boolean; - incidentsLayer?: boolean; - useSatellite?: boolean; - disableMapSettings?: boolean; - onMapAvailable?: (state: HEREMapState) => void; - language?: string; + children?: React.ReactNode, + apiKey: string, + animateCenter?: boolean, + animateZoom?: boolean, + hidpi?: boolean, + interactive?: boolean, + lg?: Language, + secure?: boolean, + routes?: object[], + truckRestrictions?: boolean, + trafficLayer?: boolean, + incidentsLayer?: boolean, + useSatellite?: boolean, + disableMapSettings?: boolean, + onMapAvailable?: (state: HEREMapState) => void, + language?: string, /** * Also known as environmental zones. */ - congestion?: boolean; + congestion?: boolean, /** * Note: this cannot be changed after the map is loaded. * If you want to change it, you have to re-mount the map component. */ - useVectorTiles?: boolean; - onScriptLoadError?: (failedScripts: string[]) => void; + useVectorTiles?: boolean, + onScriptLoadError?: (failedScripts: string[]) => void, - useLegacyTruckLayer?: boolean; - useLegacyTrafficLayer?: boolean; + useLegacyTruckLayer?: boolean, + useLegacyTrafficLayer?: boolean, } // declare an interface containing the potential state flags export interface HEREMapState { - map?: H.Map; - behavior?: H.mapevents.Behavior; - ui?: H.ui.UI; - markersGroups: Record<string, H.map.Group>; - routesGroup?: H.map.Group; - trafficLayer?: boolean; + map?: H.Map, + behavior?: H.mapevents.Behavior, + ui?: H.ui.UI, + markersGroups: Record<string, H.map.Group>, + routesGroup?: H.map.Group, + trafficLayer?: boolean, } export interface HEREMapRef { - getMap: () => H.Map; - getElement: () => Element; - setCenter: (point: H.geo.IPoint) => void; - setZoom: (zoom: number) => void; - screenToGeo: (x: number, y: number) => H.geo.Point; - zoomOnMarkers: (animate?: boolean, group?: string) => void; - zoomOnMarkersSet: (markersSet: H.map.DomMarker[], animate?: boolean) => void; - addToMarkerGroup: (marker: H.map.Marker, group: string) => void; - removeFromMarkerGroup: (marker: H.map.Marker, group: string) => void; + getMap: () => H.Map, + getElement: () => Element, + setCenter: (point: H.geo.IPoint) => void, + setZoom: (zoom: number) => void, + screenToGeo: (x: number, y: number) => H.geo.Point, + zoomOnMarkers: (animate?: boolean, group?: string) => void, + zoomOnMarkersSet: (markersSet: H.map.DomMarker[], animate?: boolean) => void, + addToMarkerGroup: (marker: H.map.Marker, group: string) => void, + removeFromMarkerGroup: (marker: H.map.Marker, group: string) => void, } export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ @@ -87,15 +87,15 @@ export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ useVectorTiles, useLegacyTrafficLayer, useLegacyTruckLayer, -}, ref) => { - const uniqueIdRef = useRef<string>(uniqueId()); +}, ref) => { + const uniqueIdRef = useRef<string>(uniqueId()) - const [map, setMap] = useState<H.Map>(null); - const [routesGroup, setRoutesGroup] = useState(null); + const [map, setMap] = useState<H.Map>(null) + const [routesGroup, setRoutesGroup] = useState(null) - const markersGroupsRef = useRef<Record<string, H.map.Group>>({}); + const markersGroupsRef = useRef<Record<string, H.map.Group>>({}) - const defaultLayersRef = useRef<H.service.DefaultLayers>(null); + const defaultLayersRef = useRef<H.service.DefaultLayers>(null) useVectorLayers({ congestion, @@ -106,7 +106,7 @@ export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ truckRestrictions, useSatellite, useVectorTiles, - }); + }) useRasterLayers({ apiKey, @@ -122,61 +122,61 @@ export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ useLegacyTruckLayer, useSatellite, useVectorTiles, - }); + }) - const unmountedRef = useRef(false); + const unmountedRef = useRef(false) const screenToGeo = (x: number, y: number): H.geo.Point => { - return map.screenToGeo(x, y); - }; + return map.screenToGeo(x, y) + } const zoomOnMarkersGroup = (markersGroup: H.map.Group, animate: boolean = true) => { - const DISTANCE_FACTOR = 0.1; - const BEARING_TOP_LEFT = 315; - const BEARING_BOTTOM_RIGHT = 135; - const boundingBox = markersGroup.getBoundingBox(); - const topLeft = boundingBox.getTopLeft(); - const bottomRight = boundingBox.getBottomRight(); - const distance = topLeft.distance(bottomRight) * DISTANCE_FACTOR; + const DISTANCE_FACTOR = 0.1 + const BEARING_TOP_LEFT = 315 + const BEARING_BOTTOM_RIGHT = 135 + const boundingBox = markersGroup.getBoundingBox() + const topLeft = boundingBox.getTopLeft() + const bottomRight = boundingBox.getBottomRight() + const distance = topLeft.distance(bottomRight) * DISTANCE_FACTOR const viewBounds = H.geo.Rect.fromPoints( topLeft.walk(BEARING_TOP_LEFT, distance), bottomRight.walk(BEARING_BOTTOM_RIGHT, distance), - ); - if (viewBounds) { map.getViewModel().setLookAtData({ bounds: viewBounds }, animate); } - }; + ) + if (viewBounds) { map.getViewModel().setLookAtData({ bounds: viewBounds }, animate) } + } - const zoomOnMarkers = (animate: boolean = true, group: string = "default") => { + const zoomOnMarkers = (animate: boolean = true, group: string = 'default') => { if (map) { - if (!markersGroupsRef.current[group]) { return; } - zoomOnMarkersGroup(markersGroupsRef.current[group], animate); + if (!markersGroupsRef.current[group]) { return } + zoomOnMarkersGroup(markersGroupsRef.current[group], animate) } - }; + } const zoomOnMarkersSet = (markersSet: H.map.DomMarker[], animate: boolean = true) => { - const markersGroupSet = new H.map.Group(); - markersSet.map((m) => markersGroupSet.addObject(m)); - zoomOnMarkersGroup(markersGroupSet, animate); - }; + const markersGroupSet = new H.map.Group() + markersSet.map((m) => markersGroupSet.addObject(m)) + zoomOnMarkersGroup(markersGroupSet, animate) + } const addToMarkerGroup = (marker: H.map.Marker, group: string) => { if (!markersGroupsRef.current[group]) { - markersGroupsRef.current[group] = new H.map.Group(); - map.addObject(markersGroupsRef.current[group]); + markersGroupsRef.current[group] = new H.map.Group() + map.addObject(markersGroupsRef.current[group]) } - markersGroupsRef.current[group].addObject(marker); - }; + markersGroupsRef.current[group].addObject(marker) + } const removeFromMarkerGroup = (marker: H.map.Marker, group: string) => { if (markersGroupsRef.current[group]) { - markersGroupsRef.current[group].removeObject(marker); + markersGroupsRef.current[group].removeObject(marker) if (markersGroupsRef.current[group].getObjects().length === 0) { if (map.getObjects().length > 0) { - map.removeObject(markersGroupsRef.current[group]); + map.removeObject(markersGroupsRef.current[group]) } - markersGroupsRef.current[group] = null; + markersGroupsRef.current[group] = null } } - }; + } useImperativeHandle<HEREMapRef, HEREMapRef>(ref, () => { return { @@ -186,36 +186,36 @@ export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ removeFromMarkerGroup, screenToGeo, setCenter: (point: H.geo.IPoint) => { - map.setCenter(point, animateCenter); + map.setCenter(point, animateCenter) }, setZoom: (newZoom: number) => { - map.setZoom(newZoom, animateZoom); + map.setZoom(newZoom, animateZoom) }, zoomOnMarkers, zoomOnMarkersSet, - }; - }, [map]); + } + }, [map]) useEffect(() => { loadScripts(secure, !useVectorTiles).then(() => { if (unmountedRef.current) { - return; + return } // get the platform to base the maps on const platform = getPlatform({ apikey: apiKey, useHTTPS: secure === true, - }); + }) defaultLayersRef.current = platform.createDefaultLayers({ lg, ppi: hidpi ? 320 : 72, - }); + }) - const hereMapEl = document.querySelector(`#map-container-${uniqueIdRef.current}`); + const hereMapEl = document.querySelector(`#map-container-${uniqueIdRef.current}`) const baseLayer = useVectorTiles ? defaultLayersRef.current.vector.normal.map - : defaultLayersRef.current.raster.normal.map; + : defaultLayersRef.current.raster.normal.map const newMap = new H.Map( hereMapEl, baseLayer, @@ -226,34 +226,34 @@ export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ pixelRatio: hidpi ? 2 : 1, zoom, }, - ); + ) - const routesProvider = new H.map.provider.LocalObjectProvider(); - const routesLayer = new H.map.layer.ObjectLayer(routesProvider); - newMap.addLayer(routesLayer); + const routesProvider = new H.map.provider.LocalObjectProvider() + const routesLayer = new H.map.layer.ObjectLayer(routesProvider) + newMap.addLayer(routesLayer) - let ui: H.ui.UI; + let ui: H.ui.UI // make the map interactive // MapEvents enables the event system // Behavior implements default interactions for pan/zoom - const behavior = interactive ? new H.mapevents.Behavior(new H.mapevents.MapEvents(newMap)) : undefined; + const behavior = interactive ? new H.mapevents.Behavior(new H.mapevents.MapEvents(newMap)) : undefined if (behavior) { if (!useVectorLayers) { // @ts-ignore - behavior.disable(H.mapevents.Behavior.Feature.FRACTIONAL_ZOOM); + behavior.disable(H.mapevents.Behavior.Feature.FRACTIONAL_ZOOM) } // create the default UI for the map - ui = H.ui.UI.createDefault(newMap, defaultLayersRef.current, language); + ui = H.ui.UI.createDefault(newMap, defaultLayersRef.current, language) if (disableMapSettings) { - ui.removeControl("mapsettings"); + ui.removeControl('mapsettings') } } - setMap(newMap); - setRoutesGroup(routesProvider.getRootGroup()); + setMap(newMap) + setRoutesGroup(routesProvider.getRootGroup()) onMapAvailable({ behavior, @@ -262,45 +262,45 @@ export const HEREMap = forwardRef<HEREMapRef, HEREMapProps>(({ routesGroup: routesProvider.getRootGroup(), trafficLayer, ui, - }); - }).catch(onScriptLoadError); + }) + }).catch(onScriptLoadError) return () => { - unmountedRef.current = true; - map?.dispose(); - }; - }, []); + unmountedRef.current = true + map?.dispose() + } + }, []) useEffect(() => { if (map) { const resizeMap = () => { - map.getViewPort().resize(); - }; + map.getViewPort().resize() + } - const debouncedResizeMap = debounce(resizeMap, 200); + const debouncedResizeMap = debounce(resizeMap, 200) // make the map resize when the window gets resized - window.addEventListener("resize", debouncedResizeMap); + window.addEventListener('resize', debouncedResizeMap) return () => { - window.removeEventListener("resize", debouncedResizeMap); - }; + window.removeEventListener('resize', debouncedResizeMap) + } } - }, [map]); + }, [map]) return ( - <div className="heremap" style={{ height: "100%" }}> + <div className="heremap" style={{ height: '100%' }}> <div className="map-container" id={`map-container-${uniqueIdRef.current}`} - style={{ height: "100%" }} + style={{ height: '100%' }} > {map && <HEREMapContext.Provider value={{ map, routesGroup, removeFromMarkerGroup, addToMarkerGroup }}> {children} </HEREMapContext.Provider>} </div> </div> - ); -}); + ) +}) // make the HEREMap component the default export -export default HEREMap; +export default HEREMap diff --git a/src/Marker.tsx b/src/Marker.tsx index f8ec9b0..25106a0 100644 --- a/src/Marker.tsx +++ b/src/Marker.tsx @@ -1,28 +1,29 @@ -import React, { useContext, useEffect, useState, FC } from "react"; -import * as ReactDOMServer from "react-dom/server"; -import { HEREMapContext, HEREMapContextType } from "./context"; -import { useEventHandlers, EventHandlers } from "./useEventHandlers"; -import getDomMarkerIcon from "./utils/get-dom-marker-icon"; -import getMarkerIcon from "./utils/get-marker-icon"; +import React, { FC, useContext, useEffect, useState } from 'react' +import * as ReactDOMServer from 'react-dom/server' + +import { HEREMapContext, HEREMapContextType } from './context' +import { EventHandlers, useEventHandlers } from './useEventHandlers' +import getDomMarkerIcon from './utils/get-dom-marker-icon' +import getMarkerIcon from './utils/get-marker-icon' // declare an interface containing the required and potential // props that can be passed to the HEREMap Marker componengetMartkerIdt export interface MarkerProps extends H.map.Marker.Options, EventHandlers { - lat: number; - lng: number; + lat: number, + lng: number, /** * Either an image URL or an SVG markup. */ - bitmap?: string; - data?: any; - draggable?: boolean; + bitmap?: string, + data?: any, + draggable?: boolean, /** * @deprecated use bitmap instead. Passing children in this way has performance * implications since the 3.1 version of the API and should be avoided. */ - children?: React.ReactElement<any>; - group?: string; - anchor?: H.math.IPoint; + children?: React.ReactElement<any>, + group?: string, + anchor?: H.math.IPoint, } /** @@ -32,7 +33,7 @@ export interface MarkerProps extends H.map.Marker.Options, EventHandlers { */ export const Marker: FC<MarkerProps> = ({ children, - group = "default", + group = 'default', bitmap, data, draggable = false, @@ -48,13 +49,13 @@ export const Marker: FC<MarkerProps> = ({ onDragStart, ...options }) => { - const { map, removeFromMarkerGroup, addToMarkerGroup } = useContext<HEREMapContextType>(HEREMapContext); + const { map, removeFromMarkerGroup, addToMarkerGroup } = useContext<HEREMapContextType>(HEREMapContext) - const [marker, setMarker] = useState<H.map.DomMarker | H.map.Marker | null>(null); + const [marker, setMarker] = useState<H.map.DomMarker | H.map.Marker | null>(null) const renderChildren = (): H.map.DomIcon => { if (!map) { - throw new Error("Map has to be loaded before performing this action"); + throw new Error('Map has to be loaded before performing this action') } // if children are provided, we render the provided react @@ -63,42 +64,42 @@ export const Marker: FC<MarkerProps> = ({ <div className="dom-marker"> {children} </div> - )); + )) // we then get a dom icon object from the wrapper method - return getDomMarkerIcon(html); - }; + return getDomMarkerIcon(html) + } const addMarkerToMap = () => { if (!map) { - throw new Error("Map has to be loaded before performing this action"); + throw new Error('Map has to be loaded before performing this action') } - let newMarker = null; + let newMarker = null if (React.Children.count(children) > 0) { - const icon = renderChildren(); - newMarker = new H.map.DomMarker({ lat, lng }, { icon }); + const icon = renderChildren() + newMarker = new H.map.DomMarker({ lat, lng }, { icon }) } else if (bitmap) { // if we have an image url or an svg markup and no react children, create a // regular icon instance - const icon = getMarkerIcon(bitmap, anchor); + const icon = getMarkerIcon(bitmap, anchor) // then create a normal marker instance and attach it to the map newMarker = new H.map.Marker({ lat, lng }, { icon, // @ts-ignore volatility: draggable, ...options, - }); + }) } else { // create a default marker at the provided location - newMarker = new H.map.Marker({ lat, lng }); + newMarker = new H.map.Marker({ lat, lng }) } - newMarker.draggable = draggable; - newMarker.setData(data); - addToMarkerGroup(newMarker, group); - setMarker(newMarker); - return newMarker; - }; + newMarker.draggable = draggable + newMarker.setData(data) + addToMarkerGroup(newMarker, group) + setMarker(newMarker) + return newMarker + } useEventHandlers(marker, { onDrag, @@ -108,48 +109,48 @@ export const Marker: FC<MarkerProps> = ({ onPointerLeave, onPointerMove, onTap, - }); + }) useEffect(() => { - const addedMarker = addMarkerToMap(); + const addedMarker = addMarkerToMap() return () => { - removeFromMarkerGroup(addedMarker, group); - }; - }, [group]); + removeFromMarkerGroup(addedMarker, group) + } + }, [group]) useEffect(() => { if (marker) { - marker.draggable = draggable; + marker.draggable = draggable // @ts-ignore - marker.setVolatility(draggable); + marker.setVolatility(draggable) } - }, [marker, draggable]); + }, [marker, draggable]) useEffect(() => { marker?.setGeometry({ lat, lng, - }); - }, [marker, lat, lng]); + }) + }, [marker, lat, lng]) useEffect(() => { - marker?.setData(data); - }, [marker, data]); + marker?.setData(data) + }, [marker, data]) useEffect(() => { if (bitmap) { - marker?.setIcon(getMarkerIcon(bitmap, anchor)); + marker?.setIcon(getMarkerIcon(bitmap, anchor)) } - }, [marker, bitmap, anchor]); + }, [marker, bitmap, anchor]) useEffect(() => { if (React.Children.count(children)) { - const icon = renderChildren(); - marker?.setIcon(icon); + const icon = renderChildren() + marker?.setIcon(icon) } - }, [marker, children?.props]); + }, [marker, children?.props]) - return null; -}; + return null +} -export default Marker; +export default Marker diff --git a/src/Route.tsx b/src/Route.tsx index ed76906..0b241dd 100644 --- a/src/Route.tsx +++ b/src/Route.tsx @@ -1,37 +1,38 @@ -import { useContext, useEffect, useMemo, useState, FC } from "react"; -import { HEREMapContext, HEREMapContextType } from "./context"; -import { useEventHandlers, EventHandlers } from "./useEventHandlers"; +import { FC, useContext, useEffect, useMemo, useState } from 'react' + +import { HEREMapContext, HEREMapContextType } from './context' +import { EventHandlers, useEventHandlers } from './useEventHandlers' export interface Coordinates { - lat: number; - lon: number; + lat: number, + lon: number, } const defaultMapStyles: object = { - fillColor: "blue", + fillColor: 'blue', lineWidth: 4, - strokeColor: "blue", -}; + strokeColor: 'blue', +} // declare an interface containing the required and potential // props that can be passed to the HEREMap Marker component export interface RoutesProps extends EventHandlers { - points?: Coordinates[]; - data?: object; - zIndex?: number; - style?: object; + points?: Coordinates[], + data?: object, + zIndex?: number, + style?: object, /** * This is only supported when using the legacy P2D engine (when not using vector tiles). * When using vector tiles and/or the new engine, use lineDash, lineHeadCap, and lineTailCap instead. */ - arrows?: object; - draggable?: boolean; + arrows?: object, + draggable?: boolean, } // declare an interface containing the potential context parameters export interface RoutesContext { - map: H.Map; - routesGroup: H.map.Group; + map: H.Map, + routesGroup: H.map.Group, } export const Route: FC<RoutesProps> = ({ @@ -49,17 +50,17 @@ export const Route: FC<RoutesProps> = ({ onTap, draggable, }) => { - const { routesGroup } = useContext<HEREMapContextType>(HEREMapContext); - const [polyline, setPolyline] = useState<H.map.Polyline>(null); + const { routesGroup } = useContext<HEREMapContextType>(HEREMapContext) + const [polyline, setPolyline] = useState<H.map.Polyline>(null) const line = useMemo(() => { - const route = new H.geo.LineString(); + const route = new H.geo.LineString() points.forEach((point) => { - const { lat, lon } = point; - route.pushPoint(new H.geo.Point(lat, lon)); - }); - return route; - }, [points]); + const { lat, lon } = point + route.pushPoint(new H.geo.Point(lat, lon)) + }) + return route + }, [points]) useEventHandlers(polyline, { onDrag, @@ -69,44 +70,43 @@ export const Route: FC<RoutesProps> = ({ onPointerLeave, onPointerMove, onTap, - }); + }) useEffect(() => { - if (polyline && typeof draggable === "boolean") { + if (polyline && typeof draggable === 'boolean') { // @ts-ignore - polyline.draggable = draggable; + polyline.draggable = draggable } - }, [polyline, draggable]); + }, [polyline, draggable]) useEffect(() => { - polyline?.setGeometry(line); - - }, [line]); + polyline?.setGeometry(line) + }, [line]) useEffect(() => { - polyline?.setData(data); - }, [polyline, data]); + polyline?.setData(data) + }, [polyline, data]) useEffect(() => { - polyline?.setZIndex(zIndex); - }, [polyline, zIndex]); + polyline?.setZIndex(zIndex) + }, [polyline, zIndex]) useEffect(() => { - polyline?.setStyle(style); - }, [polyline, style]); + polyline?.setStyle(style) + }, [polyline, style]) useEffect(() => { if (routesGroup) { - const routeLine = new H.map.Polyline(line, { style, arrows, zIndex, data }); - routesGroup.addObject(routeLine); - setPolyline(routeLine); + const routeLine = new H.map.Polyline(line, { style, arrows, zIndex, data }) + routesGroup.addObject(routeLine) + setPolyline(routeLine) return () => { - routesGroup.removeObject(routeLine); - }; + routesGroup.removeObject(routeLine) + } } - }, [routesGroup]); + }, [routesGroup]) - return null; -}; + return null +} -export default Route; +export default Route diff --git a/src/context.ts b/src/context.ts index 46e322d..8383b44 100644 --- a/src/context.ts +++ b/src/context.ts @@ -1,13 +1,13 @@ -import { createContext } from "react"; +import { createContext } from 'react' export interface HEREMapContextType { - map?: H.Map; - routesGroup?: H.map.Group; - removeFromMarkerGroup: (marker: H.map.Marker, group: string) => void; - addToMarkerGroup: (marker: H.map.Marker, group: string) => void; + map?: H.Map, + routesGroup?: H.map.Group, + removeFromMarkerGroup: (marker: H.map.Marker, group: string) => void, + addToMarkerGroup: (marker: H.map.Marker, group: string) => void, } export const HEREMapContext = createContext<HEREMapContextType>({ addToMarkerGroup: () => undefined, removeFromMarkerGroup: () => undefined, -}); +}) diff --git a/src/main.ts b/src/main.ts index 839b850..f52d3aa 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,24 +1,24 @@ -import Cluster, { defaultClusteringOptions, ClusterProps, Datapoint } from "./Cluster"; -import HEREMap, { HEREMapProps, HEREMapRef, HEREMapState } from "./HEREMap"; -import Marker from "./Marker"; -import Route from "./Route"; -import { loadScripts, loadScriptsStandAlone } from "./utils/cache"; -import { Language } from "./utils/languages"; +import Cluster, { ClusterProps, Datapoint, defaultClusteringOptions } from './Cluster' +import HEREMap, { HEREMapProps, HEREMapRef, HEREMapState } from './HEREMap' +import Marker from './Marker' +import Route from './Route' +import { loadScripts, loadScriptsStandAlone } from './utils/cache' +import { Language } from './utils/languages' export { + Cluster, + ClusterProps, + Datapoint, + defaultClusteringOptions, HEREMap, - HEREMapRef, HEREMapProps, + HEREMapRef, HEREMapState, Language, + loadScripts, + loadScriptsStandAlone, Marker, Route, - Cluster, - ClusterProps, - Datapoint, - defaultClusteringOptions, - loadScriptsStandAlone, - loadScripts, -}; +} -export default HEREMap; +export default HEREMap diff --git a/src/useEventHandlers.tsx b/src/useEventHandlers.tsx index 0a29280..c489e4d 100644 --- a/src/useEventHandlers.tsx +++ b/src/useEventHandlers.tsx @@ -1,24 +1,24 @@ -import { useEffect } from "react"; +import { useEffect } from 'react' const useEventHandler = (object: H.util.EventTarget, type: string, handler: (evt: H.mapevents.Event) => void) => { useEffect(() => { if (object && handler) { - object.addEventListener(type, handler as any); + object.addEventListener(type, handler as unknown as EventListener) return () => { - object.removeEventListener(type, handler as any); - }; + object.removeEventListener(type, handler as unknown as EventListener) + } } - }, [object, handler]); -}; + }, [object, handler, type]) +} export interface EventHandlers { - onPointerMove?: (evt: H.mapevents.Event) => void; - onPointerLeave?: (evt: H.mapevents.Event) => void; - onPointerEnter?: (evt: H.mapevents.Event) => void; - onDragStart?: (evt: H.mapevents.Event) => void; - onDrag?: (evt: H.mapevents.Event) => void; - onDragEnd?: (evt: H.mapevents.Event) => void; - onTap?: (evt: H.mapevents.Event) => void; + onPointerMove?: (evt: H.mapevents.Event) => void, + onPointerLeave?: (evt: H.mapevents.Event) => void, + onPointerEnter?: (evt: H.mapevents.Event) => void, + onDragStart?: (evt: H.mapevents.Event) => void, + onDrag?: (evt: H.mapevents.Event) => void, + onDragEnd?: (evt: H.mapevents.Event) => void, + onTap?: (evt: H.mapevents.Event) => void, } export const useEventHandlers = (object: H.util.EventTarget, { @@ -30,11 +30,11 @@ export const useEventHandlers = (object: H.util.EventTarget, { onDrag, onDragEnd, }: EventHandlers): void => { - useEventHandler(object, "tap", onTap); - useEventHandler(object, "pointerleave", onPointerLeave); - useEventHandler(object, "pointermove", onPointerMove); - useEventHandler(object, "pointerenter", onPointerEnter); - useEventHandler(object, "dragstart", onDragStart); - useEventHandler(object, "drag", onDrag); - useEventHandler(object, "dragend", onDragEnd); -}; + useEventHandler(object, 'tap', onTap) + useEventHandler(object, 'pointerleave', onPointerLeave) + useEventHandler(object, 'pointermove', onPointerMove) + useEventHandler(object, 'pointerenter', onPointerEnter) + useEventHandler(object, 'dragstart', onDragStart) + useEventHandler(object, 'drag', onDrag) + useEventHandler(object, 'dragend', onDragEnd) +} diff --git a/src/useRasterLayers.ts b/src/useRasterLayers.ts index 47b5173..fde156e 100644 --- a/src/useRasterLayers.ts +++ b/src/useRasterLayers.ts @@ -1,24 +1,25 @@ -import { useEffect, useMemo } from "react"; -import { Language } from "./utils/languages"; +import { useEffect, useMemo } from 'react' + +import { Language } from './utils/languages' export interface UseRasterLayersProps { - map?: H.Map; - truckRestrictions?: boolean; - trafficLayer?: boolean; - incidentsLayer?: boolean; - useSatellite?: boolean; - congestion?: boolean; - defaultLayers?: H.service.DefaultLayers; - apiKey: string; - hidpi?: boolean; - useVectorTiles: boolean; - locale?: string; + map?: H.Map, + truckRestrictions?: boolean, + trafficLayer?: boolean, + incidentsLayer?: boolean, + useSatellite?: boolean, + congestion?: boolean, + defaultLayers?: H.service.DefaultLayers, + apiKey: string, + hidpi?: boolean, + useVectorTiles: boolean, + locale?: string, /** * @deprecated */ - lg?: Language; - useLegacyTruckLayer?: boolean; - useLegacyTrafficLayer?: boolean; + lg?: Language, + useLegacyTruckLayer?: boolean, + useLegacyTrafficLayer?: boolean, } const getLayers = ( @@ -29,123 +30,123 @@ const getLayers = ( useLegacyTruckLayer?: boolean, useLegacyTrafficLayer?: boolean, ) => { - const lang = locale ?? "en"; - const ppi = hidpi ? 400 : 100; - const format = "png8"; + const lang = locale ?? 'en' + const ppi = hidpi ? 400 : 100 + const format = 'png8' const getTruckLayerProvider = (enableCongestion: boolean): H.map.provider.ImageTileProvider.Options => { return { max: 20, min: 8, - getURL(col, row, level) { + getURL (col, row, level) { const features = enableCongestion - ? "vehicle_restrictions:active_and_inactive,environmental_zones:all,congestion_zones:all" - : "vehicle_restrictions:active_and_inactive"; - const style = "logistics.day"; - return `https://maps.hereapi.com/v3/blank/mc/${level}/${col}/${row}/${format}?apiKey=${apiKey}&features=${features}&lang=${lang}&ppi=${ppi}&style=${style}`; + ? 'vehicle_restrictions:active_and_inactive,environmental_zones:all,congestion_zones:all' + : 'vehicle_restrictions:active_and_inactive' + const style = 'logistics.day' + return `https://maps.hereapi.com/v3/blank/mc/${level}/${col}/${row}/${format}?apiKey=${apiKey}&features=${features}&lang=${lang}&ppi=${ppi}&style=${style}` }, - }; - }; + } + } const getTrafficOverlayProvider = (): H.map.provider.ImageTileProvider.Options => { return { - getURL(col, row, level) { - return `https://traffic.maps.hereapi.com/v3/flow/mc/${level}/${col}/${row}/${format}?apiKey=${apiKey}&ppi=${ppi}`; + getURL (col, row, level) { + return `https://traffic.maps.hereapi.com/v3/flow/mc/${level}/${col}/${row}/${format}?apiKey=${apiKey}&ppi=${ppi}` }, - }; - }; + } + } const getTrafficBaseProvider = (): H.map.provider.ImageTileProvider.Options => { return { - getURL(col, row, level) { - const style = "lite.day"; - return `https://maps.hereapi.com/v3/base/mc/${level}/${col}/${row}/${format}?apiKey=${apiKey}&lang=${lang}&ppi=${ppi}&style=${style}`; + getURL (col, row, level) { + const style = 'lite.day' + return `https://maps.hereapi.com/v3/base/mc/${level}/${col}/${row}/${format}?apiKey=${apiKey}&lang=${lang}&ppi=${ppi}&style=${style}` }, - }; - }; + } + } const getTruckLayerProviderLegacy = (enableCongestion: boolean): H.map.provider.ImageTileProvider.Options => { return { max: 20, min: 8, - getURL(col, row, level) { - return ["https://", - "1.base.maps.ls.hereapi.com/maptile/2.1/truckonlytile/newest/normal.day/", + getURL (col, row, level) { + return ['https://', + '1.base.maps.ls.hereapi.com/maptile/2.1/truckonlytile/newest/normal.day/', level, - "/", + '/', col, - "/", + '/', row, - "/256/png8", - "?style=fleet", - "&apiKey=", + '/256/png8', + '?style=fleet', + '&apiKey=', apiKey, - enableCongestion ? "&congestion" : "", - "&lg=", + enableCongestion ? '&congestion' : '', + '&lg=', lg, - "&ppi=", - hidpi ? "320" : "72", - ].join(""); + '&ppi=', + hidpi ? '320' : '72', + ].join('') }, - }; - }; + } + } const getTrafficOverlayProviderLegacy = (): H.map.provider.ImageTileProvider.Options => { return { - getURL(col, row, level) { - return ["https://", - "1.traffic.maps.ls.hereapi.com/maptile/2.1/flowtile/newest/normal.day/", + getURL (col, row, level) { + return ['https://', + '1.traffic.maps.ls.hereapi.com/maptile/2.1/flowtile/newest/normal.day/', level, - "/", + '/', col, - "/", + '/', row, - "/256/png8", - "?apiKey=", + '/256/png8', + '?apiKey=', apiKey, - "&ppi=", - hidpi ? "320" : "72", - ].join(""); + '&ppi=', + hidpi ? '320' : '72', + ].join('') }, - }; - }; + } + } const getTrafficBaseProviderLegacy = (): H.map.provider.ImageTileProvider.Options => { return { - getURL(col, row, level) { - return ["https://", - "1.traffic.maps.ls.hereapi.com/maptile/2.1/traffictile/newest/normal.day/", + getURL (col, row, level) { + return ['https://', + '1.traffic.maps.ls.hereapi.com/maptile/2.1/traffictile/newest/normal.day/', level, - "/", + '/', col, - "/", + '/', row, - "/256/png8", - "?apiKey=", + '/256/png8', + '?apiKey=', apiKey, - "&ppi=", - hidpi ? "320" : "72", - ].join(""); + '&ppi=', + hidpi ? '320' : '72', + ].join('') }, - }; - }; + } + } const truckOverlayProvider = new H.map.provider.ImageTileProvider(useLegacyTruckLayer ? getTruckLayerProviderLegacy(false) - : getTruckLayerProvider(false)); + : getTruckLayerProvider(false)) const truckOverlayCongestionProvider = new H.map.provider.ImageTileProvider(useLegacyTruckLayer ? getTruckLayerProviderLegacy(true) - : getTruckLayerProvider(true)); + : getTruckLayerProvider(true)) const trafficOverlayProvider = new H.map.provider.ImageTileProvider(useLegacyTrafficLayer ? getTrafficOverlayProviderLegacy() - : getTrafficOverlayProvider()); + : getTrafficOverlayProvider()) const trafficBaseProvider = new H.map.provider.ImageTileProvider(useLegacyTrafficLayer ? getTrafficBaseProviderLegacy() - : getTrafficBaseProvider()); + : getTrafficBaseProvider()) return { trafficBaseLayer: new H.map.layer.TileLayer(trafficBaseProvider), trafficOverlayLayer: new H.map.layer.TileLayer(trafficOverlayProvider), truckCongestionLayer: new H.map.layer.TileLayer(truckOverlayCongestionProvider), truckOverlayLayer: new H.map.layer.TileLayer(truckOverlayProvider), - }; -}; + } +} export const useRasterLayers = ({ map, @@ -170,56 +171,56 @@ export const useRasterLayers = ({ hidpi, useLegacyTruckLayer, useLegacyTrafficLayer), - [apiKey, locale, lg, hidpi, map, useLegacyTruckLayer, useLegacyTrafficLayer]); + [apiKey, locale, lg, hidpi, map, useLegacyTruckLayer, useLegacyTrafficLayer]) useEffect(() => { if (map && layers && !useVectorTiles && defaultLayers) { - const satelliteBaseLayer = defaultLayers?.raster.satellite.map; - const emptyBaseLayer = defaultLayers?.raster.normal.map; + const satelliteBaseLayer = defaultLayers?.raster.satellite.map + const emptyBaseLayer = defaultLayers?.raster.normal.map const baseLayer = useSatellite ? satelliteBaseLayer : trafficLayer ? layers.trafficBaseLayer - : emptyBaseLayer; + : emptyBaseLayer - map.setBaseLayer(baseLayer); + map.setBaseLayer(baseLayer) } - }, [map, useSatellite, defaultLayers, trafficLayer, useVectorTiles, layers]); + }, [map, useSatellite, defaultLayers, trafficLayer, useVectorTiles, layers]) useEffect(() => { if (map && layers && !useVectorTiles) { if (truckRestrictions) { if (congestion) { - map.removeLayer(layers.truckOverlayLayer); - map.addLayer(layers.truckCongestionLayer); + map.removeLayer(layers.truckOverlayLayer) + map.addLayer(layers.truckCongestionLayer) } else { - map.removeLayer(layers.truckCongestionLayer); - map.addLayer(layers.truckOverlayLayer); + map.removeLayer(layers.truckCongestionLayer) + map.addLayer(layers.truckOverlayLayer) } } else { - map.removeLayer(layers.truckCongestionLayer); - map.removeLayer(layers.truckOverlayLayer); + map.removeLayer(layers.truckCongestionLayer) + map.removeLayer(layers.truckOverlayLayer) } } - }, [truckRestrictions, congestion, map, useVectorTiles, layers]); + }, [truckRestrictions, congestion, map, useVectorTiles, layers]) useEffect(() => { if (map && !useVectorTiles && defaultLayers) { if (incidentsLayer) { - map.addLayer(defaultLayers.raster.normal.trafficincidents!); + map.addLayer(defaultLayers.raster.normal.trafficincidents!) } else { - map.removeLayer(defaultLayers.raster.normal.trafficincidents!); + map.removeLayer(defaultLayers.raster.normal.trafficincidents!) } } - }, [incidentsLayer, map, defaultLayers, useVectorTiles]); + }, [incidentsLayer, map, defaultLayers, useVectorTiles]) useEffect(() => { if (map && layers && !useVectorTiles) { if (trafficLayer) { - map.addLayer(layers.trafficOverlayLayer); + map.addLayer(layers.trafficOverlayLayer) } else { - map.removeLayer(layers.trafficOverlayLayer); + map.removeLayer(layers.trafficOverlayLayer) } } - }, [trafficLayer, map, useVectorTiles, layers]); -}; + }, [trafficLayer, map, useVectorTiles, layers]) +} diff --git a/src/useVectorLayers.ts b/src/useVectorLayers.ts index 3c0f6f1..c1483b0 100644 --- a/src/useVectorLayers.ts +++ b/src/useVectorLayers.ts @@ -1,14 +1,14 @@ -import { useEffect } from "react"; +import { useEffect } from 'react' export interface UseVectorLayersProps { - map?: H.Map; - truckRestrictions?: boolean; - trafficLayer?: boolean; - incidentsLayer?: boolean; - useSatellite?: boolean; - congestion?: boolean; - defaultLayers?: H.service.DefaultLayers; - useVectorTiles: boolean; + map?: H.Map, + truckRestrictions?: boolean, + trafficLayer?: boolean, + incidentsLayer?: boolean, + useSatellite?: boolean, + congestion?: boolean, + defaultLayers?: H.service.DefaultLayers, + useVectorTiles: boolean, } export const useVectorLayers = ({ @@ -25,33 +25,32 @@ export const useVectorLayers = ({ if (map && defaultLayers && useVectorTiles) { if (truckRestrictions) { // @ts-ignore - map.setBaseLayer(defaultLayers.vector.normal.truck); + map.setBaseLayer(defaultLayers.vector.normal.truck) } else { map.setBaseLayer(useSatellite ? defaultLayers.raster.satellite.map - : defaultLayers.vector.normal.map); + : defaultLayers.vector.normal.map) } } - }, [truckRestrictions, congestion, map, useVectorTiles, useSatellite]); + }, [defaultLayers, truckRestrictions, congestion, map, useVectorTiles, useSatellite]) useEffect(() => { if (map && defaultLayers && useVectorTiles) { if (incidentsLayer) { - map.addLayer(defaultLayers.vector.normal.trafficincidents); + map.addLayer(defaultLayers.vector.normal.trafficincidents) } else { - map.removeLayer(defaultLayers.vector.normal.trafficincidents); + map.removeLayer(defaultLayers.vector.normal.trafficincidents) } } - }, [incidentsLayer, map, defaultLayers, useVectorTiles]); + }, [incidentsLayer, map, defaultLayers, useVectorTiles]) useEffect(() => { if (map && defaultLayers && useVectorTiles) { if (trafficLayer) { - map.addLayer(defaultLayers.vector.normal.traffic); + map.addLayer(defaultLayers.vector.normal.traffic) } else { - map.removeLayer(defaultLayers.vector.normal.traffic); + map.removeLayer(defaultLayers.vector.normal.traffic) } } - }, [trafficLayer, map, defaultLayers, useVectorTiles]); - -}; + }, [trafficLayer, map, defaultLayers, useVectorTiles]) +} diff --git a/src/utils/cache.ts b/src/utils/cache.ts index 3e7e8d7..80cc3d4 100644 --- a/src/utils/cache.ts +++ b/src/utils/cache.ts @@ -1,29 +1,30 @@ // import from npm -import loadjs from "loadjs"; -import getScriptMap from "./get-script-map"; +import loadjs from 'loadjs' -/** - * @deprecated use loadScripts instead - */ -export const loadScriptsStandAlone = async (secure = true) => { - return loadScripts(secure); -}; +import getScriptMap from './get-script-map' const loadJsDefaultOptions = { numRetries: 3, returnPromise: true, -}; +} export const loadScripts = async (secure = true, loadLegacyModules = true) => { - const { coreScript, coreLegacyScript, serviceLegacyScript, ...scripts } = getScriptMap(secure); - if (!loadjs.isDefined("mapsjs-core")) { + const { coreScript, coreLegacyScript, serviceLegacyScript, ...scripts } = getScriptMap(secure) + if (!loadjs.isDefined('mapsjs-core')) { // Make sure this is loaded before the others - await loadjs(coreScript, "mapsjs-core", loadJsDefaultOptions); + await loadjs(coreScript, 'mapsjs-core', loadJsDefaultOptions) } - if (!loadjs.isDefined("mapsjs")) { - await loadjs(Object.values(scripts), "mapsjs", loadJsDefaultOptions); + if (!loadjs.isDefined('mapsjs')) { + await loadjs(Object.values(scripts), 'mapsjs', loadJsDefaultOptions) } - if (loadLegacyModules && !loadjs.isDefined("mapsjs-legacy")) { - await loadjs([coreLegacyScript, serviceLegacyScript], "mapsjs-legacy", loadJsDefaultOptions); + if (loadLegacyModules && !loadjs.isDefined('mapsjs-legacy')) { + await loadjs([coreLegacyScript, serviceLegacyScript], 'mapsjs-legacy', loadJsDefaultOptions) } -}; +} + +/** + * @deprecated use loadScripts instead + */ +export const loadScriptsStandAlone = async (secure = true) => { + return loadScripts(secure) +} diff --git a/src/utils/get-dom-marker-icon.ts b/src/utils/get-dom-marker-icon.ts index 991fdea..509d479 100644 --- a/src/utils/get-dom-marker-icon.ts +++ b/src/utils/get-dom-marker-icon.ts @@ -1,20 +1,19 @@ - /** * Map for HTML strings against H.map.DomIcon instances * @type {Map<string, ScriptState>} */ -export const DomIcons = new Map<string, H.map.DomIcon>(); +export const DomIcons = new Map<string, H.map.DomIcon>() /** * Returns the DOM Icon for the input HTML string, ensuring that no more * than one DOM Icon is created for each HTML string * @param html {string} - A string containing the markup to be used as a Dom Icon. */ -export default function getDomMarkerIcon(html: string): H.map.DomIcon { +export default function getDomMarkerIcon (html: string): H.map.DomIcon { if (!DomIcons.has(html)) { - const icon = new H.map.DomIcon(html); - DomIcons.set(html, icon); + const icon = new H.map.DomIcon(html) + DomIcons.set(html, icon) } - return DomIcons.get(html); + return DomIcons.get(html) } diff --git a/src/utils/get-marker-icon.ts b/src/utils/get-marker-icon.ts index b5743a8..840ebe8 100644 --- a/src/utils/get-marker-icon.ts +++ b/src/utils/get-marker-icon.ts @@ -1,9 +1,8 @@ - /** * Map for image URL strings against H.map.Icon instances * @type {Map<string, ScriptState>} */ -export const Icons = new Map<string, H.map.Icon>(); +export const Icons = new Map<string, H.map.Icon>() /** * Returns the Icon for the input bitmap URL string, ensuring that no more @@ -11,11 +10,11 @@ export const Icons = new Map<string, H.map.Icon>(); * @param bitmap {string} - The location of the bitmap to be used as an icon * Note: this can cause a memleak if used with dynamically generated bitmaps. */ -export default function getMarkerIcon(bitmap: string, anchor?: H.math.IPoint): H.map.Icon { +export default function getMarkerIcon (bitmap: string, anchor?: H.math.IPoint): H.map.Icon { if (!Icons.has(bitmap)) { - const icon = new H.map.Icon(bitmap, anchor ? { anchor, crossOrigin: false } : undefined); - Icons.set(bitmap, icon); + const icon = new H.map.Icon(bitmap, anchor ? { anchor, crossOrigin: false } : undefined) + Icons.set(bitmap, icon) } - return Icons.get(bitmap); + return Icons.get(bitmap) } diff --git a/src/utils/get-platform.ts b/src/utils/get-platform.ts index 99aa76a..ef98377 100644 --- a/src/utils/get-platform.ts +++ b/src/utils/get-platform.ts @@ -1,16 +1,16 @@ -let platform: H.service.Platform; +let platform: H.service.Platform // return the current platform if there is one, // otherwise open up a new platform -export function getPlatform(platformOptions: H.service.Platform.Options) { +export function getPlatform (platformOptions: H.service.Platform.Options) { if (platform) { - return platform; + return platform } - platform = new H.service.Platform(platformOptions); + platform = new H.service.Platform(platformOptions) - return platform; + return platform } // make the getPlatform method the default export -export default getPlatform; +export default getPlatform diff --git a/src/utils/get-script-map.ts b/src/utils/get-script-map.ts index e4d9ee7..518b8b1 100644 --- a/src/utils/get-script-map.ts +++ b/src/utils/get-script-map.ts @@ -1,56 +1,56 @@ // declare an interface representing the URL map that // is returned from this method export interface ScriptMap { - [key: string]: string; + [key: string]: string, } -export function getScriptMap(secure?: boolean): ScriptMap { +export function getScriptMap (secure?: boolean): ScriptMap { // store the versions of the HERE API - const apiVersion = "v3"; - const codeVersion = "3.1"; + const apiVersion = 'v3' + const codeVersion = '3.1' // get the relevant protocol for the HERE Maps API - let protocol = ""; + let protocol = '' if (secure === true) { - protocol = "https:"; + protocol = 'https:' } // the base url for all scripts from the API const baseUrl: string = `${protocol}//js.api.here.com/` + - `${apiVersion}/${codeVersion}`; + `${apiVersion}/${codeVersion}` // core code const coreScript: string = - `${baseUrl}/mapsjs-core.js`; + `${baseUrl}/mapsjs-core.js` // core legacy code const coreLegacyScript: string = - `${baseUrl}/mapsjs-core-legacy.js`; + `${baseUrl}/mapsjs-core-legacy.js` // service code const serviceScript: string = - `${baseUrl}/mapsjs-service.js`; + `${baseUrl}/mapsjs-service.js` // service legacy code const serviceLegacyScript: string = - `${baseUrl}/mapsjs-service-legacy.js`; + `${baseUrl}/mapsjs-service-legacy.js` // default ui code const uiScript: string = - `${baseUrl}/mapsjs-ui.js`; + `${baseUrl}/mapsjs-ui.js` // map events (pan, scroll wheel zoom) code const mapEventsScript: string = - `${baseUrl}/mapsjs-mapevents.js`; + `${baseUrl}/mapsjs-mapevents.js` // clustering module const clusteringScript: string = - `${baseUrl}/mapsjs-clustering.js`; + `${baseUrl}/mapsjs-clustering.js` // default ui css const uiCss: string = - `${baseUrl}/mapsjs-ui.css`; + `${baseUrl}/mapsjs-ui.css` // return an array with all script names within return { @@ -62,8 +62,8 @@ export function getScriptMap(secure?: boolean): ScriptMap { serviceScript, uiCss, uiScript, - }; + } } // make the getScriptMap method the default export -export default getScriptMap; +export default getScriptMap diff --git a/src/utils/languages.ts b/src/utils/languages.ts index 0b88295..b4b3155 100644 --- a/src/utils/languages.ts +++ b/src/utils/languages.ts @@ -1,50 +1,50 @@ export enum Language { - FRE = "FRE", - GER = "GER", - SPA = "SPA", - ITA = "ITA", - SWA = "SWA", - DAN = "DAN", - NOR = "NOR", - FIN = "FIN", - AM = "AM", - SF = "SF", - GSW = "GSW", - POR = "POR", - TUR = "TUR", - ICE = "ICE", - RUS = "RUS", - HUN = "HUN", - DUT = "DUT", - BL = "BL", - ENG = "ENG", - CZE = "CZE", - SLO = "SLO", - POL = "POL", - SLV = "SLV", - CHT = "CHT", - CHI = "CHI", - JPN = "JPN", - THA = "THA", - AFR = "AFR", - ARA = "ARA", - BUL = "BUL", - CAT = "CAT", - SCR = "SCR", - EST = "EST", - GRE = "GRE", - HEB = "HEB", - HIN = "HIN", - IND = "IND", - LAV = "LAV", - LIT = "LIT", - MAY = "MAY", - MAR = "MAR", - RUM = "RUM", - SRP = "SRP", - SWE = "SWE", - UKR = "UKR", - URD = "URD", - VIE = "VIE", - BAQ = "BAQ", + FRE = 'FRE', + GER = 'GER', + SPA = 'SPA', + ITA = 'ITA', + SWA = 'SWA', + DAN = 'DAN', + NOR = 'NOR', + FIN = 'FIN', + AM = 'AM', + SF = 'SF', + GSW = 'GSW', + POR = 'POR', + TUR = 'TUR', + ICE = 'ICE', + RUS = 'RUS', + HUN = 'HUN', + DUT = 'DUT', + BL = 'BL', + ENG = 'ENG', + CZE = 'CZE', + SLO = 'SLO', + POL = 'POL', + SLV = 'SLV', + CHT = 'CHT', + CHI = 'CHI', + JPN = 'JPN', + THA = 'THA', + AFR = 'AFR', + ARA = 'ARA', + BUL = 'BUL', + CAT = 'CAT', + SCR = 'SCR', + EST = 'EST', + GRE = 'GRE', + HEB = 'HEB', + HIN = 'HIN', + IND = 'IND', + LAV = 'LAV', + LIT = 'LIT', + MAY = 'MAY', + MAR = 'MAR', + RUM = 'RUM', + SRP = 'SRP', + SWE = 'SWE', + UKR = 'UKR', + URD = 'URD', + VIE = 'VIE', + BAQ = 'BAQ', } diff --git a/src/utils/mixin.ts b/src/utils/mixin.ts deleted file mode 100644 index f9eef30..0000000 --- a/src/utils/mixin.ts +++ /dev/null @@ -1,51 +0,0 @@ - -export function mixin(behaviour: any, sharedBehaviour: any = {}) { - // these keys reflect the behaviour that is to be attached to class instances - const instanceKeys = Reflect.ownKeys(behaviour); - // these keys reflect static behaviour - const sharedKeys = Reflect.ownKeys(sharedBehaviour); - const typeTag = Symbol("isA"); - - function _mixin(workingClass: any) { - // attach instance-oriented behaviour - for (const property of instanceKeys) { - Object.defineProperty( - workingClass.prototype, - property, - { - value: behaviour[property], - writable: true, - }, - ); - } - - Object.defineProperty(workingClass.prototype, typeTag, { value: true }); - - // attach static behaviour - for (const property of sharedKeys) { - Object.defineProperty( - workingClass, - property, - { - enumerable: sharedBehaviour.propertyIsEnumerable(property), - value: sharedBehaviour[property], - writable: true, - }, - ); - } - } - - // this allows you to use "instanceof" on an object that uses a mixin - Object.defineProperty( - _mixin, - Symbol.hasInstance, - { - value: (instance: any) => !!instance[typeTag], - writable: true, - }, - ); - - return _mixin; -} - -export default mixin; diff --git a/test/Circle.tests.tsx b/test/Circle.tests.tsx deleted file mode 100644 index 888e5d3..0000000 --- a/test/Circle.tests.tsx +++ /dev/null @@ -1,311 +0,0 @@ -import * as chai from "chai"; -import { mount, ReactWrapper } from "enzyme"; -import { first } from "lodash"; -import * as React from "react"; -import * as Sinon from "sinon"; - -import Circle from "../src/Circle"; -import HEREMap, { HEREMapProps, HEREMapState } from "../src/HEREMap"; - -declare var global: any; -declare var window: any; -declare var sinon: Sinon.SinonStatic; - -describe("<HEREMap />", () => { - describe("<Circle />", () => { - - let wrapper: ReactWrapper<HEREMapProps, HEREMapState>; - - before(() => { - // get the page container element - const container = document.getElementById("page-container"); - - const center = { - lat: 0, - lng: 0, - }; - - // need to use full DOM rendering here to access lifecycle methods - wrapper = mount<HEREMapProps, HEREMapState>(( - <HEREMap - apiKey="" - appId="NoiW7CS2CC05ppu95hyL" - appCode="28L997fKdiJiY7TVVEsEGQ" - center={center} - zoom={14} - /> - ), { - attachTo: container, - }); - }); - - it("should be attached to the H.Map instance associated with the map", () => { - // set the initial center of this circle - const center = { - lat: 0, - lng: 0, - }; - - // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - - // mount a circle instance to the component - const circleWrapper = mount(( - <Circle - {...center} - strokeColor="#1275E8" - fillColor="rgba(18, 117, 232, 0.2)" - lineWidth={2} - radius={10000} - /> - ), { - context: { - map: instance.getMap(), - }, - }); - - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - - // check that there is one object at least - chai.expect(objects).to.have.length(1); - - circleWrapper.unmount(); - }); - - it("should attach an object to the H.Map that is an instance of H.map.Circle", () => { - // set the initial center of this circle - const center = { - lat: 0, - lng: 0, - }; - - // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - - // mount a circle instance to the component - const circleWrapper = mount(( - <Circle - {...center} - strokeColor="#1275E8" - fillColor="rgba(18, 117, 232, 0.2)" - lineWidth={2} - radius={10000} - /> - ), { - context: { - map: instance.getMap(), - }, - }); - - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - const circle = first(objects); - - // check instanceof for this marker - chai.expect(circle).to.be.an.instanceof(H.map.Circle); - - circleWrapper.unmount(); - }); - - it("should have the correct center set on the circle", () => { - // set the initial center of this circle - const center = { - lat: 0, - lng: 0, - }; - - // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - - // mount a circle instance to the component - const circleWrapper = mount(( - <Circle - {...center} - strokeColor="#1275E8" - fillColor="rgba(18, 117, 232, 0.2)" - lineWidth={2} - radius={10000} - /> - ), { - context: { - map: instance.getMap(), - }, - }); - - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - - // check that there is one object at least - chai.expect(objects).to.have.length(1); - - const circle = first<any>(objects) as H.map.Circle; - - // check center of circle, using equals method of the H.geo.Point class - chai.expect(circle.getCenter().equals({ lat: 0, lng: 0 })).to.be.true; - - circleWrapper.unmount(); - }); - - it("should have the correct radius set on the circle", () => { - // set the initial center of this circle - const center = { - lat: 0, - lng: 0, - }; - - // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - - // mount a circle instance to the component - const circleWrapper = mount(( - <Circle - {...center} - strokeColor="#1275E8" - fillColor="rgba(18, 117, 232, 0.2)" - lineWidth={2} - radius={10000} - /> - ), { - context: { - map: instance.getMap(), - }, - }); - - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - - // check that there is one object at least - chai.expect(objects).to.have.length(1); - - const circle = first<any>(objects) as H.map.Circle; - - // check radius of circle - chai.expect(circle.getRadius()).to.equal(10000); - - circleWrapper.unmount(); - }); - - it("should automatically effect a change of radius when the radius prop is changed", () => { - // spy on the componentWillReceiveProps method of the Circle component - const willReceivePropsSpy = sinon.spy(Circle.prototype, "componentWillReceiveProps"); - - // set the initial center of this circle - const center = { - lat: 0, - lng: 0, - }; - - // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - - // mount a circle instance to the component - const circleWrapper = mount(( - <Circle - {...center} - strokeColor="#1275E8" - fillColor="rgba(18, 117, 232, 0.2)" - lineWidth={2} - radius={10000} - /> - ), { - context: { - map: instance.getMap(), - }, - }); - - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - - // check that there is one object at least - chai.expect(objects).to.have.length(1); - - const circle = first<any>(objects) as H.map.Circle; - - // check radius of circle - chai.expect(circle.getRadius()).to.equal(10000); - - // change the radius to something other than the initial value - circleWrapper.setProps({ - radius: 5000, - }); - - // expect componentWillReceiveProps to have been called once - chai.expect(Circle.prototype.componentWillReceiveProps).to.have.property("callCount", 1); - - // check the new radius of the circle - chai.expect(circle.getRadius()).to.equal(5000); - - circleWrapper.unmount(); - - willReceivePropsSpy.restore(); - }); - - it("should automatically effect a change of center when the lat or lng props are changed", () => { - // spy on the componentWillReceiveProps method of the Circle component - const willReceivePropsSpy = sinon.spy(Circle.prototype, "componentWillReceiveProps"); - - // set the initial center of this circle - const center = { - lat: 0, - lng: 0, - }; - - // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - - // mount a circle instance to the component - const circleWrapper = mount(( - <Circle - {...center} - strokeColor="#1275E8" - fillColor="rgba(18, 117, 232, 0.2)" - lineWidth={2} - radius={10000} - /> - ), { - context: { - map: instance.getMap(), - }, - }); - - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - - // check that there is one object at least - chai.expect(objects).to.have.length(1); - - const circle = first<any>(objects) as H.map.Circle; - - // check center of circle, using equals method of the H.geo.Point class - chai.expect(circle.getCenter().equals({ lat: 0, lng: 0 })).to.equal(true); - - // change the radius to something other than the initial value - circleWrapper.setProps({ - lat: 1, - }); - - // expect componentWillReceiveProps to have been called once - chai.expect(Circle.prototype.componentWillReceiveProps).to.have.property("callCount", 1); - - // check the new center of the circle, using equals method of the H.geo.Point class - chai.expect(circle.getCenter().equals({ lat: 1, lng: 0 })).to.equal(true); - - circleWrapper.unmount(); - - willReceivePropsSpy.restore(); - }); - - // unmount the component after all the tests are complete - after(() => { - wrapper.detach(); - }); - - }); -}); diff --git a/test/HEREMap.tests.tsx b/test/HEREMap.tests.tsx index 93e7c52..0f1f19d 100644 --- a/test/HEREMap.tests.tsx +++ b/test/HEREMap.tests.tsx @@ -1,92 +1,74 @@ -import * as chai from "chai"; -import * as $ from "jquery"; -import { forEach } from "lodash"; -import * as Sinon from "sinon"; +import * as chai from 'chai' +import * as $ from 'jquery' +import { forEach } from 'lodash' +import * as Sinon from 'sinon' -import HEREMap from "../src/HEREMap"; -import cache, { onAllLoad } from "../src/utils/cache"; -import getLink from "../src/utils/get-link"; -import getScriptMap from "../src/utils/get-script-map"; -import mount from "./helpers/mount"; +import HEREMap from '../src/HEREMap' +import { loadScripts } from '../src/utils/cache' +import getScriptMap from '../src/utils/get-script-map' +import mount from './helpers/mount' -declare var global: any; -declare var window: any; -declare var sinon: Sinon.SinonStatic; +declare let sinon: Sinon.SinonStatic -describe("<HEREMap />", () => { +describe('<HEREMap />', () => { + before(function beforeAllHook (done) { + this.timeout(5000) + loadScripts(true, true).then(done) + }) - before(function beforeAllHook(done) { - this.timeout(5000); - - const scriptMap = getScriptMap(); - cache(scriptMap); - - const stylesheetUrl = "//js.api.here.com/v3/3.0/mapsjs-ui.css"; - getLink(stylesheetUrl, "HERE Maps UI"); - - const fixture = "<div id=\"page-container\"></div>"; - document.body.insertAdjacentHTML("afterbegin", fixture); - - onAllLoad((errors: any[], results?: any[]) => { - global.H = window.H; - done(errors && errors[0]); - }); - }); - - it("should call componentDidMount when the component is mounted", () => { - const didMountSpy = sinon.spy(HEREMap.prototype, "componentDidMount"); + it('should call componentDidMount when the component is mounted', () => { + const didMountSpy = sinon.spy(HEREMap.prototype, 'componentDidMount') // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); + const wrapper = mount() - chai.expect(didMountSpy).to.have.property("callCount", 1); + chai.expect(didMountSpy).to.have.property('callCount', 1) // make sure we restore the original method at the end of the test, removing the spy - didMountSpy.restore(); + didMountSpy.restore() // remove the test map from the DOM - wrapper.unmount(); - }); + wrapper.unmount() + }) - it("should generate all the necessary script elements within the document", () => { - const scriptMap = getScriptMap(); + it('should generate all the necessary script elements within the document', () => { + const scriptMap = getScriptMap() // check the length of the script map is equal to the number of script elements on the page // - we can do this as there are no other scripts on the page during testing forEach(scriptMap, (script: string) => { - chai.expect($(`script[src="${script}"]`).length).to.equal(1); - }); - }); + chai.expect($(`script[src="${script}"]`).length).to.equal(1) + }) + }) - it("should generate all the necessary link elements within the document", () => { - const stylesheetUrl = "//js.api.here.com/v3/3.0/mapsjs-ui.css"; + it('should generate all the necessary link elements within the document', () => { + const stylesheetUrl = '//js.api.here.com/v3/3.0/mapsjs-ui.css' // check the number of link elements on the page is equal to 1 // - we can do this as there are no other links on the page during testing - chai.expect($(`link[rel=\"stylesheet\"][href="${stylesheetUrl}"]`).length).to.equal(1); - }); + chai.expect($(`link[rel="stylesheet"][href="${stylesheetUrl}"]`).length).to.equal(1) + }) - it("should generate a map when the component gets rendered", () => { + it('should generate a map when the component gets rendered', () => { // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - chai.expect($("canvas").length).to.equal(1); - wrapper.unmount(); - }); + const wrapper = mount() + chai.expect($('canvas').length).to.equal(1) + wrapper.unmount() + }) - it("should generate a canvas twice the size of the map" + - " container when hidpi mode is enabled", () => { + it('should generate a canvas twice the size of the map' + + ' container when hidpi mode is enabled', () => { // need to use full DOM rendering here to access lifecycle methods const wrapper = mount({ hidpi: true, - }); + }) // in hidpi mode, the pixelRatio is set to 2 // this means the canvas height and width should be twice that of the map container - const canvasHeight = parseInt($("canvas").attr("height") as string, 10); - const canvasWidth = parseInt($("canvas").attr("width") as string, 10); - - chai.expect(canvasHeight).to.equal($(".map-container").height() * 2); - chai.expect(canvasWidth).to.equal($(".map-container").width() * 2); + const canvasHeight = parseInt($('canvas').attr('height') as string, 10) + const canvasWidth = parseInt($('canvas').attr('width') as string, 10) - wrapper.unmount(); - }); + chai.expect(canvasHeight).to.equal($('.map-container').height()! * 2) + chai.expect(canvasWidth).to.equal($('.map-container').width()! * 2) -}); + wrapper.unmount() + }) +}) diff --git a/test/Marker.tests.tsx b/test/Marker.tests.tsx index 86a7cd3..385160a 100644 --- a/test/Marker.tests.tsx +++ b/test/Marker.tests.tsx @@ -1,55 +1,52 @@ -import * as chai from "chai"; -import { mount, ReactWrapper } from "enzyme"; -import * as $ from "jquery"; -import { first } from "lodash"; -import * as React from "react"; -import * as Sinon from "sinon"; +import * as chai from 'chai' +import { mount, ReactWrapper } from 'enzyme' +import * as $ from 'jquery' +import { first } from 'lodash' +import * as React from 'react' +import * as Sinon from 'sinon' -import HEREMap, { HEREMapProps, HEREMapState } from "../src/HEREMap"; -import Marker from "../src/Marker"; +import HEREMapComponent, { HEREMapProps, HEREMapRef, HEREMapState } from '../src/HEREMap' +import Marker from '../src/Marker' -declare var global: any; -declare var window: any; -declare var sinon: Sinon.SinonStatic; +type HEREMap = React.Component<HEREMapProps, HEREMapState> & HEREMapRef -describe("<HEREMap />", () => { - describe("<Marker />", () => { +declare let sinon: Sinon.SinonStatic - describe("DOM Marker", () => { - let wrapper: ReactWrapper<HEREMapProps, HEREMapState>; +describe('<HEREMap />', () => { + describe('<Marker />', () => { + describe('DOM Marker', () => { + let wrapper: ReactWrapper<HEREMapProps, HEREMapState> before(() => { // get the page container element - const container = document.getElementById("page-container"); + const container = document.getElementById('page-container') const center = { lat: 0, lng: 0, - }; + } // need to use full DOM rendering here to access lifecycle methods wrapper = mount<HEREMapProps, HEREMapState>(( - <HEREMap + <HEREMapComponent apiKey="" - appId="NoiW7CS2CC05ppu95hyL" - appCode="28L997fKdiJiY7TVVEsEGQ" center={center} zoom={14} /> ), { attachTo: container, - }); - }); + }) + }) - it("should be attached to the H.Map instance associated with the map", () => { + it('should be attached to the H.Map instance associated with the map', () => { // set the initial center of this circle const center = { lat: 0, lng: 0, - }; + } // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; + const instance: HEREMap = wrapper.instance() as HEREMap // mount a marker to the HEREMap component const markerWrapper = mount(( @@ -60,27 +57,27 @@ describe("<HEREMap />", () => { context: { map: instance.getMap(), }, - }); + }) - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); + const { state } = instance + const { map } = state + const objects = map?.getObjects() // check that there is one object at least - chai.expect(objects).to.have.length(1); + chai.expect(objects).to.have.length(1) - markerWrapper.unmount(); - }); + markerWrapper.unmount() + }) - it("should attach an object to the H.Map that is an instance of H.map.DomMarker", () => { + it('should attach an object to the H.Map that is an instance of H.map.DomMarker', () => { // set the initial center of this circle const center = { lat: 0, lng: 0, - }; + } // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; + const instance: HEREMap = wrapper.instance() as HEREMap // mount a marker to the HEREMap component const markerWrapper = mount(( @@ -91,28 +88,28 @@ describe("<HEREMap />", () => { context: { map: instance.getMap(), }, - }); + }) - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); - const thisMarker = first(objects); + const { state } = instance + const { map } = state + const objects = map?.getObjects() + const thisMarker = first(objects) // check instanceof for this marker - chai.expect(thisMarker).to.be.an.instanceof(H.map.DomMarker); + chai.expect(thisMarker).to.be.an.instanceof(H.map.DomMarker) - markerWrapper.unmount(); - }); + markerWrapper.unmount() + }) - it("should render the DOM marker to the DOM itself", (done) => { + it('should render the DOM marker to the DOM itself', (done) => { // set the initial center of this circle const center = { lat: 0, lng: 0, - }; + } // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; + const instance: HEREMap = wrapper.instance() as HEREMap // mount a marker to the HEREMap component const markerWrapper = mount(( @@ -123,29 +120,29 @@ describe("<HEREMap />", () => { context: { map: instance.getMap(), }, - }); + }) // pause for a bit, since for some reason the marker does not appear // in the DOM immediately setTimeout(() => { - chai.expect($(".dom-marker .circle-marker").length).to.equal(1); - markerWrapper.unmount(); - done(); - }, 500); - }); + chai.expect($('.dom-marker .circle-marker').length).to.equal(1) + markerWrapper.unmount() + done() + }, 500) + }) - it("should change the position of the marker automatically", () => { + it('should change the position of the marker automatically', () => { // spy on the componentWillReceiveProps method of the Marker component - const willReceivePropsSpy = sinon.spy(Marker.prototype, "componentWillReceiveProps"); + const willReceivePropsSpy = sinon.spy(Marker.prototype, 'componentWillReceiveProps') // set the initial center of this circle const center = { lat: 0, lng: 0, - }; + } // get the HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; + const instance: HEREMap = wrapper.instance() as HEREMap // mount a marker to the HEREMap component const markerWrapper = mount(( @@ -156,66 +153,63 @@ describe("<HEREMap />", () => { context: { map: instance.getMap(), }, - }); + }) - const { state } = instance; - const { map } = state; - const objects = map.getObjects(); + const { state } = instance + const { map } = state + const objects = map?.getObjects() // check that there is one object at least - chai.expect(objects).to.have.length(1); + chai.expect(objects).to.have.length(1) - const marker = first<any>(objects) as H.map.DomMarker; + const marker = first<any>(objects) as H.map.DomMarker // check position of marker, using equals method of the H.geo.Point class - chai.expect(marker.getPosition().equals({ lat: 0, lng: 0 })).to.equal(true); + chai.expect(marker.getGeometry().equals({ lat: 0, lng: 0 })).to.equal(true) // change the radius to something other than the initial value markerWrapper.setProps({ lat: 1, - }); + }) // expect componentWillReceiveProps to have been called once - chai.expect(Marker.prototype.componentWillReceiveProps).to.have.property("callCount", 1); + chai.expect(Marker.prototype.componentWillReceiveProps).to.have.property('callCount', 1) // check the new radius of the circle - chai.expect(marker.getPosition().equals({ lat: 1, lng: 0 })).to.equal(true); + chai.expect(marker.getGeometry().equals({ lat: 1, lng: 0 })).to.equal(true) - markerWrapper.unmount(); + markerWrapper.unmount() - willReceivePropsSpy.restore(); - }); + willReceivePropsSpy.restore() + }) // unmount the component after all the tests are complete after(() => { - wrapper.unmount(); - }); + wrapper.unmount() + }) + }) - }); + describe('Marker w/ Bitmap Provided', () => { + let wrapper: ReactWrapper<HEREMapProps, HEREMapState> - describe("Marker w/ Bitmap Provided", () => { - let wrapper: ReactWrapper<HEREMapProps, HEREMapState>; - - it("should call the constructor of H.map.Icon with the correct bitmap parameter", () => { + it('should call the constructor of H.map.Icon with the correct bitmap parameter', () => { // spy on the H.map.Icon constructor - const iconSpy = sinon.spy(H.map, "Icon"); + const iconSpy = sinon.spy(H.map, 'Icon') // get the page container element - const container = document.getElementById("page-container"); + const container = document.getElementById('page-container') const center = { lat: 0, lng: 0, - }; + } - const bitmap = "https://josh-es.github.io/react-here-maps/images/map-marker.png"; + const bitmap = 'https://josh-es.github.io/react-here-maps/images/map-marker.png' // need to use full DOM rendering here to access lifecycle methods wrapper = mount<HEREMapProps, HEREMapState>(( - <HEREMap + <HEREMapComponent apiKey="" - appId="NoiW7CS2CC05ppu95hyL" - appCode="28L997fKdiJiY7TVVEsEGQ" center={center} zoom={14} > @@ -223,114 +217,109 @@ describe("<HEREMap />", () => { {...center} bitmap={bitmap} /> - </HEREMap> + </HEREMapComponent> ), { attachTo: container, - }); + }) - chai.expect(iconSpy.calledWith(bitmap)).to.equal(true); + chai.expect(iconSpy.calledWith(bitmap)).to.equal(true) // restore the original function - iconSpy.restore(); - }); + iconSpy.restore() + }) - it("should be the single Marker child of the HEREMap component instance", () => { + it('should be the single Marker child of the HEREMap component instance', () => { // expect that a marker child component must be present - chai.expect(wrapper.find(Marker)).to.have.length(1); - }); + chai.expect(wrapper.find(Marker)).to.have.length(1) + }) - it("should be attached to the H.Map instance associated with the map", () => { - const instance: HEREMap = wrapper.instance() as HEREMap; - const { state: { map } } = instance; - const objects = map.getObjects(); + it('should be attached to the H.Map instance associated with the map', () => { + const instance: HEREMap = wrapper.instance() as HEREMap + const { state: { map } } = instance + const objects = map?.getObjects() // check that there is one object at least - chai.expect(objects).to.have.length(1); - }); + chai.expect(objects).to.have.length(1) + }) - it("should attach an object to the H.Map that is an instance of H.map.Marker", () => { - const instance: HEREMap = wrapper.instance() as HEREMap; - const { state: { map } } = instance; - const objects = map.getObjects(); - const thisMarker = first(objects); + it('should attach an object to the H.Map that is an instance of H.map.Marker', () => { + const instance: HEREMap = wrapper.instance() as HEREMap + const { state: { map } } = instance + const objects = map?.getObjects() + const thisMarker = first(objects) // check instanceof for this marker - chai.expect(thisMarker).to.be.an.instanceof(H.map.Marker); - }); + chai.expect(thisMarker).to.be.an.instanceof(H.map.Marker) + }) // unmount the component after all the tests are complete after(() => { - wrapper.unmount(); - }); - - }); + wrapper.unmount() + }) + }) - describe("Default Marker", () => { - let wrapper: ReactWrapper<HEREMapProps, HEREMapState>; + describe('Default Marker', () => { + let wrapper: ReactWrapper<HEREMapProps, HEREMapState> - it("should not have triggered the H.map.Icon or H.map.DomIcon constructors", () => { + it('should not have triggered the H.map.Icon or H.map.DomIcon constructors', () => { // spy on the H.map.Icon constructor - const iconSpy = sinon.spy(H.map, "Icon"); + const iconSpy = sinon.spy(H.map, 'Icon') // spy on the H.map.DomIcon constructor - const domIconSpy = sinon.spy(H.map, "DomIcon"); + const domIconSpy = sinon.spy(H.map, 'DomIcon') // get the page container element - const container = document.getElementById("page-container"); + const container = document.getElementById('page-container') const center = { lat: 0, lng: 0, - }; + } // need to use full DOM rendering here to access lifecycle methods wrapper = mount<HEREMapProps, HEREMapState>(( - <HEREMap + <HEREMapComponent apiKey="" - appId="NoiW7CS2CC05ppu95hyL" - appCode="28L997fKdiJiY7TVVEsEGQ" center={center} zoom={14} > <Marker {...center} /> - </HEREMap> + </HEREMapComponent> ), { attachTo: container, - }); + }) - chai.expect(iconSpy).to.have.property("callCount", 0); - chai.expect(domIconSpy).to.have.property("callCount", 0); - }); + chai.expect(iconSpy).to.have.property('callCount', 0) + chai.expect(domIconSpy).to.have.property('callCount', 0) + }) - it("should be the single Marker child of the HEREMap component instance", () => { + it('should be the single Marker child of the HEREMap component instance', () => { // expect that a marker child component must be present - chai.expect(wrapper.find(Marker)).to.have.length(1); - }); + chai.expect(wrapper.find(Marker)).to.have.length(1) + }) - it("should be attached to the H.Map instance associated with the map", () => { - const instance: HEREMap = wrapper.instance() as HEREMap; - const { state: { map } } = instance; - const objects = map.getObjects(); + it('should be attached to the H.Map instance associated with the map', () => { + const instance: HEREMap = wrapper.instance() as HEREMap + const { state: { map } } = instance + const objects = map?.getObjects() // check that there is one object at least - chai.expect(objects).to.have.length(1); - }); + chai.expect(objects).to.have.length(1) + }) - it("should attach an object to the H.Map that is an instance of H.map.Marker", () => { - const instance: HEREMap = wrapper.instance() as HEREMap; - const { state: { map } } = instance; - const objects = map.getObjects(); - const thisMarker = first(objects); + it('should attach an object to the H.Map that is an instance of H.map.Marker', () => { + const instance: HEREMap = wrapper.instance() as HEREMap + const { state: { map } } = instance + const objects = map?.getObjects() + const thisMarker = first(objects) // check instanceof for this marker - chai.expect(thisMarker).to.be.an.instanceof(H.map.Marker); - }); + chai.expect(thisMarker).to.be.an.instanceof(H.map.Marker) + }) // unmount the component after all the tests are complete after(() => { - wrapper.unmount(); - }); - - }); - - }); -}); + wrapper.unmount() + }) + }) + }) +}) diff --git a/test/helpers/mount.tsx b/test/helpers/mount.tsx index d324b6e..fc00887 100644 --- a/test/helpers/mount.tsx +++ b/test/helpers/mount.tsx @@ -1,31 +1,30 @@ -import { mount, ReactWrapper } from "enzyme"; -import { assignIn } from "lodash"; -import * as React from "react"; -import HEREMap, { HEREMapProps } from "../../src/HEREMap"; +import { mount, ReactWrapper } from 'enzyme' +import { assignIn } from 'lodash' +import * as React from 'react' + +import HEREMap, { HEREMapProps } from '../../src/HEREMap' // mount a test component to the DOM -export function mountComponent(userProps?: any): ReactWrapper<any, any> { - const props: HEREMapProps = assignIn({ - appCode: "28L997fKdiJiY7TVVEsEGQ", - appId: "NoiW7CS2CC05ppu95hyL", - center: { lat: 0, lng: 0 }, - zoom: 14, - }, userProps); +export function mountComponent (userProps?: any): ReactWrapper<any, any> { + const props: HEREMapProps = assignIn({ + appCode: '28L997fKdiJiY7TVVEsEGQ', + appId: 'NoiW7CS2CC05ppu95hyL', + center: { lat: 0, lng: 0 }, + zoom: 14, + }, userProps) - const container = document.getElementById("page-container"); + const container = document.getElementById('page-container') - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(( + // need to use full DOM rendering here to access lifecycle methods + // return the wrapper back + return mount(( <HEREMap - {...props} + {...props} /> - ), { - attachTo: container, - }); - - // return the wrapper back - return wrapper; + ), { + attachTo: container, + }) } // make the exported mount function the default export -export default mountComponent; +export default mountComponent diff --git a/test/main.tests.ts b/test/main.tests.ts index 95589d0..318c3b6 100644 --- a/test/main.tests.ts +++ b/test/main.tests.ts @@ -1,12 +1,10 @@ // the here maps tests make sure the scripts are loaded before proceeding -import "./HEREMap.tests"; - +import './HEREMap.tests' // then we can complete the other tests -import "./Circle.tests"; -import "./Marker.tests"; -import "./mixins/h-map-methods.tests"; -import "./utils/cache.tests"; -import "./utils/get-dom-marker-icon.tests"; -import "./utils/get-marker-icon.tests"; -import "./utils/get-script-map.tests"; -import "./utils/mixin.tests"; +import './Circle.tests' +import './Marker.tests' +import './utils/cache.tests' +import './utils/get-dom-marker-icon.tests' +import './utils/get-marker-icon.tests' +import './utils/get-script-map.tests' +import './utils/mixin.tests' diff --git a/test/mixins/h-map-methods.tests.tsx b/test/mixins/h-map-methods.tests.tsx deleted file mode 100644 index c1cc6ef..0000000 --- a/test/mixins/h-map-methods.tests.tsx +++ /dev/null @@ -1,225 +0,0 @@ -import * as chai from "chai"; -import * as $ from "jquery"; -import "react"; -import * as Sinon from "sinon"; - -import HEREMap from "../../src/HEREMap"; -import cache, { onAllLoad } from "../../src/utils/cache"; -import getLink from "../../src/utils/get-link"; -import getScriptMap from "../../src/utils/get-script-map"; -import mount from "../helpers/mount"; - -declare var global: any; -declare var window: any; -declare var sinon: Sinon.SinonStatic; - -describe("<HEREMap />", () => { - - before((done) => { - const scriptMap = getScriptMap(); - cache(scriptMap); - - const stylesheetUrl = "//js.api.here.com/v3/3.0/mapsjs-ui.css"; - getLink(stylesheetUrl, "HERE Maps UI"); - - const fixture = "<div id=\"page-container\"></div>"; - document.body.insertAdjacentHTML("afterbegin", fixture); - - onAllLoad((errors: any[], results?: any[]) => { - global.H = window.H; - done(errors && errors[0]); - }); - }); - - describe("HMapMethods Mixin", () => { - describe("#getElement()", () => { - - it("should return an element when called on a <HEREMap> component instance", () => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // get the component from the ReactWrapper returned by enzyme - const component: HEREMap = wrapper.instance() as HEREMap; - const componentEl = component.getElement(); - - // get the number of map containers and canvas elements - const mapContainersLength = $(componentEl).find(".map-container").length; - const canvasLength = $(componentEl).find("canvas").length; - - // we should have one map container and one canvas for the one <HEREMap> component instance - chai.expect(mapContainersLength).to.equal(1); - chai.expect(canvasLength).to.equal(1); - - // remove the test map from the DOM - wrapper.unmount(); - }); - - }); - - describe("#getMap()", () => { - - it("should return a H.Map instance when called on a <HEREMap> component instance", () => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // get the component from the ReactWrapper returned by enzyme - const component: HEREMap = wrapper.instance() as HEREMap; - const map = component.getMap(); - - // expect the returned map to be an instance of H.Map - chai.expect(map).to.be.an.instanceof(H.Map); - - // remove the test map from the DOM - wrapper.unmount(); - }); - - }); - - describe("#setCenter(point: H.geo.IPoint)", () => { - - it("should set the center of the associated H.Map instance " + - "when called on a <HEREMap> component instance", () => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // get the component from the ReactWrapper returned by enzyme - const component: HEREMap = wrapper.instance() as HEREMap; - const map = component.getMap(); - - // expect the returned map to be an instance of H.Map - chai.expect(map).to.be.an.instanceof(H.Map); - - // spy on the map.setCenter method - const setCenterSpy = sinon.spy(map, "setCenter"); - - component.setCenter({ lat: 51.5, lng: 0 }); - - // expect map.setCenter to have been called once - chai.expect(map.setCenter).to.have.property("callCount", 1); - - setCenterSpy.restore(); - - // remove the test map from the DOM - wrapper.unmount(); - }); - - }); - - describe("#setZoom(zoom: number)", () => { - - it("should set the zoom of the associated H.Map instance " + - "when called on a <HEREMap> component instance", () => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // get the component from the ReactWrapper returned by enzyme - const component: HEREMap = wrapper.instance() as HEREMap; - const map = component.getMap(); - - // expect the returned map to be an instance of H.Map - chai.expect(map).to.be.an.instanceof(H.Map); - - // spy on the map.setZoom method - const setZoomSpy = sinon.spy(map, "setZoom"); - - component.setZoom(12); - - // expect map.setZoom to have been called once - chai.expect(map.setZoom).to.have.property("callCount", 1); - - setZoomSpy.restore(); - - // remove the test map from the DOM - wrapper.unmount(); - }); - - }); - - describe("#componentWillReceiveProps(nextProps: HEREMapProps)", () => { - - it("should be called when the props on the associated <HEREMap> instance change", () => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // spy on the HEREMap.componentWillReceiveProps method - const willReceivePropsSpy = sinon.spy(HEREMap.prototype, "componentWillReceiveProps"); - - // set the zoom property to something different to the initial value - wrapper.setProps({ zoom: 12 }); - - // expect map.setZoom to have been called once - chai.expect(HEREMap.prototype.componentWillReceiveProps).to.have.property("callCount", 1); - - // restore the original method on the HEREMap class (important) - willReceivePropsSpy.restore(); - - // remove the test map from the DOM - wrapper.unmount(); - }); - - it("should change the zoom level when the zoom prop " + - "on the associated <HEREMap> instance changes", (done) => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // TODO find way of doing this a bit better - // use timeouts to deal with the time it takes to fetch and render a map - setTimeout(() => { - // get the map associated with the mounted HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - const map = instance.getMap(); - - // test the original zoom level of the map - chai.expect(map.getZoom()).to.equal(14); - - // set the zoom property to something different to the initial value - wrapper.setProps({ zoom: 12 }); - - setTimeout(() => { - // test the new zoom level - chai.expect(map.getZoom()).to.equal(12); - - // remove the test map from the DOM - wrapper.unmount(); - - done(); - }, 500); - }, 500); - }); - - it("should change the center when the center prop on the associated <HEREMap> instance changes", (done) => { - // need to use full DOM rendering here to access lifecycle methods - const wrapper = mount(); - - // use timeouts to deal with the time it takes to fetch and render a map - setTimeout(() => { - // get the map associated with the mounted HEREMap instance - const instance: HEREMap = wrapper.instance() as HEREMap; - const map = instance.getMap(); - - // test the original center of the map - chai.expect(map.getCenter().equals({ lat: 0, lng: 0 })).to.equal(true); - - // set the zoom property to something different to the initial value - wrapper.setProps({ - center: { - lat: 1, - lng: 1, - }, - }); - - setTimeout(() => { - // test the new center - chai.expect(map.getCenter().equals({ lat: 1, lng: 1 })).to.equal(true); - - // remove the test map from the DOM - wrapper.unmount(); - - done(); - }, 500); - }, 500); - }); - - }); - }); -}); diff --git a/test/utils/get-dom-marker-icon.tests.ts b/test/utils/get-dom-marker-icon.tests.ts index 92b8703..b230c93 100644 --- a/test/utils/get-dom-marker-icon.tests.ts +++ b/test/utils/get-dom-marker-icon.tests.ts @@ -1,50 +1,48 @@ -import { expect } from "chai"; +import { expect } from 'chai' -import getDomMarkerIcon, { DomIcons } from "../../src/utils/get-dom-marker-icon"; - -describe("<HEREMap />", () => { - describe("#getDomMarkerIcon(html: string): H.map.DomIcon", () => { +import getDomMarkerIcon, { DomIcons } from '../../src/utils/get-dom-marker-icon' +describe('<HEREMap />', () => { + describe('#getDomMarkerIcon(html: string): H.map.DomIcon', () => { beforeEach(() => { - DomIcons.clear(); - }); + DomIcons.clear() + }) - it("should create a new dom icon instance if one does not exist", () => { - const html: string = "<div class='dom-marker'><div class='circle-marker' /></div>"; + it('should create a new dom icon instance if one does not exist', () => { + const html: string = '<div class=\'dom-marker\'><div class=\'circle-marker\' /></div>' // test we get an icon instance - const icon: H.map.DomIcon = getDomMarkerIcon(html); - expect(icon).to.be.an.instanceof(H.map.DomIcon); - }); + const icon: H.map.DomIcon = getDomMarkerIcon(html) + expect(icon).to.be.an.instanceof(H.map.DomIcon) + }) - it("should add the new dom icon instance to the map", () => { - const html: string = "<div class='dom-marker'><div class='circle-marker' /></div>"; + it('should add the new dom icon instance to the map', () => { + const html: string = '<div class=\'dom-marker\'><div class=\'circle-marker\' /></div>' // expect the map size to be zero - expect(DomIcons.size).to.equal(0); + expect(DomIcons.size).to.equal(0) // get an icon instance - getDomMarkerIcon(html); + getDomMarkerIcon(html) // test that the size has increased by one - expect(DomIcons.size).to.equal(1); - }); + expect(DomIcons.size).to.equal(1) + }) - it("shouldn't create two dom icons for the same bitmap", () => { - const html: string = "<div class='dom-marker'><div class='circle-marker' /></div>"; + it('shouldn\'t create two dom icons for the same bitmap', () => { + const html: string = '<div class=\'dom-marker\'><div class=\'circle-marker\' /></div>' // get an icon instance - getDomMarkerIcon(html); + getDomMarkerIcon(html) // test that the size has increased to one - expect(DomIcons.size).to.equal(1); + expect(DomIcons.size).to.equal(1) // get a second icon instance - getDomMarkerIcon(html); + getDomMarkerIcon(html) // test that the size is still one - expect(DomIcons.size).to.equal(1); - }); - - }); -}); + expect(DomIcons.size).to.equal(1) + }) + }) +}) diff --git a/test/utils/get-marker-icon.tests.ts b/test/utils/get-marker-icon.tests.ts index 8a0b587..bce4305 100644 --- a/test/utils/get-marker-icon.tests.ts +++ b/test/utils/get-marker-icon.tests.ts @@ -1,50 +1,48 @@ -import { expect } from "chai"; +import { expect } from 'chai' -import getMarkerIcon, { Icons } from "../../src/utils/get-marker-icon"; - -describe("<HEREMap />", () => { - describe("#getMarkerIcon(bitmap: string): H.map.Icon", () => { +import getMarkerIcon, { Icons } from '../../src/utils/get-marker-icon' +describe('<HEREMap />', () => { + describe('#getMarkerIcon(bitmap: string): H.map.Icon', () => { beforeEach(() => { - Icons.clear(); - }); + Icons.clear() + }) - it("should create a new icon instance if one does not exist", () => { - const bitmap: string = "https://josh-es.github.io/react-here-maps/images/map-marker.png"; + it('should create a new icon instance if one does not exist', () => { + const bitmap: string = 'https://josh-es.github.io/react-here-maps/images/map-marker.png' // test we get an icon instance - const icon: H.map.Icon = getMarkerIcon(bitmap); - expect(icon).to.be.an.instanceof(H.map.Icon); - }); + const icon: H.map.Icon = getMarkerIcon(bitmap) + expect(icon).to.be.an.instanceof(H.map.Icon) + }) - it("should add the new icon instance to the map", () => { - const bitmap: string = "https://josh-es.github.io/react-here-maps/images/map-marker.png"; + it('should add the new icon instance to the map', () => { + const bitmap: string = 'https://josh-es.github.io/react-here-maps/images/map-marker.png' // expect the map size to be zero - expect(Icons.size).to.equal(0); + expect(Icons.size).to.equal(0) // get an icon instance - getMarkerIcon(bitmap); + getMarkerIcon(bitmap) // test that the size has increased by one - expect(Icons.size).to.equal(1); - }); + expect(Icons.size).to.equal(1) + }) - it("shouldn't create two icons for the same bitmap", () => { - const bitmap: string = "https://josh-es.github.io/react-here-maps/images/map-marker.png"; + it('shouldn\'t create two icons for the same bitmap', () => { + const bitmap: string = 'https://josh-es.github.io/react-here-maps/images/map-marker.png' // get an icon instance - getMarkerIcon(bitmap); + getMarkerIcon(bitmap) // test that the size has increased to one - expect(Icons.size).to.equal(1); + expect(Icons.size).to.equal(1) // get a second icon instance - getMarkerIcon(bitmap); + getMarkerIcon(bitmap) // test that the size is still one - expect(Icons.size).to.equal(1); - }); - - }); -}); + expect(Icons.size).to.equal(1) + }) + }) +}) diff --git a/test/utils/get-script-map.tests.ts b/test/utils/get-script-map.tests.ts index 313202d..7444769 100644 --- a/test/utils/get-script-map.tests.ts +++ b/test/utils/get-script-map.tests.ts @@ -1,41 +1,39 @@ -import { expect } from "chai"; +import { expect } from 'chai' -import getScriptMap, { ScriptMap } from "../../src/utils/get-script-map"; +import getScriptMap, { ScriptMap } from '../../src/utils/get-script-map' -describe("<HEREMap />", () => { - describe("#getScriptMap(secure?: boolean)", () => { - - it("should return all four core HERE Maps JavaScript API scripts", () => { - const scriptMap: ScriptMap = getScriptMap(); +describe('<HEREMap />', () => { + describe('#getScriptMap(secure?: boolean)', () => { + it('should return all four core HERE Maps JavaScript API scripts', () => { + const scriptMap: ScriptMap = getScriptMap() // expect the script map to have all four scripts set as properties - expect(scriptMap).to.have.property("coreScript"); - expect(scriptMap).to.have.property("mapEventsScript"); - expect(scriptMap).to.have.property("serviceScript"); - expect(scriptMap).to.have.property("uiScript"); + expect(scriptMap).to.have.property('coreScript') + expect(scriptMap).to.have.property('mapEventsScript') + expect(scriptMap).to.have.property('serviceScript') + expect(scriptMap).to.have.property('uiScript') // test the values of the scripts - expect(scriptMap.coreScript).to.equal("//js.api.here.com/v3/3.0/mapsjs-core.js"); - expect(scriptMap.mapEventsScript).to.equal("//js.api.here.com/v3/3.0/mapsjs-mapevents.js"); - expect(scriptMap.serviceScript).to.equal("//js.api.here.com/v3/3.0/mapsjs-service.js"); - expect(scriptMap.uiScript).to.equal("//js.api.here.com/v3/3.0/mapsjs-ui.js"); - }); + expect(scriptMap.coreScript).to.equal('//js.api.here.com/v3/3.0/mapsjs-core.js') + expect(scriptMap.mapEventsScript).to.equal('//js.api.here.com/v3/3.0/mapsjs-mapevents.js') + expect(scriptMap.serviceScript).to.equal('//js.api.here.com/v3/3.0/mapsjs-service.js') + expect(scriptMap.uiScript).to.equal('//js.api.here.com/v3/3.0/mapsjs-ui.js') + }) - it("should force https if secure flag set to true", () => { - const scriptMap: ScriptMap = getScriptMap(true); + it('should force https if secure flag set to true', () => { + const scriptMap: ScriptMap = getScriptMap(true) // expect the script map to have all four scripts set as properties - expect(scriptMap).to.have.property("coreScript"); - expect(scriptMap).to.have.property("mapEventsScript"); - expect(scriptMap).to.have.property("serviceScript"); - expect(scriptMap).to.have.property("uiScript"); + expect(scriptMap).to.have.property('coreScript') + expect(scriptMap).to.have.property('mapEventsScript') + expect(scriptMap).to.have.property('serviceScript') + expect(scriptMap).to.have.property('uiScript') // test the values of the scripts have https at the front - expect(scriptMap.coreScript).to.equal("https://js.api.here.com/v3/3.0/mapsjs-core.js"); - expect(scriptMap.mapEventsScript).to.equal("https://js.api.here.com/v3/3.0/mapsjs-mapevents.js"); - expect(scriptMap.serviceScript).to.equal("https://js.api.here.com/v3/3.0/mapsjs-service.js"); - expect(scriptMap.uiScript).to.equal("https://js.api.here.com/v3/3.0/mapsjs-ui.js"); - }); - - }); -}); + expect(scriptMap.coreScript).to.equal('https://js.api.here.com/v3/3.0/mapsjs-core.js') + expect(scriptMap.mapEventsScript).to.equal('https://js.api.here.com/v3/3.0/mapsjs-mapevents.js') + expect(scriptMap.serviceScript).to.equal('https://js.api.here.com/v3/3.0/mapsjs-service.js') + expect(scriptMap.uiScript).to.equal('https://js.api.here.com/v3/3.0/mapsjs-ui.js') + }) + }) +}) diff --git a/test/utils/mixin.tests.ts b/test/utils/mixin.tests.ts deleted file mode 100644 index 965386f..0000000 --- a/test/utils/mixin.tests.ts +++ /dev/null @@ -1,42 +0,0 @@ -import * as chai from "chai"; - -import mixin from "../../src/utils/mixin"; - -const addMixin = mixin({ - add(x: number, y: number) { - return x + y; - }, -}, { - COST: 1, -}); - -@addMixin -class Calculator { - public static COST: number; - public add: (x: number, y: number) => number; -} - -describe("<HEREMap />", () => { - describe("#mixin(behavior: any, sharedBehavior: any = {})", () => { - - it("should add behavior to a class where a decorator provided", () => { - const calculator = new Calculator(); - - const total = calculator.add(10, 10); - - // should add 10 and 10 - chai.expect(total).to.equal(20); - }); - - it("should add static behavior to a class when a decorator with such behavior is provided", () => { - // should have a static property, COST, equal to 1 - chai.expect(Calculator.COST).to.equal(1); - }); - - it("should support the instanceof operator", () => { - const calculator = new Calculator(); - chai.expect(calculator instanceof addMixin).to.equal(true); - }); - - }); -}); diff --git a/testbench/index.tsx b/testbench/index.tsx index ec5a85b..636e05d 100644 --- a/testbench/index.tsx +++ b/testbench/index.tsx @@ -1,4 +1,4 @@ -import React, { FC } from 'react' +import React from 'react' import ReactDOM from 'react-dom' import { HEREMap } from '../src/HEREMap' @@ -19,8 +19,6 @@ ReactDOM.render( useVectorTiles onMapAvailable={() => console.log('Map is available')} disableMapSettings - > - - </HEREMap>, + />, document.getElementById('root'), ) diff --git a/tslint.json b/tslint.json deleted file mode 100644 index d3371b3..0000000 --- a/tslint.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": ["tslint:latest", "tslint-react"], - "rules": { - "interface-name": [true, "never-prefix"], - "ordered-imports": [true, { "named-imports-order": "lowercase-first" }], - "no-unused-variable": [true, "react"], - "jsx-no-multiline-js": false, - "no-submodule-imports": false - } -} diff --git a/yarn.lock b/yarn.lock index 7c67d44..3bf1cf1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -24,6 +29,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.21.5": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.9.tgz#10a2e7fda4e51742c907938ac3b7229426515514" @@ -60,6 +73,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" @@ -76,6 +99,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" @@ -84,6 +112,14 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -91,6 +127,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-module-imports@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" @@ -126,11 +169,23 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" @@ -141,6 +196,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" @@ -164,11 +224,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== +"@babel/parser@^7.23.9", "@babel/parser@^7.7.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + "@babel/template@^7.20.7": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" @@ -178,6 +252,15 @@ "@babel/parser" "^7.21.9" "@babel/types" "^7.21.5" +"@babel/template@^7.22.15": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/traverse@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" @@ -194,6 +277,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.7.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.18.6", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" @@ -203,6 +302,87 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.7.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@impargo/eslint-config@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@impargo/eslint-config/-/eslint-config-1.4.0.tgz#2e745d4bdb184ec52a3f79156794c04b473c870b" + integrity sha512-SeWIGHfjoeo9pvaRMpkhuPA5YRVLU7C2Mulk9YBagY9W7Z0mmokWdzW06/2cZjJWu8XTnCGDnuZPhaonu76ndA== + dependencies: + "@typescript-eslint/eslint-plugin" "^6.15.0" + "@typescript-eslint/parser" "^6.15.0" + babel-eslint "^10.1.0" + eslint "^8.56.0" + eslint-config-standard "^17.1.0" + eslint-config-standard-react "^13.0.0" + eslint-import-resolver-webpack "^0.13.8" + eslint-plugin-import "^2.29.1" + eslint-plugin-n "^16.5.0" + eslint-plugin-node "^11.1.0" + eslint-plugin-promise "^6.1.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.6.0" + eslint-plugin-simple-import-sort "^10.0.0" + eslint-plugin-sonarjs "^0.23.0" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -329,6 +509,27 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@parcel/bundler-default@2.8.3": version "2.8.3" resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.8.3.tgz#d64739dbc2dbd59d6629861bf77a8083aced5229" @@ -940,6 +1141,16 @@ dependencies: "@types/sizzle" "*" +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/loadjs@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/loadjs/-/loadjs-4.0.1.tgz#85e77dcad99d58236462393145eccbbc9dad0fe5" @@ -998,6 +1209,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/semver@^7.5.0": + version "7.5.7" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.7.tgz#326f5fdda70d13580777bcaa1bc6fa772a5aef0e" + integrity sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg== + "@types/sinon@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-5.0.1.tgz#a15b36ec42f1f53166617491feabd1734cb03e21" @@ -1008,6 +1224,97 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== +"@typescript-eslint/eslint-plugin@^6.15.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.15.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + JSONStream@^1.0.3: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -1039,6 +1346,11 @@ accepts@1.3.3: mime-types "~2.1.11" negotiator "0.6.1" +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" @@ -1063,6 +1375,11 @@ acorn@^8.5.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -1078,7 +1395,7 @@ ajv@^5.0.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.12.3: +ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1240,6 +1557,14 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -1255,6 +1580,17 @@ array-find-index@^1.0.1: resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + array-initial@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" @@ -1289,6 +1625,11 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1315,6 +1656,38 @@ array.prototype.filter@^1.0.0: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.filter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" + integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.find@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.2.tgz#e862cf891e725d8f2a10e5e42d750629faaabd32" + integrity sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.findlastindex@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" + integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + array.prototype.flat@^1.2.3: version "1.3.0" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" @@ -1325,6 +1698,51 @@ array.prototype.flat@^1.2.3: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.0" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" @@ -1414,6 +1832,13 @@ async@^2.5.0: dependencies: lodash "^4.17.14" +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1436,6 +1861,13 @@ autoprefixer@^6.3.1: postcss "^5.2.16" postcss-value-parser "^3.2.3" +available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -1485,6 +1917,18 @@ babel-core@^6.14.0, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -2079,6 +2523,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^0.1.2: version "0.1.5" resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" @@ -2326,16 +2777,23 @@ buffer@~5.2.1: base64-js "^1.0.2" ieee754 "^1.1.4" -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +builtins@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -2369,6 +2827,17 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" @@ -2459,7 +2928,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2468,7 +2937,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2785,7 +3254,7 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@^2.9.0: +commander@^2.19.0, commander@^2.20.0, commander@^2.9.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2972,6 +3441,15 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -3195,7 +3673,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^4.1.0: +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.3.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== @@ -3219,7 +3704,7 @@ deep-eql@^3.0.1: dependencies: type-detect "^4.0.0" -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -3236,6 +3721,15 @@ default-resolution@^2.0.0: resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" integrity sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ== +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" @@ -3244,6 +3738,15 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -3345,11 +3848,6 @@ diff@^3.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3359,11 +3857,32 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dom-serialize@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" @@ -3576,6 +4095,15 @@ engine.io@1.8.3: engine.io-parser "1.3.2" ws "1.1.2" +enhanced-resolve@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + enhanced-resolve@^3.0.0: version "3.4.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" @@ -3685,11 +4213,100 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.22.4: + version "1.22.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.4.tgz#26eb2e7538c3271141f5754d31aabfdb215f27bf" + integrity sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.6" + call-bind "^1.0.7" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.2" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.1" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.0" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.1" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.14" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.0.0, es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-iterator-helpers@^1.0.12: + version "1.0.17" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz#123d1315780df15b34eb181022da43e734388bb8" + integrity sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.22.4" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + has-property-descriptors "^1.0.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.2" + safe-array-concat "^1.1.0" + +es-set-tostringtag@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -3697,6 +4314,13 @@ es-shim-unscopables@^1.0.0: dependencies: has "^1.0.3" +es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3775,6 +4399,11 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -3787,6 +4416,243 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" +eslint-compat-utils@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz#f45e3b5ced4c746c127cf724fb074cd4e730d653" + integrity sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg== + +eslint-config-standard-react@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#dcc85bc3210dac858bc94ac53d024a5488ce5568" + integrity sha512-HrVPGj8UncHfV+BsdJTuJpVsomn6AIrke3Af2Fh4XFvQQDU+iO6N2ZL+UsC+scExft4fU3uf7fJwj7PKWnXJDA== + +eslint-config-standard@^17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-webpack@^0.13.8: + version "0.13.8" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.8.tgz#5f64d1d653eefa19cdfd0f0165c996b6be7012f9" + integrity sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA== + dependencies: + array.prototype.find "^2.2.2" + debug "^3.2.7" + enhanced-resolve "^0.9.1" + find-root "^1.1.0" + hasown "^2.0.0" + interpret "^1.4.0" + is-core-module "^2.13.1" + is-regex "^1.1.4" + lodash "^4.17.21" + resolve "^2.0.0-next.5" + semver "^5.7.2" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-es-x@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz#d08d9cd155383e35156c48f736eb06561d07ba92" + integrity sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.6.0" + eslint-compat-utils "^0.1.2" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-n@^16.5.0: + version "16.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#6a60a1a376870064c906742272074d5d0b412b0b" + integrity sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + builtins "^5.0.1" + eslint-plugin-es-x "^7.5.0" + get-tsconfig "^4.7.0" + globals "^13.24.0" + ignore "^5.2.4" + is-builtin-module "^3.2.1" + is-core-module "^2.12.1" + minimatch "^3.1.2" + resolve "^1.22.2" + semver "^7.5.3" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== + +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-plugin-simple-import-sort@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz#cc4ceaa81ba73252427062705b64321946f61351" + integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw== + +eslint-plugin-sonarjs@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.23.0.tgz#0265bad801ea210951672ee3cafbcf5d456ada96" + integrity sha512-z44T3PBf9W7qQ/aR+NmofOTyg6HLhSEZOPD4zhStqBpLoMp8GYhFksuUBnCxbnf1nfISpKBVkQhiBLFI/F4Wlg== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -3802,11 +4668,30 @@ esprima@~3.1.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3973,11 +4858,22 @@ fast-deep-equal@^1.0.0: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" integrity sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw== -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -3988,7 +4884,7 @@ fast-levenshtein@^1.0.0: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" integrity sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -4003,6 +4899,13 @@ fastparse@^1.1.1, fastparse@^1.1.2: resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -4010,6 +4913,13 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -4070,6 +4980,11 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4085,6 +5000,14 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -4128,6 +5051,20 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.0.tgz#5fdca2b5e671cd38d1537427a10e02a2caa8257e" + integrity sha512-noqGuLw158+DuD9UPRKHpJ2hGxpFyDlYYrfM0mWt4XhT4n0lwzTLh70Tkdyy4kyTmyTT9Bv7bWAJqw7cgkEXDg== + flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" @@ -4146,6 +5083,13 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -4247,6 +5191,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.2, function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" @@ -4257,7 +5206,17 @@ function.prototype.name@^1.1.2, function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" -functions-have-names@^1.2.2: +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -4305,6 +5264,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-port@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" @@ -4323,6 +5293,22 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +get-tsconfig@^4.7.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.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" @@ -4358,13 +5344,20 @@ glob-parent@^3.0.1, glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -4454,6 +5447,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.19.0, globals@^13.24.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + globals@^13.2.0: version "13.20.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" @@ -4466,6 +5466,25 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + glogg@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" @@ -4473,6 +5492,13 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -4483,6 +5509,11 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" @@ -4683,6 +5714,18 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -4695,6 +5738,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.1, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -4758,6 +5808,13 @@ hasha@^2.2.0: is-stream "^1.0.1" pinkie-promise "^2.0.0" +hasown@^2.0.0, hasown@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: + function-bind "^1.1.2" + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -4955,6 +6012,11 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + immutable@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" @@ -4976,6 +6038,11 @@ imports-loader@^0.7.1: loader-utils "^1.0.2" source-map "^0.5.6" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -5053,6 +6120,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.5, internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -5097,11 +6173,26 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -5136,11 +6227,30 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + +is-callable@^1.1.3, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" @@ -5162,7 +6272,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -5221,6 +6331,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-finite@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" @@ -5233,6 +6350,13 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -5259,6 +6383,11 @@ is-json@^2.0.1: resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + is-my-ip-valid@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz#f7220d1146257c98672e6fba097a9f3f2d348442" @@ -5321,6 +6450,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -5368,6 +6502,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -5406,6 +6545,13 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -5428,6 +6574,11 @@ is-valid-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" integrity sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -5435,6 +6586,14 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -5450,6 +6609,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isbinaryfile@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" @@ -5527,6 +6691,17 @@ istanbul@0.4.5, istanbul@^0.4.0, istanbul@^0.4.3, istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + jquery@^3.1.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" @@ -5555,7 +6730,7 @@ js-yaml@3.6.1: argparse "^1.0.7" esprima "^2.6.0" -js-yaml@3.x, js-yaml@^3.13.1: +js-yaml@3.x: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -5598,6 +6773,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-loader@^0.5.4: version "0.5.7" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" @@ -5657,6 +6837,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + json5@^2.2.0, json5@^2.2.1, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -5694,6 +6881,16 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + just-debounce@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" @@ -5818,6 +7015,13 @@ kew@^0.7.0: resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" integrity sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ== +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5891,6 +7095,14 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -6035,6 +7247,13 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" @@ -6163,6 +7382,11 @@ lodash.memoize@~3.0.3: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" integrity sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -6211,7 +7435,7 @@ lodash@^3.8.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ== -lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.14, lodash@^4.17.4, lodash@^4.5.0: +lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.14, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.5.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -6283,6 +7507,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -6353,6 +7584,11 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== +memory-fs@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== + memory-fs@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -6377,6 +7613,11 @@ meow@^3.3.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -6415,7 +7656,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.5: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -6458,13 +7699,20 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -6584,6 +7832,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + msgpackr-extract@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" @@ -6644,6 +7897,11 @@ native-promise-only@^0.8.1: resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" integrity sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + nearley@^2.7.10: version "2.20.1" resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" @@ -6823,6 +8081,11 @@ object-inspect@^1.12.0, object-inspect@^1.7.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + object-is@^1.0.2, object-is@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -6853,6 +8116,16 @@ object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.3" object-keys "^1.1.1" +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" @@ -6872,6 +8145,43 @@ object.entries@^1.1.1: define-properties "^1.1.3" es-abstract "^1.19.1" +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6, object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" + integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== + dependencies: + array.prototype.filter "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -6912,6 +8222,15 @@ object.values@^1.1.1: define-properties "^1.1.3" es-abstract "^1.19.1" +object.values@^1.1.6, object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -6953,6 +8272,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" @@ -7006,6 +8337,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -7013,6 +8351,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -7189,11 +8534,21 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -7337,6 +8692,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-calc@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" @@ -7650,6 +9010,11 @@ posthtml@^0.16.4, posthtml@^0.16.5: posthtml-parser "^0.11.0" posthtml-render "^3.0.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -7695,7 +9060,7 @@ progress@^1.1.8: resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" integrity sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw== -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -7808,6 +9173,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -8050,6 +9420,19 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^1.0.0" +reflect.getprototypeof@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz#e0bd28b597518f16edaf9c0e292c631eb13e0674" + integrity sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" + get-intrinsic "^1.2.3" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerate@^1.2.1: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -8098,6 +9481,21 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -8298,6 +9696,11 @@ resolve-options@^1.1.0: dependencies: value-or-function "^3.0.0" +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8308,7 +9711,7 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== -resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0: +resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.4.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -8317,11 +9720,34 @@ resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.10.1, resolve@^1.12.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -8329,6 +9755,13 @@ rimraf@^2.6.0: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -8345,6 +9778,23 @@ rst-selector-parser@^2.2.3: lodash.flattendeep "^4.4.0" nearley "^2.7.10" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -8355,6 +9805,15 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -8431,11 +9890,28 @@ semver-greatest-satisfied-range@^1.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.1.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.0.0, semver@^7.5.3, semver@^7.5.4: + 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" + semver@~4.3.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -8446,6 +9922,28 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -8493,6 +9991,18 @@ shasum@^1.0.0: json-stable-stringify "~0.0.0" sha.js "~2.4.4" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@^1.4.2, shell-quote@^1.6.1: version "1.7.3" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" @@ -8536,6 +10046,11 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -8848,6 +10363,21 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" + string.prototype.trim@^1.2.1: version "1.2.6" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz#824960787db37a9e24711802ed0c1d1c0254f83e" @@ -8857,6 +10387,15 @@ string.prototype.trim@^1.2.1: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -8866,6 +10405,15 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimstart@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" @@ -8875,6 +10423,15 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -8935,6 +10492,11 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.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 sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -8942,6 +10504,11 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + style-loader@^0.18.2: version "0.18.2" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" @@ -9036,6 +10603,11 @@ syntax-error@^1.1.1: dependencies: acorn-node "^1.2.0" +tapable@^0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== + tapable@^0.2.7: version "0.2.9" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8" @@ -9061,6 +10633,11 @@ text-encoding@0.6.4: resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" integrity sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" @@ -9226,6 +10803,11 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== +ts-api-utils@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" + integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== + ts-loader@^2.2.2: version "2.3.7" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-2.3.7.tgz#a9028ced473bee12f28a75f9c5b139979d33f2fc" @@ -9236,49 +10818,21 @@ ts-loader@^2.2.2: loader-utils "^1.0.2" semver "^5.0.1" -tslib@^1.8.0, tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" tslib@^2.4.0: version "2.5.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== -tslint-react@^3.0.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-3.6.0.tgz#7f462c95c4a0afaae82507f06517ff02942196a1" - integrity sha512-AIv1QcsSnj7e9pFir6cJ6vIncTqxfqeFF3Lzh8SuuBljueYzEAtByuB6zMaD27BL0xhMEqsZ9s5eHuCONydjBw== - dependencies: - tsutils "^2.13.1" - -tslint@^5.5.0: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -tsutils@^2.13.1, tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - tty-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" @@ -9301,6 +10855,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -9336,6 +10897,50 @@ type@^2.5.0: resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +typed-array-buffer@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -9726,11 +11331,50 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== +which-typed-array@^1.1.14, which-typed-array@^1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== + dependencies: + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.1" + which@^1.1.1, which@^1.2.10, which@^1.2.14: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -9738,6 +11382,13 @@ which@^1.1.1, which@^1.2.10, which@^1.2.14: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -9809,6 +11460,11 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.1.tgz#7ede329c1d8cdbbe209bd25cdb990e9b1ebbb394" @@ -9848,3 +11504,8 @@ yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" integrity sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==