From 919f4cb7579d6c48d165b6d8482a6e2958793a2d Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Tue, 31 May 2022 19:52:51 -0600 Subject: [PATCH 01/11] Add optional hoverPopup parameter for mouse event --- src/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index ae37404..1aa1533 100644 --- a/src/index.js +++ b/src/index.js @@ -376,12 +376,14 @@ class MapGlUtils implements UtilsFuncs { @param {string|Array|RegExp|function} layers Layers to attach handler to. @param htmlFunc Function that receives feature and popup, returns HTML. @param {Object} popupOptions Options passed to `Popup()` to customise popup. + @param {string} showEvent mouse event to trigger the popup, defaults to "mouseenter" @example hoverPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { anchor: 'left' }); */ hoverPopup( layers: LayerRef, htmlFunc: LayerCallback, - popupOptions?: PopupOptions = {} + popupOptions?: PopupOptions = {}, + showEvent?: string = 'mouseenter' ): OffHandler { if (!this._mapgl) { throw 'Mapbox GL JS or MapLibre GL JS object required when initialising'; @@ -404,10 +406,10 @@ class MapGlUtils implements UtilsFuncs { popup.remove(); }; - this.map.on('mouseenter', layer, mouseenter); + this.map.on(showEvent, layer, mouseenter); this.map.on('mouseout', layer, mouseout); return () => { - this.map.off('mouseenter', layer, mouseenter); + this.map.off(showEvent, layer, mouseenter); this.map.off('mouseout', layer, mouseout); mouseout(); }; From 6c152e82742f424ff837ff852c65ee1a9f904fa4 Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Tue, 31 May 2022 20:05:48 -0600 Subject: [PATCH 02/11] Prepare script --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index daebca4..ce5a50e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "prepublish": "yarn run update-keys; yarn run rollup; yarn run rollup-esm; yarn run docs-only", "docs-only": "documentation build -f html -o docs --config documentation.yml --sort-order alpha src/index.js src/utilsGenerated.js", "docs": "node updateKeys; yarn run docs-only", - "docserve": "documentation serve --config documentation.yml --watch --sort-order alpha src/index.js src/utilsGenerated.js" + "docserve": "documentation serve --config documentation.yml --watch --sort-order alpha src/index.js src/utilsGenerated.js", + "prepare": "node_modules/rollup/dist/bin/rollup -c rollup-esm.config.js" }, "author": "Steve Bennett (http://stevebennett.me)", "license": "Apache-2.0", From 997c98a0111528d17794d1d8ab7239771198263c Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Tue, 31 May 2022 20:06:43 -0600 Subject: [PATCH 03/11] Revert "Prepare script" This reverts commit 6c152e82742f424ff837ff852c65ee1a9f904fa4. --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index ce5a50e..daebca4 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,7 @@ "prepublish": "yarn run update-keys; yarn run rollup; yarn run rollup-esm; yarn run docs-only", "docs-only": "documentation build -f html -o docs --config documentation.yml --sort-order alpha src/index.js src/utilsGenerated.js", "docs": "node updateKeys; yarn run docs-only", - "docserve": "documentation serve --config documentation.yml --watch --sort-order alpha src/index.js src/utilsGenerated.js", - "prepare": "node_modules/rollup/dist/bin/rollup -c rollup-esm.config.js" + "docserve": "documentation serve --config documentation.yml --watch --sort-order alpha src/index.js src/utilsGenerated.js" }, "author": "Steve Bennett (http://stevebennett.me)", "license": "Apache-2.0", From e1deb137eeb57bc4b5ce7c58b7e90e16b8fbfe5f Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Tue, 31 May 2022 20:07:04 -0600 Subject: [PATCH 04/11] Include dist in the fork --- .gitignore | 1 - dist/index.esm.js | 999 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 999 insertions(+), 1 deletion(-) create mode 100644 dist/index.esm.js diff --git a/.gitignore b/.gitignore index c01d11b..2112a67 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ /coverage/ /.vscode/launch.json -/dist/ /yarn-error.log /commonjs/ /umd/ diff --git a/dist/index.esm.js b/dist/index.esm.js new file mode 100644 index 0000000..2828756 --- /dev/null +++ b/dist/index.esm.js @@ -0,0 +1,999 @@ +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +var allProps = { + paints: 'fill-antialias,fill-opacity,fill-color,fill-outline-color,fill-translate,fill-translate-anchor,fill-pattern,fill-extrusion-opacity,fill-extrusion-color,fill-extrusion-translate,fill-extrusion-translate-anchor,fill-extrusion-pattern,fill-extrusion-height,fill-extrusion-base,fill-extrusion-vertical-gradient,line-opacity,line-color,line-translate,line-translate-anchor,line-width,line-gap-width,line-offset,line-blur,line-dasharray,line-pattern,line-gradient,circle-radius,circle-color,circle-blur,circle-opacity,circle-translate,circle-translate-anchor,circle-pitch-scale,circle-pitch-alignment,circle-stroke-width,circle-stroke-color,circle-stroke-opacity,heatmap-radius,heatmap-weight,heatmap-intensity,heatmap-color,heatmap-opacity,icon-opacity,icon-color,icon-halo-color,icon-halo-width,icon-halo-blur,icon-translate,icon-translate-anchor,text-opacity,text-color,text-halo-color,text-halo-width,text-halo-blur,text-translate,text-translate-anchor,raster-opacity,raster-hue-rotate,raster-brightness-min,raster-brightness-max,raster-saturation,raster-contrast,raster-resampling,raster-fade-duration,hillshade-illumination-direction,hillshade-illumination-anchor,hillshade-exaggeration,hillshade-shadow-color,hillshade-highlight-color,hillshade-accent-color,background-color,background-pattern,background-opacity,sky-type,sky-atmosphere-sun,sky-atmosphere-sun-intensity,sky-gradient-center,sky-gradient-radius,sky-gradient,sky-atmosphere-halo-color,sky-atmosphere-color,sky-opacity'.split(','), + layouts: 'visibility,fill-sort-key,circle-sort-key,line-cap,line-join,line-miter-limit,line-round-limit,line-sort-key,symbol-placement,symbol-spacing,symbol-avoid-edges,symbol-sort-key,symbol-z-order,icon-allow-overlap,icon-ignore-placement,icon-optional,icon-rotation-alignment,icon-size,icon-text-fit,icon-text-fit-padding,icon-image,icon-rotate,icon-padding,icon-keep-upright,icon-offset,icon-anchor,icon-pitch-alignment,text-pitch-alignment,text-rotation-alignment,text-field,text-font,text-size,text-max-width,text-line-height,text-letter-spacing,text-justify,text-radial-offset,text-variable-anchor,text-anchor,text-max-angle,text-writing-mode,text-rotate,text-padding,text-keep-upright,text-transform,text-offset,text-allow-overlap,text-ignore-placement,text-optional'.split(',') +}; + +const kebabCase = s => s.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`); + +const upperCamelCase = s => s.replace(/(^|-)([a-z])/g, (x, y, l) => `${l.toUpperCase()}`); + +function isPaintProp(prop) { + return allProps.paints.indexOf(prop) >= 0; +} + +function isLayoutProp(prop) { + return allProps.layouts.indexOf(prop) >= 0; +} + +function whichProp(prop) { + if (allProps.paints.indexOf(prop) >= 0) { + return 'paint'; + } + + if (allProps.layouts.indexOf(prop) >= 0) { + return 'layout'; + } + + return 'other'; +} + +function parseSource(source) { + if (String(source).match(/\.(geo)?json/) || source.type === 'Feature' || source.type === 'FeatureCollection') { + return { + type: 'geojson', + data: source + }; + } else if (String(source).match(/^mapbox:\/\//)) { + return { + type: 'vector', + url: source + }; + } else { + return source; + } +} + +// so basically any +// turn a thing, an array of things, a regex or a filter function, into an array +const resolveArray = (things, map) => { + if (Array.isArray(things)) { + return things; + } else if (things instanceof RegExp) { + return map.getStyle().layers.map(l => l.id).filter(id => id.match(things)); + } else if (things instanceof Function) { + return map.getStyle().layers.filter(layer => things(layer)).map(l => l.id); + } else { + return [things]; + } +}; + +// Magically turn a function that works on one layer into one that works on multiple layers +// specified as: an array, a regex (on layer id), or filter function (on layer definition) + +/* +Cannot return function because in the first argument: [incompatible-return] Either function type [1] is incompatible with `RegExp` [2]. +Or `FillLayerSpecification` [3] is incompatible with `RegExp` [2] in the first argument. +Or a call signature declaring the expected parameter / return type is missing in `FillLayerSpecification` [3] but exists in function type [4] in the first argument. (index.js:131:12)flow +*/ +const arrayify = f => { + return function (thingOrThings, ...args) { + const things = resolveArray(thingOrThings, this.map); + return things.forEach(t => f.call(this, t, ...args)); + }; +}; + +// todo +// assuming each function returns an 'off' handler, returns a function that calls them all +const arrayifyAndOff = f => { + return function (thingOrThings, ...args) { + const things = resolveArray(thingOrThings, this.map); + const offs = things.map(t => f.call(this, t, ...args)); + return () => offs.forEach(off => off()); + }; +}; + +const layerTypes = ['line', 'fill', 'circle', 'symbol', 'video', 'raster', 'fill-extrusion', 'heatmap', 'hillshade']; // $FlowFixMe[prop-missing] + +class MapGlUtils { + constructor() { + _defineProperty(this, "_loaded", false); + + _defineProperty(this, "_mapgl", null); + + _defineProperty(this, "map", null); + + _defineProperty(this, "hoverFeatureState", arrayifyAndOff(function (layer, source, sourceLayer, enterCb, leaveCb) { + if (Array.isArray(source)) { + // assume we have array of [source, sourceLayer] + let removeFuncs = source.map(([source, sourceLayer]) => this.hoverFeatureState(layer, source, sourceLayer)); + return () => removeFuncs.forEach(f => f()); + } + + if (source === undefined) { + const l = this.getLayerStyle(layer); + source = l.source; + sourceLayer = l['source-layer']; + } + + let featureId; + + const setHoverState = state => { + if (featureId) { + this.map.setFeatureState({ + source, + sourceLayer, + id: featureId + }, { + hover: state + }); + } + }; + + const mousemove = e => { + const f = e.features[0]; + + if (f && f.id === featureId) { + return; + } + + setHoverState(false); + if (!f) return; + + if (featureId && leaveCb) { + leaveCb({ ...e, + oldFeatureId: featureId + }); + } + + featureId = f.id; + setHoverState(true); + + if (enterCb) { + enterCb(e); + } + }; + + const mouseleave = e => { + setHoverState(false); + + if (e && e.oldFeatureId) { + e.oldFeatureId = featureId; + } + + featureId = undefined; + + if (leaveCb) { + leaveCb(e); + } + }; + + this.map.on('mousemove', layer, mousemove); + this.map.on('mouseleave', layer, mouseleave); + return () => { + this.map.off('mousemove', layer, mousemove); + this.map.off('mouseleave', layer, mouseleave); + mouseleave(); + }; + })); + + _defineProperty(this, "clickLayer", arrayifyAndOff(function (layer, cb) { + const click = e => { + e.features = this.map.queryRenderedFeatures(e.point, { + layers: [layer] + }); + cb(e); + }; + + this.map.on('click', layer, click); + return () => this.map.off('click', layer, click); + })); + + _defineProperty(this, "hoverLayer", arrayifyAndOff(function (layer, cb) { + const click = e => { + e.features = this.map.queryRenderedFeatures(e.point, { + layers: [layer] + }); + cb(e); + }; + + this.map.on('click', layer, click); + return () => this.map.off('click', layer, click); + })); + + _defineProperty(this, "removeLayer", arrayify(function (layer) { + const swallowError = data => { + if (!data.error.message.match(/does not exist/)) { + console.error(data.error); + } + }; + + this.map.once('error', swallowError); + this.map.removeLayer(layer); + this.map.off('error', swallowError); + })); + + _defineProperty(this, "setProperty", arrayify(function (layer, prop, value) { + if (typeof prop === 'object') { + Object.keys(prop).forEach(k => this.setProperty(layer, k, prop[k])); + } else { + const kprop = kebabCase(prop); + + if (isPaintProp(kprop)) { + this.map.setPaintProperty(layer, kprop, value); + } else if (isLayoutProp(kprop)) { + this.map.setLayoutProperty(layer, kprop, value); + } else ; + } + })); + + _defineProperty(this, "setLayerStyle", arrayify(function (layer, style) { + const clearProps = (oldObj = {}, newObj = {}) => Object.keys(oldObj).forEach(key => { + if (!(key in newObj)) { + this.setProperty(layer, key, undefined); + } + }); + + if (typeof layer === 'object' && !Array.isArray(layer) && layer.id && !style) { + style = layer; // $FlowFixMe[incompatible-type] + // $FlowFixMe[prop-missing] + + layer = style.id; + } + + const oldStyle = this.getLayerStyle(layer); + const newStyle = this.properties(style); + clearProps(oldStyle.paint, newStyle.paint); + clearProps(oldStyle.layout, newStyle.layout); // Hmm, this gets murky, what exactly is meant to happen with non-paint, non-layout props? + + this.setProperty(layer, { ...newStyle.paint, + ...newStyle.layout + }); + })); + + _defineProperty(this, "show", arrayify(function (layer) { + this.setVisibility(layer, 'visible'); + })); + + _defineProperty(this, "hide", arrayify(function (layer) { + this.setVisibility(layer, 'none'); + })); + + _defineProperty(this, "toggle", arrayify(function (layer, state) { + this.setVisibility(layer, state ? 'visible' : 'none'); + })); + + _defineProperty(this, "showSource", arrayify(function (source) { + this.setVisibility(this.layersBySource(source), 'visible'); + })); + + _defineProperty(this, "hideSource", arrayify(function (source) { + this.setVisibility(this.layersBySource(source), 'none'); + })); + + _defineProperty(this, "toggleSource", arrayify(function (sourceId, state) { + this.setVisibility(this.layersBySource(sourceId), state ? 'visible' : 'none'); + })); + + _defineProperty(this, "setFilter", arrayify(function (layer, filter) { + this.map.setFilter(layer, filter); + })); + + _defineProperty(this, "removeSource", arrayify(function (source) { + // remove layers that use this source first + const layers = this.layersBySource(source); + this.removeLayer(layers); + + if (this.map.getSource(source)) { + this.map.removeSource(source); + } + })); + + _defineProperty(this, "setLayerSource", arrayify(function (layerId, source, sourceLayer) { + const oldLayers = this.map.getStyle().layers; + const layerIndex = oldLayers.findIndex(l => l.id === layerId); + const layerDef = oldLayers[layerIndex]; + const before = oldLayers[layerIndex + 1] && oldLayers[layerIndex + 1].id; + layerDef.source = source; + + if (sourceLayer) { + layerDef['source-layer'] = sourceLayer; + } else if (sourceLayer !== undefined) { + delete layerDef['source-layer']; + } + + this.map.removeLayer(layerId); + + this._mapAddLayerBefore(layerDef, before); + })); + } + + /** Initialises Map-GL-Utils on existing map object. + @param mapgl Mapbox-GL-JS or Maplibre-GL-JS library. Only needed for later use by `hoverPopup()` etc. + @returns Initialised MapGlUtils object. + */ + static init(map, mapgl) { + map.U = new MapGlUtils(); + map.U._mapgl = mapgl; + map.U.map = map; + return map.U; + } + + static async newMap(mapboxgl, params = {}, //hrm should be MapOptions but that type seems incomplete? + options = {}) { + function addLayers(style, layers = []) { + style.layers = [...style.layers, // $FlowFixMe[incompatible-type] + ...layers.map(l => this.layerStyle(l))]; + } + + function addSources(style, sources = {}) { + // sources don't need any special treatment? + style.sources = { ...style.sources, + ...sources + }; + } + + function transformStyle(style, transformFunc = StyleSpecification => StyleSpecification) { + style = transformFunc(style); + } + + function mixStyles(style, mixStyles = {}) { + Object.keys(mixStyles).forEach(sourceId => { + const layers = mixStyles[sourceId].layers; + delete mixStyles[sourceId].layers; + style.sources[sourceId] = mixStyles[sourceId]; + style.layers = [...style.layers, ...layers.map(l => this.layerStyle({ + source: sourceId, + ...l + }))]; + }); + } + + if (!params.style) { + params.style = { + version: 8, + layers: [], + sources: {} + }; + } + + if (options.addLayers || options.addSources || options.transformStyle || options.mixStyles) { + let styleParam = params.style; + let style; + + if (typeof styleParam === 'string') { + const styleUrl = styleParam.replace(/^mapbox:\/\/styles\//, 'https://api.mapbox.com/styles/v1/'); + const response = await fetch(styleUrl); + style = await response.json(); + } else { + style = styleParam; + } + + const u = new MapGlUtils(); + addLayers.call(u, style, options.addLayers); + addSources(style, options.addSources); + transformStyle(style, options.transformStyle); + mixStyles.call(u, style, options.mixStyles); + params.style = style; + } + + const map = new mapboxgl.Map(params); + MapGlUtils.init(map, mapboxgl); + return map; + } + /** Sets Map's cursor to 'pointer' whenever the mouse is over these layers. + @returns A function to remove the handler. + */ + + + hoverPointer(layerOrLayers) { + const layers = resolveArray(layerOrLayers, this.map); + + const mouseenter = e => this.map.getCanvas().style.cursor = 'pointer'; + + const mouseleave = e => { + // don't de-hover if we're still over a different relevant layer + if (this.map.queryRenderedFeatures(e.point, { + layers + }).length === 0) { + this.map.getCanvas().style.cursor = oldCursor; + } + }; + + const oldCursor = this.map.getCanvas().style.cursor; + + for (const layer of layers) { + this.map.on('mouseleave', layer, mouseleave); + this.map.on('mouseenter', layer, mouseenter); + } + + return () => { + for (const layer of layers) { + this.map.off('mouseenter', layer, mouseenter); + this.map.off('mouseleave', layer, mouseleave); + } + + this.map.getCanvas().style.cursor = oldCursor; + }; + } + /** + Updates feature-state of features in the connected source[s] whenever hovering over a feature in these layers. + @param layer Layer(s) to add handler to. + @param {string|Array} [source] Source whose features will be updated. If not provided, use the source defined for the layer. + @param {string} [sourceLayer] Source layer (if using vector source) + */ + + + /** Show a popup whenever hovering over a feature in these layers. + @param {string|Array|RegExp|function} layers Layers to attach handler to. + @param htmlFunc Function that receives feature and popup, returns HTML. + @param {Object} popupOptions Options passed to `Popup()` to customise popup. + @param {string} showEvent mouse event to trigger the popup, defaults to "mouseenter" + @example hoverPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { anchor: 'left' }); + */ + hoverPopup(layers, htmlFunc, popupOptions = {}, showEvent = 'mouseenter') { + if (!this._mapgl) { + throw 'Mapbox GL JS or MapLibre GL JS object required when initialising'; + } + + const popup = new this._mapgl.Popup({ + closeButton: false, + ...popupOptions + }); + return arrayifyAndOff(function (layer, htmlFunc) { + const mouseenter = e => { + if (e.features[0]) { + popup.setLngLat(e.lngLat); + popup.setHTML(htmlFunc(e.features[0], popup)); + popup.addTo(this.map); + } + }; + + const mouseout = e => { + popup.remove(); + }; + + this.map.on(showEvent, layer, mouseenter); + this.map.on('mouseout', layer, mouseout); + return () => { + this.map.off(showEvent, layer, mouseenter); + this.map.off('mouseout', layer, mouseout); + mouseout(); + }; + }).call(this, layers, htmlFunc); + } + /** Show a popup whenever a feature in these layers is clicked. + @param {string|Array|RegExp|function} layers Layers to attach handler to. + @param htmlFunc Function that receives feature and popup, returns HTML. + @param {Object} popupOptions Options passed to `Popup()` to customise popup. + @returns A function that removes the handler. + @example clickPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { maxWidth: 500 }); + */ + + + clickPopup(layers, htmlFunc, popupOptions = {}) { + if (!this._mapgl) { + throw 'Mapbox GL JS or Maplibre GL JS object required when initialising'; + } + + const popup = new this._mapgl.Popup({ ...popupOptions + }); + return arrayifyAndOff(function (layer, htmlFunc) { + const click = e => { + if (e.features[0]) { + popup.setLngLat(e.features[0].geometry.coordinates.slice()); + popup.setHTML(htmlFunc(e.features[0], popup)); + popup.addTo(this.map); + } + }; + + this.map.on('click', layer, click); + return () => this.map.off('click', layer, click); + }).call(this, layers, htmlFunc); + } + /** Fire a callback whenever a feature in these layers is clicked. + @param {string|Array|RegExp|function} layers Layers to attach handler to. + @param {function} cb Callback that receives event with .features property + @returns A function that removes the handler. + */ + + + /** + Detects a click in the first of a series of layers given, and fires a callback. + @param {string|Array|RegExp|function} layers Layers to attach handler to. + @param cb Callback, receives `{ event, layer, feature, features }`. + @param noMatchCb Callback when a click happens that misses all these layers. Receives `{ event }`. + @returns A function to remove the handler. + */ + clickOneLayer(layerRef, cb, noMatchCb) { + const layers = resolveArray(layerRef, this.map); + + const click = e => { + let match = false; + + for (const layer of layers) { + const features = this.map.queryRenderedFeatures(e.point, { + layers: [layer] + }); + + if (features[0]) { + try { + cb({ + event: e, + layer, + feature: features[0], + features + }); + } finally { + match = true; + break; + } + } + } + + if (!match && noMatchCb) { + noMatchCb(e); + } + }; + + this.map.on('click', click); + return () => this.map.off('click', click); + } + /** + Fires a callback when mouse hovers over a feature in these layers. + @param {string|Array|RegExp|function} layers Layers to attach handler to. + @returns A function to remove the handler. + */ + + + _mapAddLayerBefore(layerDef, beforeLayerId) { + if (beforeLayerId) { + this.map.addLayer(layerDef, beforeLayerId); + } else { + this.map.addLayer(layerDef); + } + } + /** Adds a layer, given an id, source, type, and properties. + */ + + + addLayer(id, source, type, props, before) { + this._mapAddLayerBefore(this.layerStyle(id, source, type, props), before); + + return this._makeSource(source); + } // TODO deprecate/remove? + + + add(id, source, type, props, before) { + this._mapAddLayerBefore( // $FlowFixMe// technically this doesn't work for layer of type 'background' + { ...this.properties(props), + id, + type, + source: parseSource(source) + }, before); + + if (typeof source === 'string') { + return this._makeSource(source); + } + } + + setLayer(layerId, source, type, props, before) { + const layerDef = this.layerStyle(layerId, source, type, props); + const style = this.map.getStyle(); + const layerIndex = style.layers.findIndex(l => l.id === layerDef.id); + style.layers.findIndex(l => l.id === before); + + { + if (layerIndex >= 0) { + this.map.removeLayer(layerDef.id); + let readdBefore = before; + + if (!before && style.layers[layerIndex + 1]) { + readdBefore = style.layers[layerIndex + 1].id; + } + + this.map.addLayer(layerDef, readdBefore); + } else { + this.map.addLayer(layerDef, before || undefined); + } + } + + return this._makeSource(source); + } + + // The bodies of these functions are added later by `makeAddLayer` + + /** Adds a layer of type `line`.*/ + addLineLayer(id, props, before) {} + /** Adds a layer of type `fill`.*/ + + + addFillLayer(id, props, before) {} + /** Adds a layer of type `circle`.*/ + + + addCircleLayer(id, props, before) {} + /** Adds a layer of type `symbol`.*/ + + + addSymbolLayer(id, props, before) {} + /** Adds a layer of type `video`.*/ + + + addVideoLayer(id, props, before) {} + /** Adds a layer of type `raster`.*/ + + + addRasterLayer(id, props, before) {} + /** Adds a layer of type `fill-extrusion`.*/ + + + addFillExtrusionLayer(id, props, before) {} + /** Adds a layer of type `heatmap`.*/ + + + addHeatmapLayer(id, props, before) {} + /** Adds a layer of type `hillshade`.*/ + + + addHillshadeLayer(id, props, before) {} + /** Create a GeoJSON layer. */ + + + addGeoJSONSource(id, geojson = { + type: 'FeatureCollection', + features: [] + }, props) { + return this.addSource(id, { + type: 'geojson', + data: geojson, + ...props + }); + } + + addGeoJSON(id, geojson = { + type: 'FeatureCollection', + features: [] + }, props) { + return this.addGeoJSONSource(id, geojson, props); + } + + addSource(id, sourceDef) { + const style = this.map.getStyle(); + style.sources[id] = sourceDef; + this.map.setStyle(style); + return this._makeSource(id); + } + + layersBySource(source) { + return this.map.getStyle().layers.filter(l => l.source === source).map(l => l.id); + } + /** Adds a `vector` source + @param sourceId ID of the new source. + @param {string} [data] Optional URL of source tiles (.../{z}/{x}/{y}...), mapbox:// URL or TileJSON endpoint. + @param {object} props Properties defining the source, per the style spec. + @example addVector('mysource', 'http://example.com/tiles/{z}/{x}/{y}.pbf', { maxzoom: 13 }); + */ + + + addVectorSource(sourceId, props, extraProps = {}) { + if (typeof props === 'string') { + if (props.match(/\{z\}/)) { + return this.addSource(sourceId, { ...extraProps, + type: 'vector', + tiles: [props] + }); + } else { + // mapbox://, http://.../index.json + return this.addSource(sourceId, { ...extraProps, + type: 'vector', + url: props + }); + } + } else { + return this.addSource(sourceId, { ...props, + type: 'vector' + }); + } + } + + addVector(sourceId, props, extraProps = {}) { + return this.addVectorSource(sourceId, props, extraProps); + } + /** Adds a `raster` source + @param sourceId ID of the new source. + @param {object} props Properties defining the source, per the style spec. + */ + + + addRasterSource(sourceId, props) { + return this.addSource(sourceId, { ...props, + type: 'raster' + }); + } + /** Adds a `raster-dem` source + @param sourceId ID of the new source. + @param {object} props Properties defining the source, per the style spec. + */ + + + addRasterDemSource(sourceId, props) { + return this.addSource(sourceId, { ...props, + type: 'raster-dem' + }); + } + /** Adds a `raster` source + @param sourceId ID of the new source. + @param {object} props Properties defining the source, per the style spec. + */ + + + addRasterSource(sourceId, props) { + return this.addSource(sourceId, { ...props, + type: 'raster' + }); + } + /** Adds an `image` source + @param sourceId ID of the new source. + @param {object} props Properties defining the source, per the style spec. + */ + + + addImageSource(sourceId, props) { + return this.addSource(sourceId, { ...props, + type: 'image' + }); + } + /** Adds a `video` source + @param sourceId ID of the new source. + @param {object} props Properties defining the source, per the style spec. + */ + + + addVideoSource(sourceId, props) { + return this.addSource(sourceId, { ...props, + type: 'video' + }); + } + /** Sets a paint or layout property on one or more layers. + @example setProperty(['buildings-fill', 'parks-fill'], 'fillOpacity', 0.5) + */ + + + /** Converts a set of properties in pascalCase or kebab-case into a layer objectwith layout and paint properties. */ + properties(props) { + if (!props) { + return undefined; + } + + const out = {}, + which = { + paint: {}, + layout: {}, + other: {} + }; + Object.keys(props).forEach(prop => { + const kprop = kebabCase(prop); + which[whichProp(kprop)][kprop] = props[prop]; + }); + + if (Object.keys(which.paint).length) { + out.paint = which.paint; + } + + if (Object.keys(which.layout).length) { + out.layout = which.layout; + } + + Object.assign(out, which.other); + return out; + } // layerStyle([id,] [source,] [type,] props) + // TODO somehow make this type safe. + + + layerStyle(...args) { + const [id, source, type] = args; + const props = args.find(arg => typeof arg === 'object' && !Array.isArray(arg)); + const ret = typeof props === 'object' ? this.properties(props) || {} : {}; + if (typeof id === 'string') ret.id = id; + if (typeof source === 'string') ret.source = source; + if (typeof type === 'string') ret.type = type; + return ret; + } + /** Gets the layer definition for a given layer id, as per the style spec.. + */ + + + getLayerStyle(layerId) { + return this.map.getStyle().layers.find(l => l.id === layerId); + } + + /** Replaces the current data for a GeoJSON layer. + @param sourceId Id of the source being updated. + @param {GeoJSON} [data] GeoJSON object to set. If not provided, defaults to an empty FeatureCollection. + */ + setData(sourceId, data = { + type: 'FeatureCollection', + features: [] + }) { + this.map.getSource(sourceId).setData(data); + } + /** Makes the given layers visible. + @param {string|Array|RegExp|function} Layer to toggle. + */ + + + /** Callback that fires when map loads, or immediately if map is already loaded. + @returns {Promise} Promise, if callback not provided. + */ + onLoad(cb) { + if (!cb) { + return new Promise(resolve => this.onLoad(resolve)); + } else { + if (this.map.loaded() || this._loaded) { + cb(); + } else { + this.map.once('load', () => { + this._loaded = true; + cb(); + }); + } + } + } + /** Set a property on the style's root, such as `light` or `transition`. */ + + + setRootProperty(propName, val) { + const style = this.map.getStyle(); + style[kebabCase(propName)] = val; + this.map.setStyle(style); + } + /** Sets root transition property. + @example setTransition({ duration: 500, delay: 100 }) + */ + + + setTransition(val) { + this.setRootProperty('transition', val); + } + /** Adds an image for use as a symbol layer, from a URL. + @example loadImage('marker', '/assets/marker-pin@2x.png', { pixelRatio: 2}) + */ + + + loadImage(id, url, options) { + if (typeof url === 'string' + /* && url.match(/\.[a-z]+$/)*/ + ) { + return new Promise((resolve, reject) => { + this.map.loadImage(url, (error, image) => { + if (error) { + console.error(`Error loading image ${url}`, error); + reject(`Error loading image ${url}`); + } else { + this.map.addImage(id, image, options); + resolve(id); + } + }); + }); + } else { + return this.map.addImage(id, url, options); + } + } + + lockOrientation() { + this.map.touchZoomRotate.disableRotation(); + this.map.dragRotate.disable(); + } + /** Gets array of font names in use, determined by traversing style. Does not detect fonts in all possible situations. + @returns {Array[string]} */ + + + fontsInUse() { + // TODO add tests + // TODO: find fonts burried within ['format', ... { 'text-font': ... }] expressions + function findLiterals(expr) { + if (Array.isArray(expr)) { + if (expr[0] === 'literal') { + /// + fonts.push(...expr[1]); + } else { + expr.forEach(findLiterals); + } + } + } + + let fonts = []; + const fontExprs = this.map.getStyle().layers.map(l => l.layout && l.layout['text-font']).filter(Boolean); + + for (const fontExpr of fontExprs) { + // if top level expression is an array of strings, it's hopefully ['Arial', ...] and not ['get', 'font'] + if (fontExpr.stops) { + // old-school base/stops + // TODO verify we have got all the cases + try { + fonts.push(...fontExpr.stops.flat().filter(Array.isArray).flat()); + } catch { + console.log("Couldn't process font expression:", fontExpr); + } + } else if (fontExpr.every(f => typeof f === 'string')) { + fonts.push(...fontExpr); + } else { + findLiterals(fontExpr); + } + } + + return [...new Set(fonts)]; + } + + _makeSource(sourceId) { + // returns an object on which we can call .addLine() etc. + const out = new MapGlUtils(); + out.map = this.map; + out._mapgl = this._mapgl; + layerTypes.forEach(function (type) { + makeAddLayer(type, out, sourceId); + }); + return out; + } + +} // idempotent version + + +const makeAddLayer = (layerType, obj, fixedSource) => { + let func; + + if (fixedSource) { + func = function (id, options, before) { + return this.setLayer(id, fixedSource, layerType, options, before); + }; + } else { + func = function (id, source, options, before) { + return this.setLayer(id, source, layerType, options, before); + }; + } + + const upType = upperCamelCase(layerType); //$FlowFixMe[prop-missing] + + obj[`add${upType}`] = func; //$FlowFixMe[prop-missing] + + obj[`add${upType}Layer`] = func; +}; // Object.assign(Utils.prototype, UtilsExtra); + + +function initClass(U) { + const makeSetProp = (prop, setPropFunc) => { + const funcName = 'set' + upperCamelCase(prop); //$FlowFixMe[prop-missing] + + U[funcName] = arrayify(function (layer, value) { + return this.map[setPropFunc](layer, prop, value); + }); + }; + + const makeGetProp = (prop, getPropFunc) => { + const funcName = 'get' + upperCamelCase(prop); //$FlowFixMe[prop-missing] + + U[funcName] = arrayify(function (layer) { + return this.map[getPropFunc](layer, prop); + }); + }; + + + U.update = U.setData; // deprecated + // Turn every property into a 'setTextSize()', 'setLineColor()' etc. + + allProps.paints.forEach(prop => makeSetProp(prop, 'setPaintProperty')); + allProps.layouts.forEach(prop => makeSetProp(prop, 'setLayoutProperty')); + allProps.paints.forEach(prop => makeGetProp(prop, 'getPaintProperty')); + allProps.layouts.forEach(prop => makeGetProp(prop, 'getLayoutProperty')); + layerTypes.forEach(layerType => makeAddLayer(layerType, U)); +} + +const U = MapGlUtils.prototype; +initClass(U); + +export default MapGlUtils; From 41fb3a927369b91678eaab46abf0c1ecc1958099 Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Tue, 31 May 2022 20:40:28 -0600 Subject: [PATCH 05/11] Test mock --- src/index.test.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/index.test.js b/src/index.test.js index c4859b4..e8b6dd9 100644 --- a/src/index.test.js +++ b/src/index.test.js @@ -979,6 +979,16 @@ describe('Hook functions return "remove" handlers', () => { expect(map.on).toHaveBeenCalledTimes(4); expect(map.off).toHaveBeenCalledTimes(4); }); + test('hoverPopup on mousemove', () => { + map.U.addGeoJSON('source'); + map.U.addLine('layer', 'source'); + const remove = map.U.hoverPopup('layer', f => f.properties.name, {}, 'mousemove'); + expect(map._handlers.mousemove).toBeDefined(); + expect(map._handlers.mouseout).toBeDefined(); + remove(); + expect(map._handlers.mousemove).not.toBeDefined(); + expect(map._handlers.mouseout).not.toBeDefined(); + }); test('clickPopup', () => { map.U.addGeoJSON('source'); map.U.addLine('layer', 'source'); From 4f8660586cbd3cbf244da6397dde223b652388a7 Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Tue, 31 May 2022 23:03:11 -0600 Subject: [PATCH 06/11] Add sample usage of the hoverPopup showEvent arg --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e0760c2..1d6b9a4 100644 --- a/README.md +++ b/README.md @@ -220,6 +220,10 @@ map.U.hoverFeatureState('mylayer', 'mysource', 'mysourcelayer', map.U.hoverPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { anchor: 'left' }); map.U.clickPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { maxWidth: 500 }); +// Show the popup on 'mousemove' instead of 'mouseenter' so it changes when moving between immediately-adjacent +// features in the same layer, or follows the pointer when hovering area features. +map.U.hoverPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, {}, 'mousemove'); + // clickLayer() is like .on('click)', but can take an array and adds a 'features' member // to the event, for what got clicked on. map.U.clickLayer(['towns', 'town-labels'], e => panel.selectedId = e.features[0].id); From e810269789ae3027db4aaa648082864f0485c104 Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Wed, 1 Jun 2022 07:53:07 -0600 Subject: [PATCH 07/11] Revert "Merge branch 'master' into hoverPopup-mousemove" This reverts commit d048c9f0cf17073ef5b364d79eb12b823b5f863c, reversing changes made to 4f8660586cbd3cbf244da6397dde223b652388a7. --- .gitignore | 1 + babel.config.json | 3 - dist/index.esm.js | 999 ---------------------------------------------- package.json | 3 +- yarn.lock | 170 -------- 5 files changed, 2 insertions(+), 1174 deletions(-) delete mode 100644 babel.config.json delete mode 100644 dist/index.esm.js diff --git a/.gitignore b/.gitignore index 2112a67..c01d11b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /coverage/ /.vscode/launch.json +/dist/ /yarn-error.log /commonjs/ /umd/ diff --git a/babel.config.json b/babel.config.json deleted file mode 100644 index 65269a9..0000000 --- a/babel.config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-modules-commonjs"] -} diff --git a/dist/index.esm.js b/dist/index.esm.js deleted file mode 100644 index 2828756..0000000 --- a/dist/index.esm.js +++ /dev/null @@ -1,999 +0,0 @@ -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -var allProps = { - paints: 'fill-antialias,fill-opacity,fill-color,fill-outline-color,fill-translate,fill-translate-anchor,fill-pattern,fill-extrusion-opacity,fill-extrusion-color,fill-extrusion-translate,fill-extrusion-translate-anchor,fill-extrusion-pattern,fill-extrusion-height,fill-extrusion-base,fill-extrusion-vertical-gradient,line-opacity,line-color,line-translate,line-translate-anchor,line-width,line-gap-width,line-offset,line-blur,line-dasharray,line-pattern,line-gradient,circle-radius,circle-color,circle-blur,circle-opacity,circle-translate,circle-translate-anchor,circle-pitch-scale,circle-pitch-alignment,circle-stroke-width,circle-stroke-color,circle-stroke-opacity,heatmap-radius,heatmap-weight,heatmap-intensity,heatmap-color,heatmap-opacity,icon-opacity,icon-color,icon-halo-color,icon-halo-width,icon-halo-blur,icon-translate,icon-translate-anchor,text-opacity,text-color,text-halo-color,text-halo-width,text-halo-blur,text-translate,text-translate-anchor,raster-opacity,raster-hue-rotate,raster-brightness-min,raster-brightness-max,raster-saturation,raster-contrast,raster-resampling,raster-fade-duration,hillshade-illumination-direction,hillshade-illumination-anchor,hillshade-exaggeration,hillshade-shadow-color,hillshade-highlight-color,hillshade-accent-color,background-color,background-pattern,background-opacity,sky-type,sky-atmosphere-sun,sky-atmosphere-sun-intensity,sky-gradient-center,sky-gradient-radius,sky-gradient,sky-atmosphere-halo-color,sky-atmosphere-color,sky-opacity'.split(','), - layouts: 'visibility,fill-sort-key,circle-sort-key,line-cap,line-join,line-miter-limit,line-round-limit,line-sort-key,symbol-placement,symbol-spacing,symbol-avoid-edges,symbol-sort-key,symbol-z-order,icon-allow-overlap,icon-ignore-placement,icon-optional,icon-rotation-alignment,icon-size,icon-text-fit,icon-text-fit-padding,icon-image,icon-rotate,icon-padding,icon-keep-upright,icon-offset,icon-anchor,icon-pitch-alignment,text-pitch-alignment,text-rotation-alignment,text-field,text-font,text-size,text-max-width,text-line-height,text-letter-spacing,text-justify,text-radial-offset,text-variable-anchor,text-anchor,text-max-angle,text-writing-mode,text-rotate,text-padding,text-keep-upright,text-transform,text-offset,text-allow-overlap,text-ignore-placement,text-optional'.split(',') -}; - -const kebabCase = s => s.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`); - -const upperCamelCase = s => s.replace(/(^|-)([a-z])/g, (x, y, l) => `${l.toUpperCase()}`); - -function isPaintProp(prop) { - return allProps.paints.indexOf(prop) >= 0; -} - -function isLayoutProp(prop) { - return allProps.layouts.indexOf(prop) >= 0; -} - -function whichProp(prop) { - if (allProps.paints.indexOf(prop) >= 0) { - return 'paint'; - } - - if (allProps.layouts.indexOf(prop) >= 0) { - return 'layout'; - } - - return 'other'; -} - -function parseSource(source) { - if (String(source).match(/\.(geo)?json/) || source.type === 'Feature' || source.type === 'FeatureCollection') { - return { - type: 'geojson', - data: source - }; - } else if (String(source).match(/^mapbox:\/\//)) { - return { - type: 'vector', - url: source - }; - } else { - return source; - } -} - -// so basically any -// turn a thing, an array of things, a regex or a filter function, into an array -const resolveArray = (things, map) => { - if (Array.isArray(things)) { - return things; - } else if (things instanceof RegExp) { - return map.getStyle().layers.map(l => l.id).filter(id => id.match(things)); - } else if (things instanceof Function) { - return map.getStyle().layers.filter(layer => things(layer)).map(l => l.id); - } else { - return [things]; - } -}; - -// Magically turn a function that works on one layer into one that works on multiple layers -// specified as: an array, a regex (on layer id), or filter function (on layer definition) - -/* -Cannot return function because in the first argument: [incompatible-return] Either function type [1] is incompatible with `RegExp` [2]. -Or `FillLayerSpecification` [3] is incompatible with `RegExp` [2] in the first argument. -Or a call signature declaring the expected parameter / return type is missing in `FillLayerSpecification` [3] but exists in function type [4] in the first argument. (index.js:131:12)flow -*/ -const arrayify = f => { - return function (thingOrThings, ...args) { - const things = resolveArray(thingOrThings, this.map); - return things.forEach(t => f.call(this, t, ...args)); - }; -}; - -// todo -// assuming each function returns an 'off' handler, returns a function that calls them all -const arrayifyAndOff = f => { - return function (thingOrThings, ...args) { - const things = resolveArray(thingOrThings, this.map); - const offs = things.map(t => f.call(this, t, ...args)); - return () => offs.forEach(off => off()); - }; -}; - -const layerTypes = ['line', 'fill', 'circle', 'symbol', 'video', 'raster', 'fill-extrusion', 'heatmap', 'hillshade']; // $FlowFixMe[prop-missing] - -class MapGlUtils { - constructor() { - _defineProperty(this, "_loaded", false); - - _defineProperty(this, "_mapgl", null); - - _defineProperty(this, "map", null); - - _defineProperty(this, "hoverFeatureState", arrayifyAndOff(function (layer, source, sourceLayer, enterCb, leaveCb) { - if (Array.isArray(source)) { - // assume we have array of [source, sourceLayer] - let removeFuncs = source.map(([source, sourceLayer]) => this.hoverFeatureState(layer, source, sourceLayer)); - return () => removeFuncs.forEach(f => f()); - } - - if (source === undefined) { - const l = this.getLayerStyle(layer); - source = l.source; - sourceLayer = l['source-layer']; - } - - let featureId; - - const setHoverState = state => { - if (featureId) { - this.map.setFeatureState({ - source, - sourceLayer, - id: featureId - }, { - hover: state - }); - } - }; - - const mousemove = e => { - const f = e.features[0]; - - if (f && f.id === featureId) { - return; - } - - setHoverState(false); - if (!f) return; - - if (featureId && leaveCb) { - leaveCb({ ...e, - oldFeatureId: featureId - }); - } - - featureId = f.id; - setHoverState(true); - - if (enterCb) { - enterCb(e); - } - }; - - const mouseleave = e => { - setHoverState(false); - - if (e && e.oldFeatureId) { - e.oldFeatureId = featureId; - } - - featureId = undefined; - - if (leaveCb) { - leaveCb(e); - } - }; - - this.map.on('mousemove', layer, mousemove); - this.map.on('mouseleave', layer, mouseleave); - return () => { - this.map.off('mousemove', layer, mousemove); - this.map.off('mouseleave', layer, mouseleave); - mouseleave(); - }; - })); - - _defineProperty(this, "clickLayer", arrayifyAndOff(function (layer, cb) { - const click = e => { - e.features = this.map.queryRenderedFeatures(e.point, { - layers: [layer] - }); - cb(e); - }; - - this.map.on('click', layer, click); - return () => this.map.off('click', layer, click); - })); - - _defineProperty(this, "hoverLayer", arrayifyAndOff(function (layer, cb) { - const click = e => { - e.features = this.map.queryRenderedFeatures(e.point, { - layers: [layer] - }); - cb(e); - }; - - this.map.on('click', layer, click); - return () => this.map.off('click', layer, click); - })); - - _defineProperty(this, "removeLayer", arrayify(function (layer) { - const swallowError = data => { - if (!data.error.message.match(/does not exist/)) { - console.error(data.error); - } - }; - - this.map.once('error', swallowError); - this.map.removeLayer(layer); - this.map.off('error', swallowError); - })); - - _defineProperty(this, "setProperty", arrayify(function (layer, prop, value) { - if (typeof prop === 'object') { - Object.keys(prop).forEach(k => this.setProperty(layer, k, prop[k])); - } else { - const kprop = kebabCase(prop); - - if (isPaintProp(kprop)) { - this.map.setPaintProperty(layer, kprop, value); - } else if (isLayoutProp(kprop)) { - this.map.setLayoutProperty(layer, kprop, value); - } else ; - } - })); - - _defineProperty(this, "setLayerStyle", arrayify(function (layer, style) { - const clearProps = (oldObj = {}, newObj = {}) => Object.keys(oldObj).forEach(key => { - if (!(key in newObj)) { - this.setProperty(layer, key, undefined); - } - }); - - if (typeof layer === 'object' && !Array.isArray(layer) && layer.id && !style) { - style = layer; // $FlowFixMe[incompatible-type] - // $FlowFixMe[prop-missing] - - layer = style.id; - } - - const oldStyle = this.getLayerStyle(layer); - const newStyle = this.properties(style); - clearProps(oldStyle.paint, newStyle.paint); - clearProps(oldStyle.layout, newStyle.layout); // Hmm, this gets murky, what exactly is meant to happen with non-paint, non-layout props? - - this.setProperty(layer, { ...newStyle.paint, - ...newStyle.layout - }); - })); - - _defineProperty(this, "show", arrayify(function (layer) { - this.setVisibility(layer, 'visible'); - })); - - _defineProperty(this, "hide", arrayify(function (layer) { - this.setVisibility(layer, 'none'); - })); - - _defineProperty(this, "toggle", arrayify(function (layer, state) { - this.setVisibility(layer, state ? 'visible' : 'none'); - })); - - _defineProperty(this, "showSource", arrayify(function (source) { - this.setVisibility(this.layersBySource(source), 'visible'); - })); - - _defineProperty(this, "hideSource", arrayify(function (source) { - this.setVisibility(this.layersBySource(source), 'none'); - })); - - _defineProperty(this, "toggleSource", arrayify(function (sourceId, state) { - this.setVisibility(this.layersBySource(sourceId), state ? 'visible' : 'none'); - })); - - _defineProperty(this, "setFilter", arrayify(function (layer, filter) { - this.map.setFilter(layer, filter); - })); - - _defineProperty(this, "removeSource", arrayify(function (source) { - // remove layers that use this source first - const layers = this.layersBySource(source); - this.removeLayer(layers); - - if (this.map.getSource(source)) { - this.map.removeSource(source); - } - })); - - _defineProperty(this, "setLayerSource", arrayify(function (layerId, source, sourceLayer) { - const oldLayers = this.map.getStyle().layers; - const layerIndex = oldLayers.findIndex(l => l.id === layerId); - const layerDef = oldLayers[layerIndex]; - const before = oldLayers[layerIndex + 1] && oldLayers[layerIndex + 1].id; - layerDef.source = source; - - if (sourceLayer) { - layerDef['source-layer'] = sourceLayer; - } else if (sourceLayer !== undefined) { - delete layerDef['source-layer']; - } - - this.map.removeLayer(layerId); - - this._mapAddLayerBefore(layerDef, before); - })); - } - - /** Initialises Map-GL-Utils on existing map object. - @param mapgl Mapbox-GL-JS or Maplibre-GL-JS library. Only needed for later use by `hoverPopup()` etc. - @returns Initialised MapGlUtils object. - */ - static init(map, mapgl) { - map.U = new MapGlUtils(); - map.U._mapgl = mapgl; - map.U.map = map; - return map.U; - } - - static async newMap(mapboxgl, params = {}, //hrm should be MapOptions but that type seems incomplete? - options = {}) { - function addLayers(style, layers = []) { - style.layers = [...style.layers, // $FlowFixMe[incompatible-type] - ...layers.map(l => this.layerStyle(l))]; - } - - function addSources(style, sources = {}) { - // sources don't need any special treatment? - style.sources = { ...style.sources, - ...sources - }; - } - - function transformStyle(style, transformFunc = StyleSpecification => StyleSpecification) { - style = transformFunc(style); - } - - function mixStyles(style, mixStyles = {}) { - Object.keys(mixStyles).forEach(sourceId => { - const layers = mixStyles[sourceId].layers; - delete mixStyles[sourceId].layers; - style.sources[sourceId] = mixStyles[sourceId]; - style.layers = [...style.layers, ...layers.map(l => this.layerStyle({ - source: sourceId, - ...l - }))]; - }); - } - - if (!params.style) { - params.style = { - version: 8, - layers: [], - sources: {} - }; - } - - if (options.addLayers || options.addSources || options.transformStyle || options.mixStyles) { - let styleParam = params.style; - let style; - - if (typeof styleParam === 'string') { - const styleUrl = styleParam.replace(/^mapbox:\/\/styles\//, 'https://api.mapbox.com/styles/v1/'); - const response = await fetch(styleUrl); - style = await response.json(); - } else { - style = styleParam; - } - - const u = new MapGlUtils(); - addLayers.call(u, style, options.addLayers); - addSources(style, options.addSources); - transformStyle(style, options.transformStyle); - mixStyles.call(u, style, options.mixStyles); - params.style = style; - } - - const map = new mapboxgl.Map(params); - MapGlUtils.init(map, mapboxgl); - return map; - } - /** Sets Map's cursor to 'pointer' whenever the mouse is over these layers. - @returns A function to remove the handler. - */ - - - hoverPointer(layerOrLayers) { - const layers = resolveArray(layerOrLayers, this.map); - - const mouseenter = e => this.map.getCanvas().style.cursor = 'pointer'; - - const mouseleave = e => { - // don't de-hover if we're still over a different relevant layer - if (this.map.queryRenderedFeatures(e.point, { - layers - }).length === 0) { - this.map.getCanvas().style.cursor = oldCursor; - } - }; - - const oldCursor = this.map.getCanvas().style.cursor; - - for (const layer of layers) { - this.map.on('mouseleave', layer, mouseleave); - this.map.on('mouseenter', layer, mouseenter); - } - - return () => { - for (const layer of layers) { - this.map.off('mouseenter', layer, mouseenter); - this.map.off('mouseleave', layer, mouseleave); - } - - this.map.getCanvas().style.cursor = oldCursor; - }; - } - /** - Updates feature-state of features in the connected source[s] whenever hovering over a feature in these layers. - @param layer Layer(s) to add handler to. - @param {string|Array} [source] Source whose features will be updated. If not provided, use the source defined for the layer. - @param {string} [sourceLayer] Source layer (if using vector source) - */ - - - /** Show a popup whenever hovering over a feature in these layers. - @param {string|Array|RegExp|function} layers Layers to attach handler to. - @param htmlFunc Function that receives feature and popup, returns HTML. - @param {Object} popupOptions Options passed to `Popup()` to customise popup. - @param {string} showEvent mouse event to trigger the popup, defaults to "mouseenter" - @example hoverPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { anchor: 'left' }); - */ - hoverPopup(layers, htmlFunc, popupOptions = {}, showEvent = 'mouseenter') { - if (!this._mapgl) { - throw 'Mapbox GL JS or MapLibre GL JS object required when initialising'; - } - - const popup = new this._mapgl.Popup({ - closeButton: false, - ...popupOptions - }); - return arrayifyAndOff(function (layer, htmlFunc) { - const mouseenter = e => { - if (e.features[0]) { - popup.setLngLat(e.lngLat); - popup.setHTML(htmlFunc(e.features[0], popup)); - popup.addTo(this.map); - } - }; - - const mouseout = e => { - popup.remove(); - }; - - this.map.on(showEvent, layer, mouseenter); - this.map.on('mouseout', layer, mouseout); - return () => { - this.map.off(showEvent, layer, mouseenter); - this.map.off('mouseout', layer, mouseout); - mouseout(); - }; - }).call(this, layers, htmlFunc); - } - /** Show a popup whenever a feature in these layers is clicked. - @param {string|Array|RegExp|function} layers Layers to attach handler to. - @param htmlFunc Function that receives feature and popup, returns HTML. - @param {Object} popupOptions Options passed to `Popup()` to customise popup. - @returns A function that removes the handler. - @example clickPopup('mylayer', f => `

${f.properties.Name}

${f.properties.Description}`, { maxWidth: 500 }); - */ - - - clickPopup(layers, htmlFunc, popupOptions = {}) { - if (!this._mapgl) { - throw 'Mapbox GL JS or Maplibre GL JS object required when initialising'; - } - - const popup = new this._mapgl.Popup({ ...popupOptions - }); - return arrayifyAndOff(function (layer, htmlFunc) { - const click = e => { - if (e.features[0]) { - popup.setLngLat(e.features[0].geometry.coordinates.slice()); - popup.setHTML(htmlFunc(e.features[0], popup)); - popup.addTo(this.map); - } - }; - - this.map.on('click', layer, click); - return () => this.map.off('click', layer, click); - }).call(this, layers, htmlFunc); - } - /** Fire a callback whenever a feature in these layers is clicked. - @param {string|Array|RegExp|function} layers Layers to attach handler to. - @param {function} cb Callback that receives event with .features property - @returns A function that removes the handler. - */ - - - /** - Detects a click in the first of a series of layers given, and fires a callback. - @param {string|Array|RegExp|function} layers Layers to attach handler to. - @param cb Callback, receives `{ event, layer, feature, features }`. - @param noMatchCb Callback when a click happens that misses all these layers. Receives `{ event }`. - @returns A function to remove the handler. - */ - clickOneLayer(layerRef, cb, noMatchCb) { - const layers = resolveArray(layerRef, this.map); - - const click = e => { - let match = false; - - for (const layer of layers) { - const features = this.map.queryRenderedFeatures(e.point, { - layers: [layer] - }); - - if (features[0]) { - try { - cb({ - event: e, - layer, - feature: features[0], - features - }); - } finally { - match = true; - break; - } - } - } - - if (!match && noMatchCb) { - noMatchCb(e); - } - }; - - this.map.on('click', click); - return () => this.map.off('click', click); - } - /** - Fires a callback when mouse hovers over a feature in these layers. - @param {string|Array|RegExp|function} layers Layers to attach handler to. - @returns A function to remove the handler. - */ - - - _mapAddLayerBefore(layerDef, beforeLayerId) { - if (beforeLayerId) { - this.map.addLayer(layerDef, beforeLayerId); - } else { - this.map.addLayer(layerDef); - } - } - /** Adds a layer, given an id, source, type, and properties. - */ - - - addLayer(id, source, type, props, before) { - this._mapAddLayerBefore(this.layerStyle(id, source, type, props), before); - - return this._makeSource(source); - } // TODO deprecate/remove? - - - add(id, source, type, props, before) { - this._mapAddLayerBefore( // $FlowFixMe// technically this doesn't work for layer of type 'background' - { ...this.properties(props), - id, - type, - source: parseSource(source) - }, before); - - if (typeof source === 'string') { - return this._makeSource(source); - } - } - - setLayer(layerId, source, type, props, before) { - const layerDef = this.layerStyle(layerId, source, type, props); - const style = this.map.getStyle(); - const layerIndex = style.layers.findIndex(l => l.id === layerDef.id); - style.layers.findIndex(l => l.id === before); - - { - if (layerIndex >= 0) { - this.map.removeLayer(layerDef.id); - let readdBefore = before; - - if (!before && style.layers[layerIndex + 1]) { - readdBefore = style.layers[layerIndex + 1].id; - } - - this.map.addLayer(layerDef, readdBefore); - } else { - this.map.addLayer(layerDef, before || undefined); - } - } - - return this._makeSource(source); - } - - // The bodies of these functions are added later by `makeAddLayer` - - /** Adds a layer of type `line`.*/ - addLineLayer(id, props, before) {} - /** Adds a layer of type `fill`.*/ - - - addFillLayer(id, props, before) {} - /** Adds a layer of type `circle`.*/ - - - addCircleLayer(id, props, before) {} - /** Adds a layer of type `symbol`.*/ - - - addSymbolLayer(id, props, before) {} - /** Adds a layer of type `video`.*/ - - - addVideoLayer(id, props, before) {} - /** Adds a layer of type `raster`.*/ - - - addRasterLayer(id, props, before) {} - /** Adds a layer of type `fill-extrusion`.*/ - - - addFillExtrusionLayer(id, props, before) {} - /** Adds a layer of type `heatmap`.*/ - - - addHeatmapLayer(id, props, before) {} - /** Adds a layer of type `hillshade`.*/ - - - addHillshadeLayer(id, props, before) {} - /** Create a GeoJSON layer. */ - - - addGeoJSONSource(id, geojson = { - type: 'FeatureCollection', - features: [] - }, props) { - return this.addSource(id, { - type: 'geojson', - data: geojson, - ...props - }); - } - - addGeoJSON(id, geojson = { - type: 'FeatureCollection', - features: [] - }, props) { - return this.addGeoJSONSource(id, geojson, props); - } - - addSource(id, sourceDef) { - const style = this.map.getStyle(); - style.sources[id] = sourceDef; - this.map.setStyle(style); - return this._makeSource(id); - } - - layersBySource(source) { - return this.map.getStyle().layers.filter(l => l.source === source).map(l => l.id); - } - /** Adds a `vector` source - @param sourceId ID of the new source. - @param {string} [data] Optional URL of source tiles (.../{z}/{x}/{y}...), mapbox:// URL or TileJSON endpoint. - @param {object} props Properties defining the source, per the style spec. - @example addVector('mysource', 'http://example.com/tiles/{z}/{x}/{y}.pbf', { maxzoom: 13 }); - */ - - - addVectorSource(sourceId, props, extraProps = {}) { - if (typeof props === 'string') { - if (props.match(/\{z\}/)) { - return this.addSource(sourceId, { ...extraProps, - type: 'vector', - tiles: [props] - }); - } else { - // mapbox://, http://.../index.json - return this.addSource(sourceId, { ...extraProps, - type: 'vector', - url: props - }); - } - } else { - return this.addSource(sourceId, { ...props, - type: 'vector' - }); - } - } - - addVector(sourceId, props, extraProps = {}) { - return this.addVectorSource(sourceId, props, extraProps); - } - /** Adds a `raster` source - @param sourceId ID of the new source. - @param {object} props Properties defining the source, per the style spec. - */ - - - addRasterSource(sourceId, props) { - return this.addSource(sourceId, { ...props, - type: 'raster' - }); - } - /** Adds a `raster-dem` source - @param sourceId ID of the new source. - @param {object} props Properties defining the source, per the style spec. - */ - - - addRasterDemSource(sourceId, props) { - return this.addSource(sourceId, { ...props, - type: 'raster-dem' - }); - } - /** Adds a `raster` source - @param sourceId ID of the new source. - @param {object} props Properties defining the source, per the style spec. - */ - - - addRasterSource(sourceId, props) { - return this.addSource(sourceId, { ...props, - type: 'raster' - }); - } - /** Adds an `image` source - @param sourceId ID of the new source. - @param {object} props Properties defining the source, per the style spec. - */ - - - addImageSource(sourceId, props) { - return this.addSource(sourceId, { ...props, - type: 'image' - }); - } - /** Adds a `video` source - @param sourceId ID of the new source. - @param {object} props Properties defining the source, per the style spec. - */ - - - addVideoSource(sourceId, props) { - return this.addSource(sourceId, { ...props, - type: 'video' - }); - } - /** Sets a paint or layout property on one or more layers. - @example setProperty(['buildings-fill', 'parks-fill'], 'fillOpacity', 0.5) - */ - - - /** Converts a set of properties in pascalCase or kebab-case into a layer objectwith layout and paint properties. */ - properties(props) { - if (!props) { - return undefined; - } - - const out = {}, - which = { - paint: {}, - layout: {}, - other: {} - }; - Object.keys(props).forEach(prop => { - const kprop = kebabCase(prop); - which[whichProp(kprop)][kprop] = props[prop]; - }); - - if (Object.keys(which.paint).length) { - out.paint = which.paint; - } - - if (Object.keys(which.layout).length) { - out.layout = which.layout; - } - - Object.assign(out, which.other); - return out; - } // layerStyle([id,] [source,] [type,] props) - // TODO somehow make this type safe. - - - layerStyle(...args) { - const [id, source, type] = args; - const props = args.find(arg => typeof arg === 'object' && !Array.isArray(arg)); - const ret = typeof props === 'object' ? this.properties(props) || {} : {}; - if (typeof id === 'string') ret.id = id; - if (typeof source === 'string') ret.source = source; - if (typeof type === 'string') ret.type = type; - return ret; - } - /** Gets the layer definition for a given layer id, as per the style spec.. - */ - - - getLayerStyle(layerId) { - return this.map.getStyle().layers.find(l => l.id === layerId); - } - - /** Replaces the current data for a GeoJSON layer. - @param sourceId Id of the source being updated. - @param {GeoJSON} [data] GeoJSON object to set. If not provided, defaults to an empty FeatureCollection. - */ - setData(sourceId, data = { - type: 'FeatureCollection', - features: [] - }) { - this.map.getSource(sourceId).setData(data); - } - /** Makes the given layers visible. - @param {string|Array|RegExp|function} Layer to toggle. - */ - - - /** Callback that fires when map loads, or immediately if map is already loaded. - @returns {Promise} Promise, if callback not provided. - */ - onLoad(cb) { - if (!cb) { - return new Promise(resolve => this.onLoad(resolve)); - } else { - if (this.map.loaded() || this._loaded) { - cb(); - } else { - this.map.once('load', () => { - this._loaded = true; - cb(); - }); - } - } - } - /** Set a property on the style's root, such as `light` or `transition`. */ - - - setRootProperty(propName, val) { - const style = this.map.getStyle(); - style[kebabCase(propName)] = val; - this.map.setStyle(style); - } - /** Sets root transition property. - @example setTransition({ duration: 500, delay: 100 }) - */ - - - setTransition(val) { - this.setRootProperty('transition', val); - } - /** Adds an image for use as a symbol layer, from a URL. - @example loadImage('marker', '/assets/marker-pin@2x.png', { pixelRatio: 2}) - */ - - - loadImage(id, url, options) { - if (typeof url === 'string' - /* && url.match(/\.[a-z]+$/)*/ - ) { - return new Promise((resolve, reject) => { - this.map.loadImage(url, (error, image) => { - if (error) { - console.error(`Error loading image ${url}`, error); - reject(`Error loading image ${url}`); - } else { - this.map.addImage(id, image, options); - resolve(id); - } - }); - }); - } else { - return this.map.addImage(id, url, options); - } - } - - lockOrientation() { - this.map.touchZoomRotate.disableRotation(); - this.map.dragRotate.disable(); - } - /** Gets array of font names in use, determined by traversing style. Does not detect fonts in all possible situations. - @returns {Array[string]} */ - - - fontsInUse() { - // TODO add tests - // TODO: find fonts burried within ['format', ... { 'text-font': ... }] expressions - function findLiterals(expr) { - if (Array.isArray(expr)) { - if (expr[0] === 'literal') { - /// - fonts.push(...expr[1]); - } else { - expr.forEach(findLiterals); - } - } - } - - let fonts = []; - const fontExprs = this.map.getStyle().layers.map(l => l.layout && l.layout['text-font']).filter(Boolean); - - for (const fontExpr of fontExprs) { - // if top level expression is an array of strings, it's hopefully ['Arial', ...] and not ['get', 'font'] - if (fontExpr.stops) { - // old-school base/stops - // TODO verify we have got all the cases - try { - fonts.push(...fontExpr.stops.flat().filter(Array.isArray).flat()); - } catch { - console.log("Couldn't process font expression:", fontExpr); - } - } else if (fontExpr.every(f => typeof f === 'string')) { - fonts.push(...fontExpr); - } else { - findLiterals(fontExpr); - } - } - - return [...new Set(fonts)]; - } - - _makeSource(sourceId) { - // returns an object on which we can call .addLine() etc. - const out = new MapGlUtils(); - out.map = this.map; - out._mapgl = this._mapgl; - layerTypes.forEach(function (type) { - makeAddLayer(type, out, sourceId); - }); - return out; - } - -} // idempotent version - - -const makeAddLayer = (layerType, obj, fixedSource) => { - let func; - - if (fixedSource) { - func = function (id, options, before) { - return this.setLayer(id, fixedSource, layerType, options, before); - }; - } else { - func = function (id, source, options, before) { - return this.setLayer(id, source, layerType, options, before); - }; - } - - const upType = upperCamelCase(layerType); //$FlowFixMe[prop-missing] - - obj[`add${upType}`] = func; //$FlowFixMe[prop-missing] - - obj[`add${upType}Layer`] = func; -}; // Object.assign(Utils.prototype, UtilsExtra); - - -function initClass(U) { - const makeSetProp = (prop, setPropFunc) => { - const funcName = 'set' + upperCamelCase(prop); //$FlowFixMe[prop-missing] - - U[funcName] = arrayify(function (layer, value) { - return this.map[setPropFunc](layer, prop, value); - }); - }; - - const makeGetProp = (prop, getPropFunc) => { - const funcName = 'get' + upperCamelCase(prop); //$FlowFixMe[prop-missing] - - U[funcName] = arrayify(function (layer) { - return this.map[getPropFunc](layer, prop); - }); - }; - - - U.update = U.setData; // deprecated - // Turn every property into a 'setTextSize()', 'setLineColor()' etc. - - allProps.paints.forEach(prop => makeSetProp(prop, 'setPaintProperty')); - allProps.layouts.forEach(prop => makeSetProp(prop, 'setLayoutProperty')); - allProps.paints.forEach(prop => makeGetProp(prop, 'getPaintProperty')); - allProps.layouts.forEach(prop => makeGetProp(prop, 'getLayoutProperty')); - layerTypes.forEach(layerType => makeAddLayer(layerType, U)); -} - -const U = MapGlUtils.prototype; -initClass(U); - -export default MapGlUtils; diff --git a/package.json b/package.json index 9d64d54..daebca4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "map-gl-utils", - "version": "0.43.0", + "version": "0.42.1", "description": "Utility functions for Mapbox GL JS or Maplibre GL JS", "main": "umd/index.min.js", "module": "dist/index.esm.js", @@ -23,7 +23,6 @@ "@babel/cli": "^7.8.7", "@babel/core": "^7.8.7", "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.2", "@babel/preset-env": "^7.14.2", "@babel/preset-flow": "^7.13.13", "@mapbox/mapbox-gl-style-spec": "^13.22", diff --git a/yarn.lock b/yarn.lock index eea08aa..5fbd2e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,13 +39,6 @@ dependencies: "@babel/highlight" "^7.16.0" -"@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" @@ -155,15 +148,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== - dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - "@babel/generator@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" @@ -272,11 +256,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" @@ -311,14 +290,6 @@ "@babel/template" "^7.16.0" "@babel/types" "^7.16.0" -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -362,13 +333,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" @@ -397,13 +361,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-module-transforms@^7.12.1": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" @@ -446,20 +403,6 @@ "@babel/traverse" "^7.14.2" "@babel/types" "^7.14.2" -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -488,11 +431,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-plugin-utils@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" @@ -546,13 +484,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -574,13 +505,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -602,11 +526,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -666,15 +585,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -707,11 +617,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== -"@babel/parser@^7.16.7", "@babel/parser@^7.18.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" - integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== - "@babel/parser@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" @@ -1116,16 +1021,6 @@ "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-systemjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" @@ -1370,15 +1265,6 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/template@^7.7.4", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -1444,22 +1330,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.18.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" - integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.2" - debug "^4.1.0" - globals "^11.1.0" - "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1493,14 +1363,6 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" -"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1679,38 +1541,6 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== - -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@mapbox/geojson-rewind@^0.5.0": version "0.5.1" resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz#adbe16dc683eb40e90934c51a5e28c7bbf44f4e1" From 7e41a6dfbb70f9ce10bdcd028fe4746d806d528a Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Wed, 1 Jun 2022 07:57:41 -0600 Subject: [PATCH 08/11] Copy yarn.lock over --- yarn.lock | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 5fbd2e9..2bdbfe4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,6 +39,13 @@ dependencies: "@babel/highlight" "^7.16.0" +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" @@ -148,6 +155,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + "@babel/generator@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" @@ -256,6 +272,11 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" @@ -290,6 +311,14 @@ "@babel/template" "^7.16.0" "@babel/types" "^7.16.0" +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -333,6 +362,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" @@ -361,6 +397,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-transforms@^7.12.1": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" @@ -403,6 +446,20 @@ "@babel/traverse" "^7.14.2" "@babel/types" "^7.14.2" +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -431,6 +488,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" @@ -484,6 +546,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -505,6 +574,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -526,6 +602,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -585,6 +666,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -617,6 +707,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== +"@babel/parser@^7.16.7", "@babel/parser@^7.18.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" + integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== + "@babel/parser@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" @@ -1021,6 +1116,16 @@ "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" @@ -1265,6 +1370,15 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/template@^7.7.4", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -1330,6 +1444,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.0": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" + integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.2" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1363,6 +1493,14 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" +"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1541,6 +1679,38 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mapbox/geojson-rewind@^0.5.0": version "0.5.1" resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz#adbe16dc683eb40e90934c51a5e28c7bbf44f4e1" @@ -7497,4 +7667,4 @@ yocto-queue@^0.1.0: zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" - integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== \ No newline at end of file From baefeaf79e26ab38f288f96af6dd4ada0f5dd452 Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Wed, 1 Jun 2022 07:58:31 -0600 Subject: [PATCH 09/11] Update yarn.lock --- yarn.lock | 172 +----------------------------------------------------- 1 file changed, 1 insertion(+), 171 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2bdbfe4..5fbd2e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,13 +39,6 @@ dependencies: "@babel/highlight" "^7.16.0" -"@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" @@ -155,15 +148,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== - dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - "@babel/generator@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" @@ -272,11 +256,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" @@ -311,14 +290,6 @@ "@babel/template" "^7.16.0" "@babel/types" "^7.16.0" -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -362,13 +333,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" @@ -397,13 +361,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-module-transforms@^7.12.1": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" @@ -446,20 +403,6 @@ "@babel/traverse" "^7.14.2" "@babel/types" "^7.14.2" -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -488,11 +431,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-plugin-utils@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" @@ -546,13 +484,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -574,13 +505,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -602,11 +526,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -666,15 +585,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -707,11 +617,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== -"@babel/parser@^7.16.7", "@babel/parser@^7.18.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" - integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== - "@babel/parser@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" @@ -1116,16 +1021,6 @@ "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-systemjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" @@ -1370,15 +1265,6 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/template@^7.7.4", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -1444,22 +1330,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.18.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" - integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.2" - debug "^4.1.0" - globals "^11.1.0" - "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1493,14 +1363,6 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" -"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1679,38 +1541,6 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== - -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@mapbox/geojson-rewind@^0.5.0": version "0.5.1" resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz#adbe16dc683eb40e90934c51a5e28c7bbf44f4e1" @@ -7667,4 +7497,4 @@ yocto-queue@^0.1.0: zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" - integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== \ No newline at end of file + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== From 649303335b8edb92fe1b70d149416bd60d5cbf6e Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Wed, 1 Jun 2022 07:58:40 -0600 Subject: [PATCH 10/11] Revert "Update yarn.lock" This reverts commit baefeaf79e26ab38f288f96af6dd4ada0f5dd452. --- yarn.lock | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 5fbd2e9..2bdbfe4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,6 +39,13 @@ dependencies: "@babel/highlight" "^7.16.0" +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" @@ -148,6 +155,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + "@babel/generator@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" @@ -256,6 +272,11 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" @@ -290,6 +311,14 @@ "@babel/template" "^7.16.0" "@babel/types" "^7.16.0" +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -333,6 +362,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" @@ -361,6 +397,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-transforms@^7.12.1": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" @@ -403,6 +446,20 @@ "@babel/traverse" "^7.14.2" "@babel/types" "^7.14.2" +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -431,6 +488,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" @@ -484,6 +546,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -505,6 +574,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -526,6 +602,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -585,6 +666,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -617,6 +707,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== +"@babel/parser@^7.16.7", "@babel/parser@^7.18.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" + integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== + "@babel/parser@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" @@ -1021,6 +1116,16 @@ "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" @@ -1265,6 +1370,15 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/template@^7.7.4", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -1330,6 +1444,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.0": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" + integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.2" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1363,6 +1493,14 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" +"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1541,6 +1679,38 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mapbox/geojson-rewind@^0.5.0": version "0.5.1" resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.1.tgz#adbe16dc683eb40e90934c51a5e28c7bbf44f4e1" @@ -7497,4 +7667,4 @@ yocto-queue@^0.1.0: zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" - integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== \ No newline at end of file From a3fe58ee6d9f790c5c09e10dcc084e813a3d0eef Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Wed, 1 Jun 2022 07:59:47 -0600 Subject: [PATCH 11/11] Finish ruining my commit history --- babel.config.json | 3 +++ package.json | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 babel.config.json diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 0000000..65269a9 --- /dev/null +++ b/babel.config.json @@ -0,0 +1,3 @@ +{ + "plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-modules-commonjs"] +} diff --git a/package.json b/package.json index daebca4..9d64d54 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "map-gl-utils", - "version": "0.42.1", + "version": "0.43.0", "description": "Utility functions for Mapbox GL JS or Maplibre GL JS", "main": "umd/index.min.js", "module": "dist/index.esm.js", @@ -23,6 +23,7 @@ "@babel/cli": "^7.8.7", "@babel/core": "^7.8.7", "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", "@babel/preset-env": "^7.14.2", "@babel/preset-flow": "^7.13.13", "@mapbox/mapbox-gl-style-spec": "^13.22",