diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..1320b9a --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env"] +} diff --git a/README.md b/README.md index 6f921b0..fc3bf0b 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Currently detects - changes to all parameters within each style layer - changes to the layer stack (new, removed, moved layers) - changes to sources (new, removed, updated sources) +- changes to root properties of `glyphs`, `sprite`, `fog`, `terrain`, `id`, `name`, `light` To be implemented @@ -17,6 +18,138 @@ To be implemented `bin/mapbox-gl-style-diff ./path/to/style/a.json ./path/to/style/b.json` -## Standalone tool +## Output -Currently you can also use this as a standalone tool via `stamen-diff.html` +The output is a JSON in the format of: + +```js +{ + root: {}, + layerProps: {}, + layers: {}, + sources: {} +} +``` + +Within this, the expected output for each section is: + +### Layer props + +```js +{ + [layer id]: { + [property type (layout or paint)]: { + [property id]: { + type: 'add' | 'remove' | 'move' | 'update', + before: , + after: + } + } + } +} +``` + +### Layers + +#### Add + +```js +{ + [layer id]: { + type: 'add', + layer: , + layerAbove: + } +} +``` + +#### Remove + +```js +{ + [layer id]: { + type: 'remove', + } +} +``` + +#### Move + +```js +{ + [layer id]: { + type: 'move', + layerAbove: + } +} +``` + +### Sources + +#### Add + +```js +{ + [source id]: { + type: 'add', + source: + } +} +``` + +#### Remove + +```js +{ + [source id]: { + type: 'remove', + } +} +``` + +#### Update + +```js +{ + [source id]: { + type: 'update', + before: , + after: + } +} +``` + +### Root + +#### Add + +```js +{ + [root property]: { + type: 'add', + value: + } +} +``` + +#### Remove + +```js +{ + [root property]: { + type: 'remove', + } +} +``` + +#### Update + +```js +{ + [root property]: { + type: 'update', + before: , + after: + } +} +``` diff --git a/dist/main.js b/dist/main.js index f772d60..5adecd3 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,665 +1,696 @@ -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); -} +var $gXNCa$mapboxmapboxglstylespec = require("@mapbox/mapbox-gl-style-spec"); +var $gXNCa$mapboxglstylerecurse = require("mapbox-gl-style-recurse"); +var $gXNCa$lodashisequal = require("lodash.isequal"); -$parcel$export(module.exports, "diff", () => $8be22f452ef17487$export$a37e3c603d7117e5); -$parcel$export(module.exports, "diffStylesSetStyle", () => $8be22f452ef17487$export$c11d25f35bd6cdfa); -const $8be22f452ef17487$var$isEqual = (a, b)=>JSON.stringify(a) === JSON.stringify(b); -class $8be22f452ef17487$var$diffTracker { - constructor(){ - this.glyphs = null; - this.sprite = null; - this.sources = []; - this.layers = []; - this.layerProps = {}; +"use strict"; +Object.defineProperty(module.exports, "__esModule", { + value: true +}); +Object.defineProperty(module.exports, "diff", { + enumerable: true, + get: function get() { + return $8be22f452ef17487$exports.diff; } - changeGlyphs(change) { - this.glyphs = { - change: change - }; +}); +Object.defineProperty(module.exports, "diffStylesSetStyle", { + enumerable: true, + get: function get() { + return $8be22f452ef17487$exports.diffStylesSetStyle; } - changeSprite(change) { - this.sprite = { - change: change - }; - } - changeSource(source, change) { - this.sources.push({ - source: source, - change: change - }); +}); +var $8be22f452ef17487$exports = {}; +"use strict"; +Object.defineProperty($8be22f452ef17487$exports, "__esModule", { + value: true +}); +$8be22f452ef17487$exports.diff = void 0; +var $dcef7ed1cd3dbc83$exports = {}; +"use strict"; +Object.defineProperty($dcef7ed1cd3dbc83$exports, "__esModule", { + value: true +}); +$dcef7ed1cd3dbc83$exports.diffLayers = void 0; +var $d53f79a9c1941d01$exports = {}; +"use strict"; +Object.defineProperty($d53f79a9c1941d01$exports, "__esModule", { + value: true +}); +$d53f79a9c1941d01$exports.UPDATE = $d53f79a9c1941d01$exports.REMOVE = $d53f79a9c1941d01$exports.MOVE = $d53f79a9c1941d01$exports.ADD = void 0; +var $d53f79a9c1941d01$var$REMOVE = "remove"; +$d53f79a9c1941d01$exports.REMOVE = $d53f79a9c1941d01$var$REMOVE; +var $d53f79a9c1941d01$var$ADD = "add"; +$d53f79a9c1941d01$exports.ADD = $d53f79a9c1941d01$var$ADD; +var $d53f79a9c1941d01$var$UPDATE = "update"; +$d53f79a9c1941d01$exports.UPDATE = $d53f79a9c1941d01$var$UPDATE; +var $d53f79a9c1941d01$var$MOVE = "move"; +$d53f79a9c1941d01$exports.MOVE = $d53f79a9c1941d01$var$MOVE; + + +function $dcef7ed1cd3dbc83$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $dcef7ed1cd3dbc83$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $dcef7ed1cd3dbc83$var$_typeof(obj1); +} +function $dcef7ed1cd3dbc83$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - changeLayer(layer, change) { - this.layers.push({ - layer: layer, - change: change + return keys; +} +function $dcef7ed1cd3dbc83$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $dcef7ed1cd3dbc83$var$ownKeys(Object(source), !0).forEach(function(key) { + $dcef7ed1cd3dbc83$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $dcef7ed1cd3dbc83$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } - changeLayerProp(layer, change) { - if (!this.layerProps[layer]) this.layerProps[layer] = [ - change - ]; - else this.layerProps[layer].push(change); - } + return target; } -const $8be22f452ef17487$var$operations = { - /* - * { command: 'setStyle', args: [stylesheet] } - */ setStyle: "setStyle", - /* - * { command: 'addLayer', args: [layer, 'beforeLayerId'] } - */ addLayer: "addLayer", - /* - * { command: 'removeLayer', args: ['layerId'] } - */ removeLayer: "removeLayer", - moveLayer: "moveLayer", - /* - * { command: 'setPaintProperty', args: ['layerId', 'prop', value] } - */ setPaintProperty: "setPaintProperty", - /* - * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] } - */ setLayoutProperty: "setLayoutProperty", - /* - * { command: 'setFilter', args: ['layerId', filter] } - */ setFilter: "setFilter", - /* - * { command: 'addSource', args: ['sourceId', source] } - */ addSource: "addSource", - /* - * { command: 'removeSource', args: ['sourceId'] } - */ removeSource: "removeSource", - /* - * { command: 'setGeoJSONSourceData', args: ['sourceId', data] } - */ setGeoJSONSourceData: "setGeoJSONSourceData", - /* - * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] } - */ setLayerZoomRange: "setLayerZoomRange", - /* - * { command: 'setLayerProperty', args: ['layerId', 'prop', value] } - */ setLayerProperty: "setLayerProperty", - /* - * { command: 'setCenter', args: [[lon, lat]] } - */ setCenter: "setCenter", - /* - * { command: 'setZoom', args: [zoom] } - */ setZoom: "setZoom", - /* - * { command: 'setBearing', args: [bearing] } - */ setBearing: "setBearing", - /* - * { command: 'setPitch', args: [pitch] } - */ setPitch: "setPitch", - /* - * { command: 'setSprite', args: ['spriteUrl'] } - */ setSprite: "setSprite", - /* - * { command: 'setGlyphs', args: ['glyphsUrl'] } - */ setGlyphs: "setGlyphs", - /* - * { command: 'setTransition', args: [transition] } - */ setTransition: "setTransition", - /* - * { command: 'setLighting', args: [lightProperties] } - */ setLight: "setLight", - /* - * { command: 'setTerrain', args: [terrainProperties] } - */ setTerrain: "setTerrain", - /* - * { command: 'setFog', args: [fogProperties] } - */ setFog: "setFog", - /* - * { command: 'setProjection', args: [projectionProperties] } - */ setProjection: "setProjection" -}; -function $8be22f452ef17487$var$addSource(sourceId, after, commands) { - commands.push({ - command: $8be22f452ef17487$var$operations.addSource, - args: [ - sourceId, - after[sourceId] - ] - }); +function $dcef7ed1cd3dbc83$var$_slicedToArray(arr, i) { + return $dcef7ed1cd3dbc83$var$_arrayWithHoles(arr) || $dcef7ed1cd3dbc83$var$_iterableToArrayLimit(arr, i) || $dcef7ed1cd3dbc83$var$_unsupportedIterableToArray(arr, i) || $dcef7ed1cd3dbc83$var$_nonIterableRest(); } -function $8be22f452ef17487$var$removeSource(sourceId, commands, sourcesRemoved) { - commands.push({ - command: $8be22f452ef17487$var$operations.removeSource, - args: [ - sourceId - ] - }); - sourcesRemoved[sourceId] = true; +function $dcef7ed1cd3dbc83$var$_nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function $8be22f452ef17487$var$updateSource(sourceId, after, commands, sourcesRemoved) { - $8be22f452ef17487$var$removeSource(sourceId, commands, sourcesRemoved); - $8be22f452ef17487$var$addSource(sourceId, after, commands); +function $dcef7ed1cd3dbc83$var$_unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return $dcef7ed1cd3dbc83$var$_arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $dcef7ed1cd3dbc83$var$_arrayLikeToArray(o, minLen); } -function $8be22f452ef17487$var$canUpdateGeoJSON(before, after, sourceId) { - let prop; - for(prop in before[sourceId]){ - if (!before[sourceId].hasOwnProperty(prop)) continue; - if (prop !== "data" && !$8be22f452ef17487$var$isEqual(before[sourceId][prop], after[sourceId][prop])) return false; - } - for(prop in after[sourceId]){ - if (!after[sourceId].hasOwnProperty(prop)) continue; - if (prop !== "data" && !$8be22f452ef17487$var$isEqual(before[sourceId][prop], after[sourceId][prop])) return false; - } - return true; -} -function $8be22f452ef17487$var$diffSources(before, after, commands, sourcesRemoved, differ) { - before = before || {}; - after = after || {}; - let sourceId; - // look for sources to remove - for(sourceId in before){ - if (!before.hasOwnProperty(sourceId)) continue; - if (!after.hasOwnProperty(sourceId)) { - differ.changeSource(sourceId, { - command: "removeSource" - }); - $8be22f452ef17487$var$removeSource(sourceId, commands, sourcesRemoved); - } - } - // look for sources to add/update - for(sourceId in after){ - if (!after.hasOwnProperty(sourceId)) continue; - // add sources - if (!before.hasOwnProperty(sourceId)) { - differ.changeSource(sourceId, { - command: "addSource" - }); - $8be22f452ef17487$var$addSource(sourceId, after, commands); - } else if (!$8be22f452ef17487$var$isEqual(before[sourceId], after[sourceId])) { - differ.changeSource(sourceId, { - command: "updateSource" - }); - if (before[sourceId].type === "geojson" && after[sourceId].type === "geojson" && $8be22f452ef17487$var$canUpdateGeoJSON(before, after, sourceId)) commands.push({ - command: $8be22f452ef17487$var$operations.setGeoJSONSourceData, - args: [ - sourceId, - after[sourceId].data - ] - }); - else // no update command, must remove then add - $8be22f452ef17487$var$updateSource(sourceId, after, commands, sourcesRemoved); +function $dcef7ed1cd3dbc83$var$_arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; + return arr2; +} +function $dcef7ed1cd3dbc83$var$_iterableToArrayLimit(arr, i) { + var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; + if (null != _i) { + var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; + try { + if (_x = (_i = _i.call(arr)).next, 0 === i) { + if (Object(_i) !== _i) return; + _n = !1; + } else for(; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); + } catch (err) { + _d = !0, _e = err; + } finally{ + try { + if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; + } finally{ + if (_d) throw _e; + } } + return _arr; } } -function $8be22f452ef17487$var$diffLayerPropertyChanges(before, after, commands, layerId, klass, command, differ) { - before = before || {}; - after = after || {}; - let prop; - for(prop in before){ - if (!before.hasOwnProperty(prop)) continue; - if (!$8be22f452ef17487$var$isEqual(before[prop], after[prop])) { - const cmd = { - command: command, - args: [ - prop, - after[prop], - before[prop], - klass - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } +function $dcef7ed1cd3dbc83$var$_arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +function $dcef7ed1cd3dbc83$var$_defineProperty(obj, key, value) { + key = $dcef7ed1cd3dbc83$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $dcef7ed1cd3dbc83$var$_toPropertyKey(arg) { + var key = $dcef7ed1cd3dbc83$var$_toPrimitive(arg, "string"); + return $dcef7ed1cd3dbc83$var$_typeof(key) === "symbol" ? key : String(key); +} +function $dcef7ed1cd3dbc83$var$_toPrimitive(input, hint) { + if ($dcef7ed1cd3dbc83$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($dcef7ed1cd3dbc83$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); } - for(prop in after){ - if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue; - if (!$8be22f452ef17487$var$isEqual(before[prop], after[prop])) { - const cmd = { - command: command, - args: [ - prop, - after[prop], - before[prop], - klass - ], - layer: layerId + return (hint === "string" ? String : Number)(input); +} +// TODO We can better determine moved layers by if: +// - only two layers moved, just choose one +// - otherwise, check for bottom and top layers changed +var $dcef7ed1cd3dbc83$var$getMovedLayers = function getMovedLayers(a, b) { + var aByIndex = a.reduce(function(acc, layer, i) { + var _a, _a2; + acc[layer.id] = { + layerAbove: a === null || a === void 0 ? void 0 : (_a = a[i + 1]) === null || _a === void 0 ? void 0 : _a.id, + layerBelow: a === null || a === void 0 ? void 0 : (_a2 = a[i - 1]) === null || _a2 === void 0 ? void 0 : _a2.id + }; + return acc; + }, {}); + var moved = {}; + var aboveLayers = []; + for(var i1 = 0; i1 < b.length; i1++){ + var _b, _b2; + var bLayer = b[i1]; + var aIndex = aByIndex[bLayer.id]; + if (!aIndex) continue; + var nextLayerAbove = b === null || b === void 0 ? void 0 : (_b = b[i1 + 1]) === null || _b === void 0 ? void 0 : _b.id; + var nextLayerBelow = b === null || b === void 0 ? void 0 : (_b2 = b[i1 - 1]) === null || _b2 === void 0 ? void 0 : _b2.id; + if (aIndex.layerAbove !== nextLayerAbove && aIndex.layerBelow !== nextLayerBelow) { + var _b3; + var layerAbove = b === null || b === void 0 ? void 0 : (_b3 = b[i1 + 1]) === null || _b3 === void 0 ? void 0 : _b3.id; + aboveLayers.push(layerAbove); + moved[bLayer.id] = { + type: $d53f79a9c1941d01$exports.MOVE, + layerAbove: layerAbove }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); } } + // Remove any layers that are considered switched so we aren't redundant + aboveLayers.forEach(function(id) { + return delete moved[id]; + }); + return moved; +}; +var $dcef7ed1cd3dbc83$var$diffLayers = function diffLayers(a, b) { + var additions = b.map(function(l, i) { + var _b4; + if (a.some(function(layer) { + return layer.id === l.id; + })) return false; + return $dcef7ed1cd3dbc83$var$_defineProperty({}, l.id, { + type: $d53f79a9c1941d01$exports.ADD, + layer: l, + layerAbove: b === null || b === void 0 ? void 0 : (_b4 = b[i + 1]) === null || _b4 === void 0 ? void 0 : _b4.id + }); + }).filter(Boolean); + var removals = a.map(function(l) { + if (b.some(function(layer) { + return layer.id === l.id; + })) return false; + return $dcef7ed1cd3dbc83$var$_defineProperty({}, l.id, { + type: $d53f79a9c1941d01$exports.REMOVE + }); + }).filter(Boolean); + var formatted = additions.concat(removals).reduce(function(acc, ld) { + var _Object$entries$ = $dcef7ed1cd3dbc83$var$_slicedToArray(Object.entries(ld)[0], 2), layerId = _Object$entries$[0], diff = _Object$entries$[1]; + acc[layerId] = diff; + return acc; + }, {}); + var reorders = $dcef7ed1cd3dbc83$var$getMovedLayers(a.filter(function(l) { + return !Object.keys(formatted).includes(l.id); + }), b.filter(function(l) { + return !Object.keys(formatted).includes(l.id); + })); + return $dcef7ed1cd3dbc83$var$_objectSpread($dcef7ed1cd3dbc83$var$_objectSpread({}, formatted), reorders); +}; +$dcef7ed1cd3dbc83$exports.diffLayers = $dcef7ed1cd3dbc83$var$diffLayers; + + +var $2c852ff54c170e40$exports = {}; +"use strict"; +Object.defineProperty($2c852ff54c170e40$exports, "__esModule", { + value: true +}); +$2c852ff54c170e40$exports.diffLayerProps = void 0; + + + +var $2c852ff54c170e40$var$_lodash = $2c852ff54c170e40$var$_interopRequireDefault($gXNCa$lodashisequal); +function $2c852ff54c170e40$var$_interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; } -function $8be22f452ef17487$var$pluckId(layer) { - return layer.id; -} -function $8be22f452ef17487$var$indexById(group, layer) { - group[layer.id] = layer; - return group; -} -function $8be22f452ef17487$var$diffLayers(before, after, commands, differ) { - before = before || []; - after = after || []; - // order of layers by id - const beforeOrder = before.map($8be22f452ef17487$var$pluckId); - const afterOrder = after.map($8be22f452ef17487$var$pluckId); - // index of layer by id - const beforeIndex = before.reduce($8be22f452ef17487$var$indexById, {}); - const afterIndex = after.reduce($8be22f452ef17487$var$indexById, {}); - // track order of layers as if they have been mutated - const tracker = beforeOrder.slice(); - // layers that have been added do not need to be diffed - const clean = Object.create(null); - let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop; - // remove layers - for(i = 0, d = 0; i < beforeOrder.length; i++){ - layerId = beforeOrder[i]; - // detect removed layer - if (!afterIndex.hasOwnProperty(layerId)) { - commands.push({ - command: $8be22f452ef17487$var$operations.removeLayer, - args: [ - layerId - ] - }); - differ.changeLayer(layerId, { - command: "removeLayer" - }); - tracker.splice(tracker.indexOf(layerId, d), 1); - } else // limit where in tracker we need to look for a match - d++; +function $2c852ff54c170e40$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $2c852ff54c170e40$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $2c852ff54c170e40$var$_typeof(obj1); +} +function $2c852ff54c170e40$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - // add/reorder layers - for(i = 0, d = 0; i < afterOrder.length; i++){ - // work backwards as insert is before an existing layer - layerId = afterOrder[afterOrder.length - 1 - i]; - if (tracker[tracker.length - 1 - i] === layerId) continue; - var movingLayer = false; - if (beforeIndex.hasOwnProperty(layerId)) { - movingLayer = true; - // remove the layer before we insert at the correct position - commands.push({ - command: $8be22f452ef17487$var$operations.removeLayer, - args: [ - layerId - ] - }); - tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1); - } else // limit where in tracker we need to look for a match - d++; - // add layer at correct position - insertBeforeLayerId = tracker[tracker.length - i]; - commands.push({ - command: $8be22f452ef17487$var$operations.addLayer, - args: [ - afterIndex[layerId], - insertBeforeLayerId - ] - }); - tracker.splice(tracker.length - i, 0, layerId); - if (movingLayer) differ.changeLayer(layerId, { - command: "moveLayer", - args: [ - insertBeforeLayerId - ] + return keys; +} +function $2c852ff54c170e40$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $2c852ff54c170e40$var$ownKeys(Object(source), !0).forEach(function(key) { + $2c852ff54c170e40$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $2c852ff54c170e40$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); - else { - clean[layerId] = true; - differ.changeLayer(layerId, { - command: "addLayer", - args: [ - afterIndex[layerId], - insertBeforeLayerId - ] - }); - } } - // update layers - for(i = 0; i < afterOrder.length; i++){ - layerId = afterOrder[i]; - beforeLayer = beforeIndex[layerId]; - afterLayer = afterIndex[layerId]; - // no need to update if previously added (new or moved) - if (clean[layerId] || $8be22f452ef17487$var$isEqual(beforeLayer, afterLayer)) continue; - // layout, paint, filter, minzoom, maxzoom - $8be22f452ef17487$var$diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, $8be22f452ef17487$var$operations.setLayoutProperty, differ); - $8be22f452ef17487$var$diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, $8be22f452ef17487$var$operations.setPaintProperty, differ); - if (!$8be22f452ef17487$var$isEqual(beforeLayer.filter, afterLayer.filter)) { - const cmd = { - command: $8be22f452ef17487$var$operations.setFilter, - args: [ - "filter", - JSON.stringify(afterLayer.filter), - beforeLayer.filter - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - if (!$8be22f452ef17487$var$isEqual(beforeLayer.minzoom, afterLayer.minzoom)) { - const cmd = { - command: $8be22f452ef17487$var$operations.setLayerZoomRange, - args: [ - "minzoom", - afterLayer.minzoom, - beforeLayer.minzoom - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); + return target; +} +function $2c852ff54c170e40$var$_defineProperty(obj, key, value) { + key = $2c852ff54c170e40$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $2c852ff54c170e40$var$_toPropertyKey(arg) { + var key = $2c852ff54c170e40$var$_toPrimitive(arg, "string"); + return $2c852ff54c170e40$var$_typeof(key) === "symbol" ? key : String(key); +} +function $2c852ff54c170e40$var$_toPrimitive(input, hint) { + if ($2c852ff54c170e40$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($2c852ff54c170e40$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} +var $2c852ff54c170e40$var$layoutProps = $gXNCa$mapboxmapboxglstylespec.latest.layout.reduce(function(acc, layoutType) { + return acc.concat(Object.keys($gXNCa$mapboxmapboxglstylespec.latest[layoutType])); +}, []); +var $2c852ff54c170e40$var$paintProps = $gXNCa$mapboxmapboxglstylespec.latest.paint.reduce(function(acc, paintType) { + return acc.concat(Object.keys($gXNCa$mapboxmapboxglstylespec.latest[paintType])); +}, []); +var $2c852ff54c170e40$var$getPropertyType = function getPropertyType(key) { + var propertyType = "root"; + if ($2c852ff54c170e40$var$layoutProps.includes(key)) propertyType = "layout"; + if ($2c852ff54c170e40$var$paintProps.includes(key)) propertyType = "paint"; + return propertyType; +}; +var $2c852ff54c170e40$var$diffLayerProps = function diffLayerProps(a, b) { + var diff = {}; + // This function runs inside the style expressions to find single matches and populate the warnings array + var diffExp = function diffExp(layerId, beforeExp, key) { + var propertyType = $2c852ff54c170e40$var$getPropertyType(key); + var bLayer = b.layers.find(function(l) { + return l.id === layerId; + }); + if (bLayer) { + var comparisonValue = propertyType === "root" ? bLayer[key] : bLayer[propertyType][key]; + if (!(0, $2c852ff54c170e40$var$_lodash["default"])(beforeExp, comparisonValue)) { + var _diff$layerId, _diff$layerId$propert, _diff$layerId2; + var type; + if (beforeExp === undefined && comparisonValue !== undefined) type = "add"; + if (beforeExp !== undefined && comparisonValue === undefined) type = "remove"; + if (beforeExp !== undefined && comparisonValue !== undefined) type = "update"; + diff[layerId] = $2c852ff54c170e40$var$_objectSpread($2c852ff54c170e40$var$_objectSpread({}, (_diff$layerId = diff === null || diff === void 0 ? void 0 : diff[layerId]) !== null && _diff$layerId !== void 0 ? _diff$layerId : {}), {}, $2c852ff54c170e40$var$_defineProperty({}, propertyType, $2c852ff54c170e40$var$_objectSpread($2c852ff54c170e40$var$_objectSpread({}, (_diff$layerId$propert = diff === null || diff === void 0 ? void 0 : (_diff$layerId2 = diff[layerId]) === null || _diff$layerId2 === void 0 ? void 0 : _diff$layerId2[propertyType]) !== null && _diff$layerId$propert !== void 0 ? _diff$layerId$propert : {}), {}, $2c852ff54c170e40$var$_defineProperty({}, key, { + type: type, + before: beforeExp, + after: comparisonValue + })))); + } } - if (!$8be22f452ef17487$var$isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) { - const cmd = { - command: $8be22f452ef17487$var$operations.setLayerZoomRange, - args: [ - "maxzoom", - afterLayer.maxzoom, - beforeLayer.maxzoom - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); + // We return the existing match expression as-is because createRecurseStyle + // can also be used to transform a stylesheet, but we only want to use it to warn + return beforeExp; + }; + var checkExpressions = (0, $gXNCa$mapboxglstylerecurse.createRecurseStyle)({ + transformFn: diffExp, + transformCondition: function transformCondition() { + return true; } - // handle all other layer props, including paint.* - for(prop in beforeLayer){ - if (!beforeLayer.hasOwnProperty(prop)) continue; - if (prop === "layout" || prop === "paint" || prop === "filter" || prop === "metadata" || prop === "minzoom" || prop === "maxzoom") continue; - if (prop.indexOf("paint.") === 0) $8be22f452ef17487$var$diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), $8be22f452ef17487$var$operations.setPaintProperty, differ); - else if (!$8be22f452ef17487$var$isEqual(beforeLayer[prop], afterLayer[prop])) { - const cmd = { - command: $8be22f452ef17487$var$operations.setLayerProperty, - args: [ - prop, - afterLayer[prop], - beforeLayer[prop] - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); + }); + // Used with 'b' to get added expressions since they won't run on 'a' + var diffAddedExp = function diffAddedExp(layerId, afterExp, key) { + var propertyType = $2c852ff54c170e40$var$getPropertyType(key); + var aLayer = a.layers.find(function(l) { + return l.id === layerId; + }); + if (aLayer) { + var comparisonValue = propertyType === "root" ? aLayer[key] : aLayer[propertyType][key]; + if (afterExp !== undefined && comparisonValue === undefined) { + var _diff$layerId3, _diff$layerId$propert2, _diff$layerId4; + diff[layerId] = $2c852ff54c170e40$var$_objectSpread($2c852ff54c170e40$var$_objectSpread({}, (_diff$layerId3 = diff === null || diff === void 0 ? void 0 : diff[layerId]) !== null && _diff$layerId3 !== void 0 ? _diff$layerId3 : {}), {}, $2c852ff54c170e40$var$_defineProperty({}, propertyType, $2c852ff54c170e40$var$_objectSpread($2c852ff54c170e40$var$_objectSpread({}, (_diff$layerId$propert2 = diff === null || diff === void 0 ? void 0 : (_diff$layerId4 = diff[layerId]) === null || _diff$layerId4 === void 0 ? void 0 : _diff$layerId4[propertyType]) !== null && _diff$layerId$propert2 !== void 0 ? _diff$layerId$propert2 : {}), {}, $2c852ff54c170e40$var$_defineProperty({}, key, { + type: "add", + after: afterExp, + before: comparisonValue + })))); } } - for(prop in afterLayer){ - if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue; - if (prop === "layout" || prop === "paint" || prop === "filter" || prop === "metadata" || prop === "minzoom" || prop === "maxzoom") continue; - if (prop.indexOf("paint.") === 0) $8be22f452ef17487$var$diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), $8be22f452ef17487$var$operations.setPaintProperty); - else if (!$8be22f452ef17487$var$isEqual(beforeLayer[prop], afterLayer[prop])) { - const cmd = { - command: $8be22f452ef17487$var$operations.setLayerProperty, - args: [ - prop, - afterLayer[prop], - beforeLayer[prop] - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } + // We return the existing match expression as-is because createRecurseStyle + // can also be used to transform a stylesheet, but we only want to use it to warn + return afterExp; + }; + var checkAddedExpressions = (0, $gXNCa$mapboxglstylerecurse.createRecurseStyle)({ + transformFn: diffAddedExp, + transformCondition: function transformCondition() { + return true; } - } + }); + checkExpressions(a); + checkAddedExpressions(b); + return diff; +}; +$2c852ff54c170e40$exports.diffLayerProps = $2c852ff54c170e40$var$diffLayerProps; + + +var $e74b7ff1b915b434$exports = {}; +"use strict"; +Object.defineProperty($e74b7ff1b915b434$exports, "__esModule", { + value: true +}); +$e74b7ff1b915b434$exports.diffSources = void 0; + +var $e74b7ff1b915b434$var$_lodash = $e74b7ff1b915b434$var$_interopRequireDefault($gXNCa$lodashisequal); + +function $e74b7ff1b915b434$var$_interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; } -function $8be22f452ef17487$export$c11d25f35bd6cdfa(before, after) { - if (!before) return [ - { - command: $8be22f452ef17487$var$operations.setStyle, - args: [ - after - ] - } - ]; - const differ = new $8be22f452ef17487$var$diffTracker(); - let commands = []; - try { - // Handle changes to top-level properties - if (!$8be22f452ef17487$var$isEqual(before.version, after.version)) return [ - { - command: $8be22f452ef17487$var$operations.setStyle, - args: [ - after - ] +function $e74b7ff1b915b434$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $e74b7ff1b915b434$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $e74b7ff1b915b434$var$_typeof(obj1); +} +function $e74b7ff1b915b434$var$_slicedToArray(arr, i) { + return $e74b7ff1b915b434$var$_arrayWithHoles(arr) || $e74b7ff1b915b434$var$_iterableToArrayLimit(arr, i) || $e74b7ff1b915b434$var$_unsupportedIterableToArray(arr, i) || $e74b7ff1b915b434$var$_nonIterableRest(); +} +function $e74b7ff1b915b434$var$_nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +function $e74b7ff1b915b434$var$_unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return $e74b7ff1b915b434$var$_arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $e74b7ff1b915b434$var$_arrayLikeToArray(o, minLen); +} +function $e74b7ff1b915b434$var$_arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; + return arr2; +} +function $e74b7ff1b915b434$var$_iterableToArrayLimit(arr, i) { + var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; + if (null != _i) { + var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; + try { + if (_x = (_i = _i.call(arr)).next, 0 === i) { + if (Object(_i) !== _i) return; + _n = !1; + } else for(; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); + } catch (err) { + _d = !0, _e = err; + } finally{ + try { + if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; + } finally{ + if (_d) throw _e; } - ]; - if (!$8be22f452ef17487$var$isEqual(before.center, after.center)) commands.push({ - command: $8be22f452ef17487$var$operations.setCenter, - args: [ - after.center - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.zoom, after.zoom)) commands.push({ - command: $8be22f452ef17487$var$operations.setZoom, - args: [ - after.zoom - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.bearing, after.bearing)) commands.push({ - command: $8be22f452ef17487$var$operations.setBearing, - args: [ - after.bearing - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.pitch, after.pitch)) commands.push({ - command: $8be22f452ef17487$var$operations.setPitch, - args: [ - after.pitch - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.sprite, after.sprite)) { - commands.push({ - command: $8be22f452ef17487$var$operations.setSprite, - args: [ - after.sprite - ] - }); - differ.changeSprite({ - command: "setSprite", - args: [ - after.sprite, - before.sprite - ] - }); - } - if (!$8be22f452ef17487$var$isEqual(before.glyphs, after.glyphs)) { - commands.push({ - command: $8be22f452ef17487$var$operations.setGlyphs, - args: [ - after.glyphs - ] - }); - differ.changeGlyphs({ - command: "setGlyphs", - args: [ - after.glyphs, - before.glyphs - ] - }); } - if (!$8be22f452ef17487$var$isEqual(before.transition, after.transition)) commands.push({ - command: $8be22f452ef17487$var$operations.setTransition, - args: [ - after.transition - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.light, after.light)) commands.push({ - command: $8be22f452ef17487$var$operations.setLight, - args: [ - after.light - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.fog, after.fog)) commands.push({ - command: $8be22f452ef17487$var$operations.setFog, - args: [ - after.fog - ] - }); - if (!$8be22f452ef17487$var$isEqual(before.projection, after.projection)) commands.push({ - command: $8be22f452ef17487$var$operations.setProjection, - args: [ - after.projection - ] + return _arr; + } +} +function $e74b7ff1b915b434$var$_arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +function $e74b7ff1b915b434$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; +} +function $e74b7ff1b915b434$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $e74b7ff1b915b434$var$ownKeys(Object(source), !0).forEach(function(key) { + $e74b7ff1b915b434$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $e74b7ff1b915b434$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); - // Handle changes to `sources` - // If a source is to be removed, we also--before the removeSource - // command--need to remove all the style layers that depend on it. - const sourcesRemoved = {}; - // First collect the {add,remove}Source commands - const removeOrAddSourceCommands = []; - $8be22f452ef17487$var$diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved, differ); - commands = commands.concat(removeOrAddSourceCommands); - // Handle changes to `layers` - $8be22f452ef17487$var$diffLayers(before.layers, after.layers, commands, differ); - } catch (e) { - // fall back to setStyle - console.warn("Unable to compute style diff:", e); - commands = [ - { - command: $8be22f452ef17487$var$operations.setStyle, - args: [ - after - ] - } - ]; } - commands = $8be22f452ef17487$var$detectMovedLayers(commands); - return differ; -} -function $8be22f452ef17487$var$detectMovedLayers(commands) { - var output = []; - var blacklistAdds = []; - function findReaddedLayer(removalCommand) { - const targetId = removalCommand.args[0]; - const match = commands.find((l)=>l.args?.[0]?.id === targetId); - if (match) blacklistAdds.push(targetId); - return match; + return target; +} +function $e74b7ff1b915b434$var$_defineProperty(obj, key, value) { + key = $e74b7ff1b915b434$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $e74b7ff1b915b434$var$_toPropertyKey(arg) { + var key = $e74b7ff1b915b434$var$_toPrimitive(arg, "string"); + return $e74b7ff1b915b434$var$_typeof(key) === "symbol" ? key : String(key); +} +function $e74b7ff1b915b434$var$_toPrimitive(input, hint) { + if ($e74b7ff1b915b434$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($e74b7ff1b915b434$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); } - commands.forEach((c)=>{ - if (c.command === "removeLayer") { - const readded = findReaddedLayer(c); - if (readded) output.push({ - command: "moveLayer", - args: readded.args + return (hint === "string" ? String : Number)(input); +} +var $e74b7ff1b915b434$var$diffSources = function diffSources(a, b) { + var diff = {}; + var consistentSourceKeys = Object.keys($e74b7ff1b915b434$var$_objectSpread($e74b7ff1b915b434$var$_objectSpread({}, a), b)); + var additions = Object.entries(b).reduce(function(acc, _ref) { + var _ref2 = $e74b7ff1b915b434$var$_slicedToArray(_ref, 2), k = _ref2[0], v = _ref2[1]; + if (!a[k]) { + acc[k] = { + type: $d53f79a9c1941d01$exports.ADD, + source: v + }; + consistentSourceKeys = consistentSourceKeys.filter(function(item) { + return item !== k; }); - else output.push(c); - } else if (c.command !== "addLayer" || !blacklistAdds.includes(c.args[0])) output.push(c); - }); - return output; -} -// Added this function to change the output format to be more helpful -const $8be22f452ef17487$var$diffStyles = (before, after)=>{ - const originalDiff = $8be22f452ef17487$export$c11d25f35bd6cdfa(before, after); - const { layerProps: layerProps , layers: layers , sources: sources , glyphs: glyphs , sprite: sprite } = originalDiff; - // formatting for source additions and removals - const nextSources = sources.reduce((acc, s)=>{ - const { change: change , source: source } = s; - let type = change.command; - switch(type){ - case "removeSource": - type = "remove"; - break; - case "addSource": - type = "add"; - break; } - acc[source] = type; return acc; }, {}); - // formatting for layer additions, reorders, and removals - const nextLayers = layers.reduce((acc, l)=>{ - const { change: change , layer: layer } = l; - let type = change.command; - switch(type){ - case "removeLayer": - type = "remove"; - break; - case "addLayer": - type = "add"; - break; - case "moveLayer": - type = "move"; - break; + var removals = Object.entries(a).reduce(function(acc, _ref3) { + var _ref4 = $e74b7ff1b915b434$var$_slicedToArray(_ref3, 2), k = _ref4[0], v = _ref4[1]; + if (!b[k]) { + acc[k] = { + type: $d53f79a9c1941d01$exports.REMOVE + }; + consistentSourceKeys = consistentSourceKeys.filter(function(item) { + return item !== k; + }); } - acc[layer] = { - type: type, - ...type === "add" && { - layer: change?.args[0], - layerAbove: change?.args[1] - }, - ...type === "move" && { - layerAbove: change?.args[0] - } - }; return acc; }, {}); - // formatting for layer property changes - const nextLayerProps = Object.keys(layerProps).reduce((acc, layerId)=>{ - const nextLayerChanges = layerProps[layerId].reduce((accum, change)=>{ - const { command: command , args: args } = change; - let type = command; - switch(command){ - case "setFilter": - type = "filter"; - break; - // source & source-layer - case "setLayerProperty": - type = "root"; - break; - case "setPaintProperty": - type = "paint"; - break; - // min and max zoom - case "setLayerZoomRange": - type = "minMaxZoom"; - break; - case "setLayoutProperty": - type = "layout"; - break; - } - const [propertyId, currentValue, compareValue] = args; - // These are reversed out of the set style version of the diffing tool - const current = compareValue; - const compare = currentValue; - if (type === "root" || type === "minMaxZoom") accum[propertyId] = { - current: current, - compare: compare - }; - else if (type === "filter") accum[propertyId] = { - current: current, - // Not sure why this is stringified - compare: typeof compare === "string" ? JSON.parse(compare) : compare - }; - else { - if (!accum[type]) accum[type] = {}; - accum[type][propertyId] = { - current: current, - compare: compare - }; - } - return accum; - }, {}); - acc[layerId] = nextLayerChanges; + var updates = consistentSourceKeys.reduce(function(acc, k) { + var equal = (0, $e74b7ff1b915b434$var$_lodash["default"])(a[k], b[k]); + if (!equal) acc[k] = { + type: $d53f79a9c1941d01$exports.UPDATE, + before: a[k], + after: b[k] + }; return acc; }, {}); - let nextGlyphs; - if (glyphs?.change?.args) { - const [compareGlyph, currentGlyph] = glyphs?.change?.args; - nextGlyphs = { - current: currentGlyph, - compare: compareGlyph - }; + diff = $e74b7ff1b915b434$var$_objectSpread($e74b7ff1b915b434$var$_objectSpread($e74b7ff1b915b434$var$_objectSpread({}, additions), removals), updates); + return diff; +}; +$e74b7ff1b915b434$exports.diffSources = $e74b7ff1b915b434$var$diffSources; + + +var $b989ec17977e4465$exports = {}; +"use strict"; +Object.defineProperty($b989ec17977e4465$exports, "__esModule", { + value: true +}); +$b989ec17977e4465$exports.diffRoot = void 0; + +var $b989ec17977e4465$var$_lodash = $b989ec17977e4465$var$_interopRequireDefault($gXNCa$lodashisequal); +function $b989ec17977e4465$var$_interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +function $b989ec17977e4465$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $b989ec17977e4465$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $b989ec17977e4465$var$_typeof(obj1); +} +function $b989ec17977e4465$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - let nextSprite; - if (sprite?.change?.args) { - const [compareSprite, currentSprite] = sprite?.change?.args; - nextSprite = { - current: currentSprite, - compare: compareSprite - }; + return keys; +} +function $b989ec17977e4465$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $b989ec17977e4465$var$ownKeys(Object(source), !0).forEach(function(key) { + $b989ec17977e4465$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $b989ec17977e4465$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); } - return { - layerProps: nextLayerProps, - layers: nextLayers, - sources: nextSources, - glyphs: nextGlyphs, - sprite: nextSprite - }; + return target; +} +function $b989ec17977e4465$var$_defineProperty(obj, key, value) { + key = $b989ec17977e4465$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $b989ec17977e4465$var$_toPropertyKey(arg) { + var key = $b989ec17977e4465$var$_toPrimitive(arg, "string"); + return $b989ec17977e4465$var$_typeof(key) === "symbol" ? key : String(key); +} +function $b989ec17977e4465$var$_toPrimitive(input, hint) { + if ($b989ec17977e4465$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($b989ec17977e4465$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} +var $b989ec17977e4465$var$diffRoot = function diffRoot(a, b) { + var supportedKeys = [ + "glyphs", + "sprite", + "id", + "name", + "fog", + "light", + "terrain" + ]; + var diff = {}; + for(var _i = 0, _supportedKeys = supportedKeys; _i < _supportedKeys.length; _i++){ + var key = _supportedKeys[_i]; + if (!(0, $b989ec17977e4465$var$_lodash["default"])(a === null || a === void 0 ? void 0 : a[key], b === null || b === void 0 ? void 0 : b[key])) { + var next = { + before: a === null || a === void 0 ? void 0 : a[key], + after: b === null || b === void 0 ? void 0 : b[key] + }; + var type = void 0; + if ((a === null || a === void 0 ? void 0 : a[key]) === undefined && (b === null || b === void 0 ? void 0 : b[key]) !== undefined) type = "add"; + if ((a === null || a === void 0 ? void 0 : a[key]) !== undefined && (b === null || b === void 0 ? void 0 : b[key]) === undefined) type = "remove"; + if ((a === null || a === void 0 ? void 0 : a[key]) !== undefined && (b === null || b === void 0 ? void 0 : b[key]) !== undefined) type = "update"; + diff[key] = $b989ec17977e4465$var$_objectSpread($b989ec17977e4465$var$_objectSpread({}, next), {}, { + type: type + }); + } + } + return diff; +}; +$b989ec17977e4465$exports.diffRoot = $b989ec17977e4465$var$diffRoot; + + +function $8be22f452ef17487$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $8be22f452ef17487$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $8be22f452ef17487$var$_typeof(obj1); +} +function $8be22f452ef17487$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; +} +function $8be22f452ef17487$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $8be22f452ef17487$var$ownKeys(Object(source), !0).forEach(function(key) { + $8be22f452ef17487$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $8be22f452ef17487$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; +} +function $8be22f452ef17487$var$_defineProperty(obj, key, value) { + key = $8be22f452ef17487$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $8be22f452ef17487$var$_toPropertyKey(arg) { + var key = $8be22f452ef17487$var$_toPrimitive(arg, "string"); + return $8be22f452ef17487$var$_typeof(key) === "symbol" ? key : String(key); +} +function $8be22f452ef17487$var$_toPrimitive(input, hint) { + if ($8be22f452ef17487$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($8be22f452ef17487$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} +var $8be22f452ef17487$var$defaultOutput = { + root: {}, + layerProps: {}, + layers: {}, + sources: {} +}; +var $8be22f452ef17487$var$diff = function diff(a, b) { + var styleDiff = {}; + var layersA = a.layers, sourcesA = a.sources; + var layersB = b.layers, sourcesB = b.sources; + var layerDiff = (0, $dcef7ed1cd3dbc83$exports.diffLayers)(layersA, layersB); + var layerPropDiff = (0, $2c852ff54c170e40$exports.diffLayerProps)(a, b); + var sourceDiff = (0, $e74b7ff1b915b434$exports.diffSources)(sourcesA, sourcesB); + var rootDiff = (0, $b989ec17977e4465$exports.diffRoot)(a, b); + styleDiff.layers = layerDiff; + styleDiff.layerProps = layerPropDiff; + styleDiff.sources = sourceDiff; + styleDiff.root = rootDiff; + return $8be22f452ef17487$var$_objectSpread($8be22f452ef17487$var$_objectSpread({}, $8be22f452ef17487$var$defaultOutput), styleDiff); }; -const $8be22f452ef17487$export$a37e3c603d7117e5 = $8be22f452ef17487$var$diffStyles; +$8be22f452ef17487$exports.diff = $8be22f452ef17487$var$diff; diff --git a/dist/main.js.map b/dist/main.js.map index a5e8057..647b69a 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["src/index.js","src/lib/diff.js"],"sourcesContent":["import { diff, diffStylesSetStyle } from \"./lib/diff\";\n\nexport { diff, diffStylesSetStyle };\n","const isEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b);\n\nclass diffTracker {\n constructor() {\n this.glyphs = null;\n this.sprite = null;\n this.sources = [];\n this.layers = [];\n this.layerProps = {};\n }\n\n changeGlyphs(change) {\n this.glyphs = { change: change };\n }\n\n changeSprite(change) {\n this.sprite = { change: change };\n }\n\n changeSource(source, change) {\n this.sources.push({ source: source, change: change });\n }\n\n changeLayer(layer, change) {\n this.layers.push({ layer: layer, change: change });\n }\n\n changeLayerProp(layer, change) {\n if (!this.layerProps[layer]) this.layerProps[layer] = [change];\n else this.layerProps[layer].push(change);\n }\n}\nconst operations = {\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n moveLayer: 'moveLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight',\n\n /*\n * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection'\n};\n\nfunction addSource(sourceId, after, commands) {\n commands.push({\n command: operations.addSource,\n args: [sourceId, after[sourceId]]\n });\n}\n\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({ command: operations.removeSource, args: [sourceId] });\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (\n prop !== 'data' &&\n !isEqual(before[sourceId][prop], after[sourceId][prop])\n ) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (\n prop !== 'data' &&\n !isEqual(before[sourceId][prop], after[sourceId][prop])\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before, after, commands, sourcesRemoved, differ) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n differ.changeSource(sourceId, { command: 'removeSource' });\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n\n // add sources\n if (!before.hasOwnProperty(sourceId)) {\n differ.changeSource(sourceId, { command: 'addSource' });\n addSource(sourceId, after, commands);\n }\n // update sources\n else if (!isEqual(before[sourceId], after[sourceId])) {\n differ.changeSource(sourceId, { command: 'updateSource' });\n if (\n before[sourceId].type === 'geojson' &&\n after[sourceId].type === 'geojson' &&\n canUpdateGeoJSON(before, after, sourceId)\n ) {\n commands.push({\n command: operations.setGeoJSONSourceData,\n args: [sourceId, after[sourceId].data]\n });\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(\n before,\n after,\n commands,\n layerId,\n klass,\n command,\n differ\n) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n const cmd = {\n command,\n args: [prop, after[prop], before[prop], klass],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n const cmd = {\n command,\n args: [prop, after[prop], before[prop], klass],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n}\n\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before, after, commands, differ) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n // detect removed layer\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({ command: operations.removeLayer, args: [layerId] });\n differ.changeLayer(layerId, { command: 'removeLayer' });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n var movingLayer = false;\n if (beforeIndex.hasOwnProperty(layerId)) {\n movingLayer = true;\n // remove the layer before we insert at the correct position\n commands.push({ command: operations.removeLayer, args: [layerId] });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({\n command: operations.addLayer,\n args: [afterIndex[layerId], insertBeforeLayerId]\n });\n tracker.splice(tracker.length - i, 0, layerId);\n\n if (movingLayer)\n differ.changeLayer(layerId, {\n command: 'moveLayer',\n args: [insertBeforeLayerId]\n });\n else {\n clean[layerId] = true;\n differ.changeLayer(layerId, {\n command: 'addLayer',\n args: [afterIndex[layerId], insertBeforeLayerId]\n });\n }\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(\n beforeLayer.layout,\n afterLayer.layout,\n commands,\n layerId,\n null,\n operations.setLayoutProperty,\n differ\n );\n diffLayerPropertyChanges(\n beforeLayer.paint,\n afterLayer.paint,\n commands,\n layerId,\n null,\n operations.setPaintProperty,\n differ\n );\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n const cmd = {\n command: operations.setFilter,\n args: ['filter', JSON.stringify(afterLayer.filter), beforeLayer.filter],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom)) {\n const cmd = {\n command: operations.setLayerZoomRange,\n args: ['minzoom', afterLayer.minzoom, beforeLayer.minzoom],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n if (!isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n const cmd = {\n command: operations.setLayerZoomRange,\n args: ['maxzoom', afterLayer.maxzoom, beforeLayer.maxzoom],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (\n prop === 'layout' ||\n prop === 'paint' ||\n prop === 'filter' ||\n prop === 'metadata' ||\n prop === 'minzoom' ||\n prop === 'maxzoom'\n )\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(\n beforeLayer[prop],\n afterLayer[prop],\n commands,\n layerId,\n prop.slice(6),\n operations.setPaintProperty,\n differ\n );\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n const cmd = {\n command: operations.setLayerProperty,\n args: [prop, afterLayer[prop], beforeLayer[prop]],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop))\n continue;\n if (\n prop === 'layout' ||\n prop === 'paint' ||\n prop === 'filter' ||\n prop === 'metadata' ||\n prop === 'minzoom' ||\n prop === 'maxzoom'\n )\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(\n beforeLayer[prop],\n afterLayer[prop],\n commands,\n layerId,\n prop.slice(6),\n operations.setPaintProperty\n );\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n const cmd = {\n command: operations.setLayerProperty,\n args: [prop, afterLayer[prop], beforeLayer[prop]],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nexport function diffStylesSetStyle(before, after) {\n if (!before) return [{ command: operations.setStyle, args: [after] }];\n const differ = new diffTracker();\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{ command: operations.setStyle, args: [after] }];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({ command: operations.setCenter, args: [after.center] });\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({ command: operations.setZoom, args: [after.zoom] });\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({ command: operations.setBearing, args: [after.bearing] });\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({ command: operations.setPitch, args: [after.pitch] });\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({ command: operations.setSprite, args: [after.sprite] });\n differ.changeSprite({\n command: 'setSprite',\n args: [after.sprite, before.sprite]\n });\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({ command: operations.setGlyphs, args: [after.glyphs] });\n differ.changeGlyphs({\n command: 'setGlyphs',\n args: [after.glyphs, before.glyphs]\n });\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({\n command: operations.setTransition,\n args: [after.transition]\n });\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({ command: operations.setLight, args: [after.light] });\n }\n if (!isEqual(before.fog, after.fog)) {\n commands.push({ command: operations.setFog, args: [after.fog] });\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({\n command: operations.setProjection,\n args: [after.projection]\n });\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(\n before.sources,\n after.sources,\n removeOrAddSourceCommands,\n sourcesRemoved,\n differ\n );\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Handle changes to `layers`\n diffLayers(before.layers, after.layers, commands, differ);\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{ command: operations.setStyle, args: [after] }];\n }\n\n commands = detectMovedLayers(commands);\n\n return differ;\n}\n\nfunction detectMovedLayers(commands) {\n var output = [];\n var blacklistAdds = [];\n\n function findReaddedLayer(removalCommand) {\n const targetId = removalCommand.args[0];\n const match = commands.find(l => l.args?.[0]?.id === targetId);\n if (match) {\n blacklistAdds.push(targetId);\n }\n return match;\n }\n\n commands.forEach(c => {\n if (c.command === 'removeLayer') {\n const readded = findReaddedLayer(c);\n if (readded) {\n output.push({ command: 'moveLayer', args: readded.args });\n } else output.push(c);\n } else if (c.command !== 'addLayer' || !blacklistAdds.includes(c.args[0]))\n output.push(c);\n });\n\n return output;\n}\n\n// Added this function to change the output format to be more helpful\nconst diffStyles = (before, after) => {\n const originalDiff = diffStylesSetStyle(before, after);\n\n const { layerProps, layers, sources, glyphs, sprite } = originalDiff;\n\n // formatting for source additions and removals\n const nextSources = sources.reduce((acc, s) => {\n const { change, source } = s;\n\n let type = change.command;\n\n switch (type) {\n case 'removeSource': {\n type = 'remove';\n break;\n }\n case 'addSource': {\n type = 'add';\n break;\n }\n }\n\n acc[source] = type;\n\n return acc;\n }, {});\n\n // formatting for layer additions, reorders, and removals\n const nextLayers = layers.reduce((acc, l) => {\n const { change, layer } = l;\n\n let type = change.command;\n\n switch (type) {\n case 'removeLayer': {\n type = 'remove';\n break;\n }\n case 'addLayer': {\n type = 'add';\n break;\n }\n case 'moveLayer': {\n type = 'move';\n break;\n }\n }\n\n acc[layer] = {\n type,\n ...(type === 'add' && {\n layer: change?.args[0],\n layerAbove: change?.args[1]\n }),\n ...(type === 'move' && { layerAbove: change?.args[0] })\n };\n\n return acc;\n }, {});\n\n // formatting for layer property changes\n const nextLayerProps = Object.keys(layerProps).reduce((acc, layerId) => {\n const nextLayerChanges = layerProps[layerId].reduce((accum, change) => {\n const { command, args } = change;\n\n let type = command;\n\n switch (command) {\n case 'setFilter': {\n type = 'filter';\n break;\n }\n // source & source-layer\n case 'setLayerProperty': {\n type = 'root';\n break;\n }\n case 'setPaintProperty': {\n type = 'paint';\n break;\n }\n // min and max zoom\n case 'setLayerZoomRange': {\n type = 'minMaxZoom';\n break;\n }\n case 'setLayoutProperty': {\n type = 'layout';\n break;\n }\n }\n\n const [propertyId, currentValue, compareValue] = args;\n\n // These are reversed out of the set style version of the diffing tool\n const current = compareValue;\n const compare = currentValue;\n\n if (type === 'root' || type === 'minMaxZoom') {\n accum[propertyId] = {\n current,\n compare\n };\n } else if (type === 'filter') {\n accum[propertyId] = {\n current,\n // Not sure why this is stringified\n compare: typeof compare === 'string' ? JSON.parse(compare) : compare\n };\n } else {\n if (!accum[type]) {\n accum[type] = {};\n }\n accum[type][propertyId] = {\n current,\n compare\n };\n }\n\n return accum;\n }, {});\n\n acc[layerId] = nextLayerChanges;\n\n return acc;\n }, {});\n\n let nextGlyphs;\n if (glyphs?.change?.args) {\n const [compareGlyph, currentGlyph] = glyphs?.change?.args;\n nextGlyphs = { current: currentGlyph, compare: compareGlyph };\n }\n\n let nextSprite;\n if (sprite?.change?.args) {\n const [compareSprite, currentSprite] = sprite?.change?.args;\n nextSprite = { current: currentSprite, compare: compareSprite };\n }\n\n return {\n layerProps: nextLayerProps,\n layers: nextLayers,\n sources: nextSources,\n glyphs: nextGlyphs,\n sprite: nextSprite\n };\n};\n\nexport const diff = diffStyles;\n"],"names":[],"version":3,"file":"main.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":";;;;A,Y,C;A,M,C,c,C,c,E,Y,E;I,K,E,I;C,C,C;A,M,C,c,C,c,E,M,E;I,U,E,I;I,G,E,S,G,G;Q,O,8B,C;K;C,C,C;A,M,C,c,C,c,E,oB,E;I,U,E,I;I,G,E,S,G,G;Q,O,4C,C;K;C,C,C;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,yB,C,I,G,K,C,C;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,yB,C,U,G,K,C,C;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,yB,C,M,G,yB,C,M,G,yB,C,I,G,yB,C,G,G,K,C,C;AGAO,IAAMuI,4BAAM,GAAG,QAAQ,AAAvB;AAAwB7D,yBAAA,CAAA6D,MAAA,GAAAA,4BAAA,CAAA7D;AACxB,IAAM0D,yBAAG,GAAG,KAAK,AAAjB;AAAkB1D,yBAAA,CAAA0D,GAAA,GAAAA,yBAAA,CAAA1D;AAClB,IAAMsE,4BAAM,GAAG,QAAQ,AAAvB;AAAwBtE,yBAAA,CAAAsE,MAAA,GAAAA,4BAAA,CAAAtE;AACxB,IAAMoD,0BAAI,GAAG,MAAM,AAAnB;AAAoBpD,yBAAA,CAAAoD,IAAA,GAAAA,0BAAA,CAAApD;;;ADHqB,SAAApE,6BAAAA,CAAAC,IAAA,EAAA;IAAA,yBAAA,CAAA;IAAA,OAAAD,6BAAA,GAAA,UAAA,IAAA,OAAAE,MAAA,IAAA,QAAA,IAAA,OAAAA,MAAA,CAAAC,QAAA,GAAA,SAAAF,GAAA,EAAA;QAAA,OAAA,OAAAA,GAAA,CAAA;KAAA,GAAA,SAAAA,GAAA,EAAA;QAAA,OAAAA,GAAA,IAAA,UAAA,IAAA,OAAAC,MAAA,IAAAD,GAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,GAAA,KAAAC,MAAA,CAAAG,SAAA,GAAA,QAAA,GAAA,OAAAJ,GAAA,CAAA;KAAA,EAAAD,6BAAA,CAAAC,IAAA,CAAA,CAAA;CAAA;AAAA,SAAAK,6BAAAA,CAAAC,MAAA,EAAAC,cAAA,EAAA;IAAA,IAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,CAAA,AAAA;IAAA,IAAAG,MAAA,CAAAC,qBAAA,EAAA;QAAA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","sources":["src/index.js","src/lib/diff.js","src/lib/diff-layers.js","src/lib/constants.js","src/lib/diff-layer-props.js","src/lib/diff-sources.js","src/lib/diff-root.js"],"sourcesContent":["import { diff, diffStylesSetStyle } from \"./lib/diff\";\n\nexport { diff, diffStylesSetStyle };\n","import { diffLayers } from './diff-layers';\nimport { diffLayerProps } from './diff-layer-props';\nimport { diffSources } from './diff-sources';\nimport { diffRoot } from './diff-root';\n\nconst defaultOutput = {\n root: {},\n layerProps: {},\n layers: {},\n sources: {}\n};\n\nconst diff = (a, b) => {\n let styleDiff = {};\n\n const { layers: layersA, sources: sourcesA } = a;\n\n const { layers: layersB, sources: sourcesB } = b;\n\n const layerDiff = diffLayers(layersA, layersB);\n\n const layerPropDiff = diffLayerProps(a, b);\n\n const sourceDiff = diffSources(sourcesA, sourcesB);\n\n const rootDiff = diffRoot(a, b);\n\n styleDiff.layers = layerDiff;\n styleDiff.layerProps = layerPropDiff;\n styleDiff.sources = sourceDiff;\n styleDiff.root = rootDiff;\n\n return { ...defaultOutput, ...styleDiff };\n};\n\nexport { diff };\n","import { REMOVE, ADD, MOVE } from './constants';\n\n// TODO We can better determine moved layers by if:\n// - only two layers moved, just choose one\n// - otherwise, check for bottom and top layers changed\nconst getMovedLayers = (a, b) => {\n const aByIndex = a.reduce((acc, layer, i) => {\n acc[layer.id] = { layerAbove: a?.[i + 1]?.id, layerBelow: a?.[i - 1]?.id };\n return acc;\n }, {});\n\n const moved = {};\n const aboveLayers = [];\n\n for (let i = 0; i < b.length; i++) {\n const bLayer = b[i];\n const aIndex = aByIndex[bLayer.id];\n if (!aIndex) continue;\n const nextLayerAbove = b?.[i + 1]?.id;\n const nextLayerBelow = b?.[i - 1]?.id;\n if (\n aIndex.layerAbove !== nextLayerAbove &&\n aIndex.layerBelow !== nextLayerBelow\n ) {\n const layerAbove = b?.[i + 1]?.id;\n aboveLayers.push(layerAbove);\n moved[bLayer.id] = {\n type: MOVE,\n layerAbove\n };\n }\n }\n\n // Remove any layers that are considered switched so we aren't redundant\n aboveLayers.forEach(id => delete moved[id]);\n\n return moved;\n};\n\nconst diffLayers = (a, b) => {\n const additions = b\n .map((l, i) => {\n if (a.some(layer => layer.id === l.id)) return false;\n return {\n [l.id]: {\n type: ADD,\n layer: l,\n layerAbove: b?.[i + 1]?.id\n }\n };\n })\n .filter(Boolean);\n\n const removals = a\n .map(l => {\n if (b.some(layer => layer.id === l.id)) return false;\n return {\n [l.id]: {\n type: REMOVE\n }\n };\n })\n .filter(Boolean);\n\n const formatted = additions.concat(removals).reduce((acc, ld) => {\n const [layerId, diff] = Object.entries(ld)[0];\n acc[layerId] = diff;\n return acc;\n }, {});\n\n const reorders = getMovedLayers(\n a.filter(l => !Object.keys(formatted).includes(l.id)),\n b.filter(l => !Object.keys(formatted).includes(l.id))\n );\n\n return { ...formatted, ...reorders };\n};\n\nexport { diffLayers };\n","export const REMOVE = 'remove';\nexport const ADD = 'add';\nexport const UPDATE = 'update';\nexport const MOVE = 'move';\n","import { latest } from '@mapbox/mapbox-gl-style-spec';\nimport { createRecurseStyle } from 'mapbox-gl-style-recurse';\nimport isEqual from 'lodash.isequal';\n\nconst layoutProps = latest.layout.reduce(\n (acc, layoutType) => acc.concat(Object.keys(latest[layoutType])),\n []\n);\n\nconst paintProps = latest.paint.reduce(\n (acc, paintType) => acc.concat(Object.keys(latest[paintType])),\n []\n);\n\nconst getPropertyType = key => {\n let propertyType = 'root';\n if (layoutProps.includes(key)) propertyType = 'layout';\n if (paintProps.includes(key)) propertyType = 'paint';\n return propertyType;\n};\n\nconst diffLayerProps = (a, b) => {\n let diff = {};\n\n // This function runs inside the style expressions to find single matches and populate the warnings array\n const diffExp = (layerId, beforeExp, key) => {\n let propertyType = getPropertyType(key);\n\n const bLayer = b.layers.find(l => l.id === layerId);\n if (bLayer) {\n let comparisonValue =\n propertyType === 'root' ? bLayer[key] : bLayer[propertyType][key];\n\n if (!isEqual(beforeExp, comparisonValue)) {\n let type;\n if (beforeExp === undefined && comparisonValue !== undefined)\n type = 'add';\n if (beforeExp !== undefined && comparisonValue === undefined)\n type = 'remove';\n if (beforeExp !== undefined && comparisonValue !== undefined)\n type = 'update';\n\n diff[layerId] = {\n ...(diff?.[layerId] ?? {}),\n [propertyType]: {\n ...(diff?.[layerId]?.[propertyType] ?? {}),\n [key]: { type, before: beforeExp, after: comparisonValue }\n }\n };\n }\n }\n\n // We return the existing match expression as-is because createRecurseStyle\n // can also be used to transform a stylesheet, but we only want to use it to warn\n return beforeExp;\n };\n\n const checkExpressions = createRecurseStyle({\n transformFn: diffExp,\n transformCondition: () => true\n });\n\n // Used with 'b' to get added expressions since they won't run on 'a'\n const diffAddedExp = (layerId, afterExp, key) => {\n let propertyType = getPropertyType(key);\n\n const aLayer = a.layers.find(l => l.id === layerId);\n if (aLayer) {\n let comparisonValue =\n propertyType === 'root' ? aLayer[key] : aLayer[propertyType][key];\n\n if (afterExp !== undefined && comparisonValue === undefined) {\n diff[layerId] = {\n ...(diff?.[layerId] ?? {}),\n [propertyType]: {\n ...(diff?.[layerId]?.[propertyType] ?? {}),\n [key]: { type: 'add', after: afterExp, before: comparisonValue }\n }\n };\n }\n }\n\n // We return the existing match expression as-is because createRecurseStyle\n // can also be used to transform a stylesheet, but we only want to use it to warn\n return afterExp;\n };\n\n const checkAddedExpressions = createRecurseStyle({\n transformFn: diffAddedExp,\n transformCondition: () => true\n });\n\n checkExpressions(a);\n\n checkAddedExpressions(b);\n\n return diff;\n};\n\nexport { diffLayerProps };\n","import isEqual from 'lodash.isequal';\nimport { ADD, REMOVE, UPDATE } from './constants';\n\nconst diffSources = (a, b) => {\n let diff = {};\n let consistentSourceKeys = Object.keys({ ...a, ...b });\n\n const additions = Object.entries(b).reduce((acc, [k, v]) => {\n if (!a[k]) {\n acc[k] = {\n type: ADD,\n source: v\n };\n consistentSourceKeys = consistentSourceKeys.filter(item => item !== k);\n }\n return acc;\n }, {});\n\n const removals = Object.entries(a).reduce((acc, [k, v]) => {\n if (!b[k]) {\n acc[k] = {\n type: REMOVE\n };\n consistentSourceKeys = consistentSourceKeys.filter(item => item !== k);\n }\n return acc;\n }, {});\n\n const updates = consistentSourceKeys.reduce((acc, k) => {\n const equal = isEqual(a[k], b[k]);\n if (!equal) {\n acc[k] = {\n type: UPDATE,\n before: a[k],\n after: b[k]\n };\n }\n return acc;\n }, {});\n\n diff = { ...additions, ...removals, ...updates };\n\n return diff;\n};\n\nexport { diffSources };\n","import isEqual from 'lodash.isequal';\n\nconst diffRoot = (a, b) => {\n const supportedKeys = [\n 'glyphs',\n 'sprite',\n 'id',\n 'name',\n 'fog',\n 'light',\n 'terrain'\n ];\n\n let diff = {};\n\n for (const key of supportedKeys) {\n if (!isEqual(a?.[key], b?.[key])) {\n let next = { before: a?.[key], after: b?.[key] };\n let type;\n if (a?.[key] === undefined && b?.[key] !== undefined) type = 'add';\n if (a?.[key] !== undefined && b?.[key] === undefined) type = 'remove';\n if (a?.[key] !== undefined && b?.[key] !== undefined) type = 'update';\n\n diff[key] = { ...next, type };\n }\n }\n\n return diff;\n};\n\nexport { diffRoot };\n"],"names":["_diff","require","_diffLayers","_diffLayerProps","_diffSources","_diffRoot","_typeof","obj","Symbol","iterator","constructor","prototype","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","call","TypeError","Number","defaultOutput","root","layerProps","layers","sources","diff","a","b","styleDiff","layersA","sourcesA","layersB","sourcesB","layerDiff","diffLayers","layerPropDiff","diffLayerProps","sourceDiff","diffSources","rootDiff","diffRoot","exports","_constants","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","name","Array","from","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","getMovedLayers","aByIndex","reduce","acc","layer","_a","_a2","id","layerAbove","layerBelow","moved","aboveLayers","_b","_b2","bLayer","aIndex","nextLayerAbove","nextLayerBelow","_b3","type","MOVE","additions","map","l","_b4","some","ADD","Boolean","removals","REMOVE","formatted","concat","ld","_Object$entries$","entries","layerId","reorders","includes","UPDATE","_mapboxGlStyleSpec","_mapboxGlStyleRecurse","_lodash","_interopRequireDefault","__esModule","layoutProps","latest","layout","layoutType","paintProps","paint","paintType","getPropertyType","propertyType","diffExp","beforeExp","find","comparisonValue","isEqual","_diff$layerId","_diff$layerId$propert","_diff$layerId2","before","after","checkExpressions","createRecurseStyle","transformFn","transformCondition","diffAddedExp","afterExp","aLayer","_diff$layerId3","_diff$layerId$propert2","_diff$layerId4","checkAddedExpressions","consistentSourceKeys","_ref","_ref2","k","v","item","_ref3","_ref4","updates","equal","supportedKeys","_supportedKeys"],"version":3,"file":"main.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/dist/module.js b/dist/module.js index d718887..1897f77 100644 --- a/dist/module.js +++ b/dist/module.js @@ -1,662 +1,700 @@ -const $2658df1f3ad7813b$var$isEqual = (a, b)=>JSON.stringify(a) === JSON.stringify(b); -class $2658df1f3ad7813b$var$diffTracker { - constructor(){ - this.glyphs = null; - this.sprite = null; - this.sources = []; - this.layers = []; - this.layerProps = {}; +import {latest as $5OpyM$latest} from "@mapbox/mapbox-gl-style-spec"; +import {createRecurseStyle as $5OpyM$createRecurseStyle} from "mapbox-gl-style-recurse"; +import * as $5OpyM$lodashisequal from "lodash.isequal"; + +var $cf838c15c8b009ba$exports = {}; +"use strict"; +Object.defineProperty($cf838c15c8b009ba$exports, "__esModule", { + value: true +}); +Object.defineProperty($cf838c15c8b009ba$exports, "diff", { + enumerable: true, + get: function get() { + return $2658df1f3ad7813b$exports.diff; } - changeGlyphs(change) { - this.glyphs = { - change: change - }; +}); +Object.defineProperty($cf838c15c8b009ba$exports, "diffStylesSetStyle", { + enumerable: true, + get: function get() { + return $2658df1f3ad7813b$exports.diffStylesSetStyle; } - changeSprite(change) { - this.sprite = { - change: change - }; - } - changeSource(source, change) { - this.sources.push({ - source: source, - change: change - }); +}); +var $2658df1f3ad7813b$exports = {}; +"use strict"; +Object.defineProperty($2658df1f3ad7813b$exports, "__esModule", { + value: true +}); +$2658df1f3ad7813b$exports.diff = void 0; +var $279d49bd6a494ea2$exports = {}; +"use strict"; +Object.defineProperty($279d49bd6a494ea2$exports, "__esModule", { + value: true +}); +$279d49bd6a494ea2$exports.diffLayers = void 0; +var $81d7f9c14b75c186$exports = {}; +"use strict"; +Object.defineProperty($81d7f9c14b75c186$exports, "__esModule", { + value: true +}); +$81d7f9c14b75c186$exports.UPDATE = $81d7f9c14b75c186$exports.REMOVE = $81d7f9c14b75c186$exports.MOVE = $81d7f9c14b75c186$exports.ADD = void 0; +var $81d7f9c14b75c186$var$REMOVE = "remove"; +$81d7f9c14b75c186$exports.REMOVE = $81d7f9c14b75c186$var$REMOVE; +var $81d7f9c14b75c186$var$ADD = "add"; +$81d7f9c14b75c186$exports.ADD = $81d7f9c14b75c186$var$ADD; +var $81d7f9c14b75c186$var$UPDATE = "update"; +$81d7f9c14b75c186$exports.UPDATE = $81d7f9c14b75c186$var$UPDATE; +var $81d7f9c14b75c186$var$MOVE = "move"; +$81d7f9c14b75c186$exports.MOVE = $81d7f9c14b75c186$var$MOVE; + + +function $279d49bd6a494ea2$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $279d49bd6a494ea2$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $279d49bd6a494ea2$var$_typeof(obj1); +} +function $279d49bd6a494ea2$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - changeLayer(layer, change) { - this.layers.push({ - layer: layer, - change: change + return keys; +} +function $279d49bd6a494ea2$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $279d49bd6a494ea2$var$ownKeys(Object(source), !0).forEach(function(key) { + $279d49bd6a494ea2$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $279d49bd6a494ea2$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } - changeLayerProp(layer, change) { - if (!this.layerProps[layer]) this.layerProps[layer] = [ - change - ]; - else this.layerProps[layer].push(change); - } + return target; } -const $2658df1f3ad7813b$var$operations = { - /* - * { command: 'setStyle', args: [stylesheet] } - */ setStyle: "setStyle", - /* - * { command: 'addLayer', args: [layer, 'beforeLayerId'] } - */ addLayer: "addLayer", - /* - * { command: 'removeLayer', args: ['layerId'] } - */ removeLayer: "removeLayer", - moveLayer: "moveLayer", - /* - * { command: 'setPaintProperty', args: ['layerId', 'prop', value] } - */ setPaintProperty: "setPaintProperty", - /* - * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] } - */ setLayoutProperty: "setLayoutProperty", - /* - * { command: 'setFilter', args: ['layerId', filter] } - */ setFilter: "setFilter", - /* - * { command: 'addSource', args: ['sourceId', source] } - */ addSource: "addSource", - /* - * { command: 'removeSource', args: ['sourceId'] } - */ removeSource: "removeSource", - /* - * { command: 'setGeoJSONSourceData', args: ['sourceId', data] } - */ setGeoJSONSourceData: "setGeoJSONSourceData", - /* - * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] } - */ setLayerZoomRange: "setLayerZoomRange", - /* - * { command: 'setLayerProperty', args: ['layerId', 'prop', value] } - */ setLayerProperty: "setLayerProperty", - /* - * { command: 'setCenter', args: [[lon, lat]] } - */ setCenter: "setCenter", - /* - * { command: 'setZoom', args: [zoom] } - */ setZoom: "setZoom", - /* - * { command: 'setBearing', args: [bearing] } - */ setBearing: "setBearing", - /* - * { command: 'setPitch', args: [pitch] } - */ setPitch: "setPitch", - /* - * { command: 'setSprite', args: ['spriteUrl'] } - */ setSprite: "setSprite", - /* - * { command: 'setGlyphs', args: ['glyphsUrl'] } - */ setGlyphs: "setGlyphs", - /* - * { command: 'setTransition', args: [transition] } - */ setTransition: "setTransition", - /* - * { command: 'setLighting', args: [lightProperties] } - */ setLight: "setLight", - /* - * { command: 'setTerrain', args: [terrainProperties] } - */ setTerrain: "setTerrain", - /* - * { command: 'setFog', args: [fogProperties] } - */ setFog: "setFog", - /* - * { command: 'setProjection', args: [projectionProperties] } - */ setProjection: "setProjection" -}; -function $2658df1f3ad7813b$var$addSource(sourceId, after, commands) { - commands.push({ - command: $2658df1f3ad7813b$var$operations.addSource, - args: [ - sourceId, - after[sourceId] - ] - }); +function $279d49bd6a494ea2$var$_slicedToArray(arr, i) { + return $279d49bd6a494ea2$var$_arrayWithHoles(arr) || $279d49bd6a494ea2$var$_iterableToArrayLimit(arr, i) || $279d49bd6a494ea2$var$_unsupportedIterableToArray(arr, i) || $279d49bd6a494ea2$var$_nonIterableRest(); } -function $2658df1f3ad7813b$var$removeSource(sourceId, commands, sourcesRemoved) { - commands.push({ - command: $2658df1f3ad7813b$var$operations.removeSource, - args: [ - sourceId - ] - }); - sourcesRemoved[sourceId] = true; +function $279d49bd6a494ea2$var$_nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function $2658df1f3ad7813b$var$updateSource(sourceId, after, commands, sourcesRemoved) { - $2658df1f3ad7813b$var$removeSource(sourceId, commands, sourcesRemoved); - $2658df1f3ad7813b$var$addSource(sourceId, after, commands); +function $279d49bd6a494ea2$var$_unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return $279d49bd6a494ea2$var$_arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $279d49bd6a494ea2$var$_arrayLikeToArray(o, minLen); } -function $2658df1f3ad7813b$var$canUpdateGeoJSON(before, after, sourceId) { - let prop; - for(prop in before[sourceId]){ - if (!before[sourceId].hasOwnProperty(prop)) continue; - if (prop !== "data" && !$2658df1f3ad7813b$var$isEqual(before[sourceId][prop], after[sourceId][prop])) return false; - } - for(prop in after[sourceId]){ - if (!after[sourceId].hasOwnProperty(prop)) continue; - if (prop !== "data" && !$2658df1f3ad7813b$var$isEqual(before[sourceId][prop], after[sourceId][prop])) return false; - } - return true; -} -function $2658df1f3ad7813b$var$diffSources(before, after, commands, sourcesRemoved, differ) { - before = before || {}; - after = after || {}; - let sourceId; - // look for sources to remove - for(sourceId in before){ - if (!before.hasOwnProperty(sourceId)) continue; - if (!after.hasOwnProperty(sourceId)) { - differ.changeSource(sourceId, { - command: "removeSource" - }); - $2658df1f3ad7813b$var$removeSource(sourceId, commands, sourcesRemoved); - } - } - // look for sources to add/update - for(sourceId in after){ - if (!after.hasOwnProperty(sourceId)) continue; - // add sources - if (!before.hasOwnProperty(sourceId)) { - differ.changeSource(sourceId, { - command: "addSource" - }); - $2658df1f3ad7813b$var$addSource(sourceId, after, commands); - } else if (!$2658df1f3ad7813b$var$isEqual(before[sourceId], after[sourceId])) { - differ.changeSource(sourceId, { - command: "updateSource" - }); - if (before[sourceId].type === "geojson" && after[sourceId].type === "geojson" && $2658df1f3ad7813b$var$canUpdateGeoJSON(before, after, sourceId)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setGeoJSONSourceData, - args: [ - sourceId, - after[sourceId].data - ] - }); - else // no update command, must remove then add - $2658df1f3ad7813b$var$updateSource(sourceId, after, commands, sourcesRemoved); +function $279d49bd6a494ea2$var$_arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; + return arr2; +} +function $279d49bd6a494ea2$var$_iterableToArrayLimit(arr, i) { + var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; + if (null != _i) { + var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; + try { + if (_x = (_i = _i.call(arr)).next, 0 === i) { + if (Object(_i) !== _i) return; + _n = !1; + } else for(; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); + } catch (err) { + _d = !0, _e = err; + } finally{ + try { + if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; + } finally{ + if (_d) throw _e; + } } + return _arr; } } -function $2658df1f3ad7813b$var$diffLayerPropertyChanges(before, after, commands, layerId, klass, command, differ) { - before = before || {}; - after = after || {}; - let prop; - for(prop in before){ - if (!before.hasOwnProperty(prop)) continue; - if (!$2658df1f3ad7813b$var$isEqual(before[prop], after[prop])) { - const cmd = { - command: command, - args: [ - prop, - after[prop], - before[prop], - klass - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } +function $279d49bd6a494ea2$var$_arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +function $279d49bd6a494ea2$var$_defineProperty(obj, key, value) { + key = $279d49bd6a494ea2$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $279d49bd6a494ea2$var$_toPropertyKey(arg) { + var key = $279d49bd6a494ea2$var$_toPrimitive(arg, "string"); + return $279d49bd6a494ea2$var$_typeof(key) === "symbol" ? key : String(key); +} +function $279d49bd6a494ea2$var$_toPrimitive(input, hint) { + if ($279d49bd6a494ea2$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($279d49bd6a494ea2$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); } - for(prop in after){ - if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue; - if (!$2658df1f3ad7813b$var$isEqual(before[prop], after[prop])) { - const cmd = { - command: command, - args: [ - prop, - after[prop], - before[prop], - klass - ], - layer: layerId + return (hint === "string" ? String : Number)(input); +} +// TODO We can better determine moved layers by if: +// - only two layers moved, just choose one +// - otherwise, check for bottom and top layers changed +var $279d49bd6a494ea2$var$getMovedLayers = function getMovedLayers(a, b) { + var aByIndex = a.reduce(function(acc, layer, i) { + var _a, _a2; + acc[layer.id] = { + layerAbove: a === null || a === void 0 ? void 0 : (_a = a[i + 1]) === null || _a === void 0 ? void 0 : _a.id, + layerBelow: a === null || a === void 0 ? void 0 : (_a2 = a[i - 1]) === null || _a2 === void 0 ? void 0 : _a2.id + }; + return acc; + }, {}); + var moved = {}; + var aboveLayers = []; + for(var i1 = 0; i1 < b.length; i1++){ + var _b, _b2; + var bLayer = b[i1]; + var aIndex = aByIndex[bLayer.id]; + if (!aIndex) continue; + var nextLayerAbove = b === null || b === void 0 ? void 0 : (_b = b[i1 + 1]) === null || _b === void 0 ? void 0 : _b.id; + var nextLayerBelow = b === null || b === void 0 ? void 0 : (_b2 = b[i1 - 1]) === null || _b2 === void 0 ? void 0 : _b2.id; + if (aIndex.layerAbove !== nextLayerAbove && aIndex.layerBelow !== nextLayerBelow) { + var _b3; + var layerAbove = b === null || b === void 0 ? void 0 : (_b3 = b[i1 + 1]) === null || _b3 === void 0 ? void 0 : _b3.id; + aboveLayers.push(layerAbove); + moved[bLayer.id] = { + type: $81d7f9c14b75c186$exports.MOVE, + layerAbove: layerAbove }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); } } + // Remove any layers that are considered switched so we aren't redundant + aboveLayers.forEach(function(id) { + return delete moved[id]; + }); + return moved; +}; +var $279d49bd6a494ea2$var$diffLayers = function diffLayers(a, b) { + var additions = b.map(function(l, i) { + var _b4; + if (a.some(function(layer) { + return layer.id === l.id; + })) return false; + return $279d49bd6a494ea2$var$_defineProperty({}, l.id, { + type: $81d7f9c14b75c186$exports.ADD, + layer: l, + layerAbove: b === null || b === void 0 ? void 0 : (_b4 = b[i + 1]) === null || _b4 === void 0 ? void 0 : _b4.id + }); + }).filter(Boolean); + var removals = a.map(function(l) { + if (b.some(function(layer) { + return layer.id === l.id; + })) return false; + return $279d49bd6a494ea2$var$_defineProperty({}, l.id, { + type: $81d7f9c14b75c186$exports.REMOVE + }); + }).filter(Boolean); + var formatted = additions.concat(removals).reduce(function(acc, ld) { + var _Object$entries$ = $279d49bd6a494ea2$var$_slicedToArray(Object.entries(ld)[0], 2), layerId = _Object$entries$[0], diff = _Object$entries$[1]; + acc[layerId] = diff; + return acc; + }, {}); + var reorders = $279d49bd6a494ea2$var$getMovedLayers(a.filter(function(l) { + return !Object.keys(formatted).includes(l.id); + }), b.filter(function(l) { + return !Object.keys(formatted).includes(l.id); + })); + return $279d49bd6a494ea2$var$_objectSpread($279d49bd6a494ea2$var$_objectSpread({}, formatted), reorders); +}; +$279d49bd6a494ea2$exports.diffLayers = $279d49bd6a494ea2$var$diffLayers; + + +var $7de094c6fb558a03$exports = {}; +"use strict"; +Object.defineProperty($7de094c6fb558a03$exports, "__esModule", { + value: true +}); +$7de094c6fb558a03$exports.diffLayerProps = void 0; + + + +var $7de094c6fb558a03$var$_lodash = $7de094c6fb558a03$var$_interopRequireDefault($5OpyM$lodashisequal); +function $7de094c6fb558a03$var$_interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; } -function $2658df1f3ad7813b$var$pluckId(layer) { - return layer.id; -} -function $2658df1f3ad7813b$var$indexById(group, layer) { - group[layer.id] = layer; - return group; -} -function $2658df1f3ad7813b$var$diffLayers(before, after, commands, differ) { - before = before || []; - after = after || []; - // order of layers by id - const beforeOrder = before.map($2658df1f3ad7813b$var$pluckId); - const afterOrder = after.map($2658df1f3ad7813b$var$pluckId); - // index of layer by id - const beforeIndex = before.reduce($2658df1f3ad7813b$var$indexById, {}); - const afterIndex = after.reduce($2658df1f3ad7813b$var$indexById, {}); - // track order of layers as if they have been mutated - const tracker = beforeOrder.slice(); - // layers that have been added do not need to be diffed - const clean = Object.create(null); - let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop; - // remove layers - for(i = 0, d = 0; i < beforeOrder.length; i++){ - layerId = beforeOrder[i]; - // detect removed layer - if (!afterIndex.hasOwnProperty(layerId)) { - commands.push({ - command: $2658df1f3ad7813b$var$operations.removeLayer, - args: [ - layerId - ] - }); - differ.changeLayer(layerId, { - command: "removeLayer" - }); - tracker.splice(tracker.indexOf(layerId, d), 1); - } else // limit where in tracker we need to look for a match - d++; +function $7de094c6fb558a03$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $7de094c6fb558a03$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $7de094c6fb558a03$var$_typeof(obj1); +} +function $7de094c6fb558a03$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - // add/reorder layers - for(i = 0, d = 0; i < afterOrder.length; i++){ - // work backwards as insert is before an existing layer - layerId = afterOrder[afterOrder.length - 1 - i]; - if (tracker[tracker.length - 1 - i] === layerId) continue; - var movingLayer = false; - if (beforeIndex.hasOwnProperty(layerId)) { - movingLayer = true; - // remove the layer before we insert at the correct position - commands.push({ - command: $2658df1f3ad7813b$var$operations.removeLayer, - args: [ - layerId - ] - }); - tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1); - } else // limit where in tracker we need to look for a match - d++; - // add layer at correct position - insertBeforeLayerId = tracker[tracker.length - i]; - commands.push({ - command: $2658df1f3ad7813b$var$operations.addLayer, - args: [ - afterIndex[layerId], - insertBeforeLayerId - ] - }); - tracker.splice(tracker.length - i, 0, layerId); - if (movingLayer) differ.changeLayer(layerId, { - command: "moveLayer", - args: [ - insertBeforeLayerId - ] + return keys; +} +function $7de094c6fb558a03$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $7de094c6fb558a03$var$ownKeys(Object(source), !0).forEach(function(key) { + $7de094c6fb558a03$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $7de094c6fb558a03$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); - else { - clean[layerId] = true; - differ.changeLayer(layerId, { - command: "addLayer", - args: [ - afterIndex[layerId], - insertBeforeLayerId - ] - }); - } } - // update layers - for(i = 0; i < afterOrder.length; i++){ - layerId = afterOrder[i]; - beforeLayer = beforeIndex[layerId]; - afterLayer = afterIndex[layerId]; - // no need to update if previously added (new or moved) - if (clean[layerId] || $2658df1f3ad7813b$var$isEqual(beforeLayer, afterLayer)) continue; - // layout, paint, filter, minzoom, maxzoom - $2658df1f3ad7813b$var$diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, $2658df1f3ad7813b$var$operations.setLayoutProperty, differ); - $2658df1f3ad7813b$var$diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, $2658df1f3ad7813b$var$operations.setPaintProperty, differ); - if (!$2658df1f3ad7813b$var$isEqual(beforeLayer.filter, afterLayer.filter)) { - const cmd = { - command: $2658df1f3ad7813b$var$operations.setFilter, - args: [ - "filter", - JSON.stringify(afterLayer.filter), - beforeLayer.filter - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - if (!$2658df1f3ad7813b$var$isEqual(beforeLayer.minzoom, afterLayer.minzoom)) { - const cmd = { - command: $2658df1f3ad7813b$var$operations.setLayerZoomRange, - args: [ - "minzoom", - afterLayer.minzoom, - beforeLayer.minzoom - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); + return target; +} +function $7de094c6fb558a03$var$_defineProperty(obj, key, value) { + key = $7de094c6fb558a03$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $7de094c6fb558a03$var$_toPropertyKey(arg) { + var key = $7de094c6fb558a03$var$_toPrimitive(arg, "string"); + return $7de094c6fb558a03$var$_typeof(key) === "symbol" ? key : String(key); +} +function $7de094c6fb558a03$var$_toPrimitive(input, hint) { + if ($7de094c6fb558a03$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($7de094c6fb558a03$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} +var $7de094c6fb558a03$var$layoutProps = $5OpyM$latest.layout.reduce(function(acc, layoutType) { + return acc.concat(Object.keys($5OpyM$latest[layoutType])); +}, []); +var $7de094c6fb558a03$var$paintProps = $5OpyM$latest.paint.reduce(function(acc, paintType) { + return acc.concat(Object.keys($5OpyM$latest[paintType])); +}, []); +var $7de094c6fb558a03$var$getPropertyType = function getPropertyType(key) { + var propertyType = "root"; + if ($7de094c6fb558a03$var$layoutProps.includes(key)) propertyType = "layout"; + if ($7de094c6fb558a03$var$paintProps.includes(key)) propertyType = "paint"; + return propertyType; +}; +var $7de094c6fb558a03$var$diffLayerProps = function diffLayerProps(a, b) { + var diff = {}; + // This function runs inside the style expressions to find single matches and populate the warnings array + var diffExp = function diffExp(layerId, beforeExp, key) { + var propertyType = $7de094c6fb558a03$var$getPropertyType(key); + var bLayer = b.layers.find(function(l) { + return l.id === layerId; + }); + if (bLayer) { + var comparisonValue = propertyType === "root" ? bLayer[key] : bLayer[propertyType][key]; + if (!(0, $7de094c6fb558a03$var$_lodash["default"])(beforeExp, comparisonValue)) { + var _diff$layerId, _diff$layerId$propert, _diff$layerId2; + var type; + if (beforeExp === undefined && comparisonValue !== undefined) type = "add"; + if (beforeExp !== undefined && comparisonValue === undefined) type = "remove"; + if (beforeExp !== undefined && comparisonValue !== undefined) type = "update"; + diff[layerId] = $7de094c6fb558a03$var$_objectSpread($7de094c6fb558a03$var$_objectSpread({}, (_diff$layerId = diff === null || diff === void 0 ? void 0 : diff[layerId]) !== null && _diff$layerId !== void 0 ? _diff$layerId : {}), {}, $7de094c6fb558a03$var$_defineProperty({}, propertyType, $7de094c6fb558a03$var$_objectSpread($7de094c6fb558a03$var$_objectSpread({}, (_diff$layerId$propert = diff === null || diff === void 0 ? void 0 : (_diff$layerId2 = diff[layerId]) === null || _diff$layerId2 === void 0 ? void 0 : _diff$layerId2[propertyType]) !== null && _diff$layerId$propert !== void 0 ? _diff$layerId$propert : {}), {}, $7de094c6fb558a03$var$_defineProperty({}, key, { + type: type, + before: beforeExp, + after: comparisonValue + })))); + } } - if (!$2658df1f3ad7813b$var$isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) { - const cmd = { - command: $2658df1f3ad7813b$var$operations.setLayerZoomRange, - args: [ - "maxzoom", - afterLayer.maxzoom, - beforeLayer.maxzoom - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); + // We return the existing match expression as-is because createRecurseStyle + // can also be used to transform a stylesheet, but we only want to use it to warn + return beforeExp; + }; + var checkExpressions = (0, $5OpyM$createRecurseStyle)({ + transformFn: diffExp, + transformCondition: function transformCondition() { + return true; } - // handle all other layer props, including paint.* - for(prop in beforeLayer){ - if (!beforeLayer.hasOwnProperty(prop)) continue; - if (prop === "layout" || prop === "paint" || prop === "filter" || prop === "metadata" || prop === "minzoom" || prop === "maxzoom") continue; - if (prop.indexOf("paint.") === 0) $2658df1f3ad7813b$var$diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), $2658df1f3ad7813b$var$operations.setPaintProperty, differ); - else if (!$2658df1f3ad7813b$var$isEqual(beforeLayer[prop], afterLayer[prop])) { - const cmd = { - command: $2658df1f3ad7813b$var$operations.setLayerProperty, - args: [ - prop, - afterLayer[prop], - beforeLayer[prop] - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); + }); + // Used with 'b' to get added expressions since they won't run on 'a' + var diffAddedExp = function diffAddedExp(layerId, afterExp, key) { + var propertyType = $7de094c6fb558a03$var$getPropertyType(key); + var aLayer = a.layers.find(function(l) { + return l.id === layerId; + }); + if (aLayer) { + var comparisonValue = propertyType === "root" ? aLayer[key] : aLayer[propertyType][key]; + if (afterExp !== undefined && comparisonValue === undefined) { + var _diff$layerId3, _diff$layerId$propert2, _diff$layerId4; + diff[layerId] = $7de094c6fb558a03$var$_objectSpread($7de094c6fb558a03$var$_objectSpread({}, (_diff$layerId3 = diff === null || diff === void 0 ? void 0 : diff[layerId]) !== null && _diff$layerId3 !== void 0 ? _diff$layerId3 : {}), {}, $7de094c6fb558a03$var$_defineProperty({}, propertyType, $7de094c6fb558a03$var$_objectSpread($7de094c6fb558a03$var$_objectSpread({}, (_diff$layerId$propert2 = diff === null || diff === void 0 ? void 0 : (_diff$layerId4 = diff[layerId]) === null || _diff$layerId4 === void 0 ? void 0 : _diff$layerId4[propertyType]) !== null && _diff$layerId$propert2 !== void 0 ? _diff$layerId$propert2 : {}), {}, $7de094c6fb558a03$var$_defineProperty({}, key, { + type: "add", + after: afterExp, + before: comparisonValue + })))); } } - for(prop in afterLayer){ - if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue; - if (prop === "layout" || prop === "paint" || prop === "filter" || prop === "metadata" || prop === "minzoom" || prop === "maxzoom") continue; - if (prop.indexOf("paint.") === 0) $2658df1f3ad7813b$var$diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), $2658df1f3ad7813b$var$operations.setPaintProperty); - else if (!$2658df1f3ad7813b$var$isEqual(beforeLayer[prop], afterLayer[prop])) { - const cmd = { - command: $2658df1f3ad7813b$var$operations.setLayerProperty, - args: [ - prop, - afterLayer[prop], - beforeLayer[prop] - ], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } + // We return the existing match expression as-is because createRecurseStyle + // can also be used to transform a stylesheet, but we only want to use it to warn + return afterExp; + }; + var checkAddedExpressions = (0, $5OpyM$createRecurseStyle)({ + transformFn: diffAddedExp, + transformCondition: function transformCondition() { + return true; } - } + }); + checkExpressions(a); + checkAddedExpressions(b); + return diff; +}; +$7de094c6fb558a03$exports.diffLayerProps = $7de094c6fb558a03$var$diffLayerProps; + + +var $17b91c76a4143a29$exports = {}; +"use strict"; +Object.defineProperty($17b91c76a4143a29$exports, "__esModule", { + value: true +}); +$17b91c76a4143a29$exports.diffSources = void 0; + +var $17b91c76a4143a29$var$_lodash = $17b91c76a4143a29$var$_interopRequireDefault($5OpyM$lodashisequal); + +function $17b91c76a4143a29$var$_interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; } -function $2658df1f3ad7813b$export$c11d25f35bd6cdfa(before, after) { - if (!before) return [ - { - command: $2658df1f3ad7813b$var$operations.setStyle, - args: [ - after - ] - } - ]; - const differ = new $2658df1f3ad7813b$var$diffTracker(); - let commands = []; - try { - // Handle changes to top-level properties - if (!$2658df1f3ad7813b$var$isEqual(before.version, after.version)) return [ - { - command: $2658df1f3ad7813b$var$operations.setStyle, - args: [ - after - ] +function $17b91c76a4143a29$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $17b91c76a4143a29$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $17b91c76a4143a29$var$_typeof(obj1); +} +function $17b91c76a4143a29$var$_slicedToArray(arr, i) { + return $17b91c76a4143a29$var$_arrayWithHoles(arr) || $17b91c76a4143a29$var$_iterableToArrayLimit(arr, i) || $17b91c76a4143a29$var$_unsupportedIterableToArray(arr, i) || $17b91c76a4143a29$var$_nonIterableRest(); +} +function $17b91c76a4143a29$var$_nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +function $17b91c76a4143a29$var$_unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return $17b91c76a4143a29$var$_arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $17b91c76a4143a29$var$_arrayLikeToArray(o, minLen); +} +function $17b91c76a4143a29$var$_arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; + return arr2; +} +function $17b91c76a4143a29$var$_iterableToArrayLimit(arr, i) { + var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; + if (null != _i) { + var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; + try { + if (_x = (_i = _i.call(arr)).next, 0 === i) { + if (Object(_i) !== _i) return; + _n = !1; + } else for(; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); + } catch (err) { + _d = !0, _e = err; + } finally{ + try { + if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; + } finally{ + if (_d) throw _e; } - ]; - if (!$2658df1f3ad7813b$var$isEqual(before.center, after.center)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setCenter, - args: [ - after.center - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.zoom, after.zoom)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setZoom, - args: [ - after.zoom - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.bearing, after.bearing)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setBearing, - args: [ - after.bearing - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.pitch, after.pitch)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setPitch, - args: [ - after.pitch - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.sprite, after.sprite)) { - commands.push({ - command: $2658df1f3ad7813b$var$operations.setSprite, - args: [ - after.sprite - ] - }); - differ.changeSprite({ - command: "setSprite", - args: [ - after.sprite, - before.sprite - ] - }); - } - if (!$2658df1f3ad7813b$var$isEqual(before.glyphs, after.glyphs)) { - commands.push({ - command: $2658df1f3ad7813b$var$operations.setGlyphs, - args: [ - after.glyphs - ] - }); - differ.changeGlyphs({ - command: "setGlyphs", - args: [ - after.glyphs, - before.glyphs - ] - }); } - if (!$2658df1f3ad7813b$var$isEqual(before.transition, after.transition)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setTransition, - args: [ - after.transition - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.light, after.light)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setLight, - args: [ - after.light - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.fog, after.fog)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setFog, - args: [ - after.fog - ] - }); - if (!$2658df1f3ad7813b$var$isEqual(before.projection, after.projection)) commands.push({ - command: $2658df1f3ad7813b$var$operations.setProjection, - args: [ - after.projection - ] + return _arr; + } +} +function $17b91c76a4143a29$var$_arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} +function $17b91c76a4143a29$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; +} +function $17b91c76a4143a29$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $17b91c76a4143a29$var$ownKeys(Object(source), !0).forEach(function(key) { + $17b91c76a4143a29$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $17b91c76a4143a29$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); - // Handle changes to `sources` - // If a source is to be removed, we also--before the removeSource - // command--need to remove all the style layers that depend on it. - const sourcesRemoved = {}; - // First collect the {add,remove}Source commands - const removeOrAddSourceCommands = []; - $2658df1f3ad7813b$var$diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved, differ); - commands = commands.concat(removeOrAddSourceCommands); - // Handle changes to `layers` - $2658df1f3ad7813b$var$diffLayers(before.layers, after.layers, commands, differ); - } catch (e) { - // fall back to setStyle - console.warn("Unable to compute style diff:", e); - commands = [ - { - command: $2658df1f3ad7813b$var$operations.setStyle, - args: [ - after - ] - } - ]; } - commands = $2658df1f3ad7813b$var$detectMovedLayers(commands); - return differ; -} -function $2658df1f3ad7813b$var$detectMovedLayers(commands) { - var output = []; - var blacklistAdds = []; - function findReaddedLayer(removalCommand) { - const targetId = removalCommand.args[0]; - const match = commands.find((l)=>l.args?.[0]?.id === targetId); - if (match) blacklistAdds.push(targetId); - return match; + return target; +} +function $17b91c76a4143a29$var$_defineProperty(obj, key, value) { + key = $17b91c76a4143a29$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $17b91c76a4143a29$var$_toPropertyKey(arg) { + var key = $17b91c76a4143a29$var$_toPrimitive(arg, "string"); + return $17b91c76a4143a29$var$_typeof(key) === "symbol" ? key : String(key); +} +function $17b91c76a4143a29$var$_toPrimitive(input, hint) { + if ($17b91c76a4143a29$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($17b91c76a4143a29$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); } - commands.forEach((c)=>{ - if (c.command === "removeLayer") { - const readded = findReaddedLayer(c); - if (readded) output.push({ - command: "moveLayer", - args: readded.args + return (hint === "string" ? String : Number)(input); +} +var $17b91c76a4143a29$var$diffSources = function diffSources(a, b) { + var diff = {}; + var consistentSourceKeys = Object.keys($17b91c76a4143a29$var$_objectSpread($17b91c76a4143a29$var$_objectSpread({}, a), b)); + var additions = Object.entries(b).reduce(function(acc, _ref) { + var _ref2 = $17b91c76a4143a29$var$_slicedToArray(_ref, 2), k = _ref2[0], v = _ref2[1]; + if (!a[k]) { + acc[k] = { + type: $81d7f9c14b75c186$exports.ADD, + source: v + }; + consistentSourceKeys = consistentSourceKeys.filter(function(item) { + return item !== k; }); - else output.push(c); - } else if (c.command !== "addLayer" || !blacklistAdds.includes(c.args[0])) output.push(c); - }); - return output; -} -// Added this function to change the output format to be more helpful -const $2658df1f3ad7813b$var$diffStyles = (before, after)=>{ - const originalDiff = $2658df1f3ad7813b$export$c11d25f35bd6cdfa(before, after); - const { layerProps: layerProps , layers: layers , sources: sources , glyphs: glyphs , sprite: sprite } = originalDiff; - // formatting for source additions and removals - const nextSources = sources.reduce((acc, s)=>{ - const { change: change , source: source } = s; - let type = change.command; - switch(type){ - case "removeSource": - type = "remove"; - break; - case "addSource": - type = "add"; - break; } - acc[source] = type; return acc; }, {}); - // formatting for layer additions, reorders, and removals - const nextLayers = layers.reduce((acc, l)=>{ - const { change: change , layer: layer } = l; - let type = change.command; - switch(type){ - case "removeLayer": - type = "remove"; - break; - case "addLayer": - type = "add"; - break; - case "moveLayer": - type = "move"; - break; + var removals = Object.entries(a).reduce(function(acc, _ref3) { + var _ref4 = $17b91c76a4143a29$var$_slicedToArray(_ref3, 2), k = _ref4[0], v = _ref4[1]; + if (!b[k]) { + acc[k] = { + type: $81d7f9c14b75c186$exports.REMOVE + }; + consistentSourceKeys = consistentSourceKeys.filter(function(item) { + return item !== k; + }); } - acc[layer] = { - type: type, - ...type === "add" && { - layer: change?.args[0], - layerAbove: change?.args[1] - }, - ...type === "move" && { - layerAbove: change?.args[0] - } - }; return acc; }, {}); - // formatting for layer property changes - const nextLayerProps = Object.keys(layerProps).reduce((acc, layerId)=>{ - const nextLayerChanges = layerProps[layerId].reduce((accum, change)=>{ - const { command: command , args: args } = change; - let type = command; - switch(command){ - case "setFilter": - type = "filter"; - break; - // source & source-layer - case "setLayerProperty": - type = "root"; - break; - case "setPaintProperty": - type = "paint"; - break; - // min and max zoom - case "setLayerZoomRange": - type = "minMaxZoom"; - break; - case "setLayoutProperty": - type = "layout"; - break; - } - const [propertyId, currentValue, compareValue] = args; - // These are reversed out of the set style version of the diffing tool - const current = compareValue; - const compare = currentValue; - if (type === "root" || type === "minMaxZoom") accum[propertyId] = { - current: current, - compare: compare - }; - else if (type === "filter") accum[propertyId] = { - current: current, - // Not sure why this is stringified - compare: typeof compare === "string" ? JSON.parse(compare) : compare - }; - else { - if (!accum[type]) accum[type] = {}; - accum[type][propertyId] = { - current: current, - compare: compare - }; - } - return accum; - }, {}); - acc[layerId] = nextLayerChanges; + var updates = consistentSourceKeys.reduce(function(acc, k) { + var equal = (0, $17b91c76a4143a29$var$_lodash["default"])(a[k], b[k]); + if (!equal) acc[k] = { + type: $81d7f9c14b75c186$exports.UPDATE, + before: a[k], + after: b[k] + }; return acc; }, {}); - let nextGlyphs; - if (glyphs?.change?.args) { - const [compareGlyph, currentGlyph] = glyphs?.change?.args; - nextGlyphs = { - current: currentGlyph, - compare: compareGlyph - }; + diff = $17b91c76a4143a29$var$_objectSpread($17b91c76a4143a29$var$_objectSpread($17b91c76a4143a29$var$_objectSpread({}, additions), removals), updates); + return diff; +}; +$17b91c76a4143a29$exports.diffSources = $17b91c76a4143a29$var$diffSources; + + +var $79e22b54c43e38f9$exports = {}; +"use strict"; +Object.defineProperty($79e22b54c43e38f9$exports, "__esModule", { + value: true +}); +$79e22b54c43e38f9$exports.diffRoot = void 0; + +var $79e22b54c43e38f9$var$_lodash = $79e22b54c43e38f9$var$_interopRequireDefault($5OpyM$lodashisequal); +function $79e22b54c43e38f9$var$_interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +function $79e22b54c43e38f9$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $79e22b54c43e38f9$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $79e22b54c43e38f9$var$_typeof(obj1); +} +function $79e22b54c43e38f9$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); } - let nextSprite; - if (sprite?.change?.args) { - const [compareSprite, currentSprite] = sprite?.change?.args; - nextSprite = { - current: currentSprite, - compare: compareSprite - }; + return keys; +} +function $79e22b54c43e38f9$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $79e22b54c43e38f9$var$ownKeys(Object(source), !0).forEach(function(key) { + $79e22b54c43e38f9$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $79e22b54c43e38f9$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); } - return { - layerProps: nextLayerProps, - layers: nextLayers, - sources: nextSources, - glyphs: nextGlyphs, - sprite: nextSprite - }; + return target; +} +function $79e22b54c43e38f9$var$_defineProperty(obj, key, value) { + key = $79e22b54c43e38f9$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $79e22b54c43e38f9$var$_toPropertyKey(arg) { + var key = $79e22b54c43e38f9$var$_toPrimitive(arg, "string"); + return $79e22b54c43e38f9$var$_typeof(key) === "symbol" ? key : String(key); +} +function $79e22b54c43e38f9$var$_toPrimitive(input, hint) { + if ($79e22b54c43e38f9$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($79e22b54c43e38f9$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} +var $79e22b54c43e38f9$var$diffRoot = function diffRoot(a, b) { + var supportedKeys = [ + "glyphs", + "sprite", + "id", + "name", + "fog", + "light", + "terrain" + ]; + var diff = {}; + for(var _i = 0, _supportedKeys = supportedKeys; _i < _supportedKeys.length; _i++){ + var key = _supportedKeys[_i]; + if (!(0, $79e22b54c43e38f9$var$_lodash["default"])(a === null || a === void 0 ? void 0 : a[key], b === null || b === void 0 ? void 0 : b[key])) { + var next = { + before: a === null || a === void 0 ? void 0 : a[key], + after: b === null || b === void 0 ? void 0 : b[key] + }; + var type = void 0; + if ((a === null || a === void 0 ? void 0 : a[key]) === undefined && (b === null || b === void 0 ? void 0 : b[key]) !== undefined) type = "add"; + if ((a === null || a === void 0 ? void 0 : a[key]) !== undefined && (b === null || b === void 0 ? void 0 : b[key]) === undefined) type = "remove"; + if ((a === null || a === void 0 ? void 0 : a[key]) !== undefined && (b === null || b === void 0 ? void 0 : b[key]) !== undefined) type = "update"; + diff[key] = $79e22b54c43e38f9$var$_objectSpread($79e22b54c43e38f9$var$_objectSpread({}, next), {}, { + type: type + }); + } + } + return diff; +}; +$79e22b54c43e38f9$exports.diffRoot = $79e22b54c43e38f9$var$diffRoot; + + +function $2658df1f3ad7813b$var$_typeof(obj1) { + "@babel/helpers - typeof"; + return $2658df1f3ad7813b$var$_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, $2658df1f3ad7813b$var$_typeof(obj1); +} +function $2658df1f3ad7813b$var$ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; +} +function $2658df1f3ad7813b$var$_objectSpread(target) { + for(var i = 1; i < arguments.length; i++){ + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? $2658df1f3ad7813b$var$ownKeys(Object(source), !0).forEach(function(key) { + $2658df1f3ad7813b$var$_defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : $2658df1f3ad7813b$var$ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; +} +function $2658df1f3ad7813b$var$_defineProperty(obj, key, value) { + key = $2658df1f3ad7813b$var$_toPropertyKey(key); + if (key in obj) Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + else obj[key] = value; + return obj; +} +function $2658df1f3ad7813b$var$_toPropertyKey(arg) { + var key = $2658df1f3ad7813b$var$_toPrimitive(arg, "string"); + return $2658df1f3ad7813b$var$_typeof(key) === "symbol" ? key : String(key); +} +function $2658df1f3ad7813b$var$_toPrimitive(input, hint) { + if ($2658df1f3ad7813b$var$_typeof(input) !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if ($2658df1f3ad7813b$var$_typeof(res) !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); +} +var $2658df1f3ad7813b$var$defaultOutput = { + root: {}, + layerProps: {}, + layers: {}, + sources: {} +}; +var $2658df1f3ad7813b$var$diff = function diff(a, b) { + var styleDiff = {}; + var layersA = a.layers, sourcesA = a.sources; + var layersB = b.layers, sourcesB = b.sources; + var layerDiff = (0, $279d49bd6a494ea2$exports.diffLayers)(layersA, layersB); + var layerPropDiff = (0, $7de094c6fb558a03$exports.diffLayerProps)(a, b); + var sourceDiff = (0, $17b91c76a4143a29$exports.diffSources)(sourcesA, sourcesB); + var rootDiff = (0, $79e22b54c43e38f9$exports.diffRoot)(a, b); + styleDiff.layers = layerDiff; + styleDiff.layerProps = layerPropDiff; + styleDiff.sources = sourceDiff; + styleDiff.root = rootDiff; + return $2658df1f3ad7813b$var$_objectSpread($2658df1f3ad7813b$var$_objectSpread({}, $2658df1f3ad7813b$var$defaultOutput), styleDiff); }; -const $2658df1f3ad7813b$export$a37e3c603d7117e5 = $2658df1f3ad7813b$var$diffStyles; +$2658df1f3ad7813b$exports.diff = $2658df1f3ad7813b$var$diff; -export {$2658df1f3ad7813b$export$a37e3c603d7117e5 as diff, $2658df1f3ad7813b$export$c11d25f35bd6cdfa as diffStylesSetStyle}; +export {$cf838c15c8b009ba$exports as default}; //# sourceMappingURL=module.js.map diff --git a/dist/module.js.map b/dist/module.js.map index 106dd41..386f303 100644 --- a/dist/module.js.map +++ b/dist/module.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["src/index.js","src/lib/diff.js"],"sourcesContent":["import { diff, diffStylesSetStyle } from \"./lib/diff\";\n\nexport { diff, diffStylesSetStyle };\n","const isEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b);\n\nclass diffTracker {\n constructor() {\n this.glyphs = null;\n this.sprite = null;\n this.sources = [];\n this.layers = [];\n this.layerProps = {};\n }\n\n changeGlyphs(change) {\n this.glyphs = { change: change };\n }\n\n changeSprite(change) {\n this.sprite = { change: change };\n }\n\n changeSource(source, change) {\n this.sources.push({ source: source, change: change });\n }\n\n changeLayer(layer, change) {\n this.layers.push({ layer: layer, change: change });\n }\n\n changeLayerProp(layer, change) {\n if (!this.layerProps[layer]) this.layerProps[layer] = [change];\n else this.layerProps[layer].push(change);\n }\n}\nconst operations = {\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n moveLayer: 'moveLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight',\n\n /*\n * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection'\n};\n\nfunction addSource(sourceId, after, commands) {\n commands.push({\n command: operations.addSource,\n args: [sourceId, after[sourceId]]\n });\n}\n\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({ command: operations.removeSource, args: [sourceId] });\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (\n prop !== 'data' &&\n !isEqual(before[sourceId][prop], after[sourceId][prop])\n ) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (\n prop !== 'data' &&\n !isEqual(before[sourceId][prop], after[sourceId][prop])\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before, after, commands, sourcesRemoved, differ) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n differ.changeSource(sourceId, { command: 'removeSource' });\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n\n // add sources\n if (!before.hasOwnProperty(sourceId)) {\n differ.changeSource(sourceId, { command: 'addSource' });\n addSource(sourceId, after, commands);\n }\n // update sources\n else if (!isEqual(before[sourceId], after[sourceId])) {\n differ.changeSource(sourceId, { command: 'updateSource' });\n if (\n before[sourceId].type === 'geojson' &&\n after[sourceId].type === 'geojson' &&\n canUpdateGeoJSON(before, after, sourceId)\n ) {\n commands.push({\n command: operations.setGeoJSONSourceData,\n args: [sourceId, after[sourceId].data]\n });\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(\n before,\n after,\n commands,\n layerId,\n klass,\n command,\n differ\n) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n const cmd = {\n command,\n args: [prop, after[prop], before[prop], klass],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n const cmd = {\n command,\n args: [prop, after[prop], before[prop], klass],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n}\n\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before, after, commands, differ) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n // detect removed layer\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({ command: operations.removeLayer, args: [layerId] });\n differ.changeLayer(layerId, { command: 'removeLayer' });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n var movingLayer = false;\n if (beforeIndex.hasOwnProperty(layerId)) {\n movingLayer = true;\n // remove the layer before we insert at the correct position\n commands.push({ command: operations.removeLayer, args: [layerId] });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({\n command: operations.addLayer,\n args: [afterIndex[layerId], insertBeforeLayerId]\n });\n tracker.splice(tracker.length - i, 0, layerId);\n\n if (movingLayer)\n differ.changeLayer(layerId, {\n command: 'moveLayer',\n args: [insertBeforeLayerId]\n });\n else {\n clean[layerId] = true;\n differ.changeLayer(layerId, {\n command: 'addLayer',\n args: [afterIndex[layerId], insertBeforeLayerId]\n });\n }\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(\n beforeLayer.layout,\n afterLayer.layout,\n commands,\n layerId,\n null,\n operations.setLayoutProperty,\n differ\n );\n diffLayerPropertyChanges(\n beforeLayer.paint,\n afterLayer.paint,\n commands,\n layerId,\n null,\n operations.setPaintProperty,\n differ\n );\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n const cmd = {\n command: operations.setFilter,\n args: ['filter', JSON.stringify(afterLayer.filter), beforeLayer.filter],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom)) {\n const cmd = {\n command: operations.setLayerZoomRange,\n args: ['minzoom', afterLayer.minzoom, beforeLayer.minzoom],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n if (!isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n const cmd = {\n command: operations.setLayerZoomRange,\n args: ['maxzoom', afterLayer.maxzoom, beforeLayer.maxzoom],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (\n prop === 'layout' ||\n prop === 'paint' ||\n prop === 'filter' ||\n prop === 'metadata' ||\n prop === 'minzoom' ||\n prop === 'maxzoom'\n )\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(\n beforeLayer[prop],\n afterLayer[prop],\n commands,\n layerId,\n prop.slice(6),\n operations.setPaintProperty,\n differ\n );\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n const cmd = {\n command: operations.setLayerProperty,\n args: [prop, afterLayer[prop], beforeLayer[prop]],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop))\n continue;\n if (\n prop === 'layout' ||\n prop === 'paint' ||\n prop === 'filter' ||\n prop === 'metadata' ||\n prop === 'minzoom' ||\n prop === 'maxzoom'\n )\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(\n beforeLayer[prop],\n afterLayer[prop],\n commands,\n layerId,\n prop.slice(6),\n operations.setPaintProperty\n );\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n const cmd = {\n command: operations.setLayerProperty,\n args: [prop, afterLayer[prop], beforeLayer[prop]],\n layer: layerId\n };\n commands.push(cmd);\n differ.changeLayerProp(layerId, cmd);\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nexport function diffStylesSetStyle(before, after) {\n if (!before) return [{ command: operations.setStyle, args: [after] }];\n const differ = new diffTracker();\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{ command: operations.setStyle, args: [after] }];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({ command: operations.setCenter, args: [after.center] });\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({ command: operations.setZoom, args: [after.zoom] });\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({ command: operations.setBearing, args: [after.bearing] });\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({ command: operations.setPitch, args: [after.pitch] });\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({ command: operations.setSprite, args: [after.sprite] });\n differ.changeSprite({\n command: 'setSprite',\n args: [after.sprite, before.sprite]\n });\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({ command: operations.setGlyphs, args: [after.glyphs] });\n differ.changeGlyphs({\n command: 'setGlyphs',\n args: [after.glyphs, before.glyphs]\n });\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({\n command: operations.setTransition,\n args: [after.transition]\n });\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({ command: operations.setLight, args: [after.light] });\n }\n if (!isEqual(before.fog, after.fog)) {\n commands.push({ command: operations.setFog, args: [after.fog] });\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({\n command: operations.setProjection,\n args: [after.projection]\n });\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(\n before.sources,\n after.sources,\n removeOrAddSourceCommands,\n sourcesRemoved,\n differ\n );\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Handle changes to `layers`\n diffLayers(before.layers, after.layers, commands, differ);\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{ command: operations.setStyle, args: [after] }];\n }\n\n commands = detectMovedLayers(commands);\n\n return differ;\n}\n\nfunction detectMovedLayers(commands) {\n var output = [];\n var blacklistAdds = [];\n\n function findReaddedLayer(removalCommand) {\n const targetId = removalCommand.args[0];\n const match = commands.find(l => l.args?.[0]?.id === targetId);\n if (match) {\n blacklistAdds.push(targetId);\n }\n return match;\n }\n\n commands.forEach(c => {\n if (c.command === 'removeLayer') {\n const readded = findReaddedLayer(c);\n if (readded) {\n output.push({ command: 'moveLayer', args: readded.args });\n } else output.push(c);\n } else if (c.command !== 'addLayer' || !blacklistAdds.includes(c.args[0]))\n output.push(c);\n });\n\n return output;\n}\n\n// Added this function to change the output format to be more helpful\nconst diffStyles = (before, after) => {\n const originalDiff = diffStylesSetStyle(before, after);\n\n const { layerProps, layers, sources, glyphs, sprite } = originalDiff;\n\n // formatting for source additions and removals\n const nextSources = sources.reduce((acc, s) => {\n const { change, source } = s;\n\n let type = change.command;\n\n switch (type) {\n case 'removeSource': {\n type = 'remove';\n break;\n }\n case 'addSource': {\n type = 'add';\n break;\n }\n }\n\n acc[source] = type;\n\n return acc;\n }, {});\n\n // formatting for layer additions, reorders, and removals\n const nextLayers = layers.reduce((acc, l) => {\n const { change, layer } = l;\n\n let type = change.command;\n\n switch (type) {\n case 'removeLayer': {\n type = 'remove';\n break;\n }\n case 'addLayer': {\n type = 'add';\n break;\n }\n case 'moveLayer': {\n type = 'move';\n break;\n }\n }\n\n acc[layer] = {\n type,\n ...(type === 'add' && {\n layer: change?.args[0],\n layerAbove: change?.args[1]\n }),\n ...(type === 'move' && { layerAbove: change?.args[0] })\n };\n\n return acc;\n }, {});\n\n // formatting for layer property changes\n const nextLayerProps = Object.keys(layerProps).reduce((acc, layerId) => {\n const nextLayerChanges = layerProps[layerId].reduce((accum, change) => {\n const { command, args } = change;\n\n let type = command;\n\n switch (command) {\n case 'setFilter': {\n type = 'filter';\n break;\n }\n // source & source-layer\n case 'setLayerProperty': {\n type = 'root';\n break;\n }\n case 'setPaintProperty': {\n type = 'paint';\n break;\n }\n // min and max zoom\n case 'setLayerZoomRange': {\n type = 'minMaxZoom';\n break;\n }\n case 'setLayoutProperty': {\n type = 'layout';\n break;\n }\n }\n\n const [propertyId, currentValue, compareValue] = args;\n\n // These are reversed out of the set style version of the diffing tool\n const current = compareValue;\n const compare = currentValue;\n\n if (type === 'root' || type === 'minMaxZoom') {\n accum[propertyId] = {\n current,\n compare\n };\n } else if (type === 'filter') {\n accum[propertyId] = {\n current,\n // Not sure why this is stringified\n compare: typeof compare === 'string' ? JSON.parse(compare) : compare\n };\n } else {\n if (!accum[type]) {\n accum[type] = {};\n }\n accum[type][propertyId] = {\n current,\n compare\n };\n }\n\n return accum;\n }, {});\n\n acc[layerId] = nextLayerChanges;\n\n return acc;\n }, {});\n\n let nextGlyphs;\n if (glyphs?.change?.args) {\n const [compareGlyph, currentGlyph] = glyphs?.change?.args;\n nextGlyphs = { current: currentGlyph, compare: compareGlyph };\n }\n\n let nextSprite;\n if (sprite?.change?.args) {\n const [compareSprite, currentSprite] = sprite?.change?.args;\n nextSprite = { current: currentSprite, compare: compareSprite };\n }\n\n return {\n layerProps: nextLayerProps,\n layers: nextLayers,\n sources: nextSources,\n glyphs: nextGlyphs,\n sprite: nextSprite\n };\n};\n\nexport const diff = diffStyles;\n"],"names":[],"version":3,"file":"module.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":";;;;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,M,C,c,C,yB,E,M,E;I,U,E,I;I,G,E,S,G,G;Q,O,8B,C;K;C,C,C;A,M,C,c,C,yB,E,oB,E;I,U,E,I;I,G,E,S,G,G;Q,O,4C,C;K;C,C,C;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,yB,C,I,G,K,C,C;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,yB,C,U,G,K,C,C;;A,Y,C;A,M,C,c,C,yB,E,Y,E;I,K,E,I;C,C,C;A,yB,C,M,G,yB,C,M,G,yB,C,I,G,yB,C,G,G,K,C,C;AGAO,IAAMuI,4BAAM,GAAG,QAAQ,AAAvB;AAAwB7D,yBAAA,CAAA6D,MAAA,GAAAA,4BAAA,CAAA7D;AACxB,IAAM0D,yBAAG,GAAG,KAAK,AAAjB;AAAkB1D,yBAAA,CAAA0D,GAAA,GAAAA,yBAAA,CAAA1D;AAClB,IAAMsE,4BAAM,GAAG,QAAQ,AAAvB;AAAwBtE,yBAAA,CAAAsE,MAAA,GAAAA,4BAAA,CAAAtE;AACxB,IAAMoD,0BAAI,GAAG,MAAM,AAAnB;AAAoBpD,yBAAA,CAAAoD,IAAA,GAAAA,0BAAA,CAAApD;;;ADHqB,SAAApE,6BAAAA,CAAAC,IAAA,EAAA;IAAA,yBAAA,CAAA;IAAA,OAAAD,6BAAA,GAAA,UAAA,IAAA,OAAAE,MAAA,IAAA,QAAA,IAAA,OAAAA,MAAA,CAAAC,QAAA,GAAA,SAAAF,GAAA,EAAA;QAAA,OAAA,OAAAA,GAAA,CAAA;KAAA,GAAA,SAAAA,GAAA,EAAA;QAAA,OAAAA,GAAA,IAAA,UAAA,IAAA,OAAAC,MAAA,IAAAD,GAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,GAAA,KAAAC,MAAA,CAAAG,SAAA,GAAA,QAAA,GAAA,OAAAJ,GAAA,CAAA;KAAA,EAAAD,6BAAA,CAAAC,IAAA,CAAA,CAAA;CAAA;AAAA,SAAAK,6BAAAA,CAAAC,MAAA,EAAAC,cAAA,EAAA;IAAA,IAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,CAAA,AAAA;IAAA,IAAAG,MAAA,CAAAC,qBAAA,EAAA;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","sources":["src/index.js","src/lib/diff.js","src/lib/diff-layers.js","src/lib/constants.js","src/lib/diff-layer-props.js","src/lib/diff-sources.js","src/lib/diff-root.js"],"sourcesContent":["import { diff, diffStylesSetStyle } from \"./lib/diff\";\n\nexport { diff, diffStylesSetStyle };\n","import { diffLayers } from './diff-layers';\nimport { diffLayerProps } from './diff-layer-props';\nimport { diffSources } from './diff-sources';\nimport { diffRoot } from './diff-root';\n\nconst defaultOutput = {\n root: {},\n layerProps: {},\n layers: {},\n sources: {}\n};\n\nconst diff = (a, b) => {\n let styleDiff = {};\n\n const { layers: layersA, sources: sourcesA } = a;\n\n const { layers: layersB, sources: sourcesB } = b;\n\n const layerDiff = diffLayers(layersA, layersB);\n\n const layerPropDiff = diffLayerProps(a, b);\n\n const sourceDiff = diffSources(sourcesA, sourcesB);\n\n const rootDiff = diffRoot(a, b);\n\n styleDiff.layers = layerDiff;\n styleDiff.layerProps = layerPropDiff;\n styleDiff.sources = sourceDiff;\n styleDiff.root = rootDiff;\n\n return { ...defaultOutput, ...styleDiff };\n};\n\nexport { diff };\n","import { REMOVE, ADD, MOVE } from './constants';\n\n// TODO We can better determine moved layers by if:\n// - only two layers moved, just choose one\n// - otherwise, check for bottom and top layers changed\nconst getMovedLayers = (a, b) => {\n const aByIndex = a.reduce((acc, layer, i) => {\n acc[layer.id] = { layerAbove: a?.[i + 1]?.id, layerBelow: a?.[i - 1]?.id };\n return acc;\n }, {});\n\n const moved = {};\n const aboveLayers = [];\n\n for (let i = 0; i < b.length; i++) {\n const bLayer = b[i];\n const aIndex = aByIndex[bLayer.id];\n if (!aIndex) continue;\n const nextLayerAbove = b?.[i + 1]?.id;\n const nextLayerBelow = b?.[i - 1]?.id;\n if (\n aIndex.layerAbove !== nextLayerAbove &&\n aIndex.layerBelow !== nextLayerBelow\n ) {\n const layerAbove = b?.[i + 1]?.id;\n aboveLayers.push(layerAbove);\n moved[bLayer.id] = {\n type: MOVE,\n layerAbove\n };\n }\n }\n\n // Remove any layers that are considered switched so we aren't redundant\n aboveLayers.forEach(id => delete moved[id]);\n\n return moved;\n};\n\nconst diffLayers = (a, b) => {\n const additions = b\n .map((l, i) => {\n if (a.some(layer => layer.id === l.id)) return false;\n return {\n [l.id]: {\n type: ADD,\n layer: l,\n layerAbove: b?.[i + 1]?.id\n }\n };\n })\n .filter(Boolean);\n\n const removals = a\n .map(l => {\n if (b.some(layer => layer.id === l.id)) return false;\n return {\n [l.id]: {\n type: REMOVE\n }\n };\n })\n .filter(Boolean);\n\n const formatted = additions.concat(removals).reduce((acc, ld) => {\n const [layerId, diff] = Object.entries(ld)[0];\n acc[layerId] = diff;\n return acc;\n }, {});\n\n const reorders = getMovedLayers(\n a.filter(l => !Object.keys(formatted).includes(l.id)),\n b.filter(l => !Object.keys(formatted).includes(l.id))\n );\n\n return { ...formatted, ...reorders };\n};\n\nexport { diffLayers };\n","export const REMOVE = 'remove';\nexport const ADD = 'add';\nexport const UPDATE = 'update';\nexport const MOVE = 'move';\n","import { latest } from '@mapbox/mapbox-gl-style-spec';\nimport { createRecurseStyle } from 'mapbox-gl-style-recurse';\nimport isEqual from 'lodash.isequal';\n\nconst layoutProps = latest.layout.reduce(\n (acc, layoutType) => acc.concat(Object.keys(latest[layoutType])),\n []\n);\n\nconst paintProps = latest.paint.reduce(\n (acc, paintType) => acc.concat(Object.keys(latest[paintType])),\n []\n);\n\nconst getPropertyType = key => {\n let propertyType = 'root';\n if (layoutProps.includes(key)) propertyType = 'layout';\n if (paintProps.includes(key)) propertyType = 'paint';\n return propertyType;\n};\n\nconst diffLayerProps = (a, b) => {\n let diff = {};\n\n // This function runs inside the style expressions to find single matches and populate the warnings array\n const diffExp = (layerId, beforeExp, key) => {\n let propertyType = getPropertyType(key);\n\n const bLayer = b.layers.find(l => l.id === layerId);\n if (bLayer) {\n let comparisonValue =\n propertyType === 'root' ? bLayer[key] : bLayer[propertyType][key];\n\n if (!isEqual(beforeExp, comparisonValue)) {\n let type;\n if (beforeExp === undefined && comparisonValue !== undefined)\n type = 'add';\n if (beforeExp !== undefined && comparisonValue === undefined)\n type = 'remove';\n if (beforeExp !== undefined && comparisonValue !== undefined)\n type = 'update';\n\n diff[layerId] = {\n ...(diff?.[layerId] ?? {}),\n [propertyType]: {\n ...(diff?.[layerId]?.[propertyType] ?? {}),\n [key]: { type, before: beforeExp, after: comparisonValue }\n }\n };\n }\n }\n\n // We return the existing match expression as-is because createRecurseStyle\n // can also be used to transform a stylesheet, but we only want to use it to warn\n return beforeExp;\n };\n\n const checkExpressions = createRecurseStyle({\n transformFn: diffExp,\n transformCondition: () => true\n });\n\n // Used with 'b' to get added expressions since they won't run on 'a'\n const diffAddedExp = (layerId, afterExp, key) => {\n let propertyType = getPropertyType(key);\n\n const aLayer = a.layers.find(l => l.id === layerId);\n if (aLayer) {\n let comparisonValue =\n propertyType === 'root' ? aLayer[key] : aLayer[propertyType][key];\n\n if (afterExp !== undefined && comparisonValue === undefined) {\n diff[layerId] = {\n ...(diff?.[layerId] ?? {}),\n [propertyType]: {\n ...(diff?.[layerId]?.[propertyType] ?? {}),\n [key]: { type: 'add', after: afterExp, before: comparisonValue }\n }\n };\n }\n }\n\n // We return the existing match expression as-is because createRecurseStyle\n // can also be used to transform a stylesheet, but we only want to use it to warn\n return afterExp;\n };\n\n const checkAddedExpressions = createRecurseStyle({\n transformFn: diffAddedExp,\n transformCondition: () => true\n });\n\n checkExpressions(a);\n\n checkAddedExpressions(b);\n\n return diff;\n};\n\nexport { diffLayerProps };\n","import isEqual from 'lodash.isequal';\nimport { ADD, REMOVE, UPDATE } from './constants';\n\nconst diffSources = (a, b) => {\n let diff = {};\n let consistentSourceKeys = Object.keys({ ...a, ...b });\n\n const additions = Object.entries(b).reduce((acc, [k, v]) => {\n if (!a[k]) {\n acc[k] = {\n type: ADD,\n source: v\n };\n consistentSourceKeys = consistentSourceKeys.filter(item => item !== k);\n }\n return acc;\n }, {});\n\n const removals = Object.entries(a).reduce((acc, [k, v]) => {\n if (!b[k]) {\n acc[k] = {\n type: REMOVE\n };\n consistentSourceKeys = consistentSourceKeys.filter(item => item !== k);\n }\n return acc;\n }, {});\n\n const updates = consistentSourceKeys.reduce((acc, k) => {\n const equal = isEqual(a[k], b[k]);\n if (!equal) {\n acc[k] = {\n type: UPDATE,\n before: a[k],\n after: b[k]\n };\n }\n return acc;\n }, {});\n\n diff = { ...additions, ...removals, ...updates };\n\n return diff;\n};\n\nexport { diffSources };\n","import isEqual from 'lodash.isequal';\n\nconst diffRoot = (a, b) => {\n const supportedKeys = [\n 'glyphs',\n 'sprite',\n 'id',\n 'name',\n 'fog',\n 'light',\n 'terrain'\n ];\n\n let diff = {};\n\n for (const key of supportedKeys) {\n if (!isEqual(a?.[key], b?.[key])) {\n let next = { before: a?.[key], after: b?.[key] };\n let type;\n if (a?.[key] === undefined && b?.[key] !== undefined) type = 'add';\n if (a?.[key] !== undefined && b?.[key] === undefined) type = 'remove';\n if (a?.[key] !== undefined && b?.[key] !== undefined) type = 'update';\n\n diff[key] = { ...next, type };\n }\n }\n\n return diff;\n};\n\nexport { diffRoot };\n"],"names":["_diff","require","_diffLayers","_diffLayerProps","_diffSources","_diffRoot","_typeof","obj","Symbol","iterator","constructor","prototype","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","call","TypeError","Number","defaultOutput","root","layerProps","layers","sources","diff","a","b","styleDiff","layersA","sourcesA","layersB","sourcesB","layerDiff","diffLayers","layerPropDiff","diffLayerProps","sourceDiff","diffSources","rootDiff","diffRoot","exports","_constants","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","name","Array","from","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","getMovedLayers","aByIndex","reduce","acc","layer","_a","_a2","id","layerAbove","layerBelow","moved","aboveLayers","_b","_b2","bLayer","aIndex","nextLayerAbove","nextLayerBelow","_b3","type","MOVE","additions","map","l","_b4","some","ADD","Boolean","removals","REMOVE","formatted","concat","ld","_Object$entries$","entries","layerId","reorders","includes","UPDATE","_mapboxGlStyleSpec","_mapboxGlStyleRecurse","_lodash","_interopRequireDefault","__esModule","layoutProps","latest","layout","layoutType","paintProps","paint","paintType","getPropertyType","propertyType","diffExp","beforeExp","find","comparisonValue","isEqual","_diff$layerId","_diff$layerId$propert","_diff$layerId2","before","after","checkExpressions","createRecurseStyle","transformFn","transformCondition","diffAddedExp","afterExp","aLayer","_diff$layerId3","_diff$layerId$propert2","_diff$layerId4","checkAddedExpressions","consistentSourceKeys","_ref","_ref2","k","v","item","_ref3","_ref4","updates","equal","supportedKeys","_supportedKeys"],"version":3,"file":"module.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/package.json b/package.json index b86cfba..902fb1b 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,23 @@ "module": "dist/module.js", "scripts": { "watch": "parcel watch", - "build": "parcel build" + "build": "parcel build", + "test": "jest --watchAll", + "jest-watch": "jest --watch" }, "author": "Stamen Design", "license": "ISC", "dependencies": { + "@mapbox/mapbox-gl-style-spec": "^13.28.0", + "lodash.isequal": "^4.5.0", + "mapbox-gl-style-recurse": "github:stamen/mapbox-gl-style-recurse#v0.2.0", "yargs": "^17.2.1" }, "devDependencies": { + "@babel/core": "^7.21.4", + "@babel/preset-env": "^7.21.4", + "babel-jest": "^29.5.0", + "jest": "^29.5.0", "parcel": "2.6.0" }, "bin": { diff --git a/src/lib/__test__/diff.test.js b/src/lib/__test__/diff.test.js new file mode 100644 index 0000000..dd3d2ad --- /dev/null +++ b/src/lib/__test__/diff.test.js @@ -0,0 +1,241 @@ +import { diff } from '../diff'; + +const clone = obj => JSON.parse(JSON.stringify(obj)); + +describe('diff', () => { + const style = { + id: 'my-style', + sprite: 'https://sprite-url.png', + glyphs: 'https://glyphs-url/{fontstack}/{range}.pbf', + sources: { + a: { + url: 'https://tile-url.mvt' + } + }, + layers: [ + { + id: 'layer-1', + source: 'a', + 'source-layer': 'road', + paint: { + 'line-color': 'red' + }, + layout: { + 'line-cap': 'round' + } + }, + { + id: 'layer-2', + source: 'a', + 'source-layer': 'road' + } + ] + }; + const output = { + root: {}, + layerProps: {}, + layers: {}, + sources: {} + }; + + let compare; + + beforeEach(() => { + compare = clone(style); + }); + + describe('diffs layer props', () => { + test('layer prop update', () => { + compare.layers[0].paint['line-color'] = 'green'; + const actual = diff(style, compare); + const expected = { + ...output, + layerProps: { + 'layer-1': { + paint: { + 'line-color': { before: 'red', after: 'green', type: 'update' } + } + } + } + }; + expect(actual).toEqual(expected); + }); + + test('layer prop addition', () => { + compare.layers[0].paint['line-width'] = 5; + const actual = diff(style, compare); + const expected = { + ...output, + layerProps: { + 'layer-1': { + paint: { + 'line-width': { before: undefined, after: 5, type: 'add' } + } + } + } + }; + expect(actual).toEqual(expected); + }); + + test('layer prop removal', () => { + delete compare.layers[0].paint['line-color']; + const actual = diff(style, compare); + const expected = { + ...output, + layerProps: { + 'layer-1': { + paint: { + 'line-color': { before: 'red', after: undefined, type: 'remove' } + } + } + } + }; + expect(actual).toEqual(expected); + }); + }); + + describe('diffs layers', () => { + test('remove layer', () => { + compare.layers = compare.layers.filter(l => l.id !== 'layer-1'); + const actual = diff(style, compare); + const expected = { + ...output, + layers: { + 'layer-1': { + type: 'remove' + } + } + }; + expect(actual).toEqual(expected); + }); + + test('add layer', () => { + compare.layers.splice(1, 0, { + id: 'layer-3', + source: 'a', + 'source-layer': 'water' + }); + const actual = diff(style, compare); + const expected = { + ...output, + layers: { + 'layer-3': { + type: 'add', + layer: { + id: 'layer-3', + source: 'a', + 'source-layer': 'water' + }, + layerAbove: 'layer-2' + } + } + }; + + expect(actual).toEqual(expected); + }); + + test('move layer', () => { + compare.layers = compare.layers.slice(1).concat([compare.layers[0]]); + const actual = diff(style, compare); + const expected = { + ...output, + layers: { + 'layer-2': { + layerAbove: 'layer-1', + type: 'move' + } + } + }; + expect(actual).toEqual(expected); + }); + }); + + describe('diffs sources', () => { + // TODO add source object + test('add source', () => { + compare.sources.b = { + url: 'https://tile-url-b.mvt' + }; + const actual = diff(style, compare); + const expected = { + ...output, + sources: { + b: { + type: 'add', + source: { + url: 'https://tile-url-b.mvt' + } + } + } + }; + expect(actual).toEqual(expected); + }); + + test('remove source', () => { + delete compare.sources.a; + const actual = diff(style, compare); + const expected = { + ...output, + sources: { + a: { type: 'remove' } + } + }; + expect(actual).toEqual(expected); + }); + + // TODO add before and after + test('update source', () => { + compare.sources.a = { url: 'https://other-tile-url.mvt' }; + const actual = diff(style, compare); + const expected = { + ...output, + sources: { + a: { + type: 'update', + after: { + url: 'https://other-tile-url.mvt' + }, + before: { + url: 'https://tile-url.mvt' + } + } + } + }; + expect(actual).toEqual(expected); + }); + }); + + describe('diffs root', () => { + test('diffs glyphs', () => { + compare.glyphs = 'https://other-glyphs-url/{fontstack}/{range}.pbf'; + const actual = diff(style, compare); + const expected = { + ...output, + root: { + glyphs: { + type: 'update', + before: 'https://glyphs-url/{fontstack}/{range}.pbf', + after: 'https://other-glyphs-url/{fontstack}/{range}.pbf' + } + } + }; + expect(actual).toEqual(expected); + }); + + test('diffs sprite', () => { + compare.sprite = 'https://other-sprite-url.png'; + const actual = diff(style, compare); + const expected = { + ...output, + root: { + sprite: { + type: 'update', + before: 'https://sprite-url.png', + after: 'https://other-sprite-url.png' + } + } + }; + expect(actual).toEqual(expected); + }); + }); +}); diff --git a/src/lib/constants.js b/src/lib/constants.js new file mode 100644 index 0000000..691935f --- /dev/null +++ b/src/lib/constants.js @@ -0,0 +1,4 @@ +export const REMOVE = 'remove'; +export const ADD = 'add'; +export const UPDATE = 'update'; +export const MOVE = 'move'; diff --git a/src/lib/diff-layer-props.js b/src/lib/diff-layer-props.js new file mode 100644 index 0000000..575f98e --- /dev/null +++ b/src/lib/diff-layer-props.js @@ -0,0 +1,100 @@ +import { latest } from '@mapbox/mapbox-gl-style-spec'; +import { createRecurseStyle } from 'mapbox-gl-style-recurse'; +import isEqual from 'lodash.isequal'; + +const layoutProps = latest.layout.reduce( + (acc, layoutType) => acc.concat(Object.keys(latest[layoutType])), + [] +); + +const paintProps = latest.paint.reduce( + (acc, paintType) => acc.concat(Object.keys(latest[paintType])), + [] +); + +const getPropertyType = key => { + let propertyType = 'root'; + if (layoutProps.includes(key)) propertyType = 'layout'; + if (paintProps.includes(key)) propertyType = 'paint'; + return propertyType; +}; + +const diffLayerProps = (a, b) => { + let diff = {}; + + // This function runs inside the style expressions to find single matches and populate the warnings array + const diffExp = (layerId, beforeExp, key) => { + let propertyType = getPropertyType(key); + + const bLayer = b.layers.find(l => l.id === layerId); + if (bLayer) { + let comparisonValue = + propertyType === 'root' ? bLayer[key] : bLayer[propertyType][key]; + + if (!isEqual(beforeExp, comparisonValue)) { + let type; + if (beforeExp === undefined && comparisonValue !== undefined) + type = 'add'; + if (beforeExp !== undefined && comparisonValue === undefined) + type = 'remove'; + if (beforeExp !== undefined && comparisonValue !== undefined) + type = 'update'; + + diff[layerId] = { + ...(diff?.[layerId] ?? {}), + [propertyType]: { + ...(diff?.[layerId]?.[propertyType] ?? {}), + [key]: { type, before: beforeExp, after: comparisonValue } + } + }; + } + } + + // We return the existing match expression as-is because createRecurseStyle + // can also be used to transform a stylesheet, but we only want to use it to warn + return beforeExp; + }; + + const checkExpressions = createRecurseStyle({ + transformFn: diffExp, + transformCondition: () => true + }); + + // Used with 'b' to get added expressions since they won't run on 'a' + const diffAddedExp = (layerId, afterExp, key) => { + let propertyType = getPropertyType(key); + + const aLayer = a.layers.find(l => l.id === layerId); + if (aLayer) { + let comparisonValue = + propertyType === 'root' ? aLayer[key] : aLayer[propertyType][key]; + + if (afterExp !== undefined && comparisonValue === undefined) { + diff[layerId] = { + ...(diff?.[layerId] ?? {}), + [propertyType]: { + ...(diff?.[layerId]?.[propertyType] ?? {}), + [key]: { type: 'add', after: afterExp, before: comparisonValue } + } + }; + } + } + + // We return the existing match expression as-is because createRecurseStyle + // can also be used to transform a stylesheet, but we only want to use it to warn + return afterExp; + }; + + const checkAddedExpressions = createRecurseStyle({ + transformFn: diffAddedExp, + transformCondition: () => true + }); + + checkExpressions(a); + + checkAddedExpressions(b); + + return diff; +}; + +export { diffLayerProps }; diff --git a/src/lib/diff-layers.js b/src/lib/diff-layers.js new file mode 100644 index 0000000..9dbce19 --- /dev/null +++ b/src/lib/diff-layers.js @@ -0,0 +1,76 @@ +import { REMOVE, ADD, MOVE } from './constants'; + +const getMovedLayers = (a, b) => { + const aByIndex = a.reduce((acc, layer, i) => { + acc[layer.id] = { layerAbove: a?.[i + 1]?.id, layerBelow: a?.[i - 1]?.id }; + return acc; + }, {}); + + const moved = {}; + const aboveLayers = []; + + for (let i = 0; i < b.length; i++) { + const bLayer = b[i]; + const aIndex = aByIndex[bLayer.id]; + if (!aIndex) continue; + const nextLayerAbove = b?.[i + 1]?.id; + const nextLayerBelow = b?.[i - 1]?.id; + if ( + aIndex.layerAbove !== nextLayerAbove && + aIndex.layerBelow !== nextLayerBelow + ) { + const layerAbove = b?.[i + 1]?.id; + aboveLayers.push(layerAbove); + moved[bLayer.id] = { + type: MOVE, + layerAbove + }; + } + } + + // Remove any layers that are considered switched so we aren't redundant + aboveLayers.forEach(id => delete moved[id]); + + return moved; +}; + +const diffLayers = (a, b) => { + const additions = b + .map((l, i) => { + if (a.some(layer => layer.id === l.id)) return false; + return { + [l.id]: { + type: ADD, + layer: l, + layerAbove: b?.[i + 1]?.id + } + }; + }) + .filter(Boolean); + + const removals = a + .map(l => { + if (b.some(layer => layer.id === l.id)) return false; + return { + [l.id]: { + type: REMOVE + } + }; + }) + .filter(Boolean); + + const formatted = additions.concat(removals).reduce((acc, ld) => { + const [layerId, diff] = Object.entries(ld)[0]; + acc[layerId] = diff; + return acc; + }, {}); + + const reorders = getMovedLayers( + a.filter(l => !Object.keys(formatted).includes(l.id)), + b.filter(l => !Object.keys(formatted).includes(l.id)) + ); + + return { ...formatted, ...reorders }; +}; + +export { diffLayers }; diff --git a/src/lib/diff-root.js b/src/lib/diff-root.js new file mode 100644 index 0000000..0bd98fa --- /dev/null +++ b/src/lib/diff-root.js @@ -0,0 +1,33 @@ +import isEqual from 'lodash.isequal'; + +const diffRoot = (a, b) => { + const supportedKeys = [ + 'glyphs', + 'sprite', + 'id', + 'name', + 'fog', + 'light', + 'terrain' + ]; + + let diff = {}; + + for (const key of supportedKeys) { + if (!isEqual(a?.[key], b?.[key])) { + if (a?.[key] === undefined && b?.[key] !== undefined) { + diff[key] = { value: b?.[key], type: 'add' }; + } + if (a?.[key] !== undefined && b?.[key] === undefined) { + diff[key] = { type: 'remove' }; + } + if (a?.[key] !== undefined && b?.[key] !== undefined) { + diff[key] = { before: a?.[key], after: b?.[key], type: 'update' }; + } + } + } + + return diff; +}; + +export { diffRoot }; diff --git a/src/lib/diff-sources.js b/src/lib/diff-sources.js new file mode 100644 index 0000000..93fb648 --- /dev/null +++ b/src/lib/diff-sources.js @@ -0,0 +1,46 @@ +import isEqual from 'lodash.isequal'; +import { ADD, REMOVE, UPDATE } from './constants'; + +const diffSources = (a, b) => { + let diff = {}; + let consistentSourceKeys = Object.keys({ ...a, ...b }); + + const additions = Object.entries(b).reduce((acc, [k, v]) => { + if (!a[k]) { + acc[k] = { + type: ADD, + source: v + }; + consistentSourceKeys = consistentSourceKeys.filter(item => item !== k); + } + return acc; + }, {}); + + const removals = Object.entries(a).reduce((acc, [k, v]) => { + if (!b[k]) { + acc[k] = { + type: REMOVE + }; + consistentSourceKeys = consistentSourceKeys.filter(item => item !== k); + } + return acc; + }, {}); + + const updates = consistentSourceKeys.reduce((acc, k) => { + const equal = isEqual(a[k], b[k]); + if (!equal) { + acc[k] = { + type: UPDATE, + before: a[k], + after: b[k] + }; + } + return acc; + }, {}); + + diff = { ...additions, ...removals, ...updates }; + + return diff; +}; + +export { diffSources }; diff --git a/src/lib/diff.js b/src/lib/diff.js index f547b2e..06f8ffe 100644 --- a/src/lib/diff.js +++ b/src/lib/diff.js @@ -1,754 +1,36 @@ -const isEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b); - -class diffTracker { - constructor() { - this.glyphs = null; - this.sprite = null; - this.sources = []; - this.layers = []; - this.layerProps = {}; - } - - changeGlyphs(change) { - this.glyphs = { change: change }; - } - - changeSprite(change) { - this.sprite = { change: change }; - } - - changeSource(source, change) { - this.sources.push({ source: source, change: change }); - } - - changeLayer(layer, change) { - this.layers.push({ layer: layer, change: change }); - } - - changeLayerProp(layer, change) { - if (!this.layerProps[layer]) this.layerProps[layer] = [change]; - else this.layerProps[layer].push(change); - } -} -const operations = { - /* - * { command: 'setStyle', args: [stylesheet] } - */ - setStyle: 'setStyle', - - /* - * { command: 'addLayer', args: [layer, 'beforeLayerId'] } - */ - addLayer: 'addLayer', - - /* - * { command: 'removeLayer', args: ['layerId'] } - */ - removeLayer: 'removeLayer', - - moveLayer: 'moveLayer', - - /* - * { command: 'setPaintProperty', args: ['layerId', 'prop', value] } - */ - setPaintProperty: 'setPaintProperty', - - /* - * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] } - */ - setLayoutProperty: 'setLayoutProperty', - - /* - * { command: 'setFilter', args: ['layerId', filter] } - */ - setFilter: 'setFilter', - - /* - * { command: 'addSource', args: ['sourceId', source] } - */ - addSource: 'addSource', - - /* - * { command: 'removeSource', args: ['sourceId'] } - */ - removeSource: 'removeSource', - - /* - * { command: 'setGeoJSONSourceData', args: ['sourceId', data] } - */ - setGeoJSONSourceData: 'setGeoJSONSourceData', - - /* - * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] } - */ - setLayerZoomRange: 'setLayerZoomRange', - - /* - * { command: 'setLayerProperty', args: ['layerId', 'prop', value] } - */ - setLayerProperty: 'setLayerProperty', - - /* - * { command: 'setCenter', args: [[lon, lat]] } - */ - setCenter: 'setCenter', - - /* - * { command: 'setZoom', args: [zoom] } - */ - setZoom: 'setZoom', - - /* - * { command: 'setBearing', args: [bearing] } - */ - setBearing: 'setBearing', - - /* - * { command: 'setPitch', args: [pitch] } - */ - setPitch: 'setPitch', - - /* - * { command: 'setSprite', args: ['spriteUrl'] } - */ - setSprite: 'setSprite', - - /* - * { command: 'setGlyphs', args: ['glyphsUrl'] } - */ - setGlyphs: 'setGlyphs', - - /* - * { command: 'setTransition', args: [transition] } - */ - setTransition: 'setTransition', - - /* - * { command: 'setLighting', args: [lightProperties] } - */ - setLight: 'setLight', - - /* - * { command: 'setTerrain', args: [terrainProperties] } - */ - setTerrain: 'setTerrain', - - /* - * { command: 'setFog', args: [fogProperties] } - */ - setFog: 'setFog', - - /* - * { command: 'setProjection', args: [projectionProperties] } - */ - setProjection: 'setProjection' +import { diffLayers } from './diff-layers'; +import { diffLayerProps } from './diff-layer-props'; +import { diffSources } from './diff-sources'; +import { diffRoot } from './diff-root'; + +const defaultOutput = { + root: {}, + layerProps: {}, + layers: {}, + sources: {} }; -function addSource(sourceId, after, commands) { - commands.push({ - command: operations.addSource, - args: [sourceId, after[sourceId]] - }); -} - -function removeSource(sourceId, commands, sourcesRemoved) { - commands.push({ command: operations.removeSource, args: [sourceId] }); - sourcesRemoved[sourceId] = true; -} - -function updateSource(sourceId, after, commands, sourcesRemoved) { - removeSource(sourceId, commands, sourcesRemoved); - addSource(sourceId, after, commands); -} - -function canUpdateGeoJSON(before, after, sourceId) { - let prop; - for (prop in before[sourceId]) { - if (!before[sourceId].hasOwnProperty(prop)) continue; - if ( - prop !== 'data' && - !isEqual(before[sourceId][prop], after[sourceId][prop]) - ) { - return false; - } - } - for (prop in after[sourceId]) { - if (!after[sourceId].hasOwnProperty(prop)) continue; - if ( - prop !== 'data' && - !isEqual(before[sourceId][prop], after[sourceId][prop]) - ) { - return false; - } - } - return true; -} - -function diffSources(before, after, commands, sourcesRemoved, differ) { - before = before || {}; - after = after || {}; - - let sourceId; - - // look for sources to remove - for (sourceId in before) { - if (!before.hasOwnProperty(sourceId)) continue; - if (!after.hasOwnProperty(sourceId)) { - differ.changeSource(sourceId, { command: 'removeSource' }); - removeSource(sourceId, commands, sourcesRemoved); - } - } - - // look for sources to add/update - for (sourceId in after) { - if (!after.hasOwnProperty(sourceId)) continue; - - // add sources - if (!before.hasOwnProperty(sourceId)) { - differ.changeSource(sourceId, { command: 'addSource' }); - addSource(sourceId, after, commands); - } - // update sources - else if (!isEqual(before[sourceId], after[sourceId])) { - differ.changeSource(sourceId, { command: 'updateSource' }); - if ( - before[sourceId].type === 'geojson' && - after[sourceId].type === 'geojson' && - canUpdateGeoJSON(before, after, sourceId) - ) { - commands.push({ - command: operations.setGeoJSONSourceData, - args: [sourceId, after[sourceId].data] - }); - } else { - // no update command, must remove then add - updateSource(sourceId, after, commands, sourcesRemoved); - } - } - } -} - -function diffLayerPropertyChanges( - before, - after, - commands, - layerId, - klass, - command, - differ -) { - before = before || {}; - after = after || {}; - - let prop; - - for (prop in before) { - if (!before.hasOwnProperty(prop)) continue; - if (!isEqual(before[prop], after[prop])) { - const cmd = { - command, - args: [prop, after[prop], before[prop], klass], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - } - for (prop in after) { - if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue; - if (!isEqual(before[prop], after[prop])) { - const cmd = { - command, - args: [prop, after[prop], before[prop], klass], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - } -} - -function pluckId(layer) { - return layer.id; -} -function indexById(group, layer) { - group[layer.id] = layer; - return group; -} - -function diffLayers(before, after, commands, differ) { - before = before || []; - after = after || []; - - // order of layers by id - const beforeOrder = before.map(pluckId); - const afterOrder = after.map(pluckId); - - // index of layer by id - const beforeIndex = before.reduce(indexById, {}); - const afterIndex = after.reduce(indexById, {}); - - // track order of layers as if they have been mutated - const tracker = beforeOrder.slice(); - - // layers that have been added do not need to be diffed - const clean = Object.create(null); - - let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop; - - // remove layers - for (i = 0, d = 0; i < beforeOrder.length; i++) { - layerId = beforeOrder[i]; - // detect removed layer - if (!afterIndex.hasOwnProperty(layerId)) { - commands.push({ command: operations.removeLayer, args: [layerId] }); - differ.changeLayer(layerId, { command: 'removeLayer' }); - tracker.splice(tracker.indexOf(layerId, d), 1); - } else { - // limit where in tracker we need to look for a match - d++; - } - } - - // add/reorder layers - for (i = 0, d = 0; i < afterOrder.length; i++) { - // work backwards as insert is before an existing layer - layerId = afterOrder[afterOrder.length - 1 - i]; - - if (tracker[tracker.length - 1 - i] === layerId) continue; - var movingLayer = false; - if (beforeIndex.hasOwnProperty(layerId)) { - movingLayer = true; - // remove the layer before we insert at the correct position - commands.push({ command: operations.removeLayer, args: [layerId] }); - tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1); - } else { - // limit where in tracker we need to look for a match - d++; - } - - // add layer at correct position - insertBeforeLayerId = tracker[tracker.length - i]; - commands.push({ - command: operations.addLayer, - args: [afterIndex[layerId], insertBeforeLayerId] - }); - tracker.splice(tracker.length - i, 0, layerId); - - if (movingLayer) - differ.changeLayer(layerId, { - command: 'moveLayer', - args: [insertBeforeLayerId] - }); - else { - clean[layerId] = true; - differ.changeLayer(layerId, { - command: 'addLayer', - args: [afterIndex[layerId], insertBeforeLayerId] - }); - } - } - - // update layers - for (i = 0; i < afterOrder.length; i++) { - layerId = afterOrder[i]; - beforeLayer = beforeIndex[layerId]; - afterLayer = afterIndex[layerId]; - - // no need to update if previously added (new or moved) - if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue; - - // layout, paint, filter, minzoom, maxzoom - diffLayerPropertyChanges( - beforeLayer.layout, - afterLayer.layout, - commands, - layerId, - null, - operations.setLayoutProperty, - differ - ); - diffLayerPropertyChanges( - beforeLayer.paint, - afterLayer.paint, - commands, - layerId, - null, - operations.setPaintProperty, - differ - ); - if (!isEqual(beforeLayer.filter, afterLayer.filter)) { - const cmd = { - command: operations.setFilter, - args: ['filter', JSON.stringify(afterLayer.filter), beforeLayer.filter], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - - if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom)) { - const cmd = { - command: operations.setLayerZoomRange, - args: ['minzoom', afterLayer.minzoom, beforeLayer.minzoom], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - if (!isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) { - const cmd = { - command: operations.setLayerZoomRange, - args: ['maxzoom', afterLayer.maxzoom, beforeLayer.maxzoom], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - - // handle all other layer props, including paint.* - for (prop in beforeLayer) { - if (!beforeLayer.hasOwnProperty(prop)) continue; - if ( - prop === 'layout' || - prop === 'paint' || - prop === 'filter' || - prop === 'metadata' || - prop === 'minzoom' || - prop === 'maxzoom' - ) - continue; - if (prop.indexOf('paint.') === 0) { - diffLayerPropertyChanges( - beforeLayer[prop], - afterLayer[prop], - commands, - layerId, - prop.slice(6), - operations.setPaintProperty, - differ - ); - } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) { - const cmd = { - command: operations.setLayerProperty, - args: [prop, afterLayer[prop], beforeLayer[prop]], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - } - for (prop in afterLayer) { - if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) - continue; - if ( - prop === 'layout' || - prop === 'paint' || - prop === 'filter' || - prop === 'metadata' || - prop === 'minzoom' || - prop === 'maxzoom' - ) - continue; - if (prop.indexOf('paint.') === 0) { - diffLayerPropertyChanges( - beforeLayer[prop], - afterLayer[prop], - commands, - layerId, - prop.slice(6), - operations.setPaintProperty - ); - } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) { - const cmd = { - command: operations.setLayerProperty, - args: [prop, afterLayer[prop], beforeLayer[prop]], - layer: layerId - }; - commands.push(cmd); - differ.changeLayerProp(layerId, cmd); - } - } - } -} - -/** - * Diff two stylesheet - * - * Creates semanticly aware diffs that can easily be applied at runtime. - * Operations produced by the diff closely resemble the mapbox-gl-js API. Any - * error creating the diff will fall back to the 'setStyle' operation. - * - * Example diff: - * [ - * { command: 'setConstant', args: ['@water', '#0000FF'] }, - * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] } - * ] - * - * @private - * @param {*} [before] stylesheet to compare from - * @param {*} after stylesheet to compare to - * @returns Array list of changes - */ -export function diffStylesSetStyle(before, after) { - if (!before) return [{ command: operations.setStyle, args: [after] }]; - const differ = new diffTracker(); - - let commands = []; - - try { - // Handle changes to top-level properties - if (!isEqual(before.version, after.version)) { - return [{ command: operations.setStyle, args: [after] }]; - } - if (!isEqual(before.center, after.center)) { - commands.push({ command: operations.setCenter, args: [after.center] }); - } - if (!isEqual(before.zoom, after.zoom)) { - commands.push({ command: operations.setZoom, args: [after.zoom] }); - } - if (!isEqual(before.bearing, after.bearing)) { - commands.push({ command: operations.setBearing, args: [after.bearing] }); - } - if (!isEqual(before.pitch, after.pitch)) { - commands.push({ command: operations.setPitch, args: [after.pitch] }); - } - if (!isEqual(before.sprite, after.sprite)) { - commands.push({ command: operations.setSprite, args: [after.sprite] }); - differ.changeSprite({ - command: 'setSprite', - args: [after.sprite, before.sprite] - }); - } - if (!isEqual(before.glyphs, after.glyphs)) { - commands.push({ command: operations.setGlyphs, args: [after.glyphs] }); - differ.changeGlyphs({ - command: 'setGlyphs', - args: [after.glyphs, before.glyphs] - }); - } - if (!isEqual(before.transition, after.transition)) { - commands.push({ - command: operations.setTransition, - args: [after.transition] - }); - } - if (!isEqual(before.light, after.light)) { - commands.push({ command: operations.setLight, args: [after.light] }); - } - if (!isEqual(before.fog, after.fog)) { - commands.push({ command: operations.setFog, args: [after.fog] }); - } - if (!isEqual(before.projection, after.projection)) { - commands.push({ - command: operations.setProjection, - args: [after.projection] - }); - } - - // Handle changes to `sources` - // If a source is to be removed, we also--before the removeSource - // command--need to remove all the style layers that depend on it. - const sourcesRemoved = {}; - - // First collect the {add,remove}Source commands - const removeOrAddSourceCommands = []; - diffSources( - before.sources, - after.sources, - removeOrAddSourceCommands, - sourcesRemoved, - differ - ); - - commands = commands.concat(removeOrAddSourceCommands); - - // Handle changes to `layers` - diffLayers(before.layers, after.layers, commands, differ); - } catch (e) { - // fall back to setStyle - console.warn('Unable to compute style diff:', e); - commands = [{ command: operations.setStyle, args: [after] }]; - } - - commands = detectMovedLayers(commands); - - return differ; -} - -function detectMovedLayers(commands) { - var output = []; - var blacklistAdds = []; - - function findReaddedLayer(removalCommand) { - const targetId = removalCommand.args[0]; - const match = commands.find(l => l.args?.[0]?.id === targetId); - if (match) { - blacklistAdds.push(targetId); - } - return match; - } - - commands.forEach(c => { - if (c.command === 'removeLayer') { - const readded = findReaddedLayer(c); - if (readded) { - output.push({ command: 'moveLayer', args: readded.args }); - } else output.push(c); - } else if (c.command !== 'addLayer' || !blacklistAdds.includes(c.args[0])) - output.push(c); - }); - - return output; -} - -// Added this function to change the output format to be more helpful -const diffStyles = (before, after) => { - const originalDiff = diffStylesSetStyle(before, after); - - const { layerProps, layers, sources, glyphs, sprite } = originalDiff; - - // formatting for source additions and removals - const nextSources = sources.reduce((acc, s) => { - const { change, source } = s; - - let type = change.command; - - switch (type) { - case 'removeSource': { - type = 'remove'; - break; - } - case 'addSource': { - type = 'add'; - break; - } - } - - acc[source] = type; - - return acc; - }, {}); - - // formatting for layer additions, reorders, and removals - const nextLayers = layers.reduce((acc, l) => { - const { change, layer } = l; - - let type = change.command; - - switch (type) { - case 'removeLayer': { - type = 'remove'; - break; - } - case 'addLayer': { - type = 'add'; - break; - } - case 'moveLayer': { - type = 'move'; - break; - } - } - - acc[layer] = { - type, - ...(type === 'add' && { - layer: change?.args[0], - layerAbove: change?.args[1] - }), - ...(type === 'move' && { layerAbove: change?.args[0] }) - }; - - return acc; - }, {}); - - // formatting for layer property changes - const nextLayerProps = Object.keys(layerProps).reduce((acc, layerId) => { - const nextLayerChanges = layerProps[layerId].reduce((accum, change) => { - const { command, args } = change; - - let type = command; - - switch (command) { - case 'setFilter': { - type = 'filter'; - break; - } - // source & source-layer - case 'setLayerProperty': { - type = 'root'; - break; - } - case 'setPaintProperty': { - type = 'paint'; - break; - } - // min and max zoom - case 'setLayerZoomRange': { - type = 'minMaxZoom'; - break; - } - case 'setLayoutProperty': { - type = 'layout'; - break; - } - } - - const [propertyId, currentValue, compareValue] = args; +const diff = (a, b) => { + let styleDiff = {}; - // These are reversed out of the set style version of the diffing tool - const current = compareValue; - const compare = currentValue; + const { layers: layersA, sources: sourcesA } = a; - if (type === 'root' || type === 'minMaxZoom') { - accum[propertyId] = { - current, - compare - }; - } else if (type === 'filter') { - accum[propertyId] = { - current, - // Not sure why this is stringified - compare: typeof compare === 'string' ? JSON.parse(compare) : compare - }; - } else { - if (!accum[type]) { - accum[type] = {}; - } - accum[type][propertyId] = { - current, - compare - }; - } + const { layers: layersB, sources: sourcesB } = b; - return accum; - }, {}); + const layerDiff = diffLayers(layersA, layersB); - acc[layerId] = nextLayerChanges; + const layerPropDiff = diffLayerProps(a, b); - return acc; - }, {}); + const sourceDiff = diffSources(sourcesA, sourcesB); - let nextGlyphs; - if (glyphs?.change?.args) { - const [compareGlyph, currentGlyph] = glyphs?.change?.args; - nextGlyphs = { current: currentGlyph, compare: compareGlyph }; - } + const rootDiff = diffRoot(a, b); - let nextSprite; - if (sprite?.change?.args) { - const [compareSprite, currentSprite] = sprite?.change?.args; - nextSprite = { current: currentSprite, compare: compareSprite }; - } + styleDiff.layers = layerDiff; + styleDiff.layerProps = layerPropDiff; + styleDiff.sources = sourceDiff; + styleDiff.root = rootDiff; - return { - layerProps: nextLayerProps, - layers: nextLayers, - sources: nextSources, - glyphs: nextGlyphs, - sprite: nextSprite - }; + return { ...defaultOutput, ...styleDiff }; }; -export const diff = diffStyles; +export { diff }; diff --git a/yarn.lock b/yarn.lock index 06cf5f2..a3c0b7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@babel/code-frame@^7.0.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" @@ -9,11 +17,258 @@ dependencies: "@babel/highlight" "^7.16.0" +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.4" + "@babel/types" "^7.21.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/generator@^7.21.4", "@babel/generator@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== + dependencies: + "@babel/types" "^7.21.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== + dependencies: + "@babel/compat-data" "^7.21.4" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz#3a017163dc3c2ba7deb9a7950849a9586ea24c18" + integrity sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz#40411a8ab134258ad2cf3a3d987ec6aa0723cee5" + integrity sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.3.1" + +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + +"@babel/helper-module-imports@^7.18.6": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== + dependencies: + "@babel/types" "^7.21.4" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + "@babel/helper-validator-identifier@^7.15.7": version "7.15.7" 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.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + "@babel/highlight@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" @@ -23,6 +278,937 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + +"@babel/plugin-proposal-async-generator-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-arrow-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-async-to-generator@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-classes@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" + +"@babel/plugin-transform-destructuring@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" + integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-modules-commonjs@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== + dependencies: + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + +"@babel/plugin-transform-modules-systemjs@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.4.tgz#a952482e634a8dd8271a3fe5459a16eb10739c58" + integrity sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw== + dependencies: + "@babel/compat-data" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7" + "@babel/plugin-proposal-async-generator-functions" "^7.20.7" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.21.0" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.21.0" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.21.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.20.7" + "@babel/plugin-transform-async-to-generator" "^7.20.7" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.21.0" + "@babel/plugin-transform-classes" "^7.21.0" + "@babel/plugin-transform-computed-properties" "^7.20.7" + "@babel/plugin-transform-destructuring" "^7.21.3" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.21.0" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.20.11" + "@babel/plugin-transform-modules-commonjs" "^7.21.2" + "@babel/plugin-transform-modules-systemjs" "^7.20.11" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.21.3" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.20.5" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.20.7" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.21.4" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.8.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + 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" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" + integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + +"@jest/core@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" + integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/reporters" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.5.0" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-resolve-dependencies "^29.5.0" + jest-runner "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + jest-watcher "^29.5.0" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" + integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== + dependencies: + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + +"@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + +"@jest/expect@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" + integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== + dependencies: + expect "^29.5.0" + jest-snapshot "^29.5.0" + +"@jest/fake-timers@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" + integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== + dependencies: + "@jest/types" "^29.5.0" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-util "^29.5.0" + +"@jest/globals@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" + integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/types" "^29.5.0" + jest-mock "^29.5.0" + +"@jest/reporters@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" + integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + jest-worker "^29.5.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" + integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" + integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== + dependencies: + "@jest/test-result" "^29.5.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + slash "^3.0.0" + +"@jest/transform@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@lezer/common@^0.15.0", "@lezer/common@^0.15.7": version "0.15.12" resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9" @@ -35,6 +1221,35 @@ dependencies: "@lezer/common" "^0.15.0" +"@mapbox/jsonlint-lines-primitives@~2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" + integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== + +"@mapbox/mapbox-gl-style-spec@^13.28.0": + version "13.28.0" + resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz#2ec226320a0f77856046e000df9b419303a56458" + integrity sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg== + dependencies: + "@mapbox/jsonlint-lines-primitives" "~2.0.2" + "@mapbox/point-geometry" "^0.1.0" + "@mapbox/unitbezier" "^0.0.0" + csscolorparser "~1.0.2" + json-stringify-pretty-compact "^2.0.0" + minimist "^1.2.6" + rw "^1.3.3" + sort-object "^0.3.2" + +"@mapbox/point-geometry@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" + integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ== + +"@mapbox/unitbezier@^0.0.0": + version "0.0.0" + resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" + integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== + "@mischnic/json-sourcemap@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507" @@ -660,6 +1875,25 @@ chrome-trace-event "^1.0.2" nullthrows "^1.1.1" +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@swc/helpers@^0.3.15": version "0.3.17" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.3.17.tgz#7c1b91f43c77e2bba99492162a498d465ef253d5" @@ -672,16 +1906,109 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@types/babel__core@^7.1.14": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.4.tgz#0fa6be6c182288831be8c31c35dab6d6ccac47c5" + integrity sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/node@*": + version "18.16.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.0.tgz#4668bc392bb6938637b47e98b1f2ed5426f33316" + integrity sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^2.1.5": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + abortcontroller-polyfill@^1.1.9: version "1.7.3" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -701,11 +2028,120 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +babel-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" + integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== + dependencies: + "@jest/transform" "^29.5.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" + integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" + integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== + dependencies: + babel-plugin-jest-hoist "^29.5.0" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + base-x@^3.0.8: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" @@ -718,6 +2154,14 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -725,6 +2169,16 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" +browserslist@^4.21.3, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + browserslist@^4.6.6: version "4.17.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" @@ -736,6 +2190,13 @@ browserslist@^4.6.6: node-releases "^2.0.1" picocolors "^1.0.0" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -746,11 +2207,26 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caniuse-lite@^1.0.30001274: version "1.0.30001280" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz#066a506046ba4be34cde5f74a08db7a396718fb7" integrity sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA== +caniuse-lite@^1.0.30001449: + version "1.0.30001481" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" + integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== + chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -760,7 +2236,7 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -768,11 +2244,26 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -782,11 +2273,30 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -821,6 +2331,28 @@ commander@^7.0.0, commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-compat@^3.25.1: + version "3.30.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.1.tgz#961541e22db9c27fc48bfc13a3cafa8734171dfe" + integrity sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw== + dependencies: + browserslist "^4.21.5" + cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -832,6 +2364,15 @@ cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -856,6 +2397,11 @@ css-what@^5.0.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +csscolorparser@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" + integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== + csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" @@ -863,11 +2409,38 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -920,6 +2493,16 @@ electron-to-chromium@^1.3.886: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.895.tgz#9b0f8f2e32d8283bbb200156fd5d8dfd775f31ed" integrity sha512-9Ww3fB8CWctjqHwkOt7DQbMZMpal2x2reod+/lU4b9axO1XJEDUpPMBxs7YnjLhhqpKXIIB5SRYN/B4K0QpvyQ== +electron-to-chromium@^1.4.284: + version "1.4.372" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.372.tgz#7888ac92ccb9556627c3a37eba3b89ee5ac345f8" + integrity sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -952,6 +2535,52 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + dependencies: + "@jest/expect-utils" "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + fast-glob@^3.1.1: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -963,6 +2592,11 @@ fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" +fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -970,6 +2604,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -977,16 +2618,54 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-port@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -994,6 +2673,23 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globals@^13.2.0: version "13.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" @@ -1013,6 +2709,11 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1023,6 +2724,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + htmlnano@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.3.tgz#50ee639ed63357d4a6c01309f52a35892e4edc2e" @@ -1042,6 +2755,11 @@ htmlparser2@^7.1.1: domutils "^2.8.0" entities "^3.0.1" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + ignore@^5.1.4: version "5.1.9" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" @@ -1055,11 +2773,44 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1070,6 +2821,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -1087,21 +2843,467 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" + integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/expect" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.5.0" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-runtime "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + p-limit "^3.1.0" + pretty-format "^29.5.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" + integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== + dependencies: + "@jest/core" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" + integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.5.0" + "@jest/types" "^29.5.0" + babel-jest "^29.5.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.5.0" + jest-environment-node "^29.5.0" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-runner "^29.5.0" + jest-util "^29.5.0" + jest-validate "^29.5.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.5.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" + integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== + dependencies: + "@jest/types" "^29.5.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.5.0" + pretty-format "^29.5.0" + +jest-environment-node@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" + integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-mock "^29.5.0" + jest-util "^29.5.0" + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-haste-map@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== + dependencies: + "@jest/types" "^29.5.0" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + jest-worker "^29.5.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" + integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" + integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + jest-util "^29.5.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + +jest-resolve-dependencies@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" + integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.5.0" + +jest-resolve@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" + integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.5.0" + jest-validate "^29.5.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" + integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== + dependencies: + "@jest/console" "^29.5.0" + "@jest/environment" "^29.5.0" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.5.0" + jest-haste-map "^29.5.0" + jest-leak-detector "^29.5.0" + jest-message-util "^29.5.0" + jest-resolve "^29.5.0" + jest-runtime "^29.5.0" + jest-util "^29.5.0" + jest-watcher "^29.5.0" + jest-worker "^29.5.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" + integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== + dependencies: + "@jest/environment" "^29.5.0" + "@jest/fake-timers" "^29.5.0" + "@jest/globals" "^29.5.0" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-message-util "^29.5.0" + jest-mock "^29.5.0" + jest-regex-util "^29.4.3" + jest-resolve "^29.5.0" + jest-snapshot "^29.5.0" + jest-util "^29.5.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" + integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.5.0" + "@jest/transform" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.5.0" + graceful-fs "^4.2.9" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + natural-compare "^1.4.0" + pretty-format "^29.5.0" + semver "^7.3.5" + +jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" + integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== + dependencies: + "@jest/types" "^29.5.0" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.5.0" + +jest-watcher@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" + integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== + dependencies: + "@jest/test-result" "^29.5.0" + "@jest/types" "^29.5.0" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.5.0" + string-length "^4.0.1" + +jest-worker@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" + integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== + dependencies: + "@jest/core" "^29.5.0" + "@jest/types" "^29.5.0" + import-local "^3.0.2" + jest-cli "^29.5.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json5@^2.2.0, json5@^2.2.1: +json-stringify-pretty-compact@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" + integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ== + +json5@^2.2.0, json5@^2.2.1, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + lightningcss-darwin-arm64@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz#56ab071e932f845dbb7667f44f5b78441175a343" @@ -1212,11 +3414,65 @@ lmdb@2.3.10: lmdb-linux-x64 "2.3.10" lmdb-win32-x64 "2.3.10" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +"mapbox-gl-style-recurse@github:stamen/mapbox-gl-style-recurse#v0.2.0": + version "0.2.0" + resolved "https://codeload.github.com/stamen/mapbox-gl-style-recurse/tar.gz/59e25da0d5b6968bacaf2e014e126982ee5993e1" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -1230,6 +3486,28 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + msgpackr-extract@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" @@ -1256,6 +3534,11 @@ nan@^2.14.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + node-addon-api@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" @@ -1281,11 +3564,33 @@ node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + node-releases@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + nth-check@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -1298,11 +3603,51 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + ordered-binary@^1.2.4: version "1.4.0" resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + parcel@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.6.0.tgz#801bd3af8339966fc52370033e1b7f3c9b9e457d" @@ -1330,7 +3675,7 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -1340,6 +3685,26 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -1350,11 +3715,28 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picomatch@^2.0.4: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" @@ -1382,6 +3764,28 @@ posthtml@^0.16.4, posthtml@^0.16.5: posthtml-parser "^0.10.0" posthtml-render "^3.0.0" +pretty-format@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -1392,26 +3796,100 @@ react-error-overlay@6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-refresh@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.7: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.14.2, resolve@^1.20.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -1424,6 +3902,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rw@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + safe-buffer@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -1434,11 +3917,71 @@ semver@^5.7.0, semver@^5.7.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +sort-asc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.1.0.tgz#ab799df61fc73ea0956c79c4b531ed1e9e7727e9" + integrity sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw== + +sort-desc@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.1.1.tgz#198b8c0cdeb095c463341861e3925d4ee359a9ee" + integrity sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw== + +sort-object@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-0.3.2.tgz#98e0d199ede40e07c61a84403c61d6c3b290f9e2" + integrity sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA== + dependencies: + sort-asc "^0.1.0" + sort-desc "^0.1.1" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" @@ -1457,12 +4000,32 @@ source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -string-width@^4.1.0, string-width@^4.2.0: +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1478,6 +4041,21 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -1492,6 +4070,18 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + svgo@^2.4.0: version "2.8.0" resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" @@ -1519,11 +4109,30 @@ terser@^5.2.0: source-map "~0.7.2" source-map-support "~0.5.20" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1536,11 +4145,52 @@ tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + utility-types@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" @@ -1551,11 +4201,34 @@ v8-compile-cache@^2.0.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + weak-lru-cache@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -1565,6 +4238,19 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + xxhash-wasm@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" @@ -1575,6 +4261,16 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" @@ -1585,6 +4281,11 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs@^17.2.1: version "17.2.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea" @@ -1597,3 +4298,21 @@ yargs@^17.2.1: string-width "^4.2.0" y18n "^5.0.5" yargs-parser "^20.2.2" + +yargs@^17.3.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==