From 2427e622b0c8cf9ab8080b14d739f13ad655c647 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Sat, 27 Jul 2024 12:36:54 +0200 Subject: [PATCH 01/86] feat: improve mermaid detection on paste (#8287) --- packages/excalidraw/mermaid.test.ts | 15 +++++++++++++++ packages/excalidraw/mermaid.ts | 7 ++++--- 2 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 packages/excalidraw/mermaid.test.ts diff --git a/packages/excalidraw/mermaid.test.ts b/packages/excalidraw/mermaid.test.ts new file mode 100644 index 000000000..2a6746391 --- /dev/null +++ b/packages/excalidraw/mermaid.test.ts @@ -0,0 +1,15 @@ +import { isMaybeMermaidDefinition } from "./mermaid"; + +describe("isMaybeMermaidDefinition", () => { + it("should return true for a valid mermaid definition", () => { + expect(isMaybeMermaidDefinition("flowchart")).toBe(true); + expect(isMaybeMermaidDefinition("flowchart LR")).toBe(true); + expect(isMaybeMermaidDefinition("flowchart LR\nola")).toBe(true); + expect(isMaybeMermaidDefinition("%%{}%%flowchart")).toBe(true); + expect(isMaybeMermaidDefinition("%%{}%% flowchart")).toBe(true); + + expect(isMaybeMermaidDefinition("graphs")).toBe(false); + expect(isMaybeMermaidDefinition("this flowchart")).toBe(false); + expect(isMaybeMermaidDefinition("this\nflowchart")).toBe(false); + }); +}); diff --git a/packages/excalidraw/mermaid.ts b/packages/excalidraw/mermaid.ts index 6114cd002..cb2b400cc 100644 --- a/packages/excalidraw/mermaid.ts +++ b/packages/excalidraw/mermaid.ts @@ -2,6 +2,7 @@ export const isMaybeMermaidDefinition = (text: string) => { const chartTypes = [ "flowchart", + "graph", "sequenceDiagram", "classDiagram", "stateDiagram", @@ -23,9 +24,9 @@ export const isMaybeMermaidDefinition = (text: string) => { ]; const re = new RegExp( - `^(?:%%{.*?}%%[\\s\\n]*)?\\b${chartTypes - .map((x) => `${x}(-beta)?`) - .join("|")}\\b`, + `^(?:%%{.*?}%%[\\s\\n]*)?\\b(?:${chartTypes + .map((x) => `\\s*${x}(-beta)?`) + .join("|")})\\b`, ); return re.test(text.trim()); From 7b36de04764dfe94b68b8ce5d16c46b8bcf5d1c6 Mon Sep 17 00:00:00 2001 From: Ryan Di Date: Sat, 27 Jul 2024 21:02:00 +0800 Subject: [PATCH 02/86] fix: linear elements not selected on pointer up from hitting its bound text (#8285) Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com> --- packages/excalidraw/components/App.tsx | 36 ++-------------------- packages/excalidraw/element/collision.ts | 11 +++++-- packages/excalidraw/element/textElement.ts | 3 +- packages/excalidraw/shapes.tsx | 30 ++++++++++++++++++ 4 files changed, 42 insertions(+), 38 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 6f1ac7ffd..cf23af641 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -224,8 +224,7 @@ import type { ScrollBars, } from "../scene/types"; import { getStateForZoom } from "../scene/zoom"; -import { findShapeByKey, getElementShape } from "../shapes"; -import type { GeometricShape } from "../../utils/geometry/shape"; +import { findShapeByKey, getBoundTextShape, getElementShape } from "../shapes"; import { getSelectionBoxShape } from "../../utils/geometry/shape"; import { isPointInShape } from "../../utils/collision"; import type { @@ -4515,37 +4514,6 @@ class App extends React.Component { return null; } - private getBoundTextShape(element: ExcalidrawElement): GeometricShape | null { - const boundTextElement = getBoundTextElement( - element, - this.scene.getNonDeletedElementsMap(), - ); - - if (boundTextElement) { - if (element.type === "arrow") { - return getElementShape( - { - ...boundTextElement, - // arrow's bound text accurate position is not stored in the element's property - // but rather calculated and returned from the following static method - ...LinearElementEditor.getBoundTextElementPosition( - element, - boundTextElement, - this.scene.getNonDeletedElementsMap(), - ), - }, - this.scene.getNonDeletedElementsMap(), - ); - } - return getElementShape( - boundTextElement, - this.scene.getNonDeletedElementsMap(), - ); - } - - return null; - } - private getElementAtPosition( x: number, y: number, @@ -4677,7 +4645,7 @@ class App extends React.Component { const hitBoundTextOfElement = hitElementBoundText( x, y, - this.getBoundTextShape(element), + getBoundTextShape(element, this.scene.getNonDeletedElementsMap()), ); if (hitBoundTextOfElement) { return true; diff --git a/packages/excalidraw/element/collision.ts b/packages/excalidraw/element/collision.ts index 704c24556..954326ca0 100644 --- a/packages/excalidraw/element/collision.ts +++ b/packages/excalidraw/element/collision.ts @@ -18,6 +18,7 @@ import { isImageElement, isTextElement, } from "./typeChecks"; +import { getBoundTextShape } from "../shapes"; export const shouldTestInside = (element: ExcalidrawElement) => { if (element.type === "arrow") { @@ -97,6 +98,12 @@ export const hitElementBoundingBoxOnly = ( ) => { return ( !hitElementItself(hitArgs) && + // bound text is considered part of the element (even if it's outside the bounding box) + !hitElementBoundText( + hitArgs.x, + hitArgs.y, + getBoundTextShape(hitArgs.element, elementsMap), + ) && hitElementBoundingBox(hitArgs.x, hitArgs.y, hitArgs.element, elementsMap) ); }; @@ -105,6 +112,6 @@ export const hitElementBoundText = ( x: number, y: number, textShape: GeometricShape | null, -) => { - return textShape && isPointInShape([x, y], textShape); +): boolean => { + return !!textShape && isPointInShape([x, y], textShape); }; diff --git a/packages/excalidraw/element/textElement.ts b/packages/excalidraw/element/textElement.ts index 0a8481370..696f809e6 100644 --- a/packages/excalidraw/element/textElement.ts +++ b/packages/excalidraw/element/textElement.ts @@ -635,8 +635,7 @@ export const getMaxCharWidth = (font: FontString) => { export const getBoundTextElementId = (container: ExcalidrawElement | null) => { return container?.boundElements?.length - ? container?.boundElements?.filter((ele) => ele.type === "text")[0]?.id || - null + ? container?.boundElements?.find((ele) => ele.type === "text")?.id || null : null; }; diff --git a/packages/excalidraw/shapes.tsx b/packages/excalidraw/shapes.tsx index 5c0e98676..acdca238d 100644 --- a/packages/excalidraw/shapes.tsx +++ b/packages/excalidraw/shapes.tsx @@ -20,6 +20,8 @@ import { } from "./components/icons"; import { getElementAbsoluteCoords } from "./element"; import { shouldTestInside } from "./element/collision"; +import { LinearElementEditor } from "./element/linearElementEditor"; +import { getBoundTextElement } from "./element/textElement"; import type { ElementsMap, ExcalidrawElement } from "./element/types"; import { KEYS } from "./keys"; import { ShapeCache } from "./scene/ShapeCache"; @@ -159,3 +161,31 @@ export const getElementShape = ( } } }; + +export const getBoundTextShape = ( + element: ExcalidrawElement, + elementsMap: ElementsMap, +): GeometricShape | null => { + const boundTextElement = getBoundTextElement(element, elementsMap); + + if (boundTextElement) { + if (element.type === "arrow") { + return getElementShape( + { + ...boundTextElement, + // arrow's bound text accurate position is not stored in the element's property + // but rather calculated and returned from the following static method + ...LinearElementEditor.getBoundTextElementPosition( + element, + boundTextElement, + elementsMap, + ), + }, + elementsMap, + ); + } + return getElementShape(boundTextElement, elementsMap); + } + + return null; +}; From d0a380758e3ed5dbac6e5f2f41441765599f3119 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Tue, 30 Jul 2024 10:03:27 +0200 Subject: [PATCH 03/86] feat: ability to debug the state of fractional indices (#8235) --- packages/excalidraw/data/reconcile.ts | 28 ++++++- packages/excalidraw/fractionalIndex.ts | 79 ++++++++++++++++++- packages/excalidraw/global.d.ts | 1 + packages/excalidraw/scene/Scene.ts | 14 +++- .../excalidraw/tests/fractionalIndex.test.ts | 10 ++- 5 files changed, 122 insertions(+), 10 deletions(-) diff --git a/packages/excalidraw/data/reconcile.ts b/packages/excalidraw/data/reconcile.ts index ea32c8162..1df28e37e 100644 --- a/packages/excalidraw/data/reconcile.ts +++ b/packages/excalidraw/data/reconcile.ts @@ -1,5 +1,10 @@ +import { ENV } from "../constants"; import type { OrderedExcalidrawElement } from "../element/types"; -import { orderByFractionalIndex, syncInvalidIndices } from "../fractionalIndex"; +import { + orderByFractionalIndex, + syncInvalidIndices, + validateFractionalIndices, +} from "../fractionalIndex"; import type { AppState } from "../types"; import type { MakeBrand } from "../utility-types"; import { arrayToMap } from "../utils"; @@ -72,6 +77,27 @@ export const reconcileElements = ( const orderedElements = orderByFractionalIndex(reconciledElements); + if ( + import.meta.env.DEV || + import.meta.env.MODE === ENV.TEST || + window?.DEBUG_FRACTIONAL_INDICES + ) { + const elements = syncInvalidIndices( + // create new instances due to the mutation + orderedElements.map((x) => ({ ...x })), + ); + + validateFractionalIndices(elements, { + // throw in dev & test only, to remain functional on `DEBUG_FRACTIONAL_INDICES` + shouldThrow: import.meta.env.DEV || import.meta.env.MODE === ENV.TEST, + includeBoundTextValidation: true, + reconciliationContext: { + localElements, + remoteElements, + }, + }); + } + // de-duplicate indices syncInvalidIndices(orderedElements); diff --git a/packages/excalidraw/fractionalIndex.ts b/packages/excalidraw/fractionalIndex.ts index 01b6d7015..7d54cff07 100644 --- a/packages/excalidraw/fractionalIndex.ts +++ b/packages/excalidraw/fractionalIndex.ts @@ -6,6 +6,9 @@ import type { OrderedExcalidrawElement, } from "./element/types"; import { InvalidFractionalIndexError } from "./errors"; +import { hasBoundTextElement } from "./element/typeChecks"; +import { getBoundTextElement } from "./element/textElement"; +import { arrayToMap } from "./utils"; /** * Envisioned relation between array order and fractional indices: @@ -30,17 +33,80 @@ import { InvalidFractionalIndexError } from "./errors"; * @throws `InvalidFractionalIndexError` if invalid index is detected. */ export const validateFractionalIndices = ( - indices: (ExcalidrawElement["index"] | undefined)[], + elements: readonly ExcalidrawElement[], + { + shouldThrow = false, + includeBoundTextValidation = false, + reconciliationContext, + }: { + shouldThrow: boolean; + includeBoundTextValidation: boolean; + reconciliationContext?: { + localElements: ReadonlyArray; + remoteElements: ReadonlyArray; + }; + }, ) => { + const errorMessages = []; + const stringifyElement = (element: ExcalidrawElement | void) => + `${element?.index}:${element?.id}:${element?.type}:${element?.isDeleted}:${element?.version}:${element?.versionNonce}`; + + const indices = elements.map((x) => x.index); for (const [i, index] of indices.entries()) { const predecessorIndex = indices[i - 1]; const successorIndex = indices[i + 1]; if (!isValidFractionalIndex(index, predecessorIndex, successorIndex)) { - throw new InvalidFractionalIndexError( - `Fractional indices invariant for element has been compromised - ["${predecessorIndex}", "${index}", "${successorIndex}"] [predecessor, current, successor]`, + errorMessages.push( + `Fractional indices invariant has been compromised: "${stringifyElement( + elements[i - 1], + )}", "${stringifyElement(elements[i])}", "${stringifyElement( + elements[i + 1], + )}"`, ); } + + // disabled by default, as we don't fix it + if (includeBoundTextValidation && hasBoundTextElement(elements[i])) { + const container = elements[i]; + const text = getBoundTextElement(container, arrayToMap(elements)); + + if (text && text.index! <= container.index!) { + errorMessages.push( + `Fractional indices invariant for bound elements has been compromised: "${stringifyElement( + text, + )}", "${stringifyElement(container)}"`, + ); + } + } + } + + if (errorMessages.length) { + const error = new InvalidFractionalIndexError(); + const additionalContext = []; + + if (reconciliationContext) { + additionalContext.push("Additional reconciliation context:"); + additionalContext.push( + reconciliationContext.localElements.map((x) => stringifyElement(x)), + ); + additionalContext.push( + reconciliationContext.remoteElements.map((x) => stringifyElement(x)), + ); + } + + // report just once and with the stacktrace + console.error( + errorMessages.join("\n\n"), + error.stack, + elements.map((x) => stringifyElement(x)), + ...additionalContext, + ); + + if (shouldThrow) { + // if enabled, gather all the errors first, throw once + throw error; + } } }; @@ -83,10 +149,15 @@ export const syncMovedIndices = ( // try generatating indices, throws on invalid movedElements const elementsUpdates = generateIndices(elements, indicesGroups); + const elementsCandidates = elements.map((x) => + elementsUpdates.has(x) ? { ...x, ...elementsUpdates.get(x) } : x, + ); // ensure next indices are valid before mutation, throws on invalid ones validateFractionalIndices( - elements.map((x) => elementsUpdates.get(x)?.index || x.index), + elementsCandidates, + // we don't autofix invalid bound text indices, hence don't include it in the validation + { includeBoundTextValidation: false, shouldThrow: true }, ); // split mutation so we don't end up in an incosistent state diff --git a/packages/excalidraw/global.d.ts b/packages/excalidraw/global.d.ts index 4aeb8c428..ca5848208 100644 --- a/packages/excalidraw/global.d.ts +++ b/packages/excalidraw/global.d.ts @@ -4,6 +4,7 @@ interface Window { EXCALIDRAW_ASSET_PATH: string | undefined; EXCALIDRAW_EXPORT_SOURCE: string; EXCALIDRAW_THROTTLE_RENDER: boolean | undefined; + DEBUG_FRACTIONAL_INDICES: boolean | undefined; gtag: Function; sa_event: Function; fathom: { trackEvent: Function }; diff --git a/packages/excalidraw/scene/Scene.ts b/packages/excalidraw/scene/Scene.ts index 637415a72..c237059c4 100644 --- a/packages/excalidraw/scene/Scene.ts +++ b/packages/excalidraw/scene/Scene.ts @@ -274,9 +274,17 @@ class Scene { : Array.from(nextElements.values()); const nextFrameLikes: ExcalidrawFrameLikeElement[] = []; - if (import.meta.env.DEV || import.meta.env.MODE === ENV.TEST) { - // throw on invalid indices in test / dev to potentially detect cases were we forgot to sync moved elements - validateFractionalIndices(_nextElements.map((x) => x.index)); + if ( + import.meta.env.DEV || + import.meta.env.MODE === ENV.TEST || + window?.DEBUG_FRACTIONAL_INDICES + ) { + validateFractionalIndices(_nextElements, { + // validate everything + includeBoundTextValidation: true, + // throw only in dev & test, to remain functional on `DEBUG_FRACTIONAL_INDICES` + shouldThrow: import.meta.env.DEV || import.meta.env.MODE === ENV.TEST, + }); } this.elements = syncInvalidIndices(_nextElements); diff --git a/packages/excalidraw/tests/fractionalIndex.test.ts b/packages/excalidraw/tests/fractionalIndex.test.ts index 60cf4f5a5..10dbc004b 100644 --- a/packages/excalidraw/tests/fractionalIndex.test.ts +++ b/packages/excalidraw/tests/fractionalIndex.test.ts @@ -763,7 +763,10 @@ function test( // ensure the input is invalid (unless the flag is on) if (!expectValidInput) { expect(() => - validateFractionalIndices(elements.map((x) => x.index)), + validateFractionalIndices(elements, { + shouldThrow: true, + includeBoundTextValidation: true, + }), ).toThrowError(InvalidFractionalIndexError); } @@ -777,7 +780,10 @@ function test( expect(syncedElements.length).toBe(elements.length); expect(() => - validateFractionalIndices(syncedElements.map((x) => x.index)), + validateFractionalIndices(syncedElements, { + shouldThrow: true, + includeBoundTextValidation: true, + }), ).not.toThrowError(InvalidFractionalIndexError); syncedElements.forEach((synced, index) => { From 230d0edc44f60ba2a00953e02c24591f491affc9 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Tue, 30 Jul 2024 10:34:40 +0200 Subject: [PATCH 04/86] feat: multiple fonts fallbacks (#8286) --- excalidraw-app/index.html | 58 ++---- .../components/FontPicker/FontPickerList.tsx | 10 +- packages/excalidraw/fonts/ExcalidrawFont.ts | 167 +++++++++++++----- packages/excalidraw/fonts/assets/fonts.css | 3 +- packages/excalidraw/fonts/index.ts | 23 ++- packages/excalidraw/fonts/metadata.ts | 3 + packages/excalidraw/global.d.ts | 2 +- packages/excalidraw/scene/export.ts | 34 ++-- scripts/woff2/woff2-vite-plugins.js | 86 +++++++++ setupTests.ts | 6 +- vercel.json | 28 ++- 11 files changed, 293 insertions(+), 127 deletions(-) diff --git a/excalidraw-app/index.html b/excalidraw-app/index.html index a2919e512..3a5c01e10 100644 --- a/excalidraw-app/index.html +++ b/excalidraw-app/index.html @@ -95,6 +95,11 @@ color: #fff; } + + + + + <% if (typeof PROD != 'undefined' && PROD == true) { %> + + + + <% } else { %> - <% } %> - - - - - - - - - - - - - <% if (typeof PROD != 'undefined' && PROD == true) { %> - - - - <% } else { %> <% } %> - + + + + + + + + <% if (typeof VITE_APP_DEV_DISABLE_LIVE_RELOAD != 'undefined' && VITE_APP_DEV_DISABLE_LIVE_RELOAD == true) { %> + + + + + + `, + ); + } }, }; }; diff --git a/setupTests.ts b/setupTests.ts index 0b331db08..3884fbd47 100644 --- a/setupTests.ts +++ b/setupTests.ts @@ -72,12 +72,14 @@ vi.mock( ...mod, ExcalidrawFont: class extends ExcalidrawFontImpl { public async getContent(): Promise { - if (this.url.protocol !== "file:") { + const url = this.urls[0]; + + if (url.protocol !== "file:") { return super.getContent(); } // read local assets directly, without running a server - const content = await fs.promises.readFile(this.url); + const content = await fs.promises.readFile(url); return `data:font/woff2;base64,${content.toString("base64")}`; } }, diff --git a/vercel.json b/vercel.json index dc077e41b..6949dfcef 100644 --- a/vercel.json +++ b/vercel.json @@ -6,7 +6,7 @@ "headers": [ { "key": "Access-Control-Allow-Origin", - "value": "*" + "value": "https://excalidraw.com" }, { "key": "X-Content-Type-Options", @@ -21,6 +21,32 @@ "value": "origin" } ] + }, + { + "source": "/:file*.woff2", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "https://excalidraw.com" + } + ] + }, + { + "source": "/(Virgil|Cascadia|Assistant-Regular).woff2", + "headers": [ + { + "key": "Cache-Control", + "value": "public, max-age=31536000" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ] } ], "redirects": [ From adcdbe2907ca6193f7728f914434eabb9fd1aff2 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Tue, 30 Jul 2024 11:15:11 +0200 Subject: [PATCH 05/86] fix: re-add Cascadia Code with ligatures (#8291) --- .../fonts/assets/CascadiaCode-Regular.woff2 | Bin 0 -> 65732 bytes .../fonts/assets/CascadiaMono-Regular.woff2 | Bin 74128 -> 0 bytes packages/excalidraw/fonts/index.ts | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 packages/excalidraw/fonts/assets/CascadiaCode-Regular.woff2 delete mode 100644 packages/excalidraw/fonts/assets/CascadiaMono-Regular.woff2 diff --git a/packages/excalidraw/fonts/assets/CascadiaCode-Regular.woff2 b/packages/excalidraw/fonts/assets/CascadiaCode-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ed0335c2c1d1dbdf52330e628d33c3bbb67f4a37 GIT binary patch literal 65732 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

&V}NWrUoQg(QHtha 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 G@c#m&P9RPI diff --git a/packages/excalidraw/fonts/index.ts b/packages/excalidraw/fonts/index.ts index 308dcbdfc..f528d34b9 100644 --- a/packages/excalidraw/fonts/index.ts +++ b/packages/excalidraw/fonts/index.ts @@ -16,7 +16,7 @@ import { getContainerElement } from "../element/textElement"; import Virgil from "./assets/Virgil-Regular.woff2"; import Excalifont from "./assets/Excalifont-Regular.woff2"; -import Cascadia from "./assets/CascadiaMono-Regular.woff2"; +import Cascadia from "./assets/CascadiaCode-Regular.woff2"; import ComicShanns from "./assets/ComicShanns-Regular.woff2"; import LiberationSans from "./assets/LiberationSans-Regular.woff2"; From 5a0771ad9c68f5011784b46c96f8360da1599d42 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Tue, 30 Jul 2024 17:23:35 +0200 Subject: [PATCH 06/86] fix: load fonts for `exportToCanvas` (#8298) --- packages/excalidraw/components/App.tsx | 2 +- .../components/FontPicker/FontPickerList.tsx | 2 +- packages/excalidraw/fonts/index.ts | 83 +++++++++++++++---- packages/excalidraw/scene/export.ts | 6 ++ 4 files changed, 73 insertions(+), 20 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index cf23af641..f198d3016 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -2345,7 +2345,7 @@ class App extends React.Component { // fire (looking at you Safari), so on init we manually load all // fonts and rerender scene text elements once done. This also // seems faster even in browsers that do fire the loadingdone event. - this.fonts.load(); + this.fonts.loadSceneFonts(); }; private isMobileBreakpoint = (width: number, height: number) => { diff --git a/packages/excalidraw/components/FontPicker/FontPickerList.tsx b/packages/excalidraw/components/FontPicker/FontPickerList.tsx index 7adf53eaf..91d537ebf 100644 --- a/packages/excalidraw/components/FontPicker/FontPickerList.tsx +++ b/packages/excalidraw/components/FontPicker/FontPickerList.tsx @@ -89,7 +89,7 @@ export const FontPickerList = React.memo( ); const sceneFamilies = useMemo( - () => new Set(fonts.sceneFamilies), + () => new Set(fonts.getSceneFontFamilies()), // cache per selected font family, so hover re-render won't mess it up // eslint-disable-next-line react-hooks/exhaustive-deps [selectedFontFamily], diff --git a/packages/excalidraw/fonts/index.ts b/packages/excalidraw/fonts/index.ts index f528d34b9..e30150481 100644 --- a/packages/excalidraw/fonts/index.ts +++ b/packages/excalidraw/fonts/index.ts @@ -1,6 +1,10 @@ import type Scene from "../scene/Scene"; import type { ValueOf } from "../utility-types"; -import type { ExcalidrawTextElement, FontFamilyValues } from "../element/types"; +import type { + ExcalidrawElement, + ExcalidrawTextElement, + FontFamilyValues, +} from "../element/types"; import { ShapeCache } from "../scene/ShapeCache"; import { isTextElement } from "../element"; import { getFontString } from "../utils"; @@ -44,10 +48,19 @@ export class Fonts { > | undefined; + private static _initialized: boolean = false; + public static get registered() { + // lazy load the font registration if (!Fonts._registered) { - // lazy load the fonts Fonts._registered = Fonts.init(); + } else if (!Fonts._initialized) { + // case when host app register fonts before they are lazy loaded + // don't override whatever has been previously registered + Fonts._registered = new Map([ + ...Fonts.init().entries(), + ...Fonts._registered.entries(), + ]); } return Fonts._registered; @@ -59,17 +72,6 @@ export class Fonts { private readonly scene: Scene; - public get sceneFamilies() { - return Array.from( - this.scene.getNonDeletedElements().reduce((families, element) => { - if (isTextElement(element)) { - families.add(element.fontFamily); - } - return families; - }, new Set()), - ); - } - constructor({ scene }: { scene: Scene }) { this.scene = scene; } @@ -119,7 +121,36 @@ export class Fonts { } }; - public load = async () => { + /** + * Load font faces for a given scene and trigger scene update. + */ + public loadSceneFonts = async (): Promise => { + const sceneFamilies = this.getSceneFontFamilies(); + const loaded = await Fonts.loadFontFaces(sceneFamilies); + this.onLoaded(loaded); + return loaded; + }; + + /** + * Gets all the font families for the given scene. + */ + public getSceneFontFamilies = () => { + return Fonts.getFontFamilies(this.scene.getNonDeletedElements()); + }; + + /** + * Load font faces for passed elements - use when the scene is unavailable (i.e. export). + */ + public static loadFontsForElements = async ( + elements: readonly ExcalidrawElement[], + ): Promise => { + const fontFamilies = Fonts.getFontFamilies(elements); + return await Fonts.loadFontFaces(fontFamilies); + }; + + private static async loadFontFaces( + fontFamilies: Array, + ) { // Add all registered font faces into the `document.fonts` (if not added already) for (const { fonts } of Fonts.registered.values()) { for (const { fontFace } of fonts) { @@ -129,8 +160,8 @@ export class Fonts { } } - const loaded = await Promise.all( - this.sceneFamilies.map(async (fontFamily) => { + const loadedFontFaces = await Promise.all( + fontFamilies.map(async (fontFamily) => { const fontString = getFontString({ fontFamily, fontSize: 16, @@ -157,8 +188,8 @@ export class Fonts { }), ); - this.onLoaded(loaded.flat().filter(Boolean) as FontFace[]); - }; + return loadedFontFaces.flat().filter(Boolean) as FontFace[]; + } /** * WARN: should be called just once on init, even across multiple instances. @@ -171,6 +202,7 @@ export class Fonts { >(), }; + // TODO: let's tweak this once we know how `register` will be exposed as part of the custom fonts API const _register = register.bind(fonts); _register("Virgil", FONT_METADATA[FONT_FAMILY.Virgil], { @@ -235,8 +267,23 @@ export class Fonts { }, ); + Fonts._initialized = true; + return fonts.registered; } + + private static getFontFamilies( + elements: ReadonlyArray, + ): Array { + return Array.from( + elements.reduce((families, element) => { + if (isTextElement(element)) { + families.add(element.fontFamily); + } + return families; + }, new Set()), + ); + } } /** diff --git a/packages/excalidraw/scene/export.ts b/packages/excalidraw/scene/export.ts index 205cfa761..4167c71f9 100644 --- a/packages/excalidraw/scene/export.ts +++ b/packages/excalidraw/scene/export.ts @@ -187,7 +187,13 @@ export const exportToCanvas = async ( canvas.height = height * appState.exportScale; return { canvas, scale: appState.exportScale }; }, + loadFonts: () => Promise = async () => { + await Fonts.loadFontsForElements(elements); + }, ) => { + // load font faces before continuing, by default leverages browsers' [FontFace API](https://developer.mozilla.org/en-US/docs/Web/API/FontFace) + await loadFonts(); + const frameRendering = getFrameRenderingConfig( exportingFrame ?? null, appState.frameRendering ?? null, From e844580b1420761208a8628735cbdd3c3ec6a165 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:56:11 +0200 Subject: [PATCH 07/86] feat: remove automatic frame naming (#8302) --- packages/excalidraw/components/App.tsx | 14 +------------- packages/excalidraw/frame.ts | 9 +++------ packages/excalidraw/scene/export.ts | 18 ++---------------- 3 files changed, 6 insertions(+), 35 deletions(-) diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index f198d3016..f54ae3ac4 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -156,7 +156,6 @@ import { isLinearElement, isLinearElementType, isUsingAdaptiveRadius, - isFrameElement, isIframeElement, isIframeLikeElement, isMagicFrameElement, @@ -1288,15 +1287,7 @@ class App extends React.Component { const isDarkTheme = this.state.theme === THEME.DARK; - let frameIndex = 0; - let magicFrameIndex = 0; - return this.scene.getNonDeletedFramesLikes().map((f) => { - if (isFrameElement(f)) { - frameIndex++; - } else { - magicFrameIndex++; - } if ( !isElementInViewport( f, @@ -1330,10 +1321,7 @@ class App extends React.Component { let frameNameJSX; - const frameName = getFrameLikeTitle( - f, - isFrameElement(f) ? frameIndex : magicFrameIndex, - ); + const frameName = getFrameLikeTitle(f); if (f.id === this.state.editingFrame) { const frameNameInEdit = frameName; diff --git a/packages/excalidraw/frame.ts b/packages/excalidraw/frame.ts index f02ac521d..469a360ea 100644 --- a/packages/excalidraw/frame.ts +++ b/packages/excalidraw/frame.ts @@ -755,15 +755,12 @@ export const isElementInFrame = ( return false; }; -export const getFrameLikeTitle = ( - element: ExcalidrawFrameLikeElement, - frameIdx: number, -) => { +export const getFrameLikeTitle = (element: ExcalidrawFrameLikeElement) => { // TODO name frames "AI" only if specific to AI frames return element.name === null ? isFrameElement(element) - ? `Frame ${frameIdx}` - : `AI Frame $${frameIdx}` + ? "Frame" + : "AI Frame" : element.name; }; diff --git a/packages/excalidraw/scene/export.ts b/packages/excalidraw/scene/export.ts index 4167c71f9..1f693e644 100644 --- a/packages/excalidraw/scene/export.ts +++ b/packages/excalidraw/scene/export.ts @@ -34,11 +34,7 @@ import { import { newTextElement } from "../element"; import { type Mutable } from "../utility-types"; import { newElementWith } from "../element/mutateElement"; -import { - isFrameElement, - isFrameLikeElement, - isTextElement, -} from "../element/typeChecks"; +import { isFrameLikeElement, isTextElement } from "../element/typeChecks"; import type { RenderableElementsMap } from "./types"; import { syncInvalidIndices } from "../fractionalIndex"; import { renderStaticScene } from "../renderer/staticScene"; @@ -88,15 +84,8 @@ const addFrameLabelsAsTextElements = ( opts: Pick, ) => { const nextElements: NonDeletedExcalidrawElement[] = []; - let frameIndex = 0; - let magicFrameIndex = 0; for (const element of elements) { if (isFrameLikeElement(element)) { - if (isFrameElement(element)) { - frameIndex++; - } else { - magicFrameIndex++; - } let textElement: Mutable = newTextElement({ x: element.x, y: element.y - FRAME_STYLE.nameOffsetY, @@ -107,10 +96,7 @@ const addFrameLabelsAsTextElements = ( strokeColor: opts.exportWithDarkMode ? FRAME_STYLE.nameColorDarkTheme : FRAME_STYLE.nameColorLightTheme, - text: getFrameLikeTitle( - element, - isFrameElement(element) ? frameIndex : magicFrameIndex, - ), + text: getFrameLikeTitle(element), }); textElement.y -= textElement.height; From 80ea7ca23f7cdeb12ecc73271470a501b2c4f7f8 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Thu, 1 Aug 2024 11:32:16 +0200 Subject: [PATCH 08/86] fix: skip registering font faces for local fonts (#8303) --- packages/excalidraw/fonts/index.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/excalidraw/fonts/index.ts b/packages/excalidraw/fonts/index.ts index e30150481..39f6bf8da 100644 --- a/packages/excalidraw/fonts/index.ts +++ b/packages/excalidraw/fonts/index.ts @@ -151,8 +151,13 @@ export class Fonts { private static async loadFontFaces( fontFamilies: Array, ) { - // Add all registered font faces into the `document.fonts` (if not added already) - for (const { fonts } of Fonts.registered.values()) { + // add all registered font faces into the `document.fonts` (if not added already) + for (const { fonts, metadata } of Fonts.registered.values()) { + // skip registering font faces for local fonts (i.e. Helvetica) + if (metadata.local) { + continue; + } + for (const { fontFace } of fonts) { if (!window.document.fonts.has(fontFace)) { window.document.fonts.add(fontFace); From a133a70e87d5f972254affbae65d1688f73400ce Mon Sep 17 00:00:00 2001 From: Aakansha Doshi Date: Thu, 1 Aug 2024 20:19:37 +0530 Subject: [PATCH 09/86] build: update release script to build esm (#8308) --- scripts/release.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/release.js b/scripts/release.js index 22c6cebc2..21f9f2539 100644 --- a/scripts/release.js +++ b/scripts/release.js @@ -6,9 +6,13 @@ const pkg = require(excalidrawPackage); const publish = () => { try { + console.info("Installing the dependencies in root folder..."); execSync(`yarn --frozen-lockfile`); + console.info("Installing the dependencies in excalidraw directory..."); execSync(`yarn --frozen-lockfile`, { cwd: excalidrawDir }); - execSync(`yarn run build:umd`, { cwd: excalidrawDir }); + console.info("Building ESM Package..."); + execSync(`yarn run build:esm`, { cwd: excalidrawDir }); + console.info("Publishing the package..."); execSync(`yarn --cwd ${excalidrawDir} publish`); } catch (error) { console.error(error); From 15e019706d70ee69dc691faf0430d776752ba5e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rk=20Tolm=C3=A1cs?= Date: Thu, 1 Aug 2024 18:39:03 +0200 Subject: [PATCH 10/86] feat: Orthogonal (elbow) arrows for diagramming (#8299) Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com> --- .../actions/actionDeleteSelected.tsx | 40 +- .../actions/actionDuplicateSelection.tsx | 3 +- .../excalidraw/actions/actionFinalize.tsx | 2 + packages/excalidraw/actions/actionFlip.ts | 3 + packages/excalidraw/actions/actionHistory.tsx | 6 +- .../excalidraw/actions/actionLinearEditor.tsx | 5 +- .../excalidraw/actions/actionProperties.tsx | 255 +++- packages/excalidraw/actions/types.ts | 1 + packages/excalidraw/appState.ts | 7 + packages/excalidraw/binaryheap.ts | 105 ++ packages/excalidraw/change.ts | 9 +- packages/excalidraw/charts.ts | 10 - packages/excalidraw/components/Actions.tsx | 11 +- packages/excalidraw/components/App.tsx | 283 +++- packages/excalidraw/components/HintViewer.tsx | 9 +- .../excalidraw/components/Stats/Angle.tsx | 9 +- .../excalidraw/components/Stats/Dimension.tsx | 5 + .../excalidraw/components/Stats/DragInput.tsx | 4 +- .../components/Stats/MultiDimension.tsx | 23 +- .../components/Stats/MultiPosition.tsx | 12 + .../excalidraw/components/Stats/Position.tsx | 7 +- .../excalidraw/components/Stats/index.tsx | 15 +- packages/excalidraw/components/Stats/utils.ts | 28 +- packages/excalidraw/components/icons.tsx | 29 + packages/excalidraw/constants.ts | 8 +- .../data/__snapshots__/transform.test.ts.snap | 27 + packages/excalidraw/data/restore.ts | 56 +- packages/excalidraw/data/transform.test.ts | 1 + packages/excalidraw/data/transform.ts | 9 +- packages/excalidraw/element/binding.ts | 681 ++++++++- packages/excalidraw/element/dragElements.ts | 34 +- packages/excalidraw/element/heading.ts | 146 ++ packages/excalidraw/element/index.ts | 1 + .../excalidraw/element/linearElementEditor.ts | 324 ++++- .../excalidraw/element/newElement.test.ts | 7 + packages/excalidraw/element/newElement.ts | 24 +- packages/excalidraw/element/resizeElements.ts | 87 +- packages/excalidraw/element/routing.test.tsx | 216 +++ packages/excalidraw/element/routing.ts | 1036 ++++++++++++++ .../excalidraw/element/transformHandles.ts | 15 +- packages/excalidraw/element/typeChecks.ts | 31 + packages/excalidraw/element/types.ts | 27 +- packages/excalidraw/history.ts | 11 +- packages/excalidraw/locales/en.json | 5 + packages/excalidraw/math.test.ts | 46 +- packages/excalidraw/math.ts | 184 +++ .../excalidraw/renderer/interactiveScene.ts | 76 +- packages/excalidraw/scene/Shape.ts | 73 +- packages/excalidraw/scene/comparisons.ts | 3 +- .../__snapshots__/contextmenu.test.tsx.snap | 17 + .../__snapshots__/dragCreate.test.tsx.snap | 1 + .../tests/__snapshots__/history.test.tsx.snap | 1269 ++++++++++++----- .../tests/__snapshots__/move.test.tsx.snap | 15 +- .../multiPointCreate.test.tsx.snap | 1 + .../regressionTests.test.tsx.snap | 61 + .../__snapshots__/selection.test.tsx.snap | 1 + packages/excalidraw/tests/binding.test.tsx | 7 + .../data/__snapshots__/restore.test.ts.snap | 1 + packages/excalidraw/tests/flip.test.tsx | 4 - packages/excalidraw/tests/helpers/api.ts | 16 +- packages/excalidraw/tests/history.test.tsx | 1061 ++++++++------ packages/excalidraw/tests/library.test.tsx | 7 +- .../tests/linearElementEditor.test.tsx | 46 +- packages/excalidraw/tests/move.test.tsx | 2 + packages/excalidraw/tests/resize.test.tsx | 17 +- packages/excalidraw/types.ts | 2 + packages/excalidraw/utils.ts | 3 + .../utils/__snapshots__/export.test.ts.snap | 1 + packages/utils/geometry/geometry.ts | 18 +- 69 files changed, 5415 insertions(+), 1144 deletions(-) create mode 100644 packages/excalidraw/binaryheap.ts create mode 100644 packages/excalidraw/element/heading.ts create mode 100644 packages/excalidraw/element/routing.test.tsx create mode 100644 packages/excalidraw/element/routing.ts diff --git a/packages/excalidraw/actions/actionDeleteSelected.tsx b/packages/excalidraw/actions/actionDeleteSelected.tsx index 311d88970..2916345d0 100644 --- a/packages/excalidraw/actions/actionDeleteSelected.tsx +++ b/packages/excalidraw/actions/actionDeleteSelected.tsx @@ -5,19 +5,25 @@ import { t } from "../i18n"; import { register } from "./register"; import { getNonDeletedElements } from "../element"; import type { ExcalidrawElement } from "../element/types"; -import type { AppState } from "../types"; -import { newElementWith } from "../element/mutateElement"; +import type { AppClassProperties, AppState } from "../types"; +import { mutateElement, newElementWith } from "../element/mutateElement"; import { getElementsInGroup } from "../groups"; import { LinearElementEditor } from "../element/linearElementEditor"; import { fixBindingsAfterDeletion } from "../element/binding"; -import { isBoundToContainer, isFrameLikeElement } from "../element/typeChecks"; +import { + isBoundToContainer, + isElbowArrow, + isFrameLikeElement, +} from "../element/typeChecks"; import { updateActiveTool } from "../utils"; import { TrashIcon } from "../components/icons"; import { StoreAction } from "../store"; +import { mutateElbowArrow } from "../element/routing"; const deleteSelectedElements = ( elements: readonly ExcalidrawElement[], appState: AppState, + app: AppClassProperties, ) => { const framesToBeDeleted = new Set( getSelectedElements( @@ -29,6 +35,26 @@ const deleteSelectedElements = ( return { elements: elements.map((el) => { if (appState.selectedElementIds[el.id]) { + if (el.boundElements) { + el.boundElements.forEach((candidate) => { + const bound = app.scene + .getNonDeletedElementsMap() + .get(candidate.id); + if (bound && isElbowArrow(bound)) { + mutateElement(bound, { + startBinding: + el.id === bound.startBinding?.elementId + ? null + : bound.startBinding, + endBinding: + el.id === bound.endBinding?.elementId + ? null + : bound.endBinding, + }); + mutateElbowArrow(bound, app.scene, bound.points); + } + }); + } return newElementWith(el, { isDeleted: true }); } @@ -130,7 +156,11 @@ export const actionDeleteSelected = register({ : endBindingElement, }; - LinearElementEditor.deletePoints(element, selectedPointsIndices); + LinearElementEditor.deletePoints( + element, + selectedPointsIndices, + app.scene, + ); return { elements, @@ -149,7 +179,7 @@ export const actionDeleteSelected = register({ }; } let { elements: nextElements, appState: nextAppState } = - deleteSelectedElements(elements, appState); + deleteSelectedElements(elements, appState, app); fixBindingsAfterDeletion( nextElements, elements.filter(({ id }) => appState.selectedElementIds[id]), diff --git a/packages/excalidraw/actions/actionDuplicateSelection.tsx b/packages/excalidraw/actions/actionDuplicateSelection.tsx index 44c26e226..9d72fdc8d 100644 --- a/packages/excalidraw/actions/actionDuplicateSelection.tsx +++ b/packages/excalidraw/actions/actionDuplicateSelection.tsx @@ -40,12 +40,11 @@ export const actionDuplicateSelection = register({ icon: DuplicateIcon, trackEvent: { category: "element" }, perform: (elements, appState, formData, app) => { - const elementsMap = app.scene.getNonDeletedElementsMap(); // duplicate selected point(s) if editing a line if (appState.editingLinearElement) { const ret = LinearElementEditor.duplicateSelectedPoints( appState, - elementsMap, + app.scene, ); if (!ret) { diff --git a/packages/excalidraw/actions/actionFinalize.tsx b/packages/excalidraw/actions/actionFinalize.tsx index 15956b3a3..39dd2363a 100644 --- a/packages/excalidraw/actions/actionFinalize.tsx +++ b/packages/excalidraw/actions/actionFinalize.tsx @@ -38,6 +38,7 @@ export const actionFinalize = register({ startBindingElement, endBindingElement, elementsMap, + scene, ); } return { @@ -136,6 +137,7 @@ export const actionFinalize = register({ appState, { x, y }, elementsMap, + elements, ); } } diff --git a/packages/excalidraw/actions/actionFlip.ts b/packages/excalidraw/actions/actionFlip.ts index 3f521d27f..128be86c9 100644 --- a/packages/excalidraw/actions/actionFlip.ts +++ b/packages/excalidraw/actions/actionFlip.ts @@ -120,11 +120,14 @@ const flipElements = ( true, flipDirection === "horizontal" ? maxX : minX, flipDirection === "horizontal" ? minY : maxY, + app.scene, ); bindOrUnbindLinearElements( selectedElements.filter(isLinearElement), elementsMap, + app.scene.getNonDeletedElements(), + app.scene, isBindingEnabled(appState), [], ); diff --git a/packages/excalidraw/actions/actionHistory.tsx b/packages/excalidraw/actions/actionHistory.tsx index 8e2d10454..8eaf3b6ef 100644 --- a/packages/excalidraw/actions/actionHistory.tsx +++ b/packages/excalidraw/actions/actionHistory.tsx @@ -50,12 +50,13 @@ export const createUndoAction: ActionCreator = (history, store) => ({ icon: UndoIcon, trackEvent: { category: "history" }, viewMode: false, - perform: (elements, appState) => + perform: (elements, appState, value, app) => writeData(appState, () => history.undo( arrayToMap(elements) as SceneElementsMap, // TODO: #7348 refactor action manager to already include `SceneElementsMap` appState, store.snapshot, + app.scene, ), ), keyTest: (event) => @@ -91,12 +92,13 @@ export const createRedoAction: ActionCreator = (history, store) => ({ icon: RedoIcon, trackEvent: { category: "history" }, viewMode: false, - perform: (elements, appState) => + perform: (elements, appState, _, app) => writeData(appState, () => history.redo( arrayToMap(elements) as SceneElementsMap, // TODO: #7348 refactor action manager to already include `SceneElementsMap` appState, store.snapshot, + app.scene, ), ), keyTest: (event) => diff --git a/packages/excalidraw/actions/actionLinearEditor.tsx b/packages/excalidraw/actions/actionLinearEditor.tsx index 12f00c248..acde9b1e5 100644 --- a/packages/excalidraw/actions/actionLinearEditor.tsx +++ b/packages/excalidraw/actions/actionLinearEditor.tsx @@ -1,6 +1,6 @@ import { DEFAULT_CATEGORIES } from "../components/CommandPalette/CommandPalette"; import { LinearElementEditor } from "../element/linearElementEditor"; -import { isLinearElement } from "../element/typeChecks"; +import { isElbowArrow, isLinearElement } from "../element/typeChecks"; import type { ExcalidrawLinearElement } from "../element/types"; import { StoreAction } from "../store"; import { register } from "./register"; @@ -29,7 +29,8 @@ export const actionToggleLinearEditor = register({ if ( !appState.editingLinearElement && selectedElements.length === 1 && - isLinearElement(selectedElements[0]) + isLinearElement(selectedElements[0]) && + !isElbowArrow(selectedElements[0]) ) { return true; } diff --git a/packages/excalidraw/actions/actionProperties.tsx b/packages/excalidraw/actions/actionProperties.tsx index e0cc825c9..add2e34e3 100644 --- a/packages/excalidraw/actions/actionProperties.tsx +++ b/packages/excalidraw/actions/actionProperties.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useRef, useState } from "react"; -import type { AppClassProperties, AppState, Primitive } from "../types"; +import type { AppClassProperties, AppState, Point, Primitive } from "../types"; import type { StoreActionType } from "../store"; import { DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE, @@ -50,8 +50,12 @@ import { ArrowheadDiamondIcon, ArrowheadDiamondOutlineIcon, fontSizeIcon, + sharpArrowIcon, + roundArrowIcon, + elbowArrowIcon, } from "../components/icons"; import { + ARROW_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, FONT_FAMILY, @@ -67,12 +71,15 @@ import { import { mutateElement, newElementWith } from "../element/mutateElement"; import { getBoundTextElement } from "../element/textElement"; import { + isArrowElement, isBoundToContainer, + isElbowArrow, isLinearElement, isUsingAdaptiveRadius, } from "../element/typeChecks"; import type { Arrowhead, + ExcalidrawBindableElement, ExcalidrawElement, ExcalidrawLinearElement, ExcalidrawTextElement, @@ -91,10 +98,23 @@ import { isSomeElementSelected, } from "../scene"; import { hasStrokeColor } from "../scene/comparisons"; -import { arrayToMap, getFontFamilyString, getShortcutKey } from "../utils"; +import { + arrayToMap, + getFontFamilyString, + getShortcutKey, + tupleToCoors, +} from "../utils"; import { register } from "./register"; import { StoreAction } from "../store"; import { Fonts, getLineHeight } from "../fonts"; +import { + bindLinearElement, + bindPointToSnapToElementOutline, + calculateFixedPointForElbowArrowBinding, + getHoveredElementForBinding, +} from "../element/binding"; +import { mutateElbowArrow } from "../element/routing"; +import { LinearElementEditor } from "../element/linearElementEditor"; const FONT_SIZE_RELATIVE_INCREASE_STEP = 0.1; @@ -1304,8 +1324,12 @@ export const actionChangeRoundness = register({ trackEvent: false, perform: (elements, appState, value) => { return { - elements: changeProperty(elements, appState, (el) => - newElementWith(el, { + elements: changeProperty(elements, appState, (el) => { + if (isElbowArrow(el)) { + return el; + } + + return newElementWith(el, { roundness: value === "round" ? { @@ -1314,8 +1338,8 @@ export const actionChangeRoundness = register({ : ROUNDNESS.PROPORTIONAL_RADIUS, } : null, - }), - ), + }); + }), appState: { ...appState, currentItemRoundness: value, @@ -1355,7 +1379,8 @@ export const actionChangeRoundness = register({ appState, (element) => hasLegacyRoundness ? null : element.roundness ? "round" : "sharp", - (element) => element.hasOwnProperty("roundness"), + (element) => + !isArrowElement(element) && element.hasOwnProperty("roundness"), (hasSelection) => hasSelection ? null : appState.currentItemRoundness, )} @@ -1518,3 +1543,219 @@ export const actionChangeArrowhead = register({ ); }, }); + +export const actionChangeArrowType = register({ + name: "changeArrowType", + label: "Change arrow types", + trackEvent: false, + perform: (elements, appState, value, app) => { + return { + elements: changeProperty(elements, appState, (el) => { + if (!isArrowElement(el)) { + return el; + } + const newElement = newElementWith(el, { + roundness: + value === ARROW_TYPE.round + ? { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + } + : null, + elbowed: value === ARROW_TYPE.elbow, + points: + value === ARROW_TYPE.elbow || el.elbowed + ? [el.points[0], el.points[el.points.length - 1]] + : el.points, + }); + + if (isElbowArrow(newElement)) { + const elementsMap = app.scene.getNonDeletedElementsMap(); + + app.dismissLinearEditor(); + + const startGlobalPoint = + LinearElementEditor.getPointAtIndexGlobalCoordinates( + newElement, + 0, + elementsMap, + ); + const endGlobalPoint = + LinearElementEditor.getPointAtIndexGlobalCoordinates( + newElement, + -1, + elementsMap, + ); + const startHoveredElement = + !newElement.startBinding && + getHoveredElementForBinding( + tupleToCoors(startGlobalPoint), + elements, + elementsMap, + true, + ); + const endHoveredElement = + !newElement.endBinding && + getHoveredElementForBinding( + tupleToCoors(endGlobalPoint), + elements, + elementsMap, + true, + ); + const startElement = startHoveredElement + ? startHoveredElement + : newElement.startBinding && + (elementsMap.get( + newElement.startBinding.elementId, + ) as ExcalidrawBindableElement); + const endElement = endHoveredElement + ? endHoveredElement + : newElement.endBinding && + (elementsMap.get( + newElement.endBinding.elementId, + ) as ExcalidrawBindableElement); + + const finalStartPoint = startHoveredElement + ? bindPointToSnapToElementOutline( + startGlobalPoint, + endGlobalPoint, + startHoveredElement, + elementsMap, + ) + : startGlobalPoint; + const finalEndPoint = endHoveredElement + ? bindPointToSnapToElementOutline( + endGlobalPoint, + startGlobalPoint, + endHoveredElement, + elementsMap, + ) + : endGlobalPoint; + + startHoveredElement && + bindLinearElement( + newElement, + startHoveredElement, + "start", + elementsMap, + ); + endHoveredElement && + bindLinearElement( + newElement, + endHoveredElement, + "end", + elementsMap, + ); + + mutateElbowArrow( + newElement, + app.scene, + [finalStartPoint, finalEndPoint].map( + (point) => + [point[0] - newElement.x, point[1] - newElement.y] as Point, + ), + [0, 0], + { + ...(startElement && newElement.startBinding + ? { + startBinding: { + // @ts-ignore TS cannot discern check above + ...newElement.startBinding!, + ...calculateFixedPointForElbowArrowBinding( + newElement, + startElement, + "start", + elementsMap, + ), + }, + } + : {}), + ...(endElement && newElement.endBinding + ? { + endBinding: { + // @ts-ignore TS cannot discern check above + ...newElement.endBinding, + ...calculateFixedPointForElbowArrowBinding( + newElement, + endElement, + "end", + elementsMap, + ), + }, + } + : {}), + }, + ); + } else { + mutateElement( + newElement, + { + startBinding: newElement.startBinding + ? { ...newElement.startBinding, fixedPoint: null } + : null, + endBinding: newElement.endBinding + ? { ...newElement.endBinding, fixedPoint: null } + : null, + }, + false, + ); + } + + return newElement; + }), + appState: { + ...appState, + currentItemArrowType: value, + }, + storeAction: StoreAction.CAPTURE, + }; + }, + PanelComponent: ({ elements, appState, updateData }) => { + return ( +

+ {t("labels.arrowtypes")} + { + if (isArrowElement(element)) { + return element.elbowed + ? ARROW_TYPE.elbow + : element.roundness + ? ARROW_TYPE.round + : ARROW_TYPE.sharp; + } + + return null; + }, + (element) => isArrowElement(element), + (hasSelection) => + hasSelection ? null : appState.currentItemArrowType, + )} + onChange={(value) => updateData(value)} + /> +
+ ); + }, +}); diff --git a/packages/excalidraw/actions/types.ts b/packages/excalidraw/actions/types.ts index 6597ec0f0..2d0275bb3 100644 --- a/packages/excalidraw/actions/types.ts +++ b/packages/excalidraw/actions/types.ts @@ -70,6 +70,7 @@ export type ActionName = | "changeSloppiness" | "changeStrokeStyle" | "changeArrowhead" + | "changeArrowType" | "changeOpacity" | "changeFontSize" | "toggleCanvasMenu" diff --git a/packages/excalidraw/appState.ts b/packages/excalidraw/appState.ts index 2e490a908..9c7c43e28 100644 --- a/packages/excalidraw/appState.ts +++ b/packages/excalidraw/appState.ts @@ -1,5 +1,6 @@ import { COLOR_PALETTE } from "./colors"; import { + ARROW_TYPE, DEFAULT_ELEMENT_PROPS, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, @@ -33,6 +34,7 @@ export const getDefaultAppState = (): Omit< currentItemStartArrowhead: null, currentItemStrokeColor: DEFAULT_ELEMENT_PROPS.strokeColor, currentItemRoundness: "round", + currentItemArrowType: ARROW_TYPE.round, currentItemStrokeStyle: DEFAULT_ELEMENT_PROPS.strokeStyle, currentItemStrokeWidth: DEFAULT_ELEMENT_PROPS.strokeWidth, currentItemTextAlign: DEFAULT_TEXT_ALIGN, @@ -143,6 +145,11 @@ const APP_STATE_STORAGE_CONF = (< export: false, server: false, }, + currentItemArrowType: { + browser: true, + export: false, + server: false, + }, currentItemOpacity: { browser: true, export: false, server: false }, currentItemRoughness: { browser: true, export: false, server: false }, currentItemStartArrowhead: { browser: true, export: false, server: false }, diff --git a/packages/excalidraw/binaryheap.ts b/packages/excalidraw/binaryheap.ts new file mode 100644 index 000000000..0bacadceb --- /dev/null +++ b/packages/excalidraw/binaryheap.ts @@ -0,0 +1,105 @@ +export default class BinaryHeap { + private content: T[] = []; + + constructor(private scoreFunction: (node: T) => number) {} + + sinkDown(idx: number) { + const node = this.content[idx]; + while (idx > 0) { + const parentN = ((idx + 1) >> 1) - 1; + const parent = this.content[parentN]; + if (this.scoreFunction(node) < this.scoreFunction(parent)) { + this.content[parentN] = node; + this.content[idx] = parent; + idx = parentN; // TODO: Optimize + } else { + break; + } + } + } + + bubbleUp(idx: number) { + const length = this.content.length; + const node = this.content[idx]; + const score = this.scoreFunction(node); + + while (true) { + const child2N = (idx + 1) << 1; + const child1N = child2N - 1; + let swap = null; + let child1Score = 0; + + if (child1N < length) { + const child1 = this.content[child1N]; + child1Score = this.scoreFunction(child1); + if (child1Score < score) { + swap = child1N; + } + } + + if (child2N < length) { + const child2 = this.content[child2N]; + const child2Score = this.scoreFunction(child2); + if (child2Score < (swap === null ? score : child1Score)) { + swap = child2N; + } + } + + if (swap !== null) { + this.content[idx] = this.content[swap]; + this.content[swap] = node; + idx = swap; // TODO: Optimize + } else { + break; + } + } + } + + push(node: T) { + this.content.push(node); + this.sinkDown(this.content.length - 1); + } + + pop(): T | null { + if (this.content.length === 0) { + return null; + } + + const result = this.content[0]; + const end = this.content.pop()!; + + if (this.content.length > 0) { + this.content[0] = end; + this.bubbleUp(0); + } + + return result; + } + + remove(node: T) { + if (this.content.length === 0) { + return; + } + + const i = this.content.indexOf(node); + const end = this.content.pop()!; + + if (i < this.content.length) { + this.content[i] = end; + + if (this.scoreFunction(end) < this.scoreFunction(node)) { + this.sinkDown(i); + } else { + this.bubbleUp(i); + } + } + } + + size(): number { + return this.content.length; + } + + rescoreElement(node: T) { + this.sinkDown(this.content.indexOf(node)); + } +} diff --git a/packages/excalidraw/change.ts b/packages/excalidraw/change.ts index 884235e80..0d07157c7 100644 --- a/packages/excalidraw/change.ts +++ b/packages/excalidraw/change.ts @@ -29,6 +29,7 @@ import type { } from "./element/types"; import { orderByFractionalIndex, syncMovedIndices } from "./fractionalIndex"; import { getNonDeletedGroupIds } from "./groups"; +import type Scene from "./scene/Scene"; import { getObservedAppState } from "./store"; import type { AppState, @@ -1053,6 +1054,7 @@ export class ElementsChange implements Change { public applyTo( elements: SceneElementsMap, snapshot: Map, + scene: Scene, ): [SceneElementsMap, boolean] { let nextElements = toBrandedType(new Map(elements)); let changedElements: Map; @@ -1100,7 +1102,7 @@ export class ElementsChange implements Change { try { // TODO: #7348 refactor away mutations below, so that we couldn't end up in an incosistent state ElementsChange.redrawTextBoundingBoxes(nextElements, changedElements); - ElementsChange.redrawBoundArrows(nextElements, changedElements); + ElementsChange.redrawBoundArrows(nextElements, changedElements, scene); // the following reorder performs also mutations, but only on new instances of changed elements // (unless something goes really bad and it fallbacks to fixing all invalid indices) @@ -1457,10 +1459,13 @@ export class ElementsChange implements Change { private static redrawBoundArrows( elements: SceneElementsMap, changed: Map, + scene: Scene, ) { for (const element of changed.values()) { if (!element.isDeleted && isBindableElement(element)) { - updateBoundElements(element, elements); + updateBoundElements(element, elements, scene, { + changedElements: changed, + }); } } } diff --git a/packages/excalidraw/charts.ts b/packages/excalidraw/charts.ts index 62fe93886..2a80a4ba7 100644 --- a/packages/excalidraw/charts.ts +++ b/packages/excalidraw/charts.ts @@ -257,8 +257,6 @@ const chartLines = ( type: "line", x, y, - startArrowhead: null, - endArrowhead: null, width: chartWidth, points: [ [0, 0], @@ -273,8 +271,6 @@ const chartLines = ( type: "line", x, y, - startArrowhead: null, - endArrowhead: null, height: chartHeight, points: [ [0, 0], @@ -289,8 +285,6 @@ const chartLines = ( type: "line", x, y: y - BAR_HEIGHT - BAR_GAP, - startArrowhead: null, - endArrowhead: null, strokeStyle: "dotted", width: chartWidth, opacity: GRID_OPACITY, @@ -418,8 +412,6 @@ const chartTypeLine = ( type: "line", x: x + BAR_GAP + BAR_WIDTH / 2, y: y - BAR_GAP, - startArrowhead: null, - endArrowhead: null, height: maxY - minY, width: maxX - minX, strokeWidth: 2, @@ -453,8 +445,6 @@ const chartTypeLine = ( type: "line", x: x + cx + BAR_WIDTH / 2 + BAR_GAP / 2, y: y - cy, - startArrowhead: null, - endArrowhead: null, height: cy, strokeStyle: "dotted", opacity: GRID_OPACITY, diff --git a/packages/excalidraw/components/Actions.tsx b/packages/excalidraw/components/Actions.tsx index 2be642f79..91102aef2 100644 --- a/packages/excalidraw/components/Actions.tsx +++ b/packages/excalidraw/components/Actions.tsx @@ -21,10 +21,11 @@ import type { AppClassProperties, AppProps, UIAppState, Zoom } from "../types"; import { capitalizeString, isTransparent } from "../utils"; import Stack from "./Stack"; import { ToolButton } from "./ToolButton"; -import { hasStrokeColor } from "../scene/comparisons"; +import { hasStrokeColor, toolIsArrow } from "../scene/comparisons"; import { trackEvent } from "../analytics"; import { hasBoundTextElement, + isElbowArrow, isLinearElement, isTextElement, } from "../element/typeChecks"; @@ -121,7 +122,8 @@ export const SelectedShapeActions = ({ const showLineEditorAction = !appState.editingLinearElement && targetElements.length === 1 && - isLinearElement(targetElements[0]); + isLinearElement(targetElements[0]) && + !isElbowArrow(targetElements[0]); return (
@@ -155,6 +157,11 @@ export const SelectedShapeActions = ({ <>{renderAction("changeRoundness")} )} + {(toolIsArrow(appState.activeTool.type) || + targetElements.some((element) => toolIsArrow(element.type))) && ( + <>{renderAction("changeArrowType")} + )} + {(appState.activeTool.type === "text" || targetElements.some(isTextElement)) && ( <> diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index f54ae3ac4..8a4017429 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -48,7 +48,7 @@ import { } from "../appState"; import type { PastedMixedContent } from "../clipboard"; import { copyTextToSystemClipboard, parseClipboard } from "../clipboard"; -import type { EXPORT_IMAGE_TYPES } from "../constants"; +import { ARROW_TYPE, type EXPORT_IMAGE_TYPES } from "../constants"; import { APP_NAME, CURSOR_TYPE, @@ -142,6 +142,7 @@ import { newEmbeddableElement, newMagicFrameElement, newIframeElement, + newArrowElement, } from "../element/newElement"; import { hasBoundTextElement, @@ -160,6 +161,7 @@ import { isIframeLikeElement, isMagicFrameElement, isTextBindableContainer, + isElbowArrow, } from "../element/typeChecks"; import type { ExcalidrawBindableElement, @@ -181,6 +183,7 @@ import type { ExcalidrawIframeElement, ExcalidrawEmbeddableElement, Ordered, + ExcalidrawArrowElement, } from "../element/types"; import { getCenter, getDistance } from "../gesture"; import { @@ -425,6 +428,7 @@ import { getShortcutFromShortcutName } from "../actions/shortcuts"; import { actionTextAutoResize } from "../actions/actionTextAutoResize"; import { getVisibleSceneBounds } from "../element/bounds"; import { isMaybeMermaidDefinition } from "../mermaid"; +import { mutateElbowArrow } from "../element/routing"; const AppContext = React.createContext(null!); const AppPropsContext = React.createContext(null!); @@ -2112,6 +2116,14 @@ class App extends React.Component { }); }; + public dismissLinearEditor = () => { + setTimeout(() => { + this.setState({ + editingLinearElement: null, + }); + }); + }; + public syncActionResult = withBatchedUpdates((actionResult: ActionResult) => { if (this.unmounted || actionResult === false) { return; @@ -2803,6 +2815,7 @@ class App extends React.Component { ), ), this.scene.getNonDeletedElementsMap(), + this.scene.getNonDeletedElements(), ); } @@ -3947,14 +3960,27 @@ class App extends React.Component { } if (isArrowKey(event.key)) { - const step = - (this.state.gridSize && + const selectedElements = this.scene.getSelectedElements({ + selectedElementIds: this.state.selectedElementIds, + includeBoundTextElement: true, + includeElementsInFrames: true, + }); + + const elbowArrow = selectedElements.find(isElbowArrow) as + | ExcalidrawArrowElement + | undefined; + + const step = elbowArrow + ? elbowArrow.startBinding || elbowArrow.endBinding + ? 0 + : ELEMENT_TRANSLATE_AMOUNT + : (this.state.gridSize && + (event.shiftKey + ? ELEMENT_TRANSLATE_AMOUNT + : this.state.gridSize)) || (event.shiftKey - ? ELEMENT_TRANSLATE_AMOUNT - : this.state.gridSize)) || - (event.shiftKey - ? ELEMENT_SHIFT_TRANSLATE_AMOUNT - : ELEMENT_TRANSLATE_AMOUNT); + ? ELEMENT_SHIFT_TRANSLATE_AMOUNT + : ELEMENT_TRANSLATE_AMOUNT); let offsetX = 0; let offsetY = 0; @@ -3969,26 +3995,27 @@ class App extends React.Component { offsetY = step; } - const selectedElements = this.scene.getSelectedElements({ - selectedElementIds: this.state.selectedElementIds, - includeBoundTextElement: true, - includeElementsInFrames: true, - }); - selectedElements.forEach((element) => { mutateElement(element, { x: element.x + offsetX, y: element.y + offsetY, }); - updateBoundElements(element, this.scene.getNonDeletedElementsMap(), { - simultaneouslyUpdated: selectedElements, - }); + updateBoundElements( + element, + this.scene.getNonDeletedElementsMap(), + this.scene, + { + simultaneouslyUpdated: selectedElements, + }, + ); }); this.setState({ suggestedBindings: getSuggestedBindingsForArrows( - selectedElements, + selectedElements.filter( + (element) => element.id !== elbowArrow?.id || step !== 0, + ), this.scene.getNonDeletedElementsMap(), ), }); @@ -4006,11 +4033,13 @@ class App extends React.Component { selectedElements[0].id ) { this.store.shouldCaptureIncrement(); - this.setState({ - editingLinearElement: new LinearElementEditor( - selectedElement, - ), - }); + if (!isElbowArrow(selectedElement)) { + this.setState({ + editingLinearElement: new LinearElementEditor( + selectedElement, + ), + }); + } } } } else if ( @@ -4058,6 +4087,16 @@ class App extends React.Component { })`, ); } + if (shape === "arrow" && this.state.activeTool.type === "arrow") { + this.setState((prevState) => ({ + currentItemArrowType: + prevState.currentItemArrowType === ARROW_TYPE.sharp + ? ARROW_TYPE.round + : prevState.currentItemArrowType === ARROW_TYPE.round + ? ARROW_TYPE.elbow + : ARROW_TYPE.sharp, + })); + } this.setActiveTool({ type: shape }); event.stopPropagation(); } else if (event.key === KEYS.Q) { @@ -4191,6 +4230,8 @@ class App extends React.Component { bindOrUnbindLinearElements( this.scene.getSelectedElements(this.state).filter(isLinearElement), this.scene.getNonDeletedElementsMap(), + this.scene.getNonDeletedElements(), + this.scene, isBindingEnabled(this.state), this.state.selectedLinearElement?.selectedPointsIndices ?? [], ); @@ -4422,7 +4463,7 @@ class App extends React.Component { onChange: withBatchedUpdates((nextOriginalText) => { updateElement(nextOriginalText, false); if (isNonDeletedElement(element)) { - updateBoundElements(element, elementsMap); + updateBoundElements(element, elementsMap, this.scene); } }), onSubmit: withBatchedUpdates(({ viaKeyboard, nextOriginalText }) => { @@ -4871,7 +4912,9 @@ class App extends React.Component { if ( event[KEYS.CTRL_OR_CMD] && (!this.state.editingLinearElement || - this.state.editingLinearElement.elementId !== selectedElements[0].id) + this.state.editingLinearElement.elementId !== + selectedElements[0].id) && + !isElbowArrow(selectedElements[0]) ) { this.store.shouldCaptureIncrement(); this.setState({ @@ -5214,7 +5257,7 @@ class App extends React.Component { scenePointerX, scenePointerY, this.state, - this.scene.getNonDeletedElementsMap(), + this.scene, ); if ( @@ -5301,7 +5344,9 @@ class App extends React.Component { const [gridX, gridY] = getGridPoint( scenePointerX, scenePointerY, - event[KEYS.CTRL_OR_CMD] ? null : this.state.gridSize, + event[KEYS.CTRL_OR_CMD] || isElbowArrow(multiElement) + ? null + : this.state.gridSize, ); const [lastCommittedX, lastCommittedY] = @@ -5325,16 +5370,35 @@ class App extends React.Component { if (isPathALoop(points, this.state.zoom.value)) { setCursor(this.interactiveCanvas, CURSOR_TYPE.POINTER); } - // update last uncommitted point - mutateElement(multiElement, { - points: [ - ...points.slice(0, -1), + if (isElbowArrow(multiElement)) { + mutateElbowArrow( + multiElement, + this.scene, [ - lastCommittedX + dxFromLastCommitted, - lastCommittedY + dyFromLastCommitted, + ...points.slice(0, -1), + [ + lastCommittedX + dxFromLastCommitted, + lastCommittedY + dyFromLastCommitted, + ], ], - ], - }); + undefined, + undefined, + { + isDragging: true, + }, + ); + } else { + // update last uncommitted point + mutateElement(multiElement, { + points: [ + ...points.slice(0, -1), + [ + lastCommittedX + dxFromLastCommitted, + lastCommittedY + dyFromLastCommitted, + ], + ], + }); + } } return; @@ -5369,8 +5433,9 @@ class App extends React.Component { } if ( - !this.state.selectedLinearElement || - this.state.selectedLinearElement.hoverPointIndex === -1 + (!this.state.selectedLinearElement || + this.state.selectedLinearElement.hoverPointIndex === -1) && + !(selectedElements.length === 1 && isElbowArrow(selectedElements[0])) ) { const elementWithTransformHandleType = getElementWithTransformHandleType( @@ -5658,7 +5723,12 @@ class App extends React.Component { setCursor(this.interactiveCanvas, CURSOR_TYPE.MOVE); } } else if (this.hitElement(scenePointerX, scenePointerY, element)) { - setCursor(this.interactiveCanvas, CURSOR_TYPE.MOVE); + if ( + !isElbowArrow(element) || + !(element.startBinding || element.endBinding) + ) { + setCursor(this.interactiveCanvas, CURSOR_TYPE.MOVE); + } } if ( @@ -6232,6 +6302,7 @@ class App extends React.Component { const origin = viewportCoordsToSceneCoords(event, this.state); const selectedElements = this.scene.getSelectedElements(this.state); const [minX, minY, maxX, maxY] = getCommonBounds(selectedElements); + const isElbowArrowOnly = selectedElements.findIndex(isElbowArrow) === 0; return { origin, @@ -6240,7 +6311,9 @@ class App extends React.Component { getGridPoint( origin.x, origin.y, - event[KEYS.CTRL_OR_CMD] ? null : this.state.gridSize, + event[KEYS.CTRL_OR_CMD] || isElbowArrowOnly + ? null + : this.state.gridSize, ), ), scrollbars: isOverScrollBars( @@ -6421,7 +6494,7 @@ class App extends React.Component { this.store, pointerDownState.origin, linearElementEditor, - this, + this.scene, ); if (ret.hitElement) { pointerDownState.hit.element = ret.hitElement; @@ -6753,6 +6826,7 @@ class App extends React.Component { const boundElement = getHoveredElementForBinding( pointerDownState.origin, + this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), ); this.scene.insertElement(element); @@ -6923,6 +6997,17 @@ class App extends React.Component { return; } + // Elbow arrows cannot be created by putting down points + // only the start and end points can be defined + if (isElbowArrow(multiElement) && multiElement.points.length > 1) { + mutateElement(multiElement, { + lastCommittedPoint: + multiElement.points[multiElement.points.length - 1], + }); + this.actionManager.executeAction(actionFinalize); + return; + } + const { x: rx, y: ry, lastCommittedPoint } = multiElement; // clicking inside commit zone → finalize arrow @@ -6978,26 +7063,50 @@ class App extends React.Component { ? [currentItemStartArrowhead, currentItemEndArrowhead] : [null, null]; - const element = newLinearElement({ - type: elementType, - x: gridX, - y: gridY, - strokeColor: this.state.currentItemStrokeColor, - backgroundColor: this.state.currentItemBackgroundColor, - fillStyle: this.state.currentItemFillStyle, - strokeWidth: this.state.currentItemStrokeWidth, - strokeStyle: this.state.currentItemStrokeStyle, - roughness: this.state.currentItemRoughness, - opacity: this.state.currentItemOpacity, - roundness: - this.state.currentItemRoundness === "round" - ? { type: ROUNDNESS.PROPORTIONAL_RADIUS } - : null, - startArrowhead, - endArrowhead, - locked: false, - frameId: topLayerFrame ? topLayerFrame.id : null, - }); + const element = + elementType === "arrow" + ? newArrowElement({ + type: elementType, + x: gridX, + y: gridY, + strokeColor: this.state.currentItemStrokeColor, + backgroundColor: this.state.currentItemBackgroundColor, + fillStyle: this.state.currentItemFillStyle, + strokeWidth: this.state.currentItemStrokeWidth, + strokeStyle: this.state.currentItemStrokeStyle, + roughness: this.state.currentItemRoughness, + opacity: this.state.currentItemOpacity, + roundness: + this.state.currentItemArrowType === ARROW_TYPE.round + ? { type: ROUNDNESS.PROPORTIONAL_RADIUS } + : // note, roundness doesn't have any effect for elbow arrows, + // but it's best to set it to null as well + null, + startArrowhead, + endArrowhead, + locked: false, + frameId: topLayerFrame ? topLayerFrame.id : null, + elbowed: this.state.currentItemArrowType === ARROW_TYPE.elbow, + }) + : newLinearElement({ + type: elementType, + x: gridX, + y: gridY, + strokeColor: this.state.currentItemStrokeColor, + backgroundColor: this.state.currentItemBackgroundColor, + fillStyle: this.state.currentItemFillStyle, + strokeWidth: this.state.currentItemStrokeWidth, + strokeStyle: this.state.currentItemStrokeStyle, + roughness: this.state.currentItemRoughness, + opacity: this.state.currentItemOpacity, + roundness: + this.state.currentItemRoundness === "round" + ? { type: ROUNDNESS.PROPORTIONAL_RADIUS } + : null, + locked: false, + frameId: topLayerFrame ? topLayerFrame.id : null, + }); + this.setState((prevState) => { const nextSelectedElementIds = { ...prevState.selectedElementIds, @@ -7015,7 +7124,9 @@ class App extends React.Component { }); const boundElement = getHoveredElementForBinding( pointerDownState.origin, + this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), + isElbowArrow(element), ); this.scene.insertElement(element); @@ -7352,7 +7463,7 @@ class App extends React.Component { ); }, linearElementEditor, - this.scene.getNonDeletedElementsMap(), + this.scene, ); if (didDrag) { pointerDownState.lastCoords.x = pointerCoords.x; @@ -7476,18 +7587,24 @@ class App extends React.Component { pointerDownState, selectedElements, dragOffset, - this.state, this.scene, snapOffset, event[KEYS.CTRL_OR_CMD] ? null : this.state.gridSize, ); - this.setState({ - suggestedBindings: getSuggestedBindingsForArrows( - selectedElements, - this.scene.getNonDeletedElementsMap(), - ), - }); + if ( + selectedElements.length !== 1 || + !isElbowArrow(selectedElements[0]) + ) { + this.setState({ + suggestedBindings: getSuggestedBindingsForArrows( + selectedElements, + this.scene.getNonDeletedElementsMap(), + ), + }); + } + + //} // We duplicate the selected element if alt is pressed on pointer move if (event.altKey && !pointerDownState.hit.hasBeenDuplicated) { @@ -7627,6 +7744,17 @@ class App extends React.Component { mutateElement(draggingElement, { points: [...points, [dx, dy]], }); + } else if (points.length > 1 && isElbowArrow(draggingElement)) { + mutateElbowArrow( + draggingElement, + this.scene, + [...points.slice(0, -1), [dx, dy]], + [0, 0], + undefined, + { + isDragging: true, + }, + ); } else if (points.length === 2) { mutateElement(draggingElement, { points: [...points.slice(0, -1), [dx, dy]], @@ -7832,7 +7960,7 @@ class App extends React.Component { childEvent, this.state.editingLinearElement, this.state, - this, + this.scene, ); if (editingLinearElement !== this.state.editingLinearElement) { this.setState({ @@ -7856,7 +7984,7 @@ class App extends React.Component { childEvent, this.state.selectedLinearElement, this.state, - this, + this.scene, ); const { startBindingElement, endBindingElement } = @@ -7868,6 +7996,7 @@ class App extends React.Component { startBindingElement, endBindingElement, elementsMap, + this.scene, ); } @@ -8007,6 +8136,7 @@ class App extends React.Component { this.state, pointerCoords, this.scene.getNonDeletedElementsMap(), + this.scene.getNonDeletedElements(), ); } this.setState({ suggestedBindings: [], startBoundElement: null }); @@ -8568,6 +8698,8 @@ class App extends React.Component { bindOrUnbindLinearElements( linearElements, this.scene.getNonDeletedElementsMap(), + this.scene.getNonDeletedElements(), + this.scene, isBindingEnabled(this.state), this.state.selectedLinearElement?.selectedPointsIndices ?? [], ); @@ -9055,6 +9187,7 @@ class App extends React.Component { }): void => { const hoveredBindableElement = getHoveredElementForBinding( pointerCoords, + this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), ); this.setState({ @@ -9082,7 +9215,9 @@ class App extends React.Component { (acc: NonDeleted[], coords) => { const hoveredBindableElement = getHoveredElementForBinding( coords, + this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), + isArrowElement(linearElement) && isElbowArrow(linearElement), ); if ( hoveredBindableElement != null && @@ -9610,6 +9745,7 @@ class App extends React.Component { resizeY, pointerDownState.resize.center.x, pointerDownState.resize.center.y, + this.scene, ) ) { const suggestedBindings = getSuggestedBindingsForArrows( @@ -9926,6 +10062,7 @@ class App extends React.Component { declare global { interface Window { h: { + scene: Scene; elements: readonly ExcalidrawElement[]; state: AppState; setState: React.Component["setState"]; @@ -9952,6 +10089,12 @@ export const createTestHook = () => { ); }, }, + scene: { + configurable: true, + get() { + return this.app?.scene; + }, + }, }); } }; diff --git a/packages/excalidraw/components/HintViewer.tsx b/packages/excalidraw/components/HintViewer.tsx index 160fcc180..b52393f6f 100644 --- a/packages/excalidraw/components/HintViewer.tsx +++ b/packages/excalidraw/components/HintViewer.tsx @@ -30,10 +30,13 @@ const getHints = ({ appState, isMobile, device, app }: HintViewerProps) => { return t("hints.eraserRevert"); } if (activeTool.type === "arrow" || activeTool.type === "line") { - if (!multiMode) { - return t("hints.linearElement"); + if (multiMode) { + return t("hints.linearElementMulti"); } - return t("hints.linearElementMulti"); + if (activeTool.type === "arrow") { + return t("hints.arrowTool", { arrowShortcut: getShortcutKey("A") }); + } + return t("hints.linearElement"); } if (activeTool.type === "freedraw") { diff --git a/packages/excalidraw/components/Stats/Angle.tsx b/packages/excalidraw/components/Stats/Angle.tsx index 6727a3956..e83c2f02d 100644 --- a/packages/excalidraw/components/Stats/Angle.tsx +++ b/packages/excalidraw/components/Stats/Angle.tsx @@ -1,6 +1,6 @@ import { mutateElement } from "../../element/mutateElement"; import { getBoundTextElement } from "../../element/textElement"; -import { isArrowElement } from "../../element/typeChecks"; +import { isArrowElement, isElbowArrow } from "../../element/typeChecks"; import type { ExcalidrawElement } from "../../element/types"; import { degreeToRadian, radianToDegree } from "../../math"; import { angleIcon } from "../icons"; @@ -27,8 +27,9 @@ const handleDegreeChange: DragInputCallbackType = ({ scene, }) => { const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); const origElement = originalElements[0]; - if (origElement) { + if (origElement && !isElbowArrow(origElement)) { const latestElement = elementsMap.get(origElement.id); if (!latestElement) { return; @@ -39,7 +40,7 @@ const handleDegreeChange: DragInputCallbackType = ({ mutateElement(latestElement, { angle: nextAngle, }); - updateBindings(latestElement, elementsMap); + updateBindings(latestElement, elementsMap, elements, scene); const boundTextElement = getBoundTextElement(latestElement, elementsMap); if (boundTextElement && !isArrowElement(latestElement)) { @@ -65,7 +66,7 @@ const handleDegreeChange: DragInputCallbackType = ({ mutateElement(latestElement, { angle: nextAngle, }); - updateBindings(latestElement, elementsMap); + updateBindings(latestElement, elementsMap, elements, scene); const boundTextElement = getBoundTextElement(latestElement, elementsMap); if (boundTextElement && !isArrowElement(latestElement)) { diff --git a/packages/excalidraw/components/Stats/Dimension.tsx b/packages/excalidraw/components/Stats/Dimension.tsx index 4c3d97bc2..a68181f91 100644 --- a/packages/excalidraw/components/Stats/Dimension.tsx +++ b/packages/excalidraw/components/Stats/Dimension.tsx @@ -31,6 +31,7 @@ const handleDimensionChange: DragInputCallbackType< scene, }) => { const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); const origElement = originalElements[0]; if (origElement) { const keepAspectRatio = @@ -61,6 +62,8 @@ const handleDimensionChange: DragInputCallbackType< keepAspectRatio, origElement, elementsMap, + elements, + scene, ); return; @@ -103,6 +106,8 @@ const handleDimensionChange: DragInputCallbackType< keepAspectRatio, origElement, elementsMap, + elements, + scene, ); } }; diff --git a/packages/excalidraw/components/Stats/DragInput.tsx b/packages/excalidraw/components/Stats/DragInput.tsx index 463aaa281..97dc57c24 100644 --- a/packages/excalidraw/components/Stats/DragInput.tsx +++ b/packages/excalidraw/components/Stats/DragInput.tsx @@ -25,9 +25,9 @@ export type DragInputCallbackType< originalElementsMap: ElementsMap; shouldKeepAspectRatio: boolean; shouldChangeByStepSize: boolean; + scene: Scene; nextValue?: number; property: P; - scene: Scene; originalAppState: AppState; }) => void; @@ -122,9 +122,9 @@ const StatsDragInput = < originalElementsMap: app.scene.getNonDeletedElementsMap(), shouldKeepAspectRatio: shouldKeepAspectRatio!!, shouldChangeByStepSize: false, + scene, nextValue: rounded, property, - scene, originalAppState: appState, }); app.syncActionResult({ storeAction: StoreAction.CAPTURE }); diff --git a/packages/excalidraw/components/Stats/MultiDimension.tsx b/packages/excalidraw/components/Stats/MultiDimension.tsx index 89b746a5f..2d7b48308 100644 --- a/packages/excalidraw/components/Stats/MultiDimension.tsx +++ b/packages/excalidraw/components/Stats/MultiDimension.tsx @@ -66,8 +66,10 @@ const resizeElementInGroup = ( origElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, originalElementsMap: ElementsMap, + scene: Scene, ) => { const updates = getResizedUpdates(anchorX, anchorY, scale, origElement); + const { width: oldWidth, height: oldHeight } = latestElement; mutateElement(latestElement, updates, false); const boundTextElement = getBoundTextElement( @@ -76,8 +78,8 @@ const resizeElementInGroup = ( ); if (boundTextElement) { const newFontSize = boundTextElement.fontSize * scale; - updateBoundElements(latestElement, elementsMap, { - newSize: { width: updates.width, height: updates.height }, + updateBoundElements(latestElement, elementsMap, scene, { + oldSize: { width: oldWidth, height: oldHeight }, }); const latestBoundTextElement = elementsMap.get(boundTextElement.id); if (latestBoundTextElement && isTextElement(latestBoundTextElement)) { @@ -109,6 +111,7 @@ const resizeGroup = ( originalElements: ExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap, originalElementsMap: ElementsMap, + scene: Scene, ) => { // keep aspect ratio for groups if (property === "width") { @@ -132,6 +135,7 @@ const resizeGroup = ( origElement, elementsMap, originalElementsMap, + scene, ); } }; @@ -149,6 +153,7 @@ const handleDimensionChange: DragInputCallbackType< property, }) => { const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); const atomicUnits = getAtomicUnits(originalElements, originalAppState); if (nextValue !== undefined) { for (const atomicUnit of atomicUnits) { @@ -185,6 +190,7 @@ const handleDimensionChange: DragInputCallbackType< originalElements, elementsMap, originalElementsMap, + scene, ); } else { const [el] = elementsInUnit; @@ -227,6 +233,8 @@ const handleDimensionChange: DragInputCallbackType< false, origElement, elementsMap, + elements, + scene, false, ); } @@ -288,6 +296,7 @@ const handleDimensionChange: DragInputCallbackType< originalElements, elementsMap, originalElementsMap, + scene, ); } else { const [el] = elementsInUnit; @@ -320,7 +329,15 @@ const handleDimensionChange: DragInputCallbackType< nextWidth = Math.max(MIN_WIDTH_OR_HEIGHT, nextWidth); nextHeight = Math.max(MIN_WIDTH_OR_HEIGHT, nextHeight); - resizeElement(nextWidth, nextHeight, false, origElement, elementsMap); + resizeElement( + nextWidth, + nextHeight, + false, + origElement, + elementsMap, + elements, + scene, + ); } } } diff --git a/packages/excalidraw/components/Stats/MultiPosition.tsx b/packages/excalidraw/components/Stats/MultiPosition.tsx index e20390848..652a6b82f 100644 --- a/packages/excalidraw/components/Stats/MultiPosition.tsx +++ b/packages/excalidraw/components/Stats/MultiPosition.tsx @@ -1,6 +1,7 @@ import type { ElementsMap, ExcalidrawElement, + NonDeletedExcalidrawElement, NonDeletedSceneElementsMap, } from "../../element/types"; import { rotate } from "../../math"; @@ -33,6 +34,7 @@ const moveElements = ( originalElements: readonly ExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap, originalElementsMap: ElementsMap, + scene: Scene, ) => { for (let i = 0; i < elements.length; i++) { const origElement = originalElements[i]; @@ -60,6 +62,8 @@ const moveElements = ( newTopLeftY, origElement, elementsMap, + elements, + scene, originalElementsMap, false, ); @@ -71,6 +75,7 @@ const moveGroupTo = ( nextY: number, originalElements: ExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], originalElementsMap: ElementsMap, scene: Scene, ) => { @@ -106,6 +111,8 @@ const moveGroupTo = ( topLeftY + offsetY, origElement, elementsMap, + elements, + scene, originalElementsMap, false, ); @@ -126,6 +133,7 @@ const handlePositionChange: DragInputCallbackType< originalAppState, }) => { const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); if (nextValue !== undefined) { for (const atomicUnit of getAtomicUnits( @@ -150,6 +158,7 @@ const handlePositionChange: DragInputCallbackType< newTopLeftY, elementsInUnit.map((el) => el.original), elementsMap, + elements, originalElementsMap, scene, ); @@ -180,6 +189,8 @@ const handlePositionChange: DragInputCallbackType< newTopLeftY, origElement, elementsMap, + elements, + scene, originalElementsMap, false, ); @@ -206,6 +217,7 @@ const handlePositionChange: DragInputCallbackType< originalElements, elementsMap, originalElementsMap, + scene, ); scene.triggerUpdate(); diff --git a/packages/excalidraw/components/Stats/Position.tsx b/packages/excalidraw/components/Stats/Position.tsx index b3fcc8530..511aa9c24 100644 --- a/packages/excalidraw/components/Stats/Position.tsx +++ b/packages/excalidraw/components/Stats/Position.tsx @@ -26,6 +26,7 @@ const handlePositionChange: DragInputCallbackType<"x" | "y"> = ({ scene, }) => { const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); const origElement = originalElements[0]; const [cx, cy] = [ origElement.x + origElement.width / 2, @@ -47,6 +48,8 @@ const handlePositionChange: DragInputCallbackType<"x" | "y"> = ({ newTopLeftY, origElement, elementsMap, + elements, + scene, originalElementsMap, ); return; @@ -78,6 +81,8 @@ const handlePositionChange: DragInputCallbackType<"x" | "y"> = ({ newTopLeftY, origElement, elementsMap, + elements, + scene, originalElementsMap, ); }; @@ -104,9 +109,9 @@ const Position = ({ label={property === "x" ? "X" : "Y"} elements={[element]} dragInputCallback={handlePositionChange} + scene={scene} value={value} property={property} - scene={scene} appState={appState} /> ); diff --git a/packages/excalidraw/components/Stats/index.tsx b/packages/excalidraw/components/Stats/index.tsx index f2d8a5311..5dc1f257e 100644 --- a/packages/excalidraw/components/Stats/index.tsx +++ b/packages/excalidraw/components/Stats/index.tsx @@ -21,6 +21,7 @@ import type Scene from "../../scene/Scene"; import { useExcalidrawAppState, useExcalidrawSetAppState } from "../App"; import { getAtomicUnits } from "./utils"; import { STATS_PANELS } from "../../constants"; +import { isElbowArrow } from "../../element/typeChecks"; interface StatsProps { scene: Scene; @@ -209,12 +210,14 @@ export const StatsInner = memo( scene={scene} appState={appState} /> - + {!isElbowArrow(singleElement) && ( + + )} { const latestElement = elementsMap.get(origElement.id); @@ -146,6 +149,8 @@ export const resizeElement = ( nextHeight = Math.max(nextHeight, minHeight); } + const { width: oldWidth, height: oldHeight } = latestElement; + mutateElement( latestElement, { @@ -164,7 +169,7 @@ export const resizeElement = ( }, shouldInformMutation, ); - updateBindings(latestElement, elementsMap, { + updateBindings(latestElement, elementsMap, elements, scene, { newSize: { width: nextWidth, height: nextHeight, @@ -193,6 +198,10 @@ export const resizeElement = ( } } + updateBoundElements(latestElement, elementsMap, scene, { + oldSize: { width: oldWidth, height: oldHeight }, + }); + if (boundTextElement && boundTextFont) { mutateElement(boundTextElement, { fontSize: boundTextFont.fontSize, @@ -206,6 +215,8 @@ export const moveElement = ( newTopLeftY: number, originalElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], + scene: Scene, originalElementsMap: ElementsMap, shouldInformMutation = true, ) => { @@ -244,7 +255,7 @@ export const moveElement = ( }, shouldInformMutation, ); - updateBindings(latestElement, elementsMap); + updateBindings(latestElement, elementsMap, elements, scene); const boundTextElement = getBoundTextElement( originalElement, @@ -288,14 +299,23 @@ export const getAtomicUnits = ( export const updateBindings = ( latestElement: ExcalidrawElement, elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], + scene: Scene, options?: { simultaneouslyUpdated?: readonly ExcalidrawElement[]; newSize?: { width: number; height: number }; }, ) => { if (isLinearElement(latestElement)) { - bindOrUnbindLinearElements([latestElement], elementsMap, true, []); + bindOrUnbindLinearElements( + [latestElement], + elementsMap, + elements, + scene, + true, + [], + ); } else { - updateBoundElements(latestElement, elementsMap, options); + updateBoundElements(latestElement, elementsMap, scene, options); } }; diff --git a/packages/excalidraw/components/icons.tsx b/packages/excalidraw/components/icons.tsx index 0cc0d3d5f..f4a3a94c2 100644 --- a/packages/excalidraw/components/icons.tsx +++ b/packages/excalidraw/components/icons.tsx @@ -2095,6 +2095,35 @@ export const lineEditorIcon = createIcon( tablerIconProps, ); +// arrow-up-right (modified) +export const sharpArrowIcon = createIcon( + + + + + , + tablerIconProps, +); + +// arrow-guide (modified) +export const elbowArrowIcon = createIcon( + + + + + , + tablerIconProps, +); + +// arrow-ramp-right-2 (heavily modified) +export const roundArrowIcon = createIcon( + + + + , + tablerIconProps, +); + export const collapseDownIcon = createIcon( diff --git a/packages/excalidraw/constants.ts b/packages/excalidraw/constants.ts index ce754e263..d73ed0fba 100644 --- a/packages/excalidraw/constants.ts +++ b/packages/excalidraw/constants.ts @@ -1,5 +1,5 @@ import cssVariables from "./css/variables.module.scss"; -import type { AppProps } from "./types"; +import type { AppProps, AppState } from "./types"; import type { ExcalidrawElement, FontFamilyValues } from "./element/types"; import { COLOR_PALETTE } from "./colors"; export const isDarwin = /Mac|iPod|iPhone|iPad/.test(navigator.platform); @@ -421,3 +421,9 @@ export const DEFAULT_FILENAME = "Untitled"; export const STATS_PANELS = { generalStats: 1, elementProperties: 2 } as const; export const MIN_WIDTH_OR_HEIGHT = 1; + +export const ARROW_TYPE: { [T in AppState["currentItemArrowType"]]: T } = { + sharp: "sharp", + round: "round", + elbow: "elbow", +}; diff --git a/packages/excalidraw/data/__snapshots__/transform.test.ts.snap b/packages/excalidraw/data/__snapshots__/transform.test.ts.snap index 29cb4c378..921118eb1 100644 --- a/packages/excalidraw/data/__snapshots__/transform.test.ts.snap +++ b/packages/excalidraw/data/__snapshots__/transform.test.ts.snap @@ -84,9 +84,11 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to existing s "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "ellipse-1", + "fixedPoint": null, "focus": -0.008153707962747813, "gap": 1, }, @@ -117,6 +119,7 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to existing s "startArrowhead": null, "startBinding": { "elementId": "id47", + "fixedPoint": null, "focus": -0.08139534883720931, "gap": 1, }, @@ -139,9 +142,11 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to existing s "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "ellipse-1", + "fixedPoint": null, "focus": 0.10666666666666667, "gap": 3.834326468444573, }, @@ -172,6 +177,7 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to existing s "startArrowhead": null, "startBinding": { "elementId": "diamond-1", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -328,9 +334,11 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to existing t }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "text-2", + "fixedPoint": null, "focus": 0, "gap": 205, }, @@ -361,6 +369,7 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to existing t "startArrowhead": null, "startBinding": { "elementId": "text-1", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -429,9 +438,11 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to shapes whe }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id40", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -462,6 +473,7 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to shapes whe "startArrowhead": null, "startBinding": { "elementId": "id39", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -604,9 +616,11 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to text when }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id44", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -637,6 +651,7 @@ exports[`Test Transform > Test arrow bindings > should bind arrows to text when "startArrowhead": null, "startBinding": { "elementId": "id43", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -824,6 +839,7 @@ exports[`Test Transform > should transform linear elements 1`] = ` "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -871,6 +887,7 @@ exports[`Test Transform > should transform linear elements 2`] = ` "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "triangle", "endBinding": null, "fillStyle": "solid", @@ -1463,9 +1480,11 @@ exports[`Test Transform > should transform the elements correctly when linear el }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "Alice", + "fixedPoint": null, "focus": 0, "gap": 5.299874999999986, }, @@ -1498,6 +1517,7 @@ exports[`Test Transform > should transform the elements correctly when linear el "startArrowhead": null, "startBinding": { "elementId": "Bob", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -1525,9 +1545,11 @@ exports[`Test Transform > should transform the elements correctly when linear el }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "B", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -1556,6 +1578,7 @@ exports[`Test Transform > should transform the elements correctly when linear el "startArrowhead": null, "startBinding": { "elementId": "Bob", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -1837,6 +1860,7 @@ exports[`Test Transform > should transform to labelled arrows when label provide }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -1889,6 +1913,7 @@ exports[`Test Transform > should transform to labelled arrows when label provide }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -1941,6 +1966,7 @@ exports[`Test Transform > should transform to labelled arrows when label provide }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -1993,6 +2019,7 @@ exports[`Test Transform > should transform to labelled arrows when label provide }, ], "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", diff --git a/packages/excalidraw/data/restore.ts b/packages/excalidraw/data/restore.ts index c256e4e02..0e1e82cce 100644 --- a/packages/excalidraw/data/restore.ts +++ b/packages/excalidraw/data/restore.ts @@ -1,4 +1,5 @@ import type { + ExcalidrawArrowElement, ExcalidrawElement, ExcalidrawElementType, ExcalidrawLinearElement, @@ -24,6 +25,7 @@ import { } from "../element"; import { isArrowElement, + isElbowArrow, isLinearElement, isTextElement, isUsingAdaptiveRadius, @@ -92,11 +94,21 @@ const getFontFamilyByName = (fontFamilyName: string): FontFamilyValues => { return DEFAULT_FONT_FAMILY; }; -const repairBinding = (binding: PointBinding | null) => { +const repairBinding = ( + element: ExcalidrawLinearElement, + binding: PointBinding | null, +): PointBinding | null => { if (!binding) { return null; } - return { ...binding, focus: binding.focus || 0 }; + + return { + ...binding, + focus: binding.focus || 0, + fixedPoint: isElbowArrow(element) + ? binding.fixedPoint ?? ([0, 0] as [number, number]) + : null, + }; }; const restoreElementWithProperties = < @@ -242,11 +254,7 @@ const restoreElement = ( // @ts-ignore LEGACY type // eslint-disable-next-line no-fallthrough case "draw": - case "arrow": { - const { - startArrowhead = null, - endArrowhead = element.type === "arrow" ? "arrow" : null, - } = element; + const { startArrowhead = null, endArrowhead = null } = element; let x = element.x; let y = element.y; let points = // migrate old arrow model to new one @@ -266,8 +274,8 @@ const restoreElement = ( (element.type as ExcalidrawElementType | "draw") === "draw" ? "line" : element.type, - startBinding: repairBinding(element.startBinding), - endBinding: repairBinding(element.endBinding), + startBinding: repairBinding(element, element.startBinding), + endBinding: repairBinding(element, element.endBinding), lastCommittedPoint: null, startArrowhead, endArrowhead, @@ -276,6 +284,36 @@ const restoreElement = ( y, ...getSizeFromPoints(points), }); + case "arrow": { + const { startArrowhead = null, endArrowhead = "arrow" } = element; + let x = element.x; + let y = element.y; + let points = // migrate old arrow model to new one + !Array.isArray(element.points) || element.points.length < 2 + ? [ + [0, 0], + [element.width, element.height], + ] + : element.points; + + if (points[0][0] !== 0 || points[0][1] !== 0) { + ({ points, x, y } = LinearElementEditor.getNormalizedPoints(element)); + } + + // TODO: Separate arrow from linear element + return restoreElementWithProperties(element as ExcalidrawArrowElement, { + type: element.type, + startBinding: repairBinding(element, element.startBinding), + endBinding: repairBinding(element, element.endBinding), + lastCommittedPoint: null, + startArrowhead, + endArrowhead, + points, + x, + y, + elbowed: (element as ExcalidrawArrowElement).elbowed, + ...getSizeFromPoints(points), + }); } // generic elements diff --git a/packages/excalidraw/data/transform.test.ts b/packages/excalidraw/data/transform.test.ts index c7b03ca8a..bdb37bc96 100644 --- a/packages/excalidraw/data/transform.test.ts +++ b/packages/excalidraw/data/transform.test.ts @@ -771,6 +771,7 @@ describe("Test Transform", () => { const [arrow, rect] = excalidrawElements; expect((arrow as ExcalidrawArrowElement).endBinding).toStrictEqual({ elementId: "rect-1", + fixedPoint: null, focus: 0, gap: 205, }); diff --git a/packages/excalidraw/data/transform.ts b/packages/excalidraw/data/transform.ts index 73f00d63a..cbddafb70 100644 --- a/packages/excalidraw/data/transform.ts +++ b/packages/excalidraw/data/transform.ts @@ -13,6 +13,7 @@ import { import { bindLinearElement } from "../element/binding"; import type { ElementConstructorOpts } from "../element/newElement"; import { + newArrowElement, newFrameElement, newImageElement, newMagicFrameElement, @@ -51,6 +52,7 @@ import { getSizeFromPoints } from "../points"; import { randomId } from "../random"; import { syncInvalidIndices } from "../fractionalIndex"; import { getLineHeight } from "../fonts"; +import { isArrowElement } from "../element/typeChecks"; export type ValidLinearElement = { type: "arrow" | "line"; @@ -545,7 +547,7 @@ export const convertToExcalidrawElements = ( case "arrow": { const width = element.width || DEFAULT_LINEAR_ELEMENT_PROPS.width; const height = element.height || DEFAULT_LINEAR_ELEMENT_PROPS.height; - excalidrawElement = newLinearElement({ + excalidrawElement = newArrowElement({ width, height, endArrowhead: "arrow", @@ -554,6 +556,7 @@ export const convertToExcalidrawElements = ( [width, height], ], ...element, + type: "arrow", }); Object.assign( @@ -655,7 +658,7 @@ export const convertToExcalidrawElements = ( elementStore.add(container); elementStore.add(text); - if (container.type === "arrow") { + if (isArrowElement(container)) { const originalStart = element.type === "arrow" ? element?.start : undefined; const originalEnd = @@ -674,7 +677,7 @@ export const convertToExcalidrawElements = ( } const { linearElement, startBoundElement, endBoundElement } = bindLinearElementToElement( - container as ExcalidrawArrowElement, + container, originalStart, originalEnd, elementStore, diff --git a/packages/excalidraw/element/binding.ts b/packages/excalidraw/element/binding.ts index 1bec39239..f3b60c89c 100644 --- a/packages/excalidraw/element/binding.ts +++ b/packages/excalidraw/element/binding.ts @@ -22,8 +22,12 @@ import type { NonDeletedSceneElementsMap, ExcalidrawTextElement, ExcalidrawArrowElement, + OrderedExcalidrawElement, + ExcalidrawElbowArrowElement, + FixedPoint, } from "./types"; +import type { Bounds } from "./bounds"; import { getElementAbsoluteCoords } from "./bounds"; import type { AppState, Point } from "../types"; import { isPointOnShape } from "../../utils/collision"; @@ -33,17 +37,38 @@ import { isBindableElement, isBindingElement, isBoundToContainer, + isElbowArrow, isLinearElement, isTextElement, } from "./typeChecks"; import type { ElementUpdate } from "./mutateElement"; import { mutateElement } from "./mutateElement"; -import Scene from "../scene/Scene"; +import type Scene from "../scene/Scene"; import { LinearElementEditor } from "./linearElementEditor"; import { arrayToMap, tupleToCoors } from "../utils"; import { KEYS } from "../keys"; import { getBoundTextElement, handleBindTextResize } from "./textElement"; import { getElementShape } from "../shapes"; +import { + aabbForElement, + clamp, + distanceSq2d, + getCenterForBounds, + getCenterForElement, + pointInsideBounds, + pointToVector, + rotatePoint, +} from "../math"; +import { + compareHeading, + HEADING_DOWN, + HEADING_LEFT, + HEADING_RIGHT, + HEADING_UP, + headingForPointFromElement, + vectorToHeading, + type Heading, +} from "./heading"; export type SuggestedBinding = | NonDeleted @@ -65,6 +90,8 @@ export const isBindingEnabled = (appState: AppState): boolean => { return appState.isBindingEnabled; }; +export const FIXED_BINDING_DISTANCE = 5; + const getNonDeletedElements = ( scene: Scene, ids: readonly ExcalidrawElement["id"][], @@ -84,6 +111,7 @@ export const bindOrUnbindLinearElement = ( startBindingElement: ExcalidrawBindableElement | null | "keep", endBindingElement: ExcalidrawBindableElement | null | "keep", elementsMap: NonDeletedSceneElementsMap, + scene: Scene, ): void => { const boundToElementIds: Set = new Set(); const unboundFromElementIds: Set = new Set(); @@ -95,6 +123,7 @@ export const bindOrUnbindLinearElement = ( boundToElementIds, unboundFromElementIds, elementsMap, + scene, ); bindOrUnbindLinearElementEdge( linearElement, @@ -104,22 +133,21 @@ export const bindOrUnbindLinearElement = ( boundToElementIds, unboundFromElementIds, elementsMap, + scene, ); const onlyUnbound = Array.from(unboundFromElementIds).filter( (id) => !boundToElementIds.has(id), ); - getNonDeletedElements(Scene.getScene(linearElement)!, onlyUnbound).forEach( - (element) => { - mutateElement(element, { - boundElements: element.boundElements?.filter( - (element) => - element.type !== "arrow" || element.id !== linearElement.id, - ), - }); - }, - ); + getNonDeletedElements(scene, onlyUnbound).forEach((element) => { + mutateElement(element, { + boundElements: element.boundElements?.filter( + (element) => + element.type !== "arrow" || element.id !== linearElement.id, + ), + }); + }); }; const bindOrUnbindLinearElementEdge = ( @@ -132,6 +160,7 @@ const bindOrUnbindLinearElementEdge = ( // Is mutated unboundFromElementIds: Set, elementsMap: NonDeletedSceneElementsMap, + scene: Scene, ): void => { // "keep" is for method chaining convenience, a "no-op", so just bail out if (bindableElement === "keep") { @@ -217,6 +246,7 @@ const getBindingStrategyForDraggingArrowEndpoints = ( isBindingEnabled: boolean, draggingPoints: readonly number[], elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], ): (NonDeleted | null | "keep")[] => { const startIdx = 0; const endIdx = selectedElement.points.length - 1; @@ -228,6 +258,7 @@ const getBindingStrategyForDraggingArrowEndpoints = ( selectedElement, "start", elementsMap, + elements, ) : null // If binding is disabled and start is dragged, break all binds : // We have to update the focus and gap of the binding, so let's rebind @@ -235,6 +266,7 @@ const getBindingStrategyForDraggingArrowEndpoints = ( selectedElement, "start", elementsMap, + elements, ); const end = endDragged ? isBindingEnabled @@ -242,10 +274,16 @@ const getBindingStrategyForDraggingArrowEndpoints = ( selectedElement, "end", elementsMap, + elements, ) : null // If binding is disabled and end is dragged, break all binds : // We have to update the focus and gap of the binding, so let's rebind - getElligibleElementForBindingElement(selectedElement, "end", elementsMap); + getElligibleElementForBindingElement( + selectedElement, + "end", + elementsMap, + elements, + ); return [start, end]; }; @@ -253,6 +291,7 @@ const getBindingStrategyForDraggingArrowEndpoints = ( const getBindingStrategyForDraggingArrowOrJoints = ( selectedElement: NonDeleted, elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], isBindingEnabled: boolean, ): (NonDeleted | null | "keep")[] => { const [startIsClose, endIsClose] = getOriginalBindingsIfStillCloseToArrowEnds( @@ -265,6 +304,7 @@ const getBindingStrategyForDraggingArrowOrJoints = ( selectedElement, "start", elementsMap, + elements, ) : null : null; @@ -274,6 +314,7 @@ const getBindingStrategyForDraggingArrowOrJoints = ( selectedElement, "end", elementsMap, + elements, ) : null : null; @@ -284,6 +325,8 @@ const getBindingStrategyForDraggingArrowOrJoints = ( export const bindOrUnbindLinearElements = ( selectedElements: NonDeleted[], elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], + scene: Scene, isBindingEnabled: boolean, draggingPoints: readonly number[] | null, ): void => { @@ -295,15 +338,17 @@ export const bindOrUnbindLinearElements = ( isBindingEnabled, draggingPoints ?? [], elementsMap, + elements, ) : // The arrow itself (the shaft) or the inner joins are dragged getBindingStrategyForDraggingArrowOrJoints( selectedElement, elementsMap, + elements, isBindingEnabled, ); - bindOrUnbindLinearElement(selectedElement, start, end, elementsMap); + bindOrUnbindLinearElement(selectedElement, start, end, elementsMap, scene); }); }; @@ -343,6 +388,7 @@ export const maybeBindLinearElement = ( appState: AppState, pointerCoords: { x: number; y: number }, elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], ): void => { if (appState.startBoundElement != null) { bindLinearElement( @@ -352,19 +398,24 @@ export const maybeBindLinearElement = ( elementsMap, ); } + const hoveredElement = getHoveredElementForBinding( pointerCoords, + elements, elementsMap, + isElbowArrow(linearElement) && isElbowArrow(linearElement), ); - if ( - hoveredElement != null && - !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge( - linearElement, - hoveredElement, - "end", - ) - ) { - bindLinearElement(linearElement, hoveredElement, "end", elementsMap); + + if (hoveredElement !== null) { + if ( + !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge( + linearElement, + hoveredElement, + "end", + ) + ) { + bindLinearElement(linearElement, hoveredElement, "end", elementsMap); + } } }; @@ -377,16 +428,26 @@ export const bindLinearElement = ( if (!isArrowElement(linearElement)) { return; } + const binding: PointBinding = { + elementId: hoveredElement.id, + ...calculateFocusAndGap( + linearElement, + hoveredElement, + startOrEnd, + elementsMap, + ), + ...(isElbowArrow(linearElement) + ? calculateFixedPointForElbowArrowBinding( + linearElement, + hoveredElement, + startOrEnd, + elementsMap, + ) + : { fixedPoint: null }), + }; + mutateElement(linearElement, { - [startOrEnd === "start" ? "startBinding" : "endBinding"]: { - elementId: hoveredElement.id, - ...calculateFocusAndGap( - linearElement, - hoveredElement, - startOrEnd, - elementsMap, - ), - } as PointBinding, + [startOrEnd === "start" ? "startBinding" : "endBinding"]: binding, }); const boundElementsMap = arrayToMap(hoveredElement.boundElements || []); @@ -448,13 +509,15 @@ export const getHoveredElementForBinding = ( x: number; y: number; }, + elements: readonly NonDeletedExcalidrawElement[], elementsMap: NonDeletedSceneElementsMap, + fullShape?: boolean, ): NonDeleted | null => { const hoveredElement = getElementAtPosition( - [...elementsMap].map(([_, value]) => value), + elements, (element) => isBindableElement(element, false) && - bindingBorderTest(element, pointerCoords, elementsMap), + bindingBorderTest(element, pointerCoords, elementsMap, fullShape), ); return hoveredElement as NonDeleted | null; }; @@ -501,12 +564,14 @@ const calculateFocusAndGap = ( export const updateBoundElements = ( changedElement: NonDeletedExcalidrawElement, elementsMap: ElementsMap, + scene: Scene, options?: { simultaneouslyUpdated?: readonly ExcalidrawElement[]; - newSize?: { width: number; height: number }; + oldSize?: { width: number; height: number }; + changedElements?: Map; }, ) => { - const { newSize, simultaneouslyUpdated } = options ?? {}; + const { oldSize, simultaneouslyUpdated, changedElements } = options ?? {}; const simultaneouslyUpdatedElementIds = getSimultaneouslyUpdatedElementIds( simultaneouslyUpdated, ); @@ -524,16 +589,17 @@ export const updateBoundElements = ( if (!doesNeedUpdate(element, changedElement)) { return; } + const bindings = { startBinding: maybeCalculateNewGapWhenScaling( changedElement, element.startBinding, - newSize, + oldSize, ), endBinding: maybeCalculateNewGapWhenScaling( changedElement, element.endBinding, - newSize, + oldSize, ), }; @@ -543,23 +609,58 @@ export const updateBoundElements = ( return; } - bindableElementsVisitor( + const updates = bindableElementsVisitor( elementsMap, element, (bindableElement, bindingProp) => { if ( bindableElement && isBindableElement(bindableElement) && - (bindingProp === "startBinding" || bindingProp === "endBinding") + (bindingProp === "startBinding" || bindingProp === "endBinding") && + changedElement.id === element[bindingProp]?.elementId ) { - updateBoundPoint( + const point = updateBoundPoint( element, bindingProp, bindings[bindingProp], bindableElement, elementsMap, ); + if (point) { + return { + index: + bindingProp === "startBinding" ? 0 : element.points.length - 1, + point, + }; + } } + + return null; + }, + ).filter( + ( + update, + ): update is NonNullable<{ + index: number; + point: Point; + isDragging?: boolean; + }> => update !== null, + ); + + LinearElementEditor.movePoints( + element, + updates, + scene, + { + ...(changedElement.id === element.startBinding?.elementId + ? { startBinding: bindings.startBinding } + : {}), + ...(changedElement.id === element.endBinding?.elementId + ? { endBinding: bindings.endBinding } + : {}), + }, + { + changedElements, }, ); @@ -586,24 +687,342 @@ const getSimultaneouslyUpdatedElementIds = ( return new Set((simultaneouslyUpdated || []).map((element) => element.id)); }; +export const getHeadingForElbowArrowSnap = ( + point: Readonly, + otherPoint: Readonly, + bindableElement: ExcalidrawBindableElement | undefined | null, + aabb: Bounds | undefined | null, + elementsMap: ElementsMap, + origPoint: Point, +): Heading => { + const otherPointHeading = vectorToHeading(pointToVector(otherPoint, point)); + + if (!bindableElement || !aabb) { + return otherPointHeading; + } + + const distance = getDistanceForBinding( + origPoint, + bindableElement, + elementsMap, + ); + + if (!distance) { + return vectorToHeading( + pointToVector(point, getCenterForElement(bindableElement)), + ); + } + + const pointHeading = headingForPointFromElement(bindableElement, aabb, point); + + return pointHeading; +}; + +const getDistanceForBinding = ( + point: Readonly, + bindableElement: ExcalidrawBindableElement, + elementsMap: ElementsMap, +) => { + const distance = distanceToBindableElement( + bindableElement, + point, + elementsMap, + ); + const bindDistance = maxBindingGap( + bindableElement, + bindableElement.width, + bindableElement.height, + ); + + return distance > bindDistance ? null : distance; +}; + +export const bindPointToSnapToElementOutline = ( + point: Readonly, + otherPoint: Readonly, + bindableElement: ExcalidrawBindableElement | undefined, + elementsMap: ElementsMap, +): Point => { + const aabb = bindableElement && aabbForElement(bindableElement); + + if (bindableElement && aabb) { + // TODO: Dirty hack until tangents are properly calculated + const intersections = [ + ...intersectElementWithLine( + bindableElement, + [point[0], point[1] - 2 * bindableElement.height], + [point[0], point[1] + 2 * bindableElement.height], + FIXED_BINDING_DISTANCE, + elementsMap, + ), + ...intersectElementWithLine( + bindableElement, + [point[0] - 2 * bindableElement.width, point[1]], + [point[0] + 2 * bindableElement.width, point[1]], + FIXED_BINDING_DISTANCE, + elementsMap, + ), + ].map((i) => + distanceToBindableElement(bindableElement, i, elementsMap) > + Math.min(bindableElement.width, bindableElement.height) / 2 + ? ([-1 * i[0], -1 * i[1]] as Point) + : i, + ); + + const heading = headingForPointFromElement(bindableElement, aabb, point); + const isVertical = + compareHeading(heading, HEADING_LEFT) || + compareHeading(heading, HEADING_RIGHT); + const dist = distanceToBindableElement(bindableElement, point, elementsMap); + const isInner = isVertical + ? dist < bindableElement.width * -0.1 + : dist < bindableElement.height * -0.1; + + intersections.sort( + (a, b) => distanceSq2d(a, point) - distanceSq2d(b, point), + ); + + return isInner + ? headingToMidBindPoint(otherPoint, bindableElement, aabb) + : intersections.filter((i) => + isVertical + ? Math.abs(point[1] - i[1]) < 0.1 + : Math.abs(point[0] - i[0]) < 0.1, + )[0] ?? point; + } + + return point; +}; + +const headingToMidBindPoint = ( + point: Point, + bindableElement: ExcalidrawBindableElement, + aabb: Bounds, +): Point => { + const center = getCenterForBounds(aabb); + const heading = vectorToHeading(pointToVector(point, center)); + + switch (true) { + case compareHeading(heading, HEADING_UP): + return rotatePoint( + [(aabb[0] + aabb[2]) / 2 + 0.1, aabb[1]], + center, + bindableElement.angle, + ); + case compareHeading(heading, HEADING_RIGHT): + return rotatePoint( + [aabb[2], (aabb[1] + aabb[3]) / 2 + 0.1], + center, + bindableElement.angle, + ); + case compareHeading(heading, HEADING_DOWN): + return rotatePoint( + [(aabb[0] + aabb[2]) / 2 - 0.1, aabb[3]], + center, + bindableElement.angle, + ); + default: + return rotatePoint( + [aabb[0], (aabb[1] + aabb[3]) / 2 - 0.1], + center, + bindableElement.angle, + ); + } +}; + +export const avoidRectangularCorner = ( + element: ExcalidrawBindableElement, + p: Point, +): Point => { + const center = getCenterForElement(element); + const nonRotatedPoint = rotatePoint(p, center, -element.angle); + + if (nonRotatedPoint[0] < element.x && nonRotatedPoint[1] < element.y) { + // Top left + if (nonRotatedPoint[1] - element.y > -FIXED_BINDING_DISTANCE) { + return rotatePoint( + [element.x - FIXED_BINDING_DISTANCE, element.y], + center, + element.angle, + ); + } + return rotatePoint( + [element.x, element.y - FIXED_BINDING_DISTANCE], + center, + element.angle, + ); + } else if ( + nonRotatedPoint[0] < element.x && + nonRotatedPoint[1] > element.y + element.height + ) { + // Bottom left + if (nonRotatedPoint[0] - element.x > -FIXED_BINDING_DISTANCE) { + return rotatePoint( + [element.x, element.y + element.height + FIXED_BINDING_DISTANCE], + center, + element.angle, + ); + } + return rotatePoint( + [element.x - FIXED_BINDING_DISTANCE, element.y + element.height], + center, + element.angle, + ); + } else if ( + nonRotatedPoint[0] > element.x + element.width && + nonRotatedPoint[1] > element.y + element.height + ) { + // Bottom right + if ( + nonRotatedPoint[0] - element.x < + element.width + FIXED_BINDING_DISTANCE + ) { + return rotatePoint( + [ + element.x + element.width, + element.y + element.height + FIXED_BINDING_DISTANCE, + ], + center, + element.angle, + ); + } + return rotatePoint( + [ + element.x + element.width + FIXED_BINDING_DISTANCE, + element.y + element.height, + ], + center, + element.angle, + ); + } else if ( + nonRotatedPoint[0] > element.x + element.width && + nonRotatedPoint[1] < element.y + ) { + // Top right + if ( + nonRotatedPoint[0] - element.x < + element.width + FIXED_BINDING_DISTANCE + ) { + return rotatePoint( + [element.x + element.width, element.y - FIXED_BINDING_DISTANCE], + center, + element.angle, + ); + } + return rotatePoint( + [element.x + element.width + FIXED_BINDING_DISTANCE, element.y], + center, + element.angle, + ); + } + + return p; +}; + +export const snapToMid = ( + element: ExcalidrawBindableElement, + p: Point, + tolerance: number = 0.05, +): Point => { + const { x, y, width, height, angle } = element; + const center = [x + width / 2 - 0.1, y + height / 2 - 0.1] as Point; + const nonRotated = rotatePoint(p, center, -angle); + + // snap-to-center point is adaptive to element size, but we don't want to go + // above and below certain px distance + const verticalThrehsold = clamp(tolerance * height, 5, 80); + const horizontalThrehsold = clamp(tolerance * width, 5, 80); + + if ( + nonRotated[0] <= x + width / 2 && + nonRotated[1] > center[1] - verticalThrehsold && + nonRotated[1] < center[1] + verticalThrehsold + ) { + // LEFT + return rotatePoint([x - FIXED_BINDING_DISTANCE, center[1]], center, angle); + } else if ( + nonRotated[1] <= y + height / 2 && + nonRotated[0] > center[0] - horizontalThrehsold && + nonRotated[0] < center[0] + horizontalThrehsold + ) { + // TOP + return rotatePoint([center[0], y - FIXED_BINDING_DISTANCE], center, angle); + } else if ( + nonRotated[0] >= x + width / 2 && + nonRotated[1] > center[1] - verticalThrehsold && + nonRotated[1] < center[1] + verticalThrehsold + ) { + // RIGHT + return rotatePoint( + [x + width + FIXED_BINDING_DISTANCE, center[1]], + center, + angle, + ); + } else if ( + nonRotated[1] >= y + height / 2 && + nonRotated[0] > center[0] - horizontalThrehsold && + nonRotated[0] < center[0] + horizontalThrehsold + ) { + // DOWN + return rotatePoint( + [center[0], y + height + FIXED_BINDING_DISTANCE], + center, + angle, + ); + } + + return p; +}; + const updateBoundPoint = ( linearElement: NonDeleted, startOrEnd: "startBinding" | "endBinding", binding: PointBinding | null | undefined, bindableElement: ExcalidrawBindableElement, elementsMap: ElementsMap, -): void => { +): Point | null => { if ( binding == null || // We only need to update the other end if this is a 2 point line element (binding.elementId !== bindableElement.id && linearElement.points.length > 2) ) { - return; + return null; } const direction = startOrEnd === "startBinding" ? -1 : 1; const edgePointIndex = direction === -1 ? 0 : linearElement.points.length - 1; + + if (isElbowArrow(linearElement)) { + const fixedPoint = + binding.fixedPoint ?? + calculateFixedPointForElbowArrowBinding( + linearElement, + bindableElement, + startOrEnd === "startBinding" ? "start" : "end", + elementsMap, + ).fixedPoint; + const globalMidPoint = [ + bindableElement.x + bindableElement.width / 2, + bindableElement.y + bindableElement.height / 2, + ] as Point; + const global = [ + bindableElement.x + fixedPoint[0] * bindableElement.width, + bindableElement.y + fixedPoint[1] * bindableElement.height, + ] as Point; + const rotatedGlobal = rotatePoint( + global, + globalMidPoint, + bindableElement.angle, + ); + + return LinearElementEditor.pointFromAbsoluteCoords( + linearElement, + rotatedGlobal, + elementsMap, + ); + } + const adjacentPointIndex = edgePointIndex - direction; const adjacentPoint = LinearElementEditor.getPointAtIndexGlobalCoordinates( linearElement, @@ -616,7 +1035,9 @@ const updateBoundPoint = ( adjacentPoint, elementsMap, ); - let newEdgePoint; + + let newEdgePoint: Point; + // The linear element was not originally pointing inside the bound shape, // we can point directly at the focus point if (binding.gap === 0) { @@ -638,22 +1059,64 @@ const updateBoundPoint = ( newEdgePoint = intersections[0]; } } - LinearElementEditor.movePoints( + + return LinearElementEditor.pointFromAbsoluteCoords( linearElement, - [ - { - index: edgePointIndex, - point: LinearElementEditor.pointFromAbsoluteCoords( - linearElement, - newEdgePoint, - elementsMap, - ), - }, - ], - { [startOrEnd]: binding }, + newEdgePoint, + elementsMap, ); }; +export const calculateFixedPointForElbowArrowBinding = ( + linearElement: NonDeleted, + hoveredElement: ExcalidrawBindableElement, + startOrEnd: "start" | "end", + elementsMap: ElementsMap, +): { fixedPoint: FixedPoint } => { + const bounds = [ + hoveredElement.x, + hoveredElement.y, + hoveredElement.x + hoveredElement.width, + hoveredElement.y + hoveredElement.height, + ] as Bounds; + const edgePointIndex = + startOrEnd === "start" ? 0 : linearElement.points.length - 1; + const globalPoint = LinearElementEditor.getPointAtIndexGlobalCoordinates( + linearElement, + edgePointIndex, + elementsMap, + ); + const otherGlobalPoint = LinearElementEditor.getPointAtIndexGlobalCoordinates( + linearElement, + edgePointIndex, + elementsMap, + ); + const snappedPoint = bindPointToSnapToElementOutline( + globalPoint, + otherGlobalPoint, + hoveredElement, + elementsMap, + ); + const globalMidPoint = [ + bounds[0] + (bounds[2] - bounds[0]) / 2, + bounds[1] + (bounds[3] - bounds[1]) / 2, + ] as Point; + const nonRotatedSnappedGlobalPoint = rotatePoint( + snappedPoint, + globalMidPoint, + -hoveredElement.angle, + ) as Point; + + return { + fixedPoint: [ + (nonRotatedSnappedGlobalPoint[0] - hoveredElement.x) / + hoveredElement.width, + (nonRotatedSnappedGlobalPoint[1] - hoveredElement.y) / + hoveredElement.height, + ] as [number, number], + }; +}; + const maybeCalculateNewGapWhenScaling = ( changedElement: ExcalidrawBindableElement, currentBinding: PointBinding | null | undefined, @@ -662,26 +1125,29 @@ const maybeCalculateNewGapWhenScaling = ( if (currentBinding == null || newSize == null) { return currentBinding; } - const { gap, focus, elementId } = currentBinding; const { width: newWidth, height: newHeight } = newSize; const { width, height } = changedElement; const newGap = Math.max( 1, Math.min( maxBindingGap(changedElement, newWidth, newHeight), - gap * (newWidth < newHeight ? newWidth / width : newHeight / height), + currentBinding.gap * + (newWidth < newHeight ? newWidth / width : newHeight / height), ), ); - return { elementId, gap: newGap, focus }; + + return { ...currentBinding, gap: newGap }; }; const getElligibleElementForBindingElement = ( linearElement: NonDeleted, startOrEnd: "start" | "end", elementsMap: NonDeletedSceneElementsMap, + elements: readonly NonDeletedExcalidrawElement[], ): NonDeleted | null => { return getHoveredElementForBinding( getLinearElementEdgeCoors(linearElement, startOrEnd, elementsMap), + elements, elementsMap, ); }; @@ -798,11 +1264,9 @@ const newBindingAfterDuplication = ( if (binding == null) { return null; } - const { elementId, focus, gap } = binding; return { - focus, - gap, - elementId: oldIdToDuplicatedId.get(elementId) ?? elementId, + ...binding, + elementId: oldIdToDuplicatedId.get(binding.elementId) ?? binding.elementId, }; }; @@ -843,14 +1307,18 @@ const newBoundElements = ( return nextBoundElements; }; -const bindingBorderTest = ( +export const bindingBorderTest = ( element: NonDeleted, { x, y }: { x: number; y: number }, - elementsMap: ElementsMap, + elementsMap: NonDeletedSceneElementsMap, + fullShape?: boolean, ): boolean => { const threshold = maxBindingGap(element, element.width, element.height); const shape = getElementShape(element, elementsMap); - return isPointOnShape([x, y], shape, threshold); + return ( + isPointOnShape([x, y], shape, threshold) || + (fullShape === true && pointInsideBounds([x, y], aabbForElement(element))) + ); }; export const maxBindingGap = ( @@ -865,7 +1333,7 @@ export const maxBindingGap = ( return Math.max(16, Math.min(0.25 * smallerDimension, 32)); }; -const distanceToBindableElement = ( +export const distanceToBindableElement = ( element: ExcalidrawBindableElement, point: Point, elementsMap: ElementsMap, @@ -1408,11 +1876,11 @@ type BoundElementsVisitingFunc = ( bindingId: string, ) => void; -type BindableElementVisitingFunc = ( +type BindableElementVisitingFunc = ( bindableElement: ExcalidrawElement | undefined, bindingProp: BindingProp, bindingId: string, -) => void; +) => T; /** * Tries to visit each bound element (does not have to be found). @@ -1436,32 +1904,36 @@ const boundElementsVisitor = ( /** * Tries to visit each bindable element (does not have to be found). */ -const bindableElementsVisitor = ( +const bindableElementsVisitor = ( elements: ElementsMap, element: ExcalidrawElement, - visit: BindableElementVisitingFunc, -) => { + visit: BindableElementVisitingFunc, +): T[] => { + const result: T[] = []; + if (element.frameId) { const id = element.frameId; - visit(elements.get(id), "frameId", id); + result.push(visit(elements.get(id), "frameId", id)); } if (isBoundToContainer(element)) { const id = element.containerId; - visit(elements.get(id), "containerId", id); + result.push(visit(elements.get(id), "containerId", id)); } if (isArrowElement(element)) { if (element.startBinding) { const id = element.startBinding.elementId; - visit(elements.get(id), "startBinding", id); + result.push(visit(elements.get(id), "startBinding", id)); } if (element.endBinding) { const id = element.endBinding.elementId; - visit(elements.get(id), "endBinding", id); + result.push(visit(elements.get(id), "endBinding", id)); } } + + return result; }; /** @@ -1689,3 +2161,62 @@ export class BindableElement { ); }; } + +export const getGlobalFixedPointForBindableElement = ( + fixedPointRatio: [number, number], + element: ExcalidrawBindableElement, +) => { + const [fixedX, fixedY] = fixedPointRatio; + return rotatePoint( + [element.x + element.width * fixedX, element.y + element.height * fixedY], + getCenterForElement(element), + element.angle, + ); +}; + +const getGlobalFixedPoints = ( + arrow: ExcalidrawElbowArrowElement, + elementsMap: ElementsMap, +) => { + const startElement = + arrow.startBinding && + (elementsMap.get(arrow.startBinding.elementId) as + | ExcalidrawBindableElement + | undefined); + const endElement = + arrow.endBinding && + (elementsMap.get(arrow.endBinding.elementId) as + | ExcalidrawBindableElement + | undefined); + const startPoint: Point = + startElement && arrow.startBinding + ? getGlobalFixedPointForBindableElement( + arrow.startBinding.fixedPoint, + startElement as ExcalidrawBindableElement, + ) + : [arrow.x + arrow.points[0][0], arrow.y + arrow.points[0][1]]; + const endPoint: Point = + endElement && arrow.endBinding + ? getGlobalFixedPointForBindableElement( + arrow.endBinding.fixedPoint, + endElement as ExcalidrawBindableElement, + ) + : [ + arrow.x + arrow.points[arrow.points.length - 1][0], + arrow.y + arrow.points[arrow.points.length - 1][1], + ]; + + return [startPoint, endPoint]; +}; + +export const getArrowLocalFixedPoints = ( + arrow: ExcalidrawElbowArrowElement, + elementsMap: ElementsMap, +) => { + const [startPoint, endPoint] = getGlobalFixedPoints(arrow, elementsMap); + + return [ + LinearElementEditor.pointFromAbsoluteCoords(arrow, startPoint, elementsMap), + LinearElementEditor.pointFromAbsoluteCoords(arrow, endPoint, elementsMap), + ]; +}; diff --git a/packages/excalidraw/element/dragElements.ts b/packages/excalidraw/element/dragElements.ts index 2c951148e..f031eb412 100644 --- a/packages/excalidraw/element/dragElements.ts +++ b/packages/excalidraw/element/dragElements.ts @@ -10,6 +10,7 @@ import { getGridPoint } from "../math"; import type Scene from "../scene/Scene"; import { isArrowElement, + isElbowArrow, isFrameLikeElement, isTextElement, } from "./typeChecks"; @@ -18,9 +19,8 @@ import { TEXT_AUTOWRAP_THRESHOLD } from "../constants"; export const dragSelectedElements = ( pointerDownState: PointerDownState, - selectedElements: NonDeletedExcalidrawElement[], + _selectedElements: NonDeletedExcalidrawElement[], offset: { x: number; y: number }, - appState: AppState, scene: Scene, snapOffset: { x: number; @@ -28,6 +28,25 @@ export const dragSelectedElements = ( }, gridSize: AppState["gridSize"], ) => { + if ( + _selectedElements.length === 1 && + isArrowElement(_selectedElements[0]) && + isElbowArrow(_selectedElements[0]) && + (_selectedElements[0].startBinding || _selectedElements[0].endBinding) + ) { + return; + } + + const selectedElements = _selectedElements.filter( + (el) => + !( + isArrowElement(el) && + isElbowArrow(el) && + el.startBinding && + el.endBinding + ), + ); + // we do not want a frame and its elements to be selected at the same time // but when it happens (due to some bug), we want to avoid updating element // in the frame twice, hence the use of set @@ -72,9 +91,14 @@ export const dragSelectedElements = ( updateElementCoords(pointerDownState, textElement, adjustedOffset); } } - updateBoundElements(element, scene.getElementsMapIncludingDeleted(), { - simultaneouslyUpdated: Array.from(elementsToUpdate), - }); + updateBoundElements( + element, + scene.getElementsMapIncludingDeleted(), + scene, + { + simultaneouslyUpdated: Array.from(elementsToUpdate), + }, + ); }); }; diff --git a/packages/excalidraw/element/heading.ts b/packages/excalidraw/element/heading.ts new file mode 100644 index 000000000..a8b3a3fa0 --- /dev/null +++ b/packages/excalidraw/element/heading.ts @@ -0,0 +1,146 @@ +import { lineAngle } from "../../utils/geometry/geometry"; +import type { Point, Vector } from "../../utils/geometry/shape"; +import { + getCenterForBounds, + PointInTriangle, + rotatePoint, + scalePointFromOrigin, +} from "../math"; +import type { Bounds } from "./bounds"; +import type { ExcalidrawBindableElement } from "./types"; + +export const HEADING_RIGHT = [1, 0] as Heading; +export const HEADING_DOWN = [0, 1] as Heading; +export const HEADING_LEFT = [-1, 0] as Heading; +export const HEADING_UP = [0, -1] as Heading; +export type Heading = [1, 0] | [0, 1] | [-1, 0] | [0, -1]; + +export const headingForDiamond = (a: Point, b: Point) => { + const angle = lineAngle([a, b]); + if (angle >= 315 || angle < 45) { + return HEADING_UP; + } else if (angle >= 45 && angle < 135) { + return HEADING_RIGHT; + } else if (angle >= 135 && angle < 225) { + return HEADING_DOWN; + } + return HEADING_LEFT; +}; + +export const vectorToHeading = (vec: Vector): Heading => { + const [x, y] = vec; + const absX = Math.abs(x); + const absY = Math.abs(y); + if (x > absY) { + return HEADING_RIGHT; + } else if (x <= -absY) { + return HEADING_LEFT; + } else if (y > absX) { + return HEADING_DOWN; + } + return HEADING_UP; +}; + +export const compareHeading = (a: Heading, b: Heading) => + a[0] === b[0] && a[1] === b[1]; + +// Gets the heading for the point by creating a bounding box around the rotated +// close fitting bounding box, then creating 4 search cones around the center of +// the external bbox. +export const headingForPointFromElement = ( + element: Readonly, + aabb: Readonly, + point: Readonly, +): Heading => { + const SEARCH_CONE_MULTIPLIER = 2; + + const midPoint = getCenterForBounds(aabb); + + if (element.type === "diamond") { + if (point[0] < element.x) { + return HEADING_LEFT; + } else if (point[1] < element.y) { + return HEADING_UP; + } else if (point[0] > element.x + element.width) { + return HEADING_RIGHT; + } else if (point[1] > element.y + element.height) { + return HEADING_DOWN; + } + + const top = rotatePoint( + scalePointFromOrigin( + [element.x + element.width / 2, element.y], + midPoint, + SEARCH_CONE_MULTIPLIER, + ), + midPoint, + element.angle, + ); + const right = rotatePoint( + scalePointFromOrigin( + [element.x + element.width, element.y + element.height / 2], + midPoint, + SEARCH_CONE_MULTIPLIER, + ), + midPoint, + element.angle, + ); + const bottom = rotatePoint( + scalePointFromOrigin( + [element.x + element.width / 2, element.y + element.height], + midPoint, + SEARCH_CONE_MULTIPLIER, + ), + midPoint, + element.angle, + ); + const left = rotatePoint( + scalePointFromOrigin( + [element.x, element.y + element.height / 2], + midPoint, + SEARCH_CONE_MULTIPLIER, + ), + midPoint, + element.angle, + ); + + if (PointInTriangle(point, top, right, midPoint)) { + return headingForDiamond(top, right); + } else if (PointInTriangle(point, right, bottom, midPoint)) { + return headingForDiamond(right, bottom); + } else if (PointInTriangle(point, bottom, left, midPoint)) { + return headingForDiamond(bottom, left); + } + + return headingForDiamond(left, top); + } + + const topLeft = scalePointFromOrigin( + [aabb[0], aabb[1]], + midPoint, + SEARCH_CONE_MULTIPLIER, + ); + const topRight = scalePointFromOrigin( + [aabb[2], aabb[1]], + midPoint, + SEARCH_CONE_MULTIPLIER, + ); + const bottomLeft = scalePointFromOrigin( + [aabb[0], aabb[3]], + midPoint, + SEARCH_CONE_MULTIPLIER, + ); + const bottomRight = scalePointFromOrigin( + [aabb[2], aabb[3]], + midPoint, + SEARCH_CONE_MULTIPLIER, + ); + + return PointInTriangle(point, topLeft, topRight, midPoint) + ? HEADING_UP + : PointInTriangle(point, topRight, bottomRight, midPoint) + ? HEADING_RIGHT + : PointInTriangle(point, bottomRight, bottomLeft, midPoint) + ? HEADING_DOWN + : HEADING_LEFT; +}; diff --git a/packages/excalidraw/element/index.ts b/packages/excalidraw/element/index.ts index 35661608e..d6bc8f615 100644 --- a/packages/excalidraw/element/index.ts +++ b/packages/excalidraw/element/index.ts @@ -11,6 +11,7 @@ export { newTextElement, refreshTextDimensions, newLinearElement, + newArrowElement, newImageElement, duplicateElement, } from "./newElement"; diff --git a/packages/excalidraw/element/linearElementEditor.ts b/packages/excalidraw/element/linearElementEditor.ts index 971922762..68e400649 100644 --- a/packages/excalidraw/element/linearElementEditor.ts +++ b/packages/excalidraw/element/linearElementEditor.ts @@ -7,6 +7,8 @@ import type { ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap, + OrderedExcalidrawElement, + FixedPointBinding, } from "./types"; import { distance2d, @@ -33,7 +35,6 @@ import type { AppState, PointerCoords, InteractiveCanvasAppState, - AppClassProperties, } from "../types"; import { mutateElement } from "./mutateElement"; @@ -43,13 +44,19 @@ import { isBindingEnabled, } from "./binding"; import { tupleToCoors } from "../utils"; -import { isBindingElement } from "./typeChecks"; +import { + isBindingElement, + isElbowArrow, + isFixedPointBinding, +} from "./typeChecks"; import { KEYS, shouldRotateWithDiscreteAngle } from "../keys"; import { getBoundTextElement, handleBindTextResize } from "./textElement"; import { DRAGGING_THRESHOLD } from "../constants"; import type { Mutable } from "../utility-types"; import { ShapeCache } from "../scene/ShapeCache"; import type { Store } from "../store"; +import { mutateElbowArrow } from "./routing"; +import type Scene from "../scene/Scene"; const editorMidPointsCache: { version: number | null; @@ -67,6 +74,7 @@ export class LinearElementEditor { prevSelectedPointsIndices: readonly number[] | null; /** index */ lastClickedPoint: number; + lastClickedIsEndPoint: boolean; origin: Readonly<{ x: number; y: number }> | null; segmentMidpoint: { value: Point | null; @@ -91,7 +99,9 @@ export class LinearElementEditor { this.elementId = element.id as string & { _brand: "excalidrawLinearElementId"; }; - LinearElementEditor.normalizePoints(element); + if (!arePointsEqual(element.points[0], [0, 0])) { + console.error("Linear element is not normalized", Error().stack); + } this.selectedPointsIndices = null; this.lastUncommittedPoint = null; @@ -102,6 +112,7 @@ export class LinearElementEditor { this.pointerDownState = { prevSelectedPointsIndices: null, lastClickedPoint: -1, + lastClickedIsEndPoint: false, origin: null, segmentMidpoint: { @@ -162,8 +173,8 @@ export class LinearElementEditor { elementsMap, ); - const nextSelectedPoints = pointsSceneCoords.reduce( - (acc: number[], point, index) => { + const nextSelectedPoints = pointsSceneCoords + .reduce((acc: number[], point, index) => { if ( (point[0] >= selectionX1 && point[0] <= selectionX2 && @@ -175,9 +186,17 @@ export class LinearElementEditor { } return acc; - }, - [], - ); + }, []) + .filter((index) => { + if ( + isElbowArrow(element) && + index !== 0 && + index !== element.points.length - 1 + ) { + return false; + } + return true; + }); setState({ editingLinearElement: { @@ -200,21 +219,52 @@ export class LinearElementEditor { pointSceneCoords: { x: number; y: number }[], ) => void, linearElementEditor: LinearElementEditor, - elementsMap: NonDeletedSceneElementsMap, + scene: Scene, ): boolean { if (!linearElementEditor) { return false; } - const { selectedPointsIndices, elementId } = linearElementEditor; + const { elementId } = linearElementEditor; + const elementsMap = scene.getNonDeletedElementsMap(); const element = LinearElementEditor.getElement(elementId, elementsMap); if (!element) { return false; } + if ( + isElbowArrow(element) && + !linearElementEditor.pointerDownState.lastClickedIsEndPoint && + linearElementEditor.pointerDownState.lastClickedPoint !== 0 + ) { + return false; + } + + const selectedPointsIndices = isElbowArrow(element) + ? linearElementEditor.selectedPointsIndices + ?.reduce( + (startEnd, index) => + (index === 0 + ? [0, startEnd[1]] + : [startEnd[0], element.points.length - 1]) as [ + boolean | number, + boolean | number, + ], + [false, false] as [number | boolean, number | boolean], + ) + .filter( + (idx: number | boolean): idx is number => typeof idx === "number", + ) + : linearElementEditor.selectedPointsIndices; + const lastClickedPoint = isElbowArrow(element) + ? linearElementEditor.pointerDownState.lastClickedPoint > 0 + ? element.points.length - 1 + : 0 + : linearElementEditor.pointerDownState.lastClickedPoint; + // point that's being dragged (out of all selected points) - const draggingPoint = element.points[ - linearElementEditor.pointerDownState.lastClickedPoint - ] as [number, number] | undefined; + const draggingPoint = element.points[lastClickedPoint] as + | [number, number] + | undefined; if (selectedPointsIndices && draggingPoint) { if ( @@ -234,15 +284,17 @@ export class LinearElementEditor { event[KEYS.CTRL_OR_CMD] ? null : appState.gridSize, ); - LinearElementEditor.movePoints(element, [ - { - index: selectedIndex, - point: [width + referencePoint[0], height + referencePoint[1]], - isDragging: - selectedIndex === - linearElementEditor.pointerDownState.lastClickedPoint, - }, - ]); + LinearElementEditor.movePoints( + element, + [ + { + index: selectedIndex, + point: [width + referencePoint[0], height + referencePoint[1]], + isDragging: selectedIndex === lastClickedPoint, + }, + ], + scene, + ); } else { const newDraggingPointPosition = LinearElementEditor.createPointAt( element, @@ -259,8 +311,7 @@ export class LinearElementEditor { element, selectedPointsIndices.map((pointIndex) => { const newPointPosition = - pointIndex === - linearElementEditor.pointerDownState.lastClickedPoint + pointIndex === lastClickedPoint ? LinearElementEditor.createPointAt( element, elementsMap, @@ -275,11 +326,10 @@ export class LinearElementEditor { return { index: pointIndex, point: newPointPosition, - isDragging: - pointIndex === - linearElementEditor.pointerDownState.lastClickedPoint, + isDragging: pointIndex === lastClickedPoint, }; }), + scene, ); } @@ -334,9 +384,10 @@ export class LinearElementEditor { event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState, - app: AppClassProperties, + scene: Scene, ): LinearElementEditor { - const elementsMap = app.scene.getNonDeletedElementsMap(); + const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); const { elementId, selectedPointsIndices, isDragging, pointerDownState } = editingLinearElement; @@ -361,15 +412,19 @@ export class LinearElementEditor { selectedPoint === element.points.length - 1 ) { if (isPathALoop(element.points, appState.zoom.value)) { - LinearElementEditor.movePoints(element, [ - { - index: selectedPoint, - point: - selectedPoint === 0 - ? element.points[element.points.length - 1] - : element.points[0], - }, - ]); + LinearElementEditor.movePoints( + element, + [ + { + index: selectedPoint, + point: + selectedPoint === 0 + ? element.points[element.points.length - 1] + : element.points[0], + }, + ], + scene, + ); } const bindingElement = isBindingEnabled(appState) @@ -381,6 +436,7 @@ export class LinearElementEditor { elementsMap, ), ), + elements, elementsMap, ) : null; @@ -645,13 +701,14 @@ export class LinearElementEditor { store: Store, scenePointer: { x: number; y: number }, linearElementEditor: LinearElementEditor, - app: AppClassProperties, + scene: Scene, ): { didAddPoint: boolean; hitElement: NonDeleted | null; linearElementEditor: LinearElementEditor | null; } { - const elementsMap = app.scene.getNonDeletedElementsMap(); + const elementsMap = scene.getNonDeletedElementsMap(); + const elements = scene.getNonDeletedElements(); const ret: ReturnType = { didAddPoint: false, @@ -685,7 +742,10 @@ export class LinearElementEditor { ); } if (event.altKey && appState.editingLinearElement) { - if (linearElementEditor.lastUncommittedPoint == null) { + if ( + linearElementEditor.lastUncommittedPoint == null || + !isElbowArrow(element) + ) { mutateElement(element, { points: [ ...element.points, @@ -706,6 +766,7 @@ export class LinearElementEditor { pointerDownState: { prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices, lastClickedPoint: -1, + lastClickedIsEndPoint: false, origin: { x: scenePointer.x, y: scenePointer.y }, segmentMidpoint: { value: segmentMidpoint, @@ -717,6 +778,7 @@ export class LinearElementEditor { lastUncommittedPoint: null, endBindingElement: getHoveredElementForBinding( scenePointer, + elements, elementsMap, ), }; @@ -749,6 +811,7 @@ export class LinearElementEditor { startBindingElement, endBindingElement, elementsMap, + scene, ); } } @@ -781,6 +844,7 @@ export class LinearElementEditor { pointerDownState: { prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices, lastClickedPoint: clickedPointIndex, + lastClickedIsEndPoint: clickedPointIndex === element.points.length - 1, origin: { x: scenePointer.x, y: scenePointer.y }, segmentMidpoint: { value: segmentMidpoint, @@ -815,12 +879,13 @@ export class LinearElementEditor { scenePointerX: number, scenePointerY: number, appState: AppState, - elementsMap: ElementsMap, + scene: Scene, ): LinearElementEditor | null { if (!appState.editingLinearElement) { return null; } const { elementId, lastUncommittedPoint } = appState.editingLinearElement; + const elementsMap = scene.getNonDeletedElementsMap(); const element = LinearElementEditor.getElement(elementId, elementsMap); if (!element) { return appState.editingLinearElement; @@ -831,7 +896,7 @@ export class LinearElementEditor { if (!event.altKey) { if (lastPoint === lastUncommittedPoint) { - LinearElementEditor.deletePoints(element, [points.length - 1]); + LinearElementEditor.deletePoints(element, [points.length - 1], scene); } return { ...appState.editingLinearElement, @@ -862,19 +927,30 @@ export class LinearElementEditor { elementsMap, scenePointerX - appState.editingLinearElement.pointerOffset.x, scenePointerY - appState.editingLinearElement.pointerOffset.y, - event[KEYS.CTRL_OR_CMD] ? null : appState.gridSize, + event[KEYS.CTRL_OR_CMD] || isElbowArrow(element) + ? null + : appState.gridSize, ); } if (lastPoint === lastUncommittedPoint) { - LinearElementEditor.movePoints(element, [ - { - index: element.points.length - 1, - point: newPoint, - }, - ]); + LinearElementEditor.movePoints( + element, + [ + { + index: element.points.length - 1, + point: newPoint, + }, + ], + scene, + ); } else { - LinearElementEditor.addPoints(element, appState, [{ point: newPoint }]); + LinearElementEditor.addPoints( + element, + appState, + [{ point: newPoint }], + scene, + ); } return { ...appState.editingLinearElement, @@ -938,6 +1014,11 @@ export class LinearElementEditor { absoluteCoords: Point, elementsMap: ElementsMap, ): Point { + if (isElbowArrow(element)) { + // No rotation for elbow arrows + return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y]; + } + const [x1, y1, x2, y2] = getElementAbsoluteCoords(element, elementsMap); const cx = (x1 + x2) / 2; const cy = (y1 + y2) / 2; @@ -1028,13 +1109,13 @@ export class LinearElementEditor { mutateElement(element, LinearElementEditor.getNormalizedPoints(element)); } - static duplicateSelectedPoints(appState: AppState, elementsMap: ElementsMap) { + static duplicateSelectedPoints(appState: AppState, scene: Scene) { if (!appState.editingLinearElement) { return false; } const { selectedPointsIndices, elementId } = appState.editingLinearElement; - + const elementsMap = scene.getNonDeletedElementsMap(); const element = LinearElementEditor.getElement(elementId, elementsMap); if (!element || selectedPointsIndices === null) { @@ -1077,12 +1158,16 @@ export class LinearElementEditor { // potentially expanding the bounding box if (pointAddedToEnd) { const lastPoint = element.points[element.points.length - 1]; - LinearElementEditor.movePoints(element, [ - { - index: element.points.length - 1, - point: [lastPoint[0] + 30, lastPoint[1] + 30], - }, - ]); + LinearElementEditor.movePoints( + element, + [ + { + index: element.points.length - 1, + point: [lastPoint[0] + 30, lastPoint[1] + 30], + }, + ], + scene, + ); } return { @@ -1099,6 +1184,7 @@ export class LinearElementEditor { static deletePoints( element: NonDeleted, pointIndices: readonly number[], + scene: Scene, ) { let offsetX = 0; let offsetY = 0; @@ -1126,25 +1212,46 @@ export class LinearElementEditor { return acc; }, []); - LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY); + LinearElementEditor._updatePoints( + element, + nextPoints, + offsetX, + offsetY, + scene, + ); } static addPoints( element: NonDeleted, appState: AppState, targetPoints: { point: Point }[], + scene: Scene, ) { const offsetX = 0; const offsetY = 0; const nextPoints = [...element.points, ...targetPoints.map((x) => x.point)]; - LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY); + LinearElementEditor._updatePoints( + element, + nextPoints, + offsetX, + offsetY, + scene, + ); } static movePoints( element: NonDeleted, targetPoints: { index: number; point: Point; isDragging?: boolean }[], - otherUpdates?: { startBinding?: PointBinding; endBinding?: PointBinding }, + scene: Scene, + otherUpdates?: { + startBinding?: PointBinding | null; + endBinding?: PointBinding | null; + }, + options?: { + changedElements?: Map; + isDragging?: boolean; + }, ) { const { points } = element; @@ -1192,7 +1299,16 @@ export class LinearElementEditor { nextPoints, offsetX, offsetY, + scene, otherUpdates, + { + isDragging: targetPoints.reduce( + (dragging, targetPoint): boolean => + dragging || targetPoint.isDragging === true, + false, + ), + changedElements: options?.changedElements, + }, ); } @@ -1207,6 +1323,11 @@ export class LinearElementEditor { elementsMap, ); + // Elbow arrows don't allow midpoints + if (element && isElbowArrow(element)) { + return false; + } + if (!element) { return false; } @@ -1266,7 +1387,7 @@ export class LinearElementEditor { elementsMap, pointerCoords.x, pointerCoords.y, - snapToGrid ? appState.gridSize : null, + snapToGrid && !isElbowArrow(element) ? appState.gridSize : null, ); const points = [ ...element.points.slice(0, segmentMidpoint.index!), @@ -1295,23 +1416,61 @@ export class LinearElementEditor { nextPoints: readonly Point[], offsetX: number, offsetY: number, - otherUpdates?: { startBinding?: PointBinding; endBinding?: PointBinding }, + scene: Scene, + otherUpdates?: { + startBinding?: PointBinding | null; + endBinding?: PointBinding | null; + }, + options?: { + changedElements?: Map; + isDragging?: boolean; + }, ) { - const nextCoords = getElementPointsCoords(element, nextPoints); - const prevCoords = getElementPointsCoords(element, element.points); - const nextCenterX = (nextCoords[0] + nextCoords[2]) / 2; - const nextCenterY = (nextCoords[1] + nextCoords[3]) / 2; - const prevCenterX = (prevCoords[0] + prevCoords[2]) / 2; - const prevCenterY = (prevCoords[1] + prevCoords[3]) / 2; - const dX = prevCenterX - nextCenterX; - const dY = prevCenterY - nextCenterY; - const rotated = rotate(offsetX, offsetY, dX, dY, element.angle); - mutateElement(element, { - ...otherUpdates, - points: nextPoints, - x: element.x + rotated[0], - y: element.y + rotated[1], - }); + if (isElbowArrow(element)) { + const bindings: { + startBinding?: FixedPointBinding | null; + endBinding?: FixedPointBinding | null; + } = {}; + if (otherUpdates?.startBinding !== undefined) { + bindings.startBinding = + otherUpdates.startBinding !== null && + isFixedPointBinding(otherUpdates.startBinding) + ? otherUpdates.startBinding + : null; + } + if (otherUpdates?.endBinding !== undefined) { + bindings.endBinding = + otherUpdates.endBinding !== null && + isFixedPointBinding(otherUpdates.endBinding) + ? otherUpdates.endBinding + : null; + } + + mutateElbowArrow( + element, + scene, + nextPoints, + [offsetX, offsetY], + bindings, + options, + ); + } else { + const nextCoords = getElementPointsCoords(element, nextPoints); + const prevCoords = getElementPointsCoords(element, element.points); + const nextCenterX = (nextCoords[0] + nextCoords[2]) / 2; + const nextCenterY = (nextCoords[1] + nextCoords[3]) / 2; + const prevCenterX = (prevCoords[0] + prevCoords[2]) / 2; + const prevCenterY = (prevCoords[1] + prevCoords[3]) / 2; + const dX = prevCenterX - nextCenterX; + const dY = prevCenterY - nextCenterY; + const rotated = rotate(offsetX, offsetY, dX, dY, element.angle); + mutateElement(element, { + ...otherUpdates, + points: nextPoints, + x: element.x + rotated[0], + y: element.y + rotated[1], + }); + } } private static _getShiftLockedDelta( @@ -1327,6 +1486,13 @@ export class LinearElementEditor { elementsMap, ); + if (isElbowArrow(element)) { + return [ + scenePointer[0] - referencePointCoords[0], + scenePointer[1] - referencePointCoords[1], + ]; + } + const [gridX, gridY] = getGridPoint( scenePointer[0], scenePointer[1], diff --git a/packages/excalidraw/element/newElement.test.ts b/packages/excalidraw/element/newElement.test.ts index 3aa5a6ba3..3346218b1 100644 --- a/packages/excalidraw/element/newElement.test.ts +++ b/packages/excalidraw/element/newElement.test.ts @@ -121,6 +121,7 @@ describe("duplicating multiple elements", () => { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, }); @@ -131,6 +132,7 @@ describe("duplicating multiple elements", () => { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, boundElements: [{ id: "text2", type: "text" }], }); @@ -247,6 +249,7 @@ describe("duplicating multiple elements", () => { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, }); @@ -263,11 +266,13 @@ describe("duplicating multiple elements", () => { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, endBinding: { elementId: "rectangle-not-exists", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, }); @@ -278,11 +283,13 @@ describe("duplicating multiple elements", () => { elementId: "rectangle-not-exists", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, endBinding: { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, }); diff --git a/packages/excalidraw/element/newElement.ts b/packages/excalidraw/element/newElement.ts index 048fd3281..1f9bd6805 100644 --- a/packages/excalidraw/element/newElement.ts +++ b/packages/excalidraw/element/newElement.ts @@ -17,6 +17,7 @@ import type { ExcalidrawMagicFrameElement, ExcalidrawIframeElement, ElementsMap, + ExcalidrawArrowElement, } from "./types"; import { arrayToMap, @@ -388,8 +389,6 @@ export const newFreeDrawElement = ( export const newLinearElement = ( opts: { type: ExcalidrawLinearElement["type"]; - startArrowhead?: Arrowhead | null; - endArrowhead?: Arrowhead | null; points?: ExcalidrawLinearElement["points"]; } & ElementConstructorOpts, ): NonDeleted => { @@ -399,8 +398,29 @@ export const newLinearElement = ( lastCommittedPoint: null, startBinding: null, endBinding: null, + startArrowhead: null, + endArrowhead: null, + }; +}; + +export const newArrowElement = ( + opts: { + type: ExcalidrawArrowElement["type"]; + startArrowhead?: Arrowhead | null; + endArrowhead?: Arrowhead | null; + points?: ExcalidrawArrowElement["points"]; + elbowed?: boolean; + } & ElementConstructorOpts, +): NonDeleted => { + return { + ..._newElementBase(opts.type, opts), + points: opts.points || [], + lastCommittedPoint: null, + startBinding: null, + endBinding: null, startArrowhead: opts.startArrowhead || null, endArrowhead: opts.endArrowhead || null, + elbowed: opts.elbowed || false, }; }; diff --git a/packages/excalidraw/element/resizeElements.ts b/packages/excalidraw/element/resizeElements.ts index c069c2e34..ddf9fb1da 100644 --- a/packages/excalidraw/element/resizeElements.ts +++ b/packages/excalidraw/element/resizeElements.ts @@ -22,6 +22,7 @@ import { import { isArrowElement, isBoundToContainer, + isElbowArrow, isFrameLikeElement, isFreeDrawElement, isImageElement, @@ -30,7 +31,7 @@ import { } from "./typeChecks"; import { mutateElement } from "./mutateElement"; import { getFontString } from "../utils"; -import { updateBoundElements } from "./binding"; +import { getArrowLocalFixedPoints, updateBoundElements } from "./binding"; import type { MaybeTransformHandleType, TransformHandleDirection, @@ -51,6 +52,7 @@ import { } from "./textElement"; import { LinearElementEditor } from "./linearElementEditor"; import { isInGroup } from "../groups"; +import { mutateElbowArrow } from "./routing"; export const normalizeAngle = (angle: number): number => { if (angle < 0) { @@ -75,18 +77,21 @@ export const transformElements = ( pointerY: number, centerX: number, centerY: number, + scene: Scene, ) => { if (selectedElements.length === 1) { const [element] = selectedElements; if (transformHandleType === "rotation") { - rotateSingleElement( - element, - elementsMap, - pointerX, - pointerY, - shouldRotateWithDiscreteAngle, - ); - updateBoundElements(element, elementsMap); + if (!isElbowArrow(element)) { + rotateSingleElement( + element, + elementsMap, + pointerX, + pointerY, + shouldRotateWithDiscreteAngle, + ); + updateBoundElements(element, elementsMap, scene); + } } else if (isTextElement(element) && transformHandleType) { resizeSingleTextElement( originalElements, @@ -97,7 +102,7 @@ export const transformElements = ( pointerX, pointerY, ); - updateBoundElements(element, elementsMap); + updateBoundElements(element, elementsMap, scene); } else if (transformHandleType) { resizeSingleElement( originalElements, @@ -108,6 +113,7 @@ export const transformElements = ( shouldResizeFromCenter, pointerX, pointerY, + scene, ); } @@ -123,6 +129,7 @@ export const transformElements = ( shouldRotateWithDiscreteAngle, centerX, centerY, + scene, ); return true; } else if (transformHandleType) { @@ -135,6 +142,7 @@ export const transformElements = ( shouldMaintainAspectRatio, pointerX, pointerY, + scene, ); return true; } @@ -431,7 +439,17 @@ export const resizeSingleElement = ( shouldResizeFromCenter: boolean, pointerX: number, pointerY: number, + scene: Scene, ) => { + // Elbow arrows cannot be resized when bound on either end + if ( + isArrowElement(element) && + isElbowArrow(element) && + (element.startBinding || element.endBinding) + ) { + return; + } + const stateAtResizeStart = originalElements.get(element.id)!; // Gets bounds corners const [x1, y1, x2, y2] = getResizedElementAbsoluteCoords( @@ -701,8 +719,11 @@ export const resizeSingleElement = ( ) { mutateElement(element, resizedElement); - updateBoundElements(element, elementsMap, { - newSize: { width: resizedElement.width, height: resizedElement.height }, + updateBoundElements(element, elementsMap, scene, { + oldSize: { + width: stateAtResizeStart.width, + height: stateAtResizeStart.height, + }, }); if (boundTextElement && boundTextFont != null) { @@ -728,6 +749,7 @@ export const resizeMultipleElements = ( shouldMaintainAspectRatio: boolean, pointerX: number, pointerY: number, + scene: Scene, ) => { // map selected elements to the original elements. While it never should // happen that pointerDownState.originalElements won't contain the selected @@ -955,13 +977,20 @@ export const resizeMultipleElements = ( element, update: { boundTextFontSize, ...update }, } of elementsAndUpdates) { - const { width, height, angle } = update; + const { angle } = update; + const { width: oldWidth, height: oldHeight } = element; mutateElement(element, update, false); - updateBoundElements(element, elementsMap, { + if (isArrowElement(element) && isElbowArrow(element)) { + mutateElbowArrow(element, scene, element.points, undefined, undefined, { + informMutation: false, + }); + } + + updateBoundElements(element, elementsMap, scene, { simultaneouslyUpdated: elementsToUpdate, - newSize: { width, height }, + oldSize: { width: oldWidth, height: oldHeight }, }); const boundTextElement = getBoundTextElement(element, elementsMap); @@ -990,6 +1019,7 @@ const rotateMultipleElements = ( shouldRotateWithDiscreteAngle: boolean, centerX: number, centerY: number, + scene: Scene, ) => { let centerAngle = (5 * Math.PI) / 2 + Math.atan2(pointerY - centerY, pointerX - centerX); @@ -1013,16 +1043,23 @@ const rotateMultipleElements = ( centerY, centerAngle + origAngle - element.angle, ); - mutateElement( - element, - { - x: element.x + (rotatedCX - cx), - y: element.y + (rotatedCY - cy), - angle: normalizeAngle(centerAngle + origAngle), - }, - false, - ); - updateBoundElements(element, elementsMap, { + + if (isArrowElement(element) && isElbowArrow(element)) { + const points = getArrowLocalFixedPoints(element, elementsMap); + mutateElbowArrow(element, scene, points); + } else { + mutateElement( + element, + { + x: element.x + (rotatedCX - cx), + y: element.y + (rotatedCY - cy), + angle: normalizeAngle(centerAngle + origAngle), + }, + false, + ); + } + + updateBoundElements(element, elementsMap, scene, { simultaneouslyUpdated: elements, }); diff --git a/packages/excalidraw/element/routing.test.tsx b/packages/excalidraw/element/routing.test.tsx new file mode 100644 index 000000000..d159deeaa --- /dev/null +++ b/packages/excalidraw/element/routing.test.tsx @@ -0,0 +1,216 @@ +import React from "react"; +import Scene from "../scene/Scene"; +import { API } from "../tests/helpers/api"; +import { Pointer, UI } from "../tests/helpers/ui"; +import { + fireEvent, + GlobalTestState, + queryByTestId, + render, +} from "../tests/test-utils"; +import { bindLinearElement } from "./binding"; +import { Excalidraw } from "../index"; +import { mutateElbowArrow } from "./routing"; +import type { + ExcalidrawArrowElement, + ExcalidrawBindableElement, + ExcalidrawElbowArrowElement, +} from "./types"; +import { ARROW_TYPE } from "../constants"; + +const { h } = window; + +const mouse = new Pointer("mouse"); + +const editInput = (input: HTMLInputElement, value: string) => { + input.focus(); + fireEvent.change(input, { target: { value } }); + input.blur(); +}; + +const getStatsProperty = (label: string) => { + const elementStats = UI.queryStats()?.querySelector("#elementStats"); + + if (elementStats) { + const properties = elementStats?.querySelector(".statsItem"); + return ( + properties?.querySelector?.( + `.drag-input-container[data-testid="${label}"]`, + ) || null + ); + } + + return null; +}; + +describe("elbow arrow routing", () => { + it("can properly generate orthogonal arrow points", () => { + const scene = new Scene(); + const arrow = API.createElement({ + type: "arrow", + elbowed: true, + }) as ExcalidrawElbowArrowElement; + scene.insertElement(arrow); + mutateElbowArrow(arrow, scene, [ + [-45 - arrow.x, -100.1 - arrow.y], + [45 - arrow.x, 99.9 - arrow.y], + ]); + expect(arrow.points).toEqual([ + [0, 0], + [0, 100], + [90, 100], + [90, 200], + ]); + expect(arrow.x).toEqual(-45); + expect(arrow.y).toEqual(-100.1); + expect(arrow.width).toEqual(90); + expect(arrow.height).toEqual(200); + }); + it("can generate proper points for bound elbow arrow", () => { + const scene = new Scene(); + const rectangle1 = API.createElement({ + type: "rectangle", + x: -150, + y: -150, + width: 100, + height: 100, + }) as ExcalidrawBindableElement; + const rectangle2 = API.createElement({ + type: "rectangle", + x: 50, + y: 50, + width: 100, + height: 100, + }) as ExcalidrawBindableElement; + const arrow = API.createElement({ + type: "arrow", + elbowed: true, + x: -45, + y: -100.1, + width: 90, + height: 200, + points: [ + [0, 0], + [90, 200], + ], + }) as ExcalidrawElbowArrowElement; + scene.insertElement(rectangle1); + scene.insertElement(rectangle2); + scene.insertElement(arrow); + const elementsMap = scene.getNonDeletedElementsMap(); + bindLinearElement(arrow, rectangle1, "start", elementsMap); + bindLinearElement(arrow, rectangle2, "end", elementsMap); + + expect(arrow.startBinding).not.toBe(null); + expect(arrow.endBinding).not.toBe(null); + + mutateElbowArrow(arrow, scene, [ + [0, 0], + [90, 200], + ]); + + expect(arrow.points).toEqual([ + [0, 0], + [45, 0], + [45, 200], + [90, 200], + ]); + }); +}); + +describe("elbow arrow ui", () => { + beforeEach(async () => { + await render(); + }); + + it("can follow bound shapes", async () => { + UI.createElement("rectangle", { + x: -150, + y: -150, + width: 100, + height: 100, + }); + UI.createElement("rectangle", { + x: 50, + y: 50, + width: 100, + height: 100, + }); + + UI.clickTool("arrow"); + UI.clickOnTestId("elbow-arrow"); + + expect(h.state.currentItemArrowType).toBe(ARROW_TYPE.elbow); + + mouse.reset(); + mouse.moveTo(-43, -99); + mouse.click(); + mouse.moveTo(43, 99); + mouse.click(); + + const arrow = h.scene.getSelectedElements( + h.state, + )[0] as ExcalidrawArrowElement; + + expect(arrow.type).toBe("arrow"); + expect(arrow.elbowed).toBe(true); + expect(arrow.points).toEqual([ + [0, 0], + [35, 0], + [35, 200], + [90, 200], + ]); + }); + + it("can follow bound rotated shapes", async () => { + UI.createElement("rectangle", { + x: -150, + y: -150, + width: 100, + height: 100, + }); + UI.createElement("rectangle", { + x: 50, + y: 50, + width: 100, + height: 100, + }); + + UI.clickTool("arrow"); + UI.clickOnTestId("elbow-arrow"); + + mouse.reset(); + mouse.moveTo(-43, -99); + mouse.click(); + mouse.moveTo(43, 99); + mouse.click(); + + const arrow = h.scene.getSelectedElements( + h.state, + )[0] as ExcalidrawArrowElement; + + fireEvent.contextMenu(GlobalTestState.interactiveCanvas, { + button: 2, + clientX: 1, + clientY: 1, + }); + const contextMenu = UI.queryContextMenu(); + fireEvent.click(queryByTestId(contextMenu!, "stats")!); + + mouse.click(51, 51); + + const inputAngle = getStatsProperty("A")?.querySelector( + ".drag-input", + ) as HTMLInputElement; + editInput(inputAngle, String("40")); + + expect(arrow.points.map((point) => point.map(Math.round))).toEqual([ + [0, 0], + [35, 0], + [35, 90], + [25, 90], + [25, 165], + [103, 165], + ]); + }); +}); diff --git a/packages/excalidraw/element/routing.ts b/packages/excalidraw/element/routing.ts new file mode 100644 index 000000000..d4745a691 --- /dev/null +++ b/packages/excalidraw/element/routing.ts @@ -0,0 +1,1036 @@ +import { cross } from "../../utils/geometry/geometry"; +import BinaryHeap from "../binaryheap"; +import { + aabbForElement, + arePointsEqual, + pointInsideBounds, + pointToVector, + scalePointFromOrigin, + scaleVector, + translatePoint, +} from "../math"; +import { getSizeFromPoints } from "../points"; +import type Scene from "../scene/Scene"; +import type { Point } from "../types"; +import { isAnyTrue, toBrandedType, tupleToCoors } from "../utils"; +import { + bindPointToSnapToElementOutline, + distanceToBindableElement, + avoidRectangularCorner, + getHoveredElementForBinding, + FIXED_BINDING_DISTANCE, + getHeadingForElbowArrowSnap, + getGlobalFixedPointForBindableElement, + snapToMid, +} from "./binding"; +import type { Bounds } from "./bounds"; +import type { Heading } from "./heading"; +import { + HEADING_DOWN, + HEADING_LEFT, + HEADING_RIGHT, + HEADING_UP, + vectorToHeading, +} from "./heading"; +import { mutateElement } from "./mutateElement"; +import { isBindableElement, isRectanguloidElement } from "./typeChecks"; +import type { + ExcalidrawElbowArrowElement, + FixedPointBinding, + NonDeletedExcalidrawElement, + NonDeletedSceneElementsMap, +} from "./types"; +import type { + ElementsMap, + ExcalidrawBindableElement, + OrderedExcalidrawElement, +} from "./types"; + +type Node = { + f: number; + g: number; + h: number; + closed: boolean; + visited: boolean; + parent: Node | null; + pos: Point; + addr: [number, number]; +}; + +type Grid = { + row: number; + col: number; + data: (Node | null)[]; +}; + +const BASE_PADDING = 40; + +export const mutateElbowArrow = ( + arrow: ExcalidrawElbowArrowElement, + scene: Scene, + nextPoints: readonly Point[], + offset?: Point, + otherUpdates?: { + startBinding?: FixedPointBinding | null; + endBinding?: FixedPointBinding | null; + }, + options?: { + changedElements?: Map; + isDragging?: boolean; + disableBinding?: boolean; + informMutation?: boolean; + }, +) => { + const elements = getAllElements(scene, options?.changedElements); + const elementsMap = getAllElementsMap(scene, options?.changedElements); + + const origStartGlobalPoint = translatePoint(nextPoints[0], [ + arrow.x + (offset ? offset[0] : 0), + arrow.y + (offset ? offset[1] : 0), + ]); + const origEndGlobalPoint = translatePoint(nextPoints[nextPoints.length - 1], [ + arrow.x + (offset ? offset[0] : 0), + arrow.y + (offset ? offset[1] : 0), + ]); + + const startElement = + arrow.startBinding && + getBindableElementForId(arrow.startBinding.elementId, elementsMap); + const endElement = + arrow.endBinding && + getBindableElementForId(arrow.endBinding.elementId, elementsMap); + const hoveredStartElement = options?.isDragging + ? getHoveredElementForBinding( + tupleToCoors(origStartGlobalPoint), + elements, + elementsMap, + true, + ) + : startElement; + const hoveredEndElement = options?.isDragging + ? getHoveredElementForBinding( + tupleToCoors(origEndGlobalPoint), + elements, + elementsMap, + true, + ) + : endElement; + const startGlobalPoint = getGlobalPoint( + arrow.startBinding?.fixedPoint, + origStartGlobalPoint, + origEndGlobalPoint, + elementsMap, + startElement, + hoveredStartElement, + options?.isDragging, + ); + const endGlobalPoint = getGlobalPoint( + arrow.endBinding?.fixedPoint, + origEndGlobalPoint, + origStartGlobalPoint, + elementsMap, + endElement, + hoveredEndElement, + options?.isDragging, + ); + const startHeading = getBindPointHeading( + startGlobalPoint, + endGlobalPoint, + elementsMap, + hoveredStartElement, + origStartGlobalPoint, + ); + const endHeading = getBindPointHeading( + endGlobalPoint, + startGlobalPoint, + elementsMap, + hoveredEndElement, + origEndGlobalPoint, + ); + const startPointBounds = [ + startGlobalPoint[0] - 2, + startGlobalPoint[1] - 2, + startGlobalPoint[0] + 2, + startGlobalPoint[1] + 2, + ] as Bounds; + const endPointBounds = [ + endGlobalPoint[0] - 2, + endGlobalPoint[1] - 2, + endGlobalPoint[0] + 2, + endGlobalPoint[1] + 2, + ] as Bounds; + const startElementBounds = hoveredStartElement + ? aabbForElement( + hoveredStartElement, + offsetFromHeading( + startHeading, + arrow.startArrowhead + ? FIXED_BINDING_DISTANCE * 6 + : FIXED_BINDING_DISTANCE * 2, + 1, + ), + ) + : startPointBounds; + const endElementBounds = hoveredEndElement + ? aabbForElement( + hoveredEndElement, + offsetFromHeading( + endHeading, + arrow.endArrowhead + ? FIXED_BINDING_DISTANCE * 6 + : FIXED_BINDING_DISTANCE * 2, + 1, + ), + ) + : endPointBounds; + const boundsOverlap = + pointInsideBounds( + startGlobalPoint, + hoveredEndElement + ? aabbForElement( + hoveredEndElement, + offsetFromHeading(endHeading, BASE_PADDING, BASE_PADDING), + ) + : endPointBounds, + ) || + pointInsideBounds( + endGlobalPoint, + hoveredStartElement + ? aabbForElement( + hoveredStartElement, + offsetFromHeading(startHeading, BASE_PADDING, BASE_PADDING), + ) + : startPointBounds, + ); + const commonBounds = commonAABB( + boundsOverlap + ? [startPointBounds, endPointBounds] + : [startElementBounds, endElementBounds], + ); + const dynamicAABBs = generateDynamicAABBs( + boundsOverlap ? startPointBounds : startElementBounds, + boundsOverlap ? endPointBounds : endElementBounds, + commonBounds, + boundsOverlap + ? offsetFromHeading( + startHeading, + !hoveredStartElement && !hoveredEndElement ? 0 : BASE_PADDING, + 0, + ) + : offsetFromHeading( + startHeading, + !hoveredStartElement && !hoveredEndElement + ? 0 + : BASE_PADDING - + (arrow.startArrowhead + ? FIXED_BINDING_DISTANCE * 6 + : FIXED_BINDING_DISTANCE * 2), + BASE_PADDING, + ), + boundsOverlap + ? offsetFromHeading( + endHeading, + !hoveredStartElement && !hoveredEndElement ? 0 : BASE_PADDING, + 0, + ) + : offsetFromHeading( + endHeading, + !hoveredStartElement && !hoveredEndElement + ? 0 + : BASE_PADDING - + (arrow.endArrowhead + ? FIXED_BINDING_DISTANCE * 6 + : FIXED_BINDING_DISTANCE * 2), + BASE_PADDING, + ), + boundsOverlap, + ); + const startDonglePosition = getDonglePosition( + dynamicAABBs[0], + startHeading, + startGlobalPoint, + ); + const endDonglePosition = getDonglePosition( + dynamicAABBs[1], + endHeading, + endGlobalPoint, + ); + + // Canculate Grid positions + const grid = calculateGrid( + dynamicAABBs, + startDonglePosition ? startDonglePosition : startGlobalPoint, + startHeading, + endDonglePosition ? endDonglePosition : endGlobalPoint, + endHeading, + commonBounds, + ); + + const startDongle = + startDonglePosition && pointToGridNode(startDonglePosition, grid); + const endDongle = + endDonglePosition && pointToGridNode(endDonglePosition, grid); + + // Do not allow stepping on the true end or true start points + const endNode = pointToGridNode(endGlobalPoint, grid); + if (endNode && hoveredEndElement) { + endNode.closed = true; + } + const startNode = pointToGridNode(startGlobalPoint, grid); + if (startNode && arrow.startBinding) { + startNode.closed = true; + } + const dongleOverlap = + startDongle && + endDongle && + (pointInsideBounds(startDongle.pos, dynamicAABBs[1]) || + pointInsideBounds(endDongle.pos, dynamicAABBs[0])); + + // Create path to end dongle from start dongle + const path = astar( + startDongle ? startDongle : startNode!, + endDongle ? endDongle : endNode!, + grid, + startHeading ? startHeading : HEADING_RIGHT, + endHeading ? endHeading : HEADING_RIGHT, + dongleOverlap ? [] : dynamicAABBs, + ); + + if (path) { + const points = path.map((node) => [node.pos[0], node.pos[1]]) as Point[]; + startDongle && points.unshift(startGlobalPoint); + endDongle && points.push(endGlobalPoint); + + mutateElement( + arrow, + { + ...otherUpdates, + ...normalizedArrowElementUpdate(simplifyElbowArrowPoints(points), 0, 0), + angle: 0, + }, + options?.informMutation, + ); + } else { + console.error("Elbow arrow cannot find a route"); + } +}; + +const offsetFromHeading = ( + heading: Heading, + head: number, + side: number, +): [number, number, number, number] => { + switch (heading) { + case HEADING_UP: + return [head, side, side, side]; + case HEADING_RIGHT: + return [side, head, side, side]; + case HEADING_DOWN: + return [side, side, head, side]; + } + + return [side, side, side, head]; +}; + +/** + * Routing algorithm based on the A* path search algorithm. + * @see https://www.geeksforgeeks.org/a-search-algorithm/ + * + * Binary heap is used to optimize node lookup. + * See {@link calculateGrid} for the grid calculation details. + * + * Additional modifications added due to aesthetic route reasons: + * 1) Arrow segment direction change is penalized by specific linear constant (bendMultiplier) + * 2) Arrow segments are not allowed to go "backwards", overlapping with the previous segment + */ +const astar = ( + start: Node, + end: Node, + grid: Grid, + startHeading: Heading, + endHeading: Heading, + aabbs: Bounds[], +) => { + const bendMultiplier = m_dist(start.pos, end.pos); + const open = new BinaryHeap((node) => node.f); + + open.push(start); + + while (open.size() > 0) { + // Grab the lowest f(x) to process next. Heap keeps this sorted for us. + const current = open.pop(); + + if (!current || current.closed) { + // Current is not passable, continue with next element + continue; + } + + // End case -- result has been found, return the traced path. + if (current === end) { + return pathTo(start, current); + } + + // Normal case -- move current from open to closed, process each of its neighbors. + current.closed = true; + + // Find all neighbors for the current node. + const neighbors = getNeighbors(current.addr, grid); + + for (let i = 0; i < 4; i++) { + const neighbor = neighbors[i]; + + if (!neighbor || neighbor.closed) { + // Not a valid node to process, skip to next neighbor. + continue; + } + + // Intersect + const neighborHalfPoint = scalePointFromOrigin( + neighbor.pos, + current.pos, + 0.5, + ); + if ( + isAnyTrue( + ...aabbs.map((aabb) => pointInsideBounds(neighborHalfPoint, aabb)), + ) + ) { + continue; + } + + // The g score is the shortest distance from start to current node. + // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet. + const neighborHeading = neighborIndexToHeading(i as 0 | 1 | 2 | 3); + const previousDirection = current.parent + ? vectorToHeading(pointToVector(current.pos, current.parent.pos)) + : startHeading; + + // Do not allow going in reverse + const reverseHeading = scaleVector(previousDirection, -1); + const neighborIsReverseRoute = + arePointsEqual(reverseHeading, neighborHeading) || + (arePointsEqual(start.addr, neighbor.addr) && + arePointsEqual(neighborHeading, startHeading)) || + (arePointsEqual(end.addr, neighbor.addr) && + arePointsEqual(neighborHeading, endHeading)); + if (neighborIsReverseRoute) { + continue; + } + + const directionChange = previousDirection !== neighborHeading; + const gScore = + current.g + + m_dist(neighbor.pos, current.pos) + + (directionChange ? Math.pow(bendMultiplier, 3) : 0); + + const beenVisited = neighbor.visited; + + if (!beenVisited || gScore < neighbor.g) { + const estBendCount = estimateSegmentCount( + neighbor, + end, + neighborHeading, + endHeading, + ); + // Found an optimal (so far) path to this node. Take score for node to see how good it is. + neighbor.visited = true; + neighbor.parent = current; + neighbor.h = + m_dist(end.pos, neighbor.pos) + + estBendCount * Math.pow(bendMultiplier, 2); + neighbor.g = gScore; + neighbor.f = neighbor.g + neighbor.h; + if (!beenVisited) { + // Pushing to heap will put it in proper place based on the 'f' value. + open.push(neighbor); + } else { + // Already seen the node, but since it has been rescored we need to reorder it in the heap + open.rescoreElement(neighbor); + } + } + } + } + + return null; +}; + +const pathTo = (start: Node, node: Node) => { + let curr = node; + const path = []; + while (curr.parent) { + path.unshift(curr); + curr = curr.parent; + } + path.unshift(start); + + return path; +}; + +const m_dist = (a: Point, b: Point) => + Math.abs(a[0] - b[0]) + Math.abs(a[1] - b[1]); + +/** + * Create dynamically resizing, always touching + * bounding boxes having a minimum extent represented + * by the given static bounds. + */ +const generateDynamicAABBs = ( + a: Bounds, + b: Bounds, + common: Bounds, + startDifference?: [number, number, number, number], + endDifference?: [number, number, number, number], + disableSideHack?: boolean, +): Bounds[] => { + const [startUp, startRight, startDown, startLeft] = startDifference ?? [ + 0, 0, 0, 0, + ]; + const [endUp, endRight, endDown, endLeft] = endDifference ?? [0, 0, 0, 0]; + + const first = [ + a[0] > b[2] + ? a[1] > b[3] || a[3] < b[1] + ? Math.min((a[0] + b[2]) / 2, a[0] - startLeft) + : (a[0] + b[2]) / 2 + : a[0] > b[0] + ? a[0] - startLeft + : common[0] - startLeft, + a[1] > b[3] + ? a[0] > b[2] || a[2] < b[0] + ? Math.min((a[1] + b[3]) / 2, a[1] - startUp) + : (a[1] + b[3]) / 2 + : a[1] > b[1] + ? a[1] - startUp + : common[1] - startUp, + a[2] < b[0] + ? a[1] > b[3] || a[3] < b[1] + ? Math.max((a[2] + b[0]) / 2, a[2] + startRight) + : (a[2] + b[0]) / 2 + : a[2] < b[2] + ? a[2] + startRight + : common[2] + startRight, + a[3] < b[1] + ? a[0] > b[2] || a[2] < b[0] + ? Math.max((a[3] + b[1]) / 2, a[3] + startDown) + : (a[3] + b[1]) / 2 + : a[3] < b[3] + ? a[3] + startDown + : common[3] + startDown, + ] as Bounds; + const second = [ + b[0] > a[2] + ? b[1] > a[3] || b[3] < a[1] + ? Math.min((b[0] + a[2]) / 2, b[0] - endLeft) + : (b[0] + a[2]) / 2 + : b[0] > a[0] + ? b[0] - endLeft + : common[0] - endLeft, + b[1] > a[3] + ? b[0] > a[2] || b[2] < a[0] + ? Math.min((b[1] + a[3]) / 2, b[1] - endUp) + : (b[1] + a[3]) / 2 + : b[1] > a[1] + ? b[1] - endUp + : common[1] - endUp, + b[2] < a[0] + ? b[1] > a[3] || b[3] < a[1] + ? Math.max((b[2] + a[0]) / 2, b[2] + endRight) + : (b[2] + a[0]) / 2 + : b[2] < a[2] + ? b[2] + endRight + : common[2] + endRight, + b[3] < a[1] + ? b[0] > a[2] || b[2] < a[0] + ? Math.max((b[3] + a[1]) / 2, b[3] + endDown) + : (b[3] + a[1]) / 2 + : b[3] < a[3] + ? b[3] + endDown + : common[3] + endDown, + ] as Bounds; + + const c = commonAABB([first, second]); + if ( + !disableSideHack && + first[2] - first[0] + second[2] - second[0] > c[2] - c[0] + 0.00000000001 && + first[3] - first[1] + second[3] - second[1] > c[3] - c[1] + 0.00000000001 + ) { + const [endCenterX, endCenterY] = [ + (second[0] + second[2]) / 2, + (second[1] + second[3]) / 2, + ]; + if (b[0] > a[2] && a[1] > b[3]) { + // BOTTOM LEFT + const cX = first[2] + (second[0] - first[2]) / 2; + const cY = second[3] + (first[1] - second[3]) / 2; + + if (cross([a[2], a[1]], [a[0], a[3]], [endCenterX, endCenterY]) > 0) { + return [ + [first[0], first[1], cX, first[3]], + [cX, second[1], second[2], second[3]], + ]; + } + + return [ + [first[0], cY, first[2], first[3]], + [second[0], second[1], second[2], cY], + ]; + } else if (a[2] < b[0] && a[3] < b[1]) { + // TOP LEFT + const cX = first[2] + (second[0] - first[2]) / 2; + const cY = first[3] + (second[1] - first[3]) / 2; + + if (cross([a[0], a[1]], [a[2], a[3]], [endCenterX, endCenterY]) > 0) { + return [ + [first[0], first[1], first[2], cY], + [second[0], cY, second[2], second[3]], + ]; + } + + return [ + [first[0], first[1], cX, first[3]], + [cX, second[1], second[2], second[3]], + ]; + } else if (a[0] > b[2] && a[3] < b[1]) { + // TOP RIGHT + const cX = second[2] + (first[0] - second[2]) / 2; + const cY = first[3] + (second[1] - first[3]) / 2; + + if (cross([a[2], a[1]], [a[0], a[3]], [endCenterX, endCenterY]) > 0) { + return [ + [cX, first[1], first[2], first[3]], + [second[0], second[1], cX, second[3]], + ]; + } + + return [ + [first[0], first[1], first[2], cY], + [second[0], cY, second[2], second[3]], + ]; + } else if (a[0] > b[2] && a[1] > b[3]) { + // BOTTOM RIGHT + const cX = second[2] + (first[0] - second[2]) / 2; + const cY = second[3] + (first[1] - second[3]) / 2; + + if (cross([a[0], a[1]], [a[2], a[3]], [endCenterX, endCenterY]) > 0) { + return [ + [cX, first[1], first[2], first[3]], + [second[0], second[1], cX, second[3]], + ]; + } + + return [ + [first[0], cY, first[2], first[3]], + [second[0], second[1], second[2], cY], + ]; + } + } + + return [first, second]; +}; + +/** + * Calculates the grid which is used as nodes at + * the grid line intersections by the A* algorithm. + * + * NOTE: This is not a uniform grid. It is built at + * various intersections of bounding boxes. + */ +const calculateGrid = ( + aabbs: Bounds[], + start: Point, + startHeading: Heading, + end: Point, + endHeading: Heading, + common: Bounds, +): Grid => { + const horizontal = new Set(); + const vertical = new Set(); + + if (startHeading === HEADING_LEFT || startHeading === HEADING_RIGHT) { + vertical.add(start[1]); + } else { + horizontal.add(start[0]); + } + if (endHeading === HEADING_LEFT || endHeading === HEADING_RIGHT) { + vertical.add(end[1]); + } else { + horizontal.add(end[0]); + } + + aabbs.forEach((aabb) => { + horizontal.add(aabb[0]); + horizontal.add(aabb[2]); + vertical.add(aabb[1]); + vertical.add(aabb[3]); + }); + + horizontal.add(common[0]); + horizontal.add(common[2]); + vertical.add(common[1]); + vertical.add(common[3]); + + const _vertical = Array.from(vertical).sort((a, b) => a - b); + const _horizontal = Array.from(horizontal).sort((a, b) => a - b); + + return { + row: _vertical.length, + col: _horizontal.length, + data: _vertical.flatMap((y, row) => + _horizontal.map( + (x, col): Node => ({ + f: 0, + g: 0, + h: 0, + closed: false, + visited: false, + parent: null, + addr: [col, row] as [number, number], + pos: [x, y] as Point, + }), + ), + ), + }; +}; + +const getDonglePosition = ( + bounds: Bounds, + heading: Heading, + point: Point, +): Point => { + switch (heading) { + case HEADING_UP: + return [point[0], bounds[1]]; + case HEADING_RIGHT: + return [bounds[2], point[1]]; + case HEADING_DOWN: + return [point[0], bounds[3]]; + } + return [bounds[0], point[1]]; +}; + +const estimateSegmentCount = ( + start: Node, + end: Node, + startHeading: Heading, + endHeading: Heading, +) => { + if (endHeading === HEADING_RIGHT) { + switch (startHeading) { + case HEADING_RIGHT: { + if (start.pos[0] >= end.pos[0]) { + return 4; + } + if (start.pos[1] === end.pos[1]) { + return 0; + } + return 2; + } + case HEADING_UP: + if (start.pos[1] > end.pos[1] && start.pos[0] < end.pos[0]) { + return 1; + } + return 3; + case HEADING_DOWN: + if (start.pos[1] < end.pos[1] && start.pos[0] < end.pos[0]) { + return 1; + } + return 3; + case HEADING_LEFT: + if (start.pos[1] === end.pos[1]) { + return 4; + } + return 2; + } + } else if (endHeading === HEADING_LEFT) { + switch (startHeading) { + case HEADING_RIGHT: + if (start.pos[1] === end.pos[1]) { + return 4; + } + return 2; + case HEADING_UP: + if (start.pos[1] > end.pos[1] && start.pos[0] > end.pos[0]) { + return 1; + } + return 3; + case HEADING_DOWN: + if (start.pos[1] < end.pos[1] && start.pos[0] > end.pos[0]) { + return 1; + } + return 3; + case HEADING_LEFT: + if (start.pos[0] <= end.pos[0]) { + return 4; + } + if (start.pos[1] === end.pos[1]) { + return 0; + } + return 2; + } + } else if (endHeading === HEADING_UP) { + switch (startHeading) { + case HEADING_RIGHT: + if (start.pos[1] > end.pos[1] && start.pos[0] < end.pos[0]) { + return 1; + } + return 3; + case HEADING_UP: + if (start.pos[1] >= end.pos[1]) { + return 4; + } + if (start.pos[0] === end.pos[0]) { + return 0; + } + return 2; + case HEADING_DOWN: + if (start.pos[0] === end.pos[0]) { + return 4; + } + return 2; + case HEADING_LEFT: + if (start.pos[1] > end.pos[1] && start.pos[0] > end.pos[0]) { + return 1; + } + return 3; + } + } else if (endHeading === HEADING_DOWN) { + switch (startHeading) { + case HEADING_RIGHT: + if (start.pos[1] < end.pos[1] && start.pos[0] < end.pos[0]) { + return 1; + } + return 3; + case HEADING_UP: + if (start.pos[0] === end.pos[0]) { + return 4; + } + return 2; + case HEADING_DOWN: + if (start.pos[1] <= end.pos[1]) { + return 4; + } + if (start.pos[0] === end.pos[0]) { + return 0; + } + return 2; + case HEADING_LEFT: + if (start.pos[1] < end.pos[1] && start.pos[0] > end.pos[0]) { + return 1; + } + return 3; + } + } + return 0; +}; + +/** + * Get neighboring points for a gived grid address + */ +const getNeighbors = ([col, row]: [number, number], grid: Grid) => + [ + gridNodeFromAddr([col, row - 1], grid), + gridNodeFromAddr([col + 1, row], grid), + gridNodeFromAddr([col, row + 1], grid), + gridNodeFromAddr([col - 1, row], grid), + ] as [Node | null, Node | null, Node | null, Node | null]; + +const gridNodeFromAddr = ( + [col, row]: [col: number, row: number], + grid: Grid, +): Node | null => { + if (col < 0 || col >= grid.col || row < 0 || row >= grid.row) { + return null; + } + + return grid.data[row * grid.col + col] ?? null; +}; + +/** + * Get node for global point on canvas (if exists) + */ +const pointToGridNode = (point: Point, grid: Grid): Node | null => { + for (let col = 0; col < grid.col; col++) { + for (let row = 0; row < grid.row; row++) { + const candidate = gridNodeFromAddr([col, row], grid); + if ( + candidate && + point[0] === candidate.pos[0] && + point[1] === candidate.pos[1] + ) { + return candidate; + } + } + } + + return null; +}; + +const commonAABB = (aabbs: Bounds[]): Bounds => [ + Math.min(...aabbs.map((aabb) => aabb[0])), + Math.min(...aabbs.map((aabb) => aabb[1])), + Math.max(...aabbs.map((aabb) => aabb[2])), + Math.max(...aabbs.map((aabb) => aabb[3])), +]; + +/// #region Utils + +const getBindableElementForId = ( + id: string, + elementsMap: ElementsMap, +): ExcalidrawBindableElement | null => { + const element = elementsMap.get(id); + if (element && isBindableElement(element)) { + return element; + } + + return null; +}; + +const normalizedArrowElementUpdate = ( + global: Point[], + externalOffsetX?: number, + externalOffsetY?: number, +) => { + const offsetX = global[0][0]; + const offsetY = global[0][1]; + + const points = global.map( + (point, _idx) => [point[0] - offsetX, point[1] - offsetY] as const, + ); + + return { + points, + x: offsetX + (externalOffsetX ?? 0), + y: offsetY + (externalOffsetY ?? 0), + ...getSizeFromPoints(points), + }; +}; + +/// If last and current segments have the same heading, skip the middle point +const simplifyElbowArrowPoints = (points: Point[]): Point[] => + points + .slice(2) + .reduce( + (result, point) => + arePointsEqual( + vectorToHeading( + pointToVector(result[result.length - 1], result[result.length - 2]), + ), + vectorToHeading(pointToVector(point, result[result.length - 1])), + ) + ? [...result.slice(0, -1), point] + : [...result, point], + [points[0] ?? [0, 0], points[1] ?? [1, 0]], + ); + +const neighborIndexToHeading = (idx: number): Heading => { + switch (idx) { + case 0: + return HEADING_UP; + case 1: + return HEADING_RIGHT; + case 2: + return HEADING_DOWN; + } + return HEADING_LEFT; +}; + +const getAllElementsMap = ( + scene: Scene, + changedElements?: Map, +): NonDeletedSceneElementsMap => + changedElements + ? toBrandedType( + new Map([...scene.getNonDeletedElementsMap(), ...changedElements]), + ) + : scene.getNonDeletedElementsMap(); + +const getAllElements = ( + scene: Scene, + changedElements?: Map, +): readonly NonDeletedExcalidrawElement[] => + changedElements + ? ([ + ...scene.getNonDeletedElements(), + ...[...changedElements].map(([_, value]) => value), + ] as NonDeletedExcalidrawElement[]) + : scene.getNonDeletedElements(); + +const getGlobalPoint = ( + fixedPointRatio: [number, number] | undefined | null, + initialPoint: Point, + otherPoint: Point, + elementsMap: NonDeletedSceneElementsMap, + boundElement?: ExcalidrawBindableElement | null, + hoveredElement?: ExcalidrawBindableElement | null, + isDragging?: boolean, +): Point => { + if (isDragging) { + if (hoveredElement) { + const snapPoint = getSnapPoint( + initialPoint, + otherPoint, + hoveredElement, + elementsMap, + ); + + return snapToMid(hoveredElement, snapPoint); + } + + return initialPoint; + } + + if (boundElement) { + const fixedGlobalPoint = getGlobalFixedPointForBindableElement( + fixedPointRatio || [0, 0], + boundElement, + ); + + // NOTE: Resize scales the binding position point too, so we need to update it + return Math.abs( + distanceToBindableElement(boundElement, fixedGlobalPoint, elementsMap) - + FIXED_BINDING_DISTANCE, + ) > 0.01 + ? getSnapPoint(initialPoint, otherPoint, boundElement, elementsMap) + : fixedGlobalPoint; + } + + return initialPoint; +}; + +const getSnapPoint = ( + point: Point, + otherPoint: Point, + element: ExcalidrawBindableElement, + elementsMap: ElementsMap, +) => + bindPointToSnapToElementOutline( + isRectanguloidElement(element) + ? avoidRectangularCorner(element, point) + : point, + otherPoint, + element, + elementsMap, + ); + +const getBindPointHeading = ( + point: Point, + otherPoint: Point, + elementsMap: NonDeletedSceneElementsMap, + hoveredElement: ExcalidrawBindableElement | null | undefined, + origPoint: Point, +) => + getHeadingForElbowArrowSnap( + point, + otherPoint, + hoveredElement, + hoveredElement && + aabbForElement( + hoveredElement, + Array(4).fill( + distanceToBindableElement(hoveredElement, point, elementsMap), + ) as [number, number, number, number], + ), + elementsMap, + origPoint, + ); diff --git a/packages/excalidraw/element/transformHandles.ts b/packages/excalidraw/element/transformHandles.ts index 0b642b274..e1ffd487f 100644 --- a/packages/excalidraw/element/transformHandles.ts +++ b/packages/excalidraw/element/transformHandles.ts @@ -9,7 +9,11 @@ import type { Bounds } from "./bounds"; import { getElementAbsoluteCoords } from "./bounds"; import { rotate } from "../math"; import type { Device, InteractiveCanvasAppState, Zoom } from "../types"; -import { isFrameLikeElement, isLinearElement } from "./typeChecks"; +import { + isElbowArrow, + isFrameLikeElement, + isLinearElement, +} from "./typeChecks"; import { DEFAULT_TRANSFORM_HANDLE_SPACING, isAndroid, @@ -262,7 +266,11 @@ export const getTransformHandles = ( // so that when locked element is selected (especially when you toggle lock // via keyboard) the locked element is visually distinct, indicating // you can't move/resize - if (element.locked) { + if ( + element.locked || + // Elbow arrows cannot be rotated + isElbowArrow(element) + ) { return {}; } @@ -312,6 +320,9 @@ export const shouldShowBoundingBox = ( return true; } const element = elements[0]; + if (isElbowArrow(element)) { + return false; + } if (!isLinearElement(element)) { return true; } diff --git a/packages/excalidraw/element/typeChecks.ts b/packages/excalidraw/element/typeChecks.ts index 347f41ce6..17eaaad54 100644 --- a/packages/excalidraw/element/typeChecks.ts +++ b/packages/excalidraw/element/typeChecks.ts @@ -21,6 +21,9 @@ import type { ExcalidrawIframeLikeElement, ExcalidrawMagicFrameElement, ExcalidrawArrowElement, + ExcalidrawElbowArrowElement, + PointBinding, + FixedPointBinding, } from "./types"; export const isInitializedImageElement = ( @@ -106,6 +109,12 @@ export const isArrowElement = ( return element != null && element.type === "arrow"; }; +export const isElbowArrow = ( + element?: ExcalidrawElement, +): element is ExcalidrawElbowArrowElement => { + return isArrowElement(element) && element.elbowed; +}; + export const isLinearElementType = ( elementType: ElementOrToolType, ): boolean => { @@ -150,6 +159,22 @@ export const isBindableElement = ( ); }; +export const isRectanguloidElement = ( + element?: ExcalidrawElement | null, +): element is ExcalidrawBindableElement => { + return ( + element != null && + (element.type === "rectangle" || + element.type === "diamond" || + element.type === "image" || + element.type === "iframe" || + element.type === "embeddable" || + element.type === "frame" || + element.type === "magicframe" || + (element.type === "text" && !element.containerId)) + ); +}; + export const isTextBindableContainer = ( element: ExcalidrawElement | null, includeLocked = true, @@ -263,3 +288,9 @@ export const getDefaultRoundnessTypeForElement = ( return null; }; + +export const isFixedPointBinding = ( + binding: PointBinding, +): binding is FixedPointBinding => { + return binding.fixedPoint != null; +}; diff --git a/packages/excalidraw/element/types.ts b/packages/excalidraw/element/types.ts index 700b7ed6c..52e810482 100644 --- a/packages/excalidraw/element/types.ts +++ b/packages/excalidraw/element/types.ts @@ -6,7 +6,12 @@ import type { THEME, VERTICAL_ALIGN, } from "../constants"; -import type { MakeBrand, MarkNonNullable, ValueOf } from "../utility-types"; +import type { + MakeBrand, + MarkNonNullable, + Merge, + ValueOf, +} from "../utility-types"; import type { MagicCacheData } from "../data/magic"; export type ChartType = "bar" | "line"; @@ -228,12 +233,22 @@ export type ExcalidrawTextElementWithContainer = { containerId: ExcalidrawTextContainer["id"]; } & ExcalidrawTextElement; +export type FixedPoint = [number, number]; + export type PointBinding = { elementId: ExcalidrawBindableElement["id"]; focus: number; gap: number; + // Represents the fixed point binding information in form of a vertical and + // horizontal ratio (i.e. a percentage value in the 0.0-1.0 range). This ratio + // gives the user selected fixed point by multiplying the bound element width + // with fixedPoint[0] and the bound element height with fixedPoint[1] to get the + // bound element-local point coordinate. + fixedPoint: FixedPoint | null; }; +export type FixedPointBinding = Merge; + export type Arrowhead = | "arrow" | "bar" @@ -259,8 +274,18 @@ export type ExcalidrawLinearElement = _ExcalidrawElementBase & export type ExcalidrawArrowElement = ExcalidrawLinearElement & Readonly<{ type: "arrow"; + elbowed: boolean; }>; +export type ExcalidrawElbowArrowElement = Merge< + ExcalidrawArrowElement, + { + elbowed: true; + startBinding: FixedPointBinding | null; + endBinding: FixedPointBinding | null; + } +>; + export type ExcalidrawFreeDrawElement = _ExcalidrawElementBase & Readonly<{ type: "freedraw"; diff --git a/packages/excalidraw/history.ts b/packages/excalidraw/history.ts index daed2a394..ea76df9b1 100644 --- a/packages/excalidraw/history.ts +++ b/packages/excalidraw/history.ts @@ -1,6 +1,7 @@ import type { AppStateChange, ElementsChange } from "./change"; import type { SceneElementsMap } from "./element/types"; import { Emitter } from "./emitter"; +import type Scene from "./scene/Scene"; import type { Snapshot } from "./store"; import type { AppState } from "./types"; @@ -64,6 +65,7 @@ export class History { elements: SceneElementsMap, appState: AppState, snapshot: Readonly, + scene: Scene, ) { return this.perform( elements, @@ -71,6 +73,7 @@ export class History { snapshot, () => History.pop(this.undoStack), (entry: HistoryEntry) => History.push(this.redoStack, entry, elements), + scene, ); } @@ -78,6 +81,7 @@ export class History { elements: SceneElementsMap, appState: AppState, snapshot: Readonly, + scene: Scene, ) { return this.perform( elements, @@ -85,6 +89,7 @@ export class History { snapshot, () => History.pop(this.redoStack), (entry: HistoryEntry) => History.push(this.undoStack, entry, elements), + scene, ); } @@ -94,6 +99,7 @@ export class History { snapshot: Readonly, pop: () => HistoryEntry | null, push: (entry: HistoryEntry) => void, + scene: Scene, ): [SceneElementsMap, AppState] | void { try { let historyEntry = pop(); @@ -110,7 +116,7 @@ export class History { while (historyEntry) { try { [nextElements, nextAppState, containsVisibleChange] = - historyEntry.applyTo(nextElements, nextAppState, snapshot); + historyEntry.applyTo(nextElements, nextAppState, snapshot, scene); } finally { // make sure to always push / pop, even if the increment is corrupted push(historyEntry); @@ -181,9 +187,10 @@ export class HistoryEntry { elements: SceneElementsMap, appState: AppState, snapshot: Readonly, + scene: Scene, ): [SceneElementsMap, AppState, boolean] { const [nextElements, elementsContainVisibleChange] = - this.elementsChange.applyTo(elements, snapshot.elements); + this.elementsChange.applyTo(elements, snapshot.elements, scene); const [nextAppState, appStateContainsVisibleChange] = this.appStateChange.applyTo(appState, nextElements); diff --git a/packages/excalidraw/locales/en.json b/packages/excalidraw/locales/en.json index 2fe441810..afb213df1 100644 --- a/packages/excalidraw/locales/en.json +++ b/packages/excalidraw/locales/en.json @@ -46,6 +46,10 @@ "arrowhead_triangle_outline": "Triangle (outline)", "arrowhead_diamond": "Diamond", "arrowhead_diamond_outline": "Diamond (outline)", + "arrowtypes": "Arrow type", + "arrowtype_sharp": "Sharp arrow", + "arrowtype_round": "Curved arrow", + "arrowtype_elbowed": "Elbow arrow", "fontSize": "Font size", "fontFamily": "Font family", "addWatermark": "Add \"Made with Excalidraw\"", @@ -295,6 +299,7 @@ "hints": { "canvasPanning": "To move canvas, hold mouse wheel or spacebar while dragging, or use the hand tool", "linearElement": "Click to start multiple points, drag for single line", + "arrowTool": "Click to start multiple points, drag for single line. Press {{arrowShortcut}} again to change arrow type.", "freeDraw": "Click and drag, release when you're finished", "text": "Tip: you can also add text by double-clicking anywhere with the selection tool", "embeddable": "Click-drag to create a website embed", diff --git a/packages/excalidraw/math.test.ts b/packages/excalidraw/math.test.ts index eb5392eed..0d2342838 100644 --- a/packages/excalidraw/math.test.ts +++ b/packages/excalidraw/math.test.ts @@ -1,4 +1,9 @@ -import { rangeIntersection, rangesOverlap, rotate } from "./math"; +import { + isPointOnSymmetricArc, + rangeIntersection, + rangesOverlap, + rotate, +} from "./math"; describe("rotate", () => { it("should rotate over (x2, y2) and return the rotated coordinates for (x1, y1)", () => { @@ -53,3 +58,42 @@ describe("range intersection", () => { expect(rangeIntersection([1, 4], [5, 7])).toEqual(null); }); }); + +describe("point on arc", () => { + it("should detect point on simple arc", () => { + expect( + isPointOnSymmetricArc( + { + radius: 1, + startAngle: -Math.PI / 4, + endAngle: Math.PI / 4, + }, + [0.92291667, 0.385], + ), + ).toBe(true); + }); + it("should not detect point outside of a simple arc", () => { + expect( + isPointOnSymmetricArc( + { + radius: 1, + startAngle: -Math.PI / 4, + endAngle: Math.PI / 4, + }, + [-0.92291667, 0.385], + ), + ).toBe(false); + }); + it("should not detect point with good angle but incorrect radius", () => { + expect( + isPointOnSymmetricArc( + { + radius: 1, + startAngle: -Math.PI / 4, + endAngle: Math.PI / 4, + }, + [-0.5, 0.5], + ), + ).toBe(false); + }); +}); diff --git a/packages/excalidraw/math.ts b/packages/excalidraw/math.ts index d84ee7e06..0f84ce98a 100644 --- a/packages/excalidraw/math.ts +++ b/packages/excalidraw/math.ts @@ -10,9 +10,11 @@ import type { ExcalidrawLinearElement, NonDeleted, } from "./element/types"; +import type { Bounds } from "./element/bounds"; import { getCurvePathOps } from "./element/bounds"; import type { Mutable } from "./utility-types"; import { ShapeCache } from "./scene/ShapeCache"; +import type { Vector } from "../utils/geometry/shape"; export const rotate = ( // target point to rotate @@ -153,6 +155,12 @@ export const distance2d = (x1: number, y1: number, x2: number, y2: number) => { return Math.hypot(xd, yd); }; +export const distanceSq2d = (p1: Point, p2: Point) => { + const xd = p2[0] - p1[0]; + const yd = p2[1] - p1[1]; + return xd * xd + yd * yd; +}; + export const centerPoint = (a: Point, b: Point): Point => { return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2]; }; @@ -519,3 +527,179 @@ export const rangeIntersection = ( export const isValueInRange = (value: number, min: number, max: number) => { return value >= min && value <= max; }; + +export const translatePoint = (p: Point, v: Vector): Point => [ + p[0] + v[0], + p[1] + v[1], +]; + +export const scaleVector = (v: Vector, scalar: number): Vector => [ + v[0] * scalar, + v[1] * scalar, +]; + +export const pointToVector = (p: Point, origin: Point = [0, 0]): Vector => [ + p[0] - origin[0], + p[1] - origin[1], +]; + +export const scalePointFromOrigin = ( + p: Point, + mid: Point, + multiplier: number, +) => translatePoint(mid, scaleVector(pointToVector(p, mid), multiplier)); + +const triangleSign = (p1: Point, p2: Point, p3: Point): number => + (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1]); + +export const PointInTriangle = (pt: Point, v1: Point, v2: Point, v3: Point) => { + const d1 = triangleSign(pt, v1, v2); + const d2 = triangleSign(pt, v2, v3); + const d3 = triangleSign(pt, v3, v1); + + const has_neg = d1 < 0 || d2 < 0 || d3 < 0; + const has_pos = d1 > 0 || d2 > 0 || d3 > 0; + + return !(has_neg && has_pos); +}; + +export const magnitudeSq = (vector: Vector) => + vector[0] * vector[0] + vector[1] * vector[1]; + +export const magnitude = (vector: Vector) => Math.sqrt(magnitudeSq(vector)); + +export const normalize = (vector: Vector): Vector => { + const m = magnitude(vector); + + return [vector[0] / m, vector[1] / m]; +}; + +export const addVectors = ( + vec1: Readonly, + vec2: Readonly, +): Vector => [vec1[0] + vec2[0], vec1[1] + vec2[1]]; + +export const subtractVectors = ( + vec1: Readonly, + vec2: Readonly, +): Vector => [vec1[0] - vec2[0], vec1[1] - vec2[1]]; + +export const pointInsideBounds = (p: Point, bounds: Bounds): boolean => + p[0] > bounds[0] && p[0] < bounds[2] && p[1] > bounds[1] && p[1] < bounds[3]; + +/** + * Get the axis-aligned bounding box for a given element + */ +export const aabbForElement = ( + element: Readonly, + offset?: [number, number, number, number], +) => { + const bbox = { + minX: element.x, + minY: element.y, + maxX: element.x + element.width, + maxY: element.y + element.height, + midX: element.x + element.width / 2, + midY: element.y + element.height / 2, + }; + + const center = [bbox.midX, bbox.midY] as Point; + const [topLeftX, topLeftY] = rotatePoint( + [bbox.minX, bbox.minY], + center, + element.angle, + ); + const [topRightX, topRightY] = rotatePoint( + [bbox.maxX, bbox.minY], + center, + element.angle, + ); + const [bottomRightX, bottomRightY] = rotatePoint( + [bbox.maxX, bbox.maxY], + center, + element.angle, + ); + const [bottomLeftX, bottomLeftY] = rotatePoint( + [bbox.minX, bbox.maxY], + center, + element.angle, + ); + + const bounds = [ + Math.min(topLeftX, topRightX, bottomRightX, bottomLeftX), + Math.min(topLeftY, topRightY, bottomRightY, bottomLeftY), + Math.max(topLeftX, topRightX, bottomRightX, bottomLeftX), + Math.max(topLeftY, topRightY, bottomRightY, bottomLeftY), + ] as Bounds; + + if (offset) { + const [topOffset, rightOffset, downOffset, leftOffset] = offset; + return [ + bounds[0] - leftOffset, + bounds[1] - topOffset, + bounds[2] + rightOffset, + bounds[3] + downOffset, + ] as Bounds; + } + + return bounds; +}; + +type PolarCoords = [number, number]; + +/** + * Return the polar coordinates for the given carthesian point represented by + * (x, y) for the center point 0,0 where the first number returned is the radius, + * the second is the angle in radians. + */ +export const carthesian2Polar = ([x, y]: Point): PolarCoords => [ + Math.hypot(x, y), + Math.atan2(y, x), +]; + +/** + * Angles are in radians and centered on 0, 0. Zero radians on a 1 radius circle + * corresponds to (1, 0) carthesian coordinates (point), i.e. to the "right". + */ +type SymmetricArc = { radius: number; startAngle: number; endAngle: number }; + +/** + * Determines if a carthesian point lies on a symmetric arc, i.e. an arc which + * is part of a circle contour centered on 0, 0. + */ +export const isPointOnSymmetricArc = ( + { radius: arcRadius, startAngle, endAngle }: SymmetricArc, + point: Point, +): boolean => { + const [radius, angle] = carthesian2Polar(point); + + return startAngle < endAngle + ? Math.abs(radius - arcRadius) < 0.0000001 && + startAngle <= angle && + endAngle >= angle + : startAngle <= angle || endAngle >= angle; +}; + +export const getCenterForBounds = (bounds: Bounds): Point => [ + bounds[0] + (bounds[2] - bounds[0]) / 2, + bounds[1] + (bounds[3] - bounds[1]) / 2, +]; + +export const getCenterForElement = (element: ExcalidrawElement): Point => [ + element.x + element.width / 2, + element.y + element.height / 2, +]; + +export const aabbsOverlapping = (a: Bounds, b: Bounds) => + pointInsideBounds([a[0], a[1]], b) || + pointInsideBounds([a[2], a[1]], b) || + pointInsideBounds([a[2], a[3]], b) || + pointInsideBounds([a[0], a[3]], b) || + pointInsideBounds([b[0], b[1]], a) || + pointInsideBounds([b[2], b[1]], a) || + pointInsideBounds([b[2], b[3]], a) || + pointInsideBounds([b[0], b[3]], a); + +export const clamp = (value: number, min: number, max: number) => { + return Math.min(Math.max(value, min), max); +}; diff --git a/packages/excalidraw/renderer/interactiveScene.ts b/packages/excalidraw/renderer/interactiveScene.ts index d6b27e72d..ab37a1425 100644 --- a/packages/excalidraw/renderer/interactiveScene.ts +++ b/packages/excalidraw/renderer/interactiveScene.ts @@ -48,6 +48,8 @@ import { } from "./helpers"; import oc from "open-color"; import { + isArrowElement, + isElbowArrow, isFrameLikeElement, isLinearElement, isTextElement, @@ -67,6 +69,7 @@ import type { InteractiveSceneRenderConfig, RenderableElementsMap, } from "../scene/types"; +import { getCornerRadius } from "../math"; const renderLinearElementPointHighlight = ( context: CanvasRenderingContext2D, @@ -212,13 +215,18 @@ const renderBindingHighlightForBindableElement = ( const [x1, y1, x2, y2] = getElementAbsoluteCoords(element, elementsMap); const width = x2 - x1; const height = y2 - y1; - const threshold = maxBindingGap(element, width, height); + const thickness = 10; // So that we don't overlap the element itself const strokeOffset = 4; context.strokeStyle = "rgba(0,0,0,.05)"; - context.lineWidth = threshold - strokeOffset; - const padding = strokeOffset / 2 + threshold / 2; + context.lineWidth = thickness - strokeOffset; + const padding = strokeOffset / 2 + thickness / 2; + + const radius = getCornerRadius( + Math.min(element.width, element.height), + element, + ); switch (element.type) { case "rectangle": @@ -237,6 +245,8 @@ const renderBindingHighlightForBindableElement = ( x1 + width / 2, y1 + height / 2, element.angle, + undefined, + radius, ); break; case "diamond": @@ -474,6 +484,10 @@ const renderLinearPointHandles = ( ? POINT_HANDLE_SIZE : POINT_HANDLE_SIZE / 2; points.forEach((point, idx) => { + if (isElbowArrow(element) && idx !== 0 && idx !== points.length - 1) { + return; + } + const isSelected = !!appState.editingLinearElement?.selectedPointsIndices?.includes(idx); @@ -727,7 +741,13 @@ const _renderInteractiveScene = ({ if ( appState.selectedLinearElement && - appState.selectedLinearElement.hoverPointIndex >= 0 + appState.selectedLinearElement.hoverPointIndex >= 0 && + !( + isElbowArrow(selectedElements[0]) && + appState.selectedLinearElement.hoverPointIndex > 0 && + appState.selectedLinearElement.hoverPointIndex < + selectedElements[0].points.length - 1 + ) ) { renderLinearElementPointHighlight(context, appState, elementsMap); } @@ -771,27 +791,39 @@ const _renderInteractiveScene = ({ for (const element of elementsMap.values()) { const selectionColors = []; - // local user - if ( - locallySelectedIds.has(element.id) && - !isSelectedViaGroup(appState, element) - ) { - selectionColors.push(selectionColor); - } - // remote users const remoteClients = renderConfig.remoteSelectedElementIds.get( element.id, ); - if (remoteClients) { - selectionColors.push( - ...remoteClients.map((socketId) => { - const background = getClientColor( - socketId, - appState.collaborators.get(socketId), - ); - return background; - }), - ); + if ( + !( + // Elbow arrow elements cannot be selected when bound on either end + ( + isSingleLinearElementSelected && + isArrowElement(element) && + isElbowArrow(element) && + (element.startBinding || element.endBinding) + ) + ) + ) { + // local user + if ( + locallySelectedIds.has(element.id) && + !isSelectedViaGroup(appState, element) + ) { + selectionColors.push(selectionColor); + } + // remote users + if (remoteClients) { + selectionColors.push( + ...remoteClients.map((socketId) => { + const background = getClientColor( + socketId, + appState.collaborators.get(socketId), + ); + return background; + }), + ); + } } if (selectionColors.length) { diff --git a/packages/excalidraw/scene/Shape.ts b/packages/excalidraw/scene/Shape.ts index ccebe867e..4bc92f9c7 100644 --- a/packages/excalidraw/scene/Shape.ts +++ b/packages/excalidraw/scene/Shape.ts @@ -9,12 +9,13 @@ import type { ExcalidrawLinearElement, Arrowhead, } from "../element/types"; -import { isPathALoop, getCornerRadius } from "../math"; +import { isPathALoop, getCornerRadius, distanceSq2d } from "../math"; import { generateFreeDrawShape } from "../renderer/renderElement"; import { isTransparent, assertNever } from "../utils"; import { simplify } from "points-on-curve"; import { ROUGHNESS } from "../constants"; import { + isElbowArrow, isEmbeddableElement, isIframeElement, isIframeLikeElement, @@ -400,9 +401,16 @@ export const _generateElementShape = ( // initial position to it const points = element.points.length ? element.points : [[0, 0]]; - // curve is always the first element - // this simplifies finding the curve for an element - if (!element.roundness) { + if (isElbowArrow(element)) { + shape = [ + generator.path( + generateElbowArrowShape(points as [number, number][], 16), + generateRoughOptions(element, true), + ), + ]; + } else if (!element.roundness) { + // curve is always the first element + // this simplifies finding the curve for an element if (options.fill) { shape = [generator.polygon(points as [number, number][], options)]; } else { @@ -482,3 +490,60 @@ export const _generateElementShape = ( } } }; + +const generateElbowArrowShape = ( + points: [number, number][], + radius: number, +) => { + const subpoints = [] as [number, number][]; + for (let i = 1; i < points.length - 1; i += 1) { + const prev = points[i - 1]; + const next = points[i + 1]; + const corner = Math.min( + radius, + Math.sqrt(distanceSq2d(points[i], next)) / 2, + Math.sqrt(distanceSq2d(points[i], prev)) / 2, + ); + + if (prev[0] < points[i][0] && prev[1] === points[i][1]) { + // LEFT + subpoints.push([points[i][0] - corner, points[i][1]]); + } else if (prev[0] === points[i][0] && prev[1] < points[i][1]) { + // UP + subpoints.push([points[i][0], points[i][1] - corner]); + } else if (prev[0] > points[i][0] && prev[1] === points[i][1]) { + // RIGHT + subpoints.push([points[i][0] + corner, points[i][1]]); + } else { + subpoints.push([points[i][0], points[i][1] + corner]); + } + + subpoints.push(points[i] as [number, number]); + + if (next[0] < points[i][0] && next[1] === points[i][1]) { + // LEFT + subpoints.push([points[i][0] - corner, points[i][1]]); + } else if (next[0] === points[i][0] && next[1] < points[i][1]) { + // UP + subpoints.push([points[i][0], points[i][1] - corner]); + } else if (next[0] > points[i][0] && next[1] === points[i][1]) { + // RIGHT + subpoints.push([points[i][0] + corner, points[i][1]]); + } else { + subpoints.push([points[i][0], points[i][1] + corner]); + } + } + + const d = [`M ${points[0][0]} ${points[0][1]}`]; + for (let i = 0; i < subpoints.length; i += 3) { + d.push(`L ${subpoints[i][0]} ${subpoints[i][1]}`); + d.push( + `Q ${subpoints[i + 1][0]} ${subpoints[i + 1][1]}, ${ + subpoints[i + 2][0] + } ${subpoints[i + 2][1]}`, + ); + } + d.push(`L ${points[points.length - 1][0]} ${points[points.length - 1][1]}`); + + return d.join(" "); +}; diff --git a/packages/excalidraw/scene/comparisons.ts b/packages/excalidraw/scene/comparisons.ts index d46897eb5..629fb371e 100644 --- a/packages/excalidraw/scene/comparisons.ts +++ b/packages/excalidraw/scene/comparisons.ts @@ -40,11 +40,12 @@ export const canChangeRoundness = (type: ElementOrToolType) => type === "rectangle" || type === "iframe" || type === "embeddable" || - type === "arrow" || type === "line" || type === "diamond" || type === "image"; +export const toolIsArrow = (type: ElementOrToolType) => type === "arrow"; + export const canHaveArrowheads = (type: ElementOrToolType) => type === "arrow"; export const getElementAtPosition = ( diff --git a/packages/excalidraw/tests/__snapshots__/contextmenu.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/contextmenu.test.tsx.snap index 44606feb1..efa1e3ed0 100644 --- a/packages/excalidraw/tests/__snapshots__/contextmenu.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/contextmenu.test.tsx.snap @@ -796,6 +796,7 @@ exports[`contextMenu element > right-clicking on a group should select whole gro }, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -998,6 +999,7 @@ exports[`contextMenu element > selecting 'Add to library' in context menu adds e "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1210,6 +1212,7 @@ exports[`contextMenu element > selecting 'Bring forward' in context menu brings "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1537,6 +1540,7 @@ exports[`contextMenu element > selecting 'Bring to front' in context menu brings "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1864,6 +1868,7 @@ exports[`contextMenu element > selecting 'Copy styles' in context menu copies st "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2076,6 +2081,7 @@ exports[`contextMenu element > selecting 'Delete' in context menu deletes elemen "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2312,6 +2318,7 @@ exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2609,6 +2616,7 @@ exports[`contextMenu element > selecting 'Group selection' in context menu group "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2974,6 +2982,7 @@ exports[`contextMenu element > selecting 'Paste styles' in context menu pastes s "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#a5d8ff", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "cross-hatch", @@ -3445,6 +3454,7 @@ exports[`contextMenu element > selecting 'Send backward' in context menu sends e "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3764,6 +3774,7 @@ exports[`contextMenu element > selecting 'Send to back' in context menu sends el "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4083,6 +4094,7 @@ exports[`contextMenu element > selecting 'Ungroup selection' in context menu ung "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5265,6 +5277,7 @@ exports[`contextMenu element > shows 'Group selection' in context menu for multi }, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -6388,6 +6401,7 @@ exports[`contextMenu element > shows 'Ungroup selection' in context menu for gro }, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7319,6 +7333,7 @@ exports[`contextMenu element > shows context menu for canvas > [end of test] app }, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8227,6 +8242,7 @@ exports[`contextMenu element > shows context menu for element > [end of test] ap }, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9117,6 +9133,7 @@ exports[`contextMenu element > shows context menu for element > [end of test] ap }, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", diff --git a/packages/excalidraw/tests/__snapshots__/dragCreate.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/dragCreate.test.tsx.snap index ab705360f..74330e6e5 100644 --- a/packages/excalidraw/tests/__snapshots__/dragCreate.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/dragCreate.test.tsx.snap @@ -8,6 +8,7 @@ exports[`Test dragCreate > add element to the scene when pointer dragging long e "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", diff --git a/packages/excalidraw/tests/__snapshots__/history.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/history.test.tsx.snap index 8786b6023..8b49fbe9e 100644 --- a/packages/excalidraw/tests/__snapshots__/history.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/history.test.tsx.snap @@ -13,6 +13,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -72,13 +73,13 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "penMode": false, "pendingImageElementId": null, "previousSelectedElementIds": { - "id163": true, + "id166": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id163": true, + "id166": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -116,7 +117,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id161", + "id": "id164", "index": "a0", "isDeleted": false, "link": null, @@ -148,7 +149,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id162", + "id": "id165", "index": "a1", "isDeleted": false, "link": null, @@ -176,9 +177,14 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { - "elementId": "id166", + "elementId": "id169", + "fixedPoint": [ + "0.50000", + 1, + ], "focus": 0, "gap": 1, }, @@ -186,7 +192,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": "99.19726", - "id": "id163", + "id": "id166", "index": "a2", "isDeleted": false, "lastCommittedPoint": null, @@ -214,7 +220,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 54, + "version": 40, "width": "98.40368", "x": 1, "y": 0, @@ -227,7 +233,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id163", + "id": "id166", "type": "arrow", }, ], @@ -236,7 +242,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 50, - "id": "id166", + "id": "id169", "index": "a3", "isDeleted": false, "link": null, @@ -278,14 +284,15 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id163" => Delta { + "id166" => Delta { "deleted": { "endBinding": { - "elementId": "id162", + "elementId": "id165", + "fixedPoint": null, "focus": "0.00990", "gap": 1, }, - "height": "0.98000", + "height": "0.98017", "points": [ [ 0, @@ -293,22 +300,24 @@ History { ], [ 98, - "-0.98000", + "-0.98017", ], ], "startBinding": { - "elementId": "id161", + "elementId": "id164", + "fixedPoint": null, "focus": "0.02970", "gap": 1, }, }, "inserted": { "endBinding": { - "elementId": "id162", + "elementId": "id165", + "fixedPoint": null, "focus": "-0.02000", "gap": 1, }, - "height": "0.00025", + "height": "0.00169", "points": [ [ 0, @@ -316,11 +325,12 @@ History { ], [ 98, - "0.00025", + "0.00169", ], ], "startBinding": { - "elementId": "id161", + "elementId": "id164", + "fixedPoint": null, "focus": "0.02000", "gap": 1, }, @@ -340,36 +350,40 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id161" => Delta { + "id164" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id163", + "id": "id166", "type": "arrow", }, ], }, }, - "id162" => Delta { + "id165" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id163", + "id": "id166", "type": "arrow", }, ], }, }, - "id163" => Delta { + "id166" => Delta { "deleted": { "endBinding": { - "elementId": "id166", + "elementId": "id169", + "fixedPoint": [ + "0.50000", + 1, + ], "focus": 0, "gap": 1, }, @@ -389,11 +403,12 @@ History { }, "inserted": { "endBinding": { - "elementId": "id162", + "elementId": "id165", + "fixedPoint": null, "focus": "0.00990", "gap": 1, }, - "height": "0.98024", + "height": "0.98161", "points": [ [ 0, @@ -401,22 +416,23 @@ History { ], [ 98, - "-0.98024", + "-0.98161", ], ], "startBinding": { - "elementId": "id161", + "elementId": "id164", + "fixedPoint": null, "focus": "0.02970", "gap": 1, }, - "y": "0.99037", + "y": "0.99245", }, }, - "id166" => Delta { + "id169" => Delta { "deleted": { "boundElements": [ { - "id": "id163", + "id": "id166", "type": "arrow", }, ], @@ -440,7 +456,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id161" => Delta { + "id164" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -471,7 +487,7 @@ History { "isDeleted": true, }, }, - "id162" => Delta { + "id165" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -511,9 +527,9 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id163": true, + "id166": true, }, - "selectedLinearElementId": "id163", + "selectedLinearElementId": "id166", }, "inserted": { "selectedElementIds": {}, @@ -524,12 +540,13 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id163" => Delta { + "id166" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -595,6 +612,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -654,13 +672,13 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "penMode": false, "pendingImageElementId": null, "previousSelectedElementIds": { - "id158": true, + "id161": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id158": true, + "id161": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -698,7 +716,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id156", + "id": "id159", "index": "a0", "isDeleted": false, "link": null, @@ -730,7 +748,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id157", + "id": "id160", "index": "a1", "isDeleted": false, "link": null, @@ -758,13 +776,14 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", "frameId": null, "groupIds": [], "height": 0, - "id": "id158", + "id": "id161", "index": "a2", "isDeleted": false, "lastCommittedPoint": null, @@ -792,7 +811,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 34, + "version": 30, "width": 0, "x": 251, "y": 0, @@ -819,7 +838,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id158" => Delta { + "id161" => Delta { "deleted": { "points": [ [ @@ -859,33 +878,33 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id156" => Delta { + "id159" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id158", + "id": "id161", "type": "arrow", }, ], }, }, - "id157" => Delta { + "id160" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id158", + "id": "id161", "type": "arrow", }, ], }, }, - "id158" => Delta { + "id161" => Delta { "deleted": { "endBinding": null, "points": [ @@ -902,7 +921,8 @@ History { }, "inserted": { "endBinding": { - "elementId": "id157", + "elementId": "id160", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -917,7 +937,8 @@ History { ], ], "startBinding": { - "elementId": "id156", + "elementId": "id159", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -938,7 +959,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id156" => Delta { + "id159" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -969,7 +990,7 @@ History { "isDeleted": true, }, }, - "id157" => Delta { + "id160" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -1009,9 +1030,9 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id158": true, + "id161": true, }, - "selectedLinearElementId": "id158", + "selectedLinearElementId": "id161", }, "inserted": { "selectedElementIds": {}, @@ -1022,12 +1043,13 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id158" => Delta { + "id161" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -1093,6 +1115,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1191,17 +1214,22 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": null, "endBinding": { - "elementId": "id168", + "elementId": "id171", + "fixedPoint": [ + "0.50000", + 1, + ], "focus": 0, "gap": 1, }, "fillStyle": "solid", "frameId": null, "groupIds": [], - "height": "0.03596", - "id": "id169", + "height": "2.61991", + "id": "id172", "index": "Zz", "isDeleted": false, "lastCommittedPoint": null, @@ -1215,7 +1243,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl ], [ 98, - "-0.03596", + "-2.61991", ], ], "roughness": 1, @@ -1224,7 +1252,11 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl }, "startArrowhead": null, "startBinding": { - "elementId": "id167", + "elementId": "id170", + "fixedPoint": [ + 1, + "0.50000", + ], "focus": 0, "gap": 1, }, @@ -1233,10 +1265,10 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 15, + "version": 11, "width": 98, "x": 1, - "y": "0.05467", + "y": "3.98333", } `; @@ -1246,7 +1278,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id169", + "id": "id172", "type": "arrow", }, ], @@ -1255,7 +1287,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id167", + "id": "id170", "index": "a0", "isDeleted": false, "link": null, @@ -1283,7 +1315,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id169", + "id": "id172", "type": "arrow", }, ], @@ -1292,7 +1324,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id168", + "id": "id171", "index": "a1", "isDeleted": false, "link": null, @@ -1334,7 +1366,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id167" => Delta { + "id170" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -1365,7 +1397,7 @@ History { "isDeleted": true, }, }, - "id168" => Delta { + "id171" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -1398,15 +1430,23 @@ History { }, }, "updated": Map { - "id169" => Delta { + "id172" => Delta { "deleted": { "endBinding": { - "elementId": "id168", + "elementId": "id171", + "fixedPoint": [ + "0.50000", + 1, + ], "focus": 0, "gap": 1, }, "startBinding": { - "elementId": "id167", + "elementId": "id170", + "fixedPoint": [ + 1, + "0.50000", + ], "focus": 0, "gap": 1, }, @@ -1440,6 +1480,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1538,17 +1579,22 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": null, "endBinding": { - "elementId": "id171", + "elementId": "id174", + "fixedPoint": [ + 1, + "0.50000", + ], "focus": 0, "gap": 1, }, "fillStyle": "solid", "frameId": null, "groupIds": [], - "height": "0.03596", - "id": "id172", + "height": "2.61991", + "id": "id175", "index": "a0", "isDeleted": false, "lastCommittedPoint": null, @@ -1562,7 +1608,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl ], [ 98, - "-0.03596", + "-2.61991", ], ], "roughness": 1, @@ -1571,7 +1617,11 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl }, "startArrowhead": null, "startBinding": { - "elementId": "id170", + "elementId": "id173", + "fixedPoint": [ + "0.50000", + 1, + ], "focus": 0, "gap": 1, }, @@ -1580,10 +1630,10 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 15, + "version": 11, "width": 98, "x": 1, - "y": "0.05467", + "y": "3.98333", } `; @@ -1593,7 +1643,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id172", + "id": "id175", "type": "arrow", }, ], @@ -1602,7 +1652,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id170", + "id": "id173", "index": "a0V", "isDeleted": false, "link": null, @@ -1630,7 +1680,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id172", + "id": "id175", "type": "arrow", }, ], @@ -1639,7 +1689,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id171", + "id": "id174", "index": "a1", "isDeleted": false, "link": null, @@ -1681,22 +1731,27 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id172" => Delta { + "id175" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": null, "endBinding": { - "elementId": "id171", + "elementId": "id174", + "fixedPoint": [ + 1, + "0.50000", + ], "focus": 0, "gap": 1, }, "fillStyle": "solid", "frameId": null, "groupIds": [], - "height": "2.61991", + "height": "22.36242", "index": "a0", "isDeleted": false, "lastCommittedPoint": null, @@ -1710,7 +1765,7 @@ History { ], [ 98, - "-2.61991", + "-22.36242", ], ], "roughness": 1, @@ -1719,7 +1774,11 @@ History { }, "startArrowhead": null, "startBinding": { - "elementId": "id170", + "elementId": "id173", + "fixedPoint": [ + "0.50000", + 1, + ], "focus": 0, "gap": 1, }, @@ -1729,7 +1788,7 @@ History { "type": "arrow", "width": 98, "x": 1, - "y": "3.98333", + "y": "34.00000", }, "inserted": { "isDeleted": true, @@ -1737,11 +1796,11 @@ History { }, }, "updated": Map { - "id170" => Delta { + "id173" => Delta { "deleted": { "boundElements": [ { - "id": "id172", + "id": "id175", "type": "arrow", }, ], @@ -1750,11 +1809,11 @@ History { "boundElements": [], }, }, - "id171" => Delta { + "id174" => Delta { "deleted": { "boundElements": [ { - "id": "id172", + "id": "id175", "type": "arrow", }, ], @@ -1787,6 +1846,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1889,7 +1949,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id173", + "id": "id176", "index": "a0", "isDeleted": false, "link": null, @@ -1921,7 +1981,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id174", + "id": "id177", "index": "a1", "isDeleted": false, "link": null, @@ -1963,7 +2023,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id173" => Delta { + "id176" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -1994,7 +2054,7 @@ History { "isDeleted": true, }, }, - "id174" => Delta { + "id177" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -2050,6 +2110,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2113,7 +2174,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id177": true, + "id180": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -2147,7 +2208,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id177", + "id": "id180", "type": "arrow", }, ], @@ -2156,7 +2217,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id175", + "id": "id178", "index": "a0", "isDeleted": false, "link": null, @@ -2184,7 +2245,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": [ { - "id": "id177", + "id": "id180", "type": "arrow", }, ], @@ -2193,7 +2254,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "frameId": null, "groupIds": [], "height": 100, - "id": "id176", + "id": "id179", "index": "a1", "isDeleted": false, "link": null, @@ -2221,17 +2282,19 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { - "elementId": "id176", + "elementId": "id179", + "fixedPoint": null, "focus": 0, "gap": 1, }, "fillStyle": "solid", "frameId": null, "groupIds": [], - "height": "373.79942", - "id": "id177", + "height": "408.19672", + "id": "id180", "index": "a2", "isDeleted": false, "lastCommittedPoint": null, @@ -2245,7 +2308,7 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl ], [ 498, - "-373.79942", + "-408.19672", ], ], "roughness": 1, @@ -2254,7 +2317,8 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl }, "startArrowhead": null, "startBinding": { - "elementId": "id175", + "elementId": "id178", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -2263,10 +2327,10 @@ exports[`history > multiplayer undo/redo > conflicts in arrows and their bindabl "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 12, + "version": 10, "width": 498, "x": 1, - "y": "-37.91991", + "y": 0, } `; @@ -2290,7 +2354,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id175" => Delta { + "id178" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -2321,7 +2385,7 @@ History { "isDeleted": true, }, }, - "id176" => Delta { + "id179" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -2361,9 +2425,9 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id177": true, + "id180": true, }, - "selectedLinearElementId": "id177", + "selectedLinearElementId": "id180", }, "inserted": { "selectedElementIds": {}, @@ -2374,15 +2438,17 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id177" => Delta { + "id180" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { - "elementId": "id176", + "elementId": "id179", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -2412,7 +2478,8 @@ History { }, "startArrowhead": null, "startBinding": { - "elementId": "id175", + "elementId": "id178", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -2430,11 +2497,11 @@ History { }, }, "updated": Map { - "id175" => Delta { + "id178" => Delta { "deleted": { "boundElements": [ { - "id": "id177", + "id": "id180", "type": "arrow", }, ], @@ -2443,11 +2510,11 @@ History { "boundElements": [], }, }, - "id176" => Delta { + "id179" => Delta { "deleted": { "boundElements": [ { - "id": "id177", + "id": "id180", "type": "arrow", }, ], @@ -2480,6 +2547,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2578,7 +2646,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id144", + "id": "id147", "type": "text", }, ], @@ -2587,7 +2655,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id142", + "id": "id145", "index": "a0", "isDeleted": false, "link": null, @@ -2623,7 +2691,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id143", + "id": "id146", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -2656,7 +2724,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id142", + "containerId": "id145", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -2664,7 +2732,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id144", + "id": "id147", "index": "a2", "isDeleted": false, "lineHeight": "1.25000", @@ -2711,7 +2779,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id142" => Delta { + "id145" => Delta { "deleted": { "isDeleted": false, }, @@ -2742,7 +2810,7 @@ History { "y": 10, }, }, - "id143" => Delta { + "id146" => Delta { "deleted": { "containerId": null, }, @@ -2775,6 +2843,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2873,7 +2942,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id147", + "id": "id150", "type": "text", }, ], @@ -2882,7 +2951,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id145", + "id": "id148", "index": "Zz", "isDeleted": false, "link": null, @@ -2910,7 +2979,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id145", + "containerId": "id148", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -2918,7 +2987,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id146", + "id": "id149", "index": "a0", "isDeleted": true, "lineHeight": "1.25000", @@ -2951,7 +3020,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id145", + "containerId": "id148", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -2959,7 +3028,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id147", + "id": "id150", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -3004,9 +3073,9 @@ History { }, "elementsChange": ElementsChange { "added": Map { - "id146" => Delta { + "id149" => Delta { "deleted": { - "containerId": "id145", + "containerId": "id148", "isDeleted": true, }, "inserted": { @@ -3017,14 +3086,14 @@ History { }, "removed": Map {}, "updated": Map { - "id145" => Delta { + "id148" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id146", + "id": "id149", "type": "text", }, ], @@ -3055,6 +3124,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3153,7 +3223,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id134", + "id": "id137", "type": "text", }, ], @@ -3162,7 +3232,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id132", + "id": "id135", "index": "a0", "isDeleted": false, "link": null, @@ -3190,7 +3260,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id132", + "containerId": "id135", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -3198,7 +3268,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id134", + "id": "id137", "index": "a0V", "isDeleted": false, "lineHeight": "1.25000", @@ -3239,7 +3309,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id133", + "id": "id136", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -3286,11 +3356,11 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id132" => Delta { + "id135" => Delta { "deleted": { "boundElements": [ { - "id": "id134", + "id": "id137", "type": "text", }, ], @@ -3298,23 +3368,23 @@ History { "inserted": { "boundElements": [ { - "id": "id133", + "id": "id136", "type": "text", }, ], }, }, - "id133" => Delta { + "id136" => Delta { "deleted": { "containerId": null, }, "inserted": { - "containerId": "id132", + "containerId": "id135", }, }, - "id134" => Delta { + "id137" => Delta { "deleted": { - "containerId": "id132", + "containerId": "id135", }, "inserted": { "containerId": null, @@ -3345,6 +3415,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3447,7 +3518,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id135", + "id": "id138", "index": "a0", "isDeleted": false, "link": null, @@ -3475,7 +3546,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id136", + "id": "id139", "type": "text", }, ], @@ -3484,7 +3555,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 60, - "id": "id137", + "id": "id140", "index": "a0V", "isDeleted": false, "link": null, @@ -3512,7 +3583,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id137", + "containerId": "id140", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -3520,7 +3591,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 50, - "id": "id136", + "id": "id139", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -3568,32 +3639,32 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id135" => Delta { + "id138" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id136", + "id": "id139", "type": "text", }, ], }, }, - "id136" => Delta { + "id139" => Delta { "deleted": { - "containerId": "id137", + "containerId": "id140", }, "inserted": { - "containerId": "id135", + "containerId": "id138", }, }, - "id137" => Delta { + "id140" => Delta { "deleted": { "boundElements": [ { - "id": "id136", + "id": "id139", "type": "text", }, ], @@ -3627,6 +3698,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3729,7 +3801,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id130", + "id": "id133", "index": "a0", "isDeleted": false, "link": null, @@ -3765,7 +3837,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id131", + "id": "id134", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -3812,25 +3884,25 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id130" => Delta { + "id133" => Delta { "deleted": { "boundElements": [], }, "inserted": { "boundElements": [ { - "id": "id131", + "id": "id134", "type": "text", }, ], }, }, - "id131" => Delta { + "id134" => Delta { "deleted": { "containerId": null, }, "inserted": { - "containerId": "id130", + "containerId": "id133", }, }, }, @@ -3858,6 +3930,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3956,7 +4029,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id139", + "id": "id142", "type": "text", }, ], @@ -3965,7 +4038,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id138", + "id": "id141", "index": "a0", "isDeleted": false, "link": null, @@ -3993,7 +4066,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id138", + "containerId": "id141", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -4001,7 +4074,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id139", + "id": "id142", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -4048,7 +4121,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id138" => Delta { + "id141" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -4081,9 +4154,9 @@ History { }, }, "updated": Map { - "id139" => Delta { + "id142" => Delta { "deleted": { - "containerId": "id138", + "containerId": "id141", }, "inserted": { "containerId": null, @@ -4113,6 +4186,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4211,7 +4285,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id141", + "id": "id144", "type": "text", }, ], @@ -4220,7 +4294,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id140", + "id": "id143", "index": "Zz", "isDeleted": false, "link": null, @@ -4248,7 +4322,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id140", + "containerId": "id143", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -4256,7 +4330,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id141", + "id": "id144", "index": "a0", "isDeleted": false, "lineHeight": "1.25000", @@ -4303,13 +4377,13 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id141" => Delta { + "id144" => Delta { "deleted": { "angle": 0, "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id140", + "containerId": "id143", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -4345,11 +4419,11 @@ History { }, }, "updated": Map { - "id140" => Delta { + "id143" => Delta { "deleted": { "boundElements": [ { - "id": "id141", + "id": "id144", "type": "text", }, ], @@ -4382,6 +4456,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4480,7 +4555,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id155", + "id": "id158", "type": "text", }, ], @@ -4489,7 +4564,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id154", + "id": "id157", "index": "Zz", "isDeleted": false, "link": null, @@ -4517,7 +4592,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id154", + "containerId": "id157", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -4525,7 +4600,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id155", + "id": "id158", "index": "a0", "isDeleted": false, "lineHeight": "1.25000", @@ -4572,7 +4647,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id155" => Delta { + "id158" => Delta { "deleted": { "angle": 0, "x": 15, @@ -4609,6 +4684,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4707,7 +4783,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id153", + "id": "id156", "type": "text", }, ], @@ -4716,7 +4792,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id152", + "id": "id155", "index": "a0", "isDeleted": false, "link": null, @@ -4744,7 +4820,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id152", + "containerId": "id155", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -4752,7 +4828,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 25, - "id": "id153", + "id": "id156", "index": "a1", "isDeleted": false, "lineHeight": "1.25000", @@ -4800,7 +4876,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id152" => Delta { + "id155" => Delta { "deleted": { "angle": 90, "x": 200, @@ -4836,6 +4912,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4938,7 +5015,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id148", + "id": "id151", "index": "a0", "isDeleted": false, "link": null, @@ -4966,7 +5043,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "autoResize": true, "backgroundColor": "transparent", "boundElements": null, - "containerId": "id148", + "containerId": "id151", "customData": undefined, "fillStyle": "solid", "fontFamily": 5, @@ -4974,7 +5051,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id149", + "id": "id152", "index": "a1", "isDeleted": true, "lineHeight": "1.25000", @@ -5021,7 +5098,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id148" => Delta { + "id151" => Delta { "deleted": { "boundElements": [], "isDeleted": false, @@ -5029,7 +5106,7 @@ History { "inserted": { "boundElements": [ { - "id": "id149", + "id": "id152", "type": "text", }, ], @@ -5061,6 +5138,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5159,7 +5237,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "backgroundColor": "transparent", "boundElements": [ { - "id": "id151", + "id": "id154", "type": "text", }, ], @@ -5168,7 +5246,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id150", + "id": "id153", "index": "Zz", "isDeleted": true, "link": null, @@ -5204,7 +5282,7 @@ exports[`history > multiplayer undo/redo > conflicts in bound text elements and "frameId": null, "groupIds": [], "height": 100, - "id": "id151", + "id": "id154", "index": "a0", "isDeleted": false, "lineHeight": "1.25000", @@ -5251,13 +5329,13 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id151" => Delta { + "id154" => Delta { "deleted": { "containerId": null, "isDeleted": false, }, "inserted": { - "containerId": "id150", + "containerId": "id153", "isDeleted": true, }, }, @@ -5286,6 +5364,7 @@ exports[`history > multiplayer undo/redo > conflicts in frames and their childre "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5388,7 +5467,7 @@ exports[`history > multiplayer undo/redo > conflicts in frames and their childre "frameId": null, "groupIds": [], "height": 100, - "id": "id179", + "id": "id182", "index": "Zz", "isDeleted": false, "link": null, @@ -5420,7 +5499,7 @@ exports[`history > multiplayer undo/redo > conflicts in frames and their childre "frameId": null, "groupIds": [], "height": 500, - "id": "id178", + "id": "id181", "index": "a0", "isDeleted": true, "link": null, @@ -5463,7 +5542,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id179" => Delta { + "id182" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -5509,9 +5588,9 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id179" => Delta { + "id182" => Delta { "deleted": { - "frameId": "id178", + "frameId": "id181", }, "inserted": { "frameId": null, @@ -5541,6 +5620,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5600,7 +5680,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "penMode": false, "pendingImageElementId": null, "previousSelectedElementIds": { - "id107": true, + "id110": true, }, "resizingElement": null, "scrollX": 0, @@ -5644,7 +5724,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "A", ], "height": 100, - "id": "id106", + "id": "id109", "index": "a0", "isDeleted": false, "link": null, @@ -5678,7 +5758,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "A", ], "height": 100, - "id": "id107", + "id": "id110", "index": "a1", "isDeleted": true, "link": null, @@ -5715,8 +5795,8 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id106": true, - "id107": true, + "id109": true, + "id110": true, }, "selectedGroupIds": { "A": true, @@ -5732,7 +5812,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id106" => Delta { + "id109" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -5765,7 +5845,7 @@ History { "isDeleted": true, }, }, - "id107" => Delta { + "id110" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -5812,7 +5892,7 @@ History { "inserted": { "editingGroupId": null, "selectedElementIds": { - "id106": true, + "id109": true, }, "selectedGroupIds": { "A": true, @@ -5836,7 +5916,7 @@ History { "inserted": { "editingGroupId": "A", "selectedElementIds": { - "id107": true, + "id110": true, }, }, }, @@ -5868,6 +5948,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#ffc9c9", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5927,7 +6008,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "penMode": false, "pendingImageElementId": null, "previousSelectedElementIds": { - "id94": true, + "id97": true, }, "resizingElement": null, "scrollX": 0, @@ -5969,7 +6050,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 10, - "id": "id92", + "id": "id95", "index": "a0", "isDeleted": false, "link": null, @@ -6001,7 +6082,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 10, - "id": "id93", + "id": "id96", "index": "a1", "isDeleted": true, "link": null, @@ -6033,7 +6114,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 10, - "id": "id94", + "id": "id97", "index": "a2", "isDeleted": true, "link": null, @@ -6070,7 +6151,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id92": true, + "id95": true, }, }, "inserted": { @@ -6081,7 +6162,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id92" => Delta { + "id95" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -6121,12 +6202,12 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id93": true, + "id96": true, }, }, "inserted": { "selectedElementIds": { - "id92": true, + "id95": true, }, }, }, @@ -6135,7 +6216,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id93" => Delta { + "id96" => Delta { "deleted": { "angle": 0, "backgroundColor": "#ffc9c9", @@ -6180,7 +6261,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id93" => Delta { + "id96" => Delta { "deleted": { "backgroundColor": "#ffc9c9", }, @@ -6196,12 +6277,12 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id94": true, + "id97": true, }, }, "inserted": { "selectedElementIds": { - "id93": true, + "id96": true, }, }, }, @@ -6210,7 +6291,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id94" => Delta { + "id97" => Delta { "deleted": { "angle": 0, "backgroundColor": "#ffc9c9", @@ -6255,7 +6336,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id94" => Delta { + "id97" => Delta { "deleted": { "x": 50, "y": 50, @@ -6289,6 +6370,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -6348,14 +6430,14 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "penMode": false, "pendingImageElementId": null, "previousSelectedElementIds": { - "id97": true, + "id100": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id97": true, - "id98": true, + "id100": true, + "id101": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -6393,7 +6475,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id96", + "id": "id99", "index": "a0", "isDeleted": false, "link": null, @@ -6425,7 +6507,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id97", + "id": "id100", "index": "a1", "isDeleted": false, "link": null, @@ -6457,7 +6539,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id98", + "id": "id101", "index": "a2", "isDeleted": false, "link": null, @@ -6494,7 +6576,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id96": true, + "id99": true, }, }, "inserted": { @@ -6505,7 +6587,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id96" => Delta { + "id99" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -6536,7 +6618,7 @@ History { "isDeleted": true, }, }, - "id97" => Delta { + "id100" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -6567,7 +6649,7 @@ History { "isDeleted": true, }, }, - "id98" => Delta { + "id101" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -6607,12 +6689,12 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id97": true, + "id100": true, }, }, "inserted": { "selectedElementIds": { - "id96": true, + "id99": true, }, }, }, @@ -6628,7 +6710,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id98": true, + "id101": true, }, }, "inserted": { @@ -6663,6 +6745,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -6729,10 +6812,10 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id102": true, - "id103": true, - "id104": true, "id105": true, + "id106": true, + "id107": true, + "id108": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": { @@ -6775,7 +6858,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "A", ], "height": 100, - "id": "id102", + "id": "id105", "index": "a0", "isDeleted": false, "link": null, @@ -6809,7 +6892,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "A", ], "height": 100, - "id": "id103", + "id": "id106", "index": "a1", "isDeleted": false, "link": null, @@ -6843,7 +6926,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "B", ], "height": 100, - "id": "id104", + "id": "id107", "index": "a2", "isDeleted": false, "link": null, @@ -6877,7 +6960,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "B", ], "height": 100, - "id": "id105", + "id": "id108", "index": "a3", "isDeleted": false, "link": null, @@ -6914,8 +6997,8 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id102": true, - "id103": true, + "id105": true, + "id106": true, }, "selectedGroupIds": { "A": true, @@ -6938,8 +7021,8 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id104": true, - "id105": true, + "id107": true, + "id108": true, }, "selectedGroupIds": { "B": true, @@ -6978,6 +7061,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7073,13 +7157,14 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", "frameId": null, "groupIds": [], "height": 10, - "id": "id110", + "id": "id113", "index": "a0", "isDeleted": true, "lastCommittedPoint": [ @@ -7132,7 +7217,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id110": true, + "id113": true, }, }, "inserted": { @@ -7144,12 +7229,13 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id110" => Delta { + "id113" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -7200,7 +7286,7 @@ History { "appStateChange": AppStateChange { "delta": Delta { "deleted": { - "selectedLinearElementId": "id110", + "selectedLinearElementId": "id113", }, "inserted": { "selectedLinearElementId": null, @@ -7217,7 +7303,7 @@ History { "appStateChange": AppStateChange { "delta": Delta { "deleted": { - "editingLinearElementId": "id110", + "editingLinearElementId": "id113", }, "inserted": { "editingLinearElementId": null, @@ -7238,8 +7324,8 @@ History { "selectedLinearElementId": null, }, "inserted": { - "editingLinearElementId": "id110", - "selectedLinearElementId": "id110", + "editingLinearElementId": "id113", + "selectedLinearElementId": "id113", }, }, }, @@ -7270,6 +7356,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#ffc9c9", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7369,7 +7456,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 10, - "id": "id91", + "id": "id94", "index": "a0", "isDeleted": true, "link": null, @@ -7406,7 +7493,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id91": true, + "id94": true, }, }, "inserted": { @@ -7418,7 +7505,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id91" => Delta { + "id94" => Delta { "deleted": { "angle": 0, "backgroundColor": "#ffec99", @@ -7463,7 +7550,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id91" => Delta { + "id94" => Delta { "deleted": { "backgroundColor": "#ffec99", }, @@ -7495,6 +7582,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7594,7 +7682,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id116", + "id": "id119", "index": "a1", "isDeleted": true, "link": null, @@ -7626,7 +7714,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id117", + "id": "id120", "index": "a3V", "isDeleted": true, "link": null, @@ -7658,7 +7746,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id115", + "id": "id118", "index": "a4", "isDeleted": true, "link": null, @@ -7700,7 +7788,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id116" => Delta { + "id119" => Delta { "deleted": { "index": "a1", }, @@ -7719,14 +7807,14 @@ History { }, "inserted": { "selectedElementIds": { - "id116": true, + "id119": true, }, }, }, }, "elementsChange": ElementsChange { "added": Map { - "id115" => Delta { + "id118" => Delta { "deleted": { "isDeleted": true, }, @@ -7757,7 +7845,7 @@ History { "y": 10, }, }, - "id116" => Delta { + "id119" => Delta { "deleted": { "isDeleted": true, }, @@ -7788,7 +7876,7 @@ History { "y": 20, }, }, - "id117" => Delta { + "id120" => Delta { "deleted": { "isDeleted": true, }, @@ -7846,6 +7934,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7945,7 +8034,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id111", + "id": "id114", "index": "Zx", "isDeleted": true, "link": null, @@ -7977,7 +8066,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id113", + "id": "id116", "index": "Zy", "isDeleted": true, "link": null, @@ -8009,7 +8098,7 @@ exports[`history > multiplayer undo/redo > should iterate through the history wh "frameId": null, "groupIds": [], "height": 100, - "id": "id112", + "id": "id115", "index": "a1", "isDeleted": true, "link": null, @@ -8051,7 +8140,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id112" => Delta { + "id115" => Delta { "deleted": { "index": "a1", }, @@ -8070,14 +8159,14 @@ History { }, "inserted": { "selectedElementIds": { - "id112": true, + "id115": true, }, }, }, }, "elementsChange": ElementsChange { "added": Map { - "id111" => Delta { + "id114" => Delta { "deleted": { "isDeleted": true, }, @@ -8108,7 +8197,7 @@ History { "y": 10, }, }, - "id112" => Delta { + "id115" => Delta { "deleted": { "isDeleted": true, }, @@ -8139,7 +8228,7 @@ History { "y": 20, }, }, - "id113" => Delta { + "id116" => Delta { "deleted": { "isDeleted": true, }, @@ -8197,6 +8286,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8256,15 +8346,15 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "penMode": false, "pendingImageElementId": null, "previousSelectedElementIds": { - "id124": true, - "id125": true, + "id127": true, + "id128": true, }, "resizingElement": null, "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id124": true, - "id125": true, + "id127": true, + "id128": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -8302,7 +8392,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 10, - "id": "id124", + "id": "id127", "index": "a0", "isDeleted": false, "link": null, @@ -8334,7 +8424,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 10, - "id": "id125", + "id": "id128", "index": "a1", "isDeleted": false, "link": null, @@ -8366,7 +8456,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 100, - "id": "id129", + "id": "id132", "index": "a2", "isDeleted": false, "link": null, @@ -8403,7 +8493,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id124": true, + "id127": true, }, }, "inserted": { @@ -8414,7 +8504,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id124" => Delta { + "id127" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -8454,12 +8544,12 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id125": true, + "id128": true, }, }, "inserted": { "selectedElementIds": { - "id124": true, + "id127": true, }, }, }, @@ -8467,7 +8557,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id125" => Delta { + "id128" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -8507,12 +8597,12 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id124": true, + "id127": true, }, }, "inserted": { "selectedElementIds": { - "id125": true, + "id128": true, }, }, }, @@ -8528,7 +8618,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id125": true, + "id128": true, }, }, "inserted": { @@ -8553,7 +8643,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id124" => Delta { + "id127" => Delta { "deleted": { "x": 90, "y": 90, @@ -8563,7 +8653,7 @@ History { "y": 10, }, }, - "id125" => Delta { + "id128" => Delta { "deleted": { "x": 110, "y": 110, @@ -8597,6 +8687,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8696,7 +8787,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 50, - "id": "id119", + "id": "id122", "index": "a0", "isDeleted": false, "lastCommittedPoint": [ @@ -8755,7 +8846,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 100, - "id": "id120", + "id": "id123", "index": "a1", "isDeleted": false, "link": null, @@ -8797,7 +8888,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id119" => Delta { + "id122" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -8880,6 +8971,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8943,7 +9035,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id121": true, + "id124": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -8981,7 +9073,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 90, - "id": "id121", + "id": "id124", "index": "a0", "isDeleted": false, "link": null, @@ -9013,7 +9105,7 @@ exports[`history > multiplayer undo/redo > should not let remote changes to inte "frameId": null, "groupIds": [], "height": 100, - "id": "id123", + "id": "id126", "index": "a1", "isDeleted": false, "link": null, @@ -9050,7 +9142,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id121": true, + "id124": true, }, }, "inserted": { @@ -9061,7 +9153,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id121" => Delta { + "id124" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", @@ -9107,7 +9199,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id121" => Delta { + "id124" => Delta { "deleted": { "height": 90, "width": 90, @@ -9141,6 +9233,7 @@ exports[`history > multiplayer undo/redo > should not override remote changes on "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#ffc9c9", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9401,6 +9494,7 @@ exports[`history > multiplayer undo/redo > should not override remote changes on "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#ffc9c9", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9628,6 +9722,7 @@ exports[`history > multiplayer undo/redo > should override remotely added groups "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9733,7 +9828,7 @@ exports[`history > multiplayer undo/redo > should override remotely added groups "B", ], "height": 100, - "id": "id85", + "id": "id88", "index": "a0", "isDeleted": false, "link": null, @@ -9768,7 +9863,7 @@ exports[`history > multiplayer undo/redo > should override remotely added groups "B", ], "height": 100, - "id": "id86", + "id": "id89", "index": "a1", "isDeleted": false, "link": null, @@ -9802,7 +9897,7 @@ exports[`history > multiplayer undo/redo > should override remotely added groups "B", ], "height": 100, - "id": "id87", + "id": "id90", "index": "a2", "isDeleted": false, "link": null, @@ -9836,7 +9931,7 @@ exports[`history > multiplayer undo/redo > should override remotely added groups "B", ], "height": 100, - "id": "id88", + "id": "id91", "index": "a3", "isDeleted": false, "link": null, @@ -9879,7 +9974,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id85" => Delta { + "id88" => Delta { "deleted": { "groupIds": [ "A", @@ -9890,7 +9985,7 @@ History { "groupIds": [], }, }, - "id86" => Delta { + "id89" => Delta { "deleted": { "groupIds": [ "A", @@ -9925,6 +10020,7 @@ exports[`history > multiplayer undo/redo > should override remotely added points "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9988,7 +10084,7 @@ exports[`history > multiplayer undo/redo > should override remotely added points "scrollX": 0, "scrollY": 0, "selectedElementIds": { - "id89": true, + "id92": true, }, "selectedElementsAreBeingDragged": false, "selectedGroupIds": {}, @@ -10022,13 +10118,14 @@ exports[`history > multiplayer undo/redo > should override remotely added points "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", "frameId": null, "groupIds": [], - "height": 20, - "id": "id89", + "height": 30, + "id": "id92", "index": "a0", "isDeleted": false, "lastCommittedPoint": [ @@ -10071,8 +10168,8 @@ exports[`history > multiplayer undo/redo > should override remotely added points "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 14, - "width": 20, + "version": 13, + "width": 30, "x": 0, "y": 0, } @@ -10093,7 +10190,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id89": true, + "id92": true, }, }, "inserted": { @@ -10104,12 +10201,13 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id89" => Delta { + "id92" => Delta { "deleted": { "angle": 0, "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -10168,7 +10266,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id89" => Delta { + "id92" => Delta { "deleted": { "height": 30, "lastCommittedPoint": [ @@ -10225,7 +10323,7 @@ History { "appStateChange": AppStateChange { "delta": Delta { "deleted": { - "selectedLinearElementId": "id89", + "selectedLinearElementId": "id92", }, "inserted": { "selectedLinearElementId": null, @@ -10259,6 +10357,7 @@ exports[`history > multiplayer undo/redo > should redistribute deltas when eleme "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10358,7 +10457,7 @@ exports[`history > multiplayer undo/redo > should redistribute deltas when eleme "frameId": null, "groupIds": [], "height": 10, - "id": "id90", + "id": "id93", "index": "a0", "isDeleted": false, "link": null, @@ -10395,7 +10494,7 @@ History { "delta": Delta { "deleted": { "selectedElementIds": { - "id90": true, + "id93": true, }, }, "inserted": { @@ -10406,7 +10505,7 @@ History { "elementsChange": ElementsChange { "added": Map {}, "removed": Map { - "id90" => Delta { + "id93" => Delta { "deleted": { "angle": 0, "backgroundColor": "#ffec99", @@ -10449,7 +10548,7 @@ History { }, "inserted": { "selectedElementIds": { - "id90": true, + "id93": true, }, }, }, @@ -10458,7 +10557,7 @@ History { "added": Map {}, "removed": Map {}, "updated": Map { - "id90" => Delta { + "id93" => Delta { "deleted": { "isDeleted": false, }, @@ -10477,6 +10576,456 @@ exports[`history > multiplayer undo/redo > should redistribute deltas when eleme exports[`history > multiplayer undo/redo > should redistribute deltas when element gets removed locally but is restored remotely > [end of test] number of renders 1`] = `12`; +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] appState 1`] = ` +{ + "activeEmbeddable": null, + "activeTool": { + "customType": null, + "lastActiveTool": null, + "locked": false, + "type": "selection", + }, + "collaborators": Map {}, + "contextMenu": null, + "currentChartType": "bar", + "currentHoveredFontFamily": null, + "currentItemArrowType": "round", + "currentItemBackgroundColor": "transparent", + "currentItemEndArrowhead": "arrow", + "currentItemFillStyle": "solid", + "currentItemFontFamily": 5, + "currentItemFontSize": 20, + "currentItemOpacity": 100, + "currentItemRoughness": 1, + "currentItemRoundness": "round", + "currentItemStartArrowhead": null, + "currentItemStrokeColor": "#1e1e1e", + "currentItemStrokeStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemTextAlign": "left", + "cursorButton": "up", + "defaultSidebarDockedPreference": false, + "draggingElement": null, + "editingElement": null, + "editingFrame": null, + "editingGroupId": null, + "editingLinearElement": null, + "elementsToHighlight": null, + "errorMessage": null, + "exportBackground": true, + "exportEmbedScene": false, + "exportScale": 1, + "exportWithDarkMode": false, + "fileHandle": null, + "followedBy": Set {}, + "frameRendering": { + "clip": true, + "enabled": true, + "name": true, + "outline": true, + }, + "frameToHighlight": null, + "gridSize": null, + "height": 0, + "isBindingEnabled": true, + "isLoading": false, + "isResizing": false, + "isRotating": false, + "lastPointerDownWith": "mouse", + "multiElement": null, + "objectsSnapModeEnabled": false, + "offsetLeft": 0, + "offsetTop": 0, + "openDialog": null, + "openMenu": null, + "openPopup": null, + "openSidebar": null, + "originSnapOffset": { + "x": 0, + "y": 0, + }, + "pasteDialog": { + "data": null, + "shown": false, + }, + "penDetected": false, + "penMode": false, + "pendingImageElementId": null, + "previousSelectedElementIds": {}, + "resizingElement": null, + "scrollX": 0, + "scrollY": 0, + "selectedElementIds": {}, + "selectedElementsAreBeingDragged": false, + "selectedGroupIds": {}, + "selectionElement": null, + "shouldCacheIgnoreZoom": false, + "showHyperlinkPopup": false, + "showWelcomeScreen": true, + "snapLines": [], + "startBoundElement": null, + "stats": { + "open": false, + "panels": 3, + }, + "suggestedBindings": [], + "theme": "light", + "toast": null, + "userToFollow": null, + "viewBackgroundColor": "#ffffff", + "viewModeEnabled": false, + "width": 0, + "zenModeEnabled": false, + "zoom": { + "value": 1, + }, +} +`; + +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] element 0 1`] = ` +{ + "angle": 0, + "backgroundColor": "transparent", + "boundElements": [ + { + "id": "6Rm4g567UQM4WjLwej2Vc", + "type": "arrow", + }, + ], + "customData": undefined, + "fillStyle": "solid", + "frameId": null, + "groupIds": [], + "height": 126, + "id": "KPrBI4g_v9qUB1XxYLgSz", + "index": "a0", + "isDeleted": false, + "link": null, + "locked": false, + "opacity": 100, + "roughness": 1, + "roundness": { + "type": 3, + }, + "strokeColor": "#1e1e1e", + "strokeStyle": "solid", + "strokeWidth": 2, + "type": "rectangle", + "updated": 1, + "version": 6, + "width": 157, + "x": 600, + "y": 0, +} +`; + +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] element 1 1`] = ` +{ + "angle": 0, + "backgroundColor": "transparent", + "boundElements": [ + { + "id": "6Rm4g567UQM4WjLwej2Vc", + "type": "arrow", + }, + ], + "customData": undefined, + "fillStyle": "solid", + "frameId": null, + "groupIds": [], + "height": 129, + "id": "u2JGnnmoJ0VATV4vCNJE5", + "index": "a1", + "isDeleted": false, + "link": null, + "locked": false, + "opacity": 100, + "roughness": 1, + "roundness": { + "type": 3, + }, + "strokeColor": "#1e1e1e", + "strokeStyle": "solid", + "strokeWidth": 2, + "type": "diamond", + "updated": 1, + "version": 6, + "width": 124, + "x": 1152, + "y": 516, +} +`; + +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] element 2 1`] = ` +{ + "angle": 0, + "backgroundColor": "transparent", + "boundElements": null, + "customData": undefined, + "elbowed": true, + "endArrowhead": null, + "endBinding": { + "elementId": "u2JGnnmoJ0VATV4vCNJE5", + "fixedPoint": [ + "0.49919", + "-0.03875", + ], + "focus": "-0.00161", + "gap": "3.53708", + }, + "fillStyle": "solid", + "frameId": null, + "groupIds": [], + "height": "448.10100", + "id": "6Rm4g567UQM4WjLwej2Vc", + "index": "a2", + "isDeleted": false, + "lastCommittedPoint": null, + "link": null, + "locked": false, + "opacity": 100, + "points": [ + [ + 0, + 0, + ], + [ + "451.90000", + 0, + ], + [ + "451.90000", + "448.10100", + ], + ], + "roughness": 1, + "roundness": { + "type": 2, + }, + "startArrowhead": null, + "startBinding": { + "elementId": "KPrBI4g_v9qUB1XxYLgSz", + "fixedPoint": [ + "1.03185", + "0.49921", + ], + "focus": "-0.00159", + "gap": 5, + }, + "strokeColor": "#1e1e1e", + "strokeStyle": "solid", + "strokeWidth": 2, + "type": "arrow", + "updated": 1, + "version": 6, + "width": "451.90000", + "x": 762, + "y": "62.90000", +} +`; + +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] history 1`] = ` +History { + "onHistoryChangedEmitter": Emitter { + "subscribers": [ + [Function], + [Function], + ], + }, + "redoStack": [], + "undoStack": [ + HistoryEntry { + "appStateChange": AppStateChange { + "delta": Delta { + "deleted": {}, + "inserted": {}, + }, + }, + "elementsChange": ElementsChange { + "added": Map {}, + "removed": Map { + "KPrBI4g_v9qUB1XxYLgSz" => Delta { + "deleted": { + "angle": 0, + "backgroundColor": "transparent", + "boundElements": null, + "customData": undefined, + "fillStyle": "solid", + "frameId": null, + "groupIds": [], + "height": 126, + "index": "a0", + "isDeleted": false, + "link": null, + "locked": false, + "opacity": 100, + "roughness": 1, + "roundness": { + "type": 3, + }, + "strokeColor": "#1e1e1e", + "strokeStyle": "solid", + "strokeWidth": 2, + "type": "rectangle", + "width": 157, + "x": 873, + "y": 212, + }, + "inserted": { + "isDeleted": true, + }, + }, + "u2JGnnmoJ0VATV4vCNJE5" => Delta { + "deleted": { + "angle": 0, + "backgroundColor": "transparent", + "boundElements": null, + "customData": undefined, + "fillStyle": "solid", + "frameId": null, + "groupIds": [], + "height": 129, + "index": "a1", + "isDeleted": false, + "link": null, + "locked": false, + "opacity": 100, + "roughness": 1, + "roundness": { + "type": 3, + }, + "strokeColor": "#1e1e1e", + "strokeStyle": "solid", + "strokeWidth": 2, + "type": "diamond", + "width": 124, + "x": 1152, + "y": 516, + }, + "inserted": { + "isDeleted": true, + }, + }, + }, + "updated": Map {}, + }, + }, + HistoryEntry { + "appStateChange": AppStateChange { + "delta": Delta { + "deleted": {}, + "inserted": {}, + }, + }, + "elementsChange": ElementsChange { + "added": Map {}, + "removed": Map { + "6Rm4g567UQM4WjLwej2Vc" => Delta { + "deleted": { + "angle": 0, + "backgroundColor": "transparent", + "boundElements": null, + "customData": undefined, + "elbowed": true, + "endArrowhead": null, + "endBinding": { + "elementId": "u2JGnnmoJ0VATV4vCNJE5", + "fixedPoint": [ + "0.49919", + "-0.03875", + ], + "focus": "-0.00161", + "gap": "3.53708", + }, + "fillStyle": "solid", + "frameId": null, + "groupIds": [], + "height": "236.10000", + "index": "a2", + "isDeleted": false, + "lastCommittedPoint": null, + "link": null, + "locked": false, + "opacity": 100, + "points": [ + [ + 0, + 0, + ], + [ + "178.90000", + 0, + ], + [ + "178.90000", + "236.10000", + ], + ], + "roughness": 1, + "roundness": { + "type": 2, + }, + "startArrowhead": null, + "startBinding": { + "elementId": "KPrBI4g_v9qUB1XxYLgSz", + "fixedPoint": [ + "1.03185", + "0.49921", + ], + "focus": "-0.00159", + "gap": 5, + }, + "strokeColor": "#1e1e1e", + "strokeStyle": "solid", + "strokeWidth": 2, + "type": "arrow", + "width": "178.90000", + "x": 1035, + "y": "274.90000", + }, + "inserted": { + "isDeleted": true, + }, + }, + }, + "updated": Map { + "KPrBI4g_v9qUB1XxYLgSz" => Delta { + "deleted": { + "boundElements": [ + { + "id": "6Rm4g567UQM4WjLwej2Vc", + "type": "arrow", + }, + ], + }, + "inserted": { + "boundElements": [], + }, + }, + "u2JGnnmoJ0VATV4vCNJE5" => Delta { + "deleted": { + "boundElements": [ + { + "id": "6Rm4g567UQM4WjLwej2Vc", + "type": "arrow", + }, + ], + }, + "inserted": { + "boundElements": [], + }, + }, + }, + }, + }, + ], +} +`; + +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] number of elements 1`] = `3`; + +exports[`history > multiplayer undo/redo > should redraw arrows on undo > [end of test] number of renders 1`] = `8`; + exports[`history > multiplayer undo/redo > should update history entries after remote changes on the same properties > [end of test] appState 1`] = ` { "activeEmbeddable": null, @@ -10490,6 +11039,7 @@ exports[`history > multiplayer undo/redo > should update history entries after r "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#a5d8ff", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10740,6 +11290,7 @@ exports[`history > singleplayer undo/redo > remounting undo/redo buttons should "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10975,6 +11526,7 @@ exports[`history > singleplayer undo/redo > should clear the redo stack on eleme "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -11212,6 +11764,7 @@ exports[`history > singleplayer undo/redo > should create entry when selecting f "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -11609,6 +12162,7 @@ exports[`history > singleplayer undo/redo > should create new history entry on s "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -11852,6 +12406,7 @@ exports[`history > singleplayer undo/redo > should disable undo/redo buttons whe "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -12089,6 +12644,7 @@ exports[`history > singleplayer undo/redo > should end up with no history entry "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -12326,6 +12882,7 @@ exports[`history > singleplayer undo/redo > should iterate through the history w "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -12569,6 +13126,7 @@ exports[`history > singleplayer undo/redo > should not clear the redo stack on s "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -12897,6 +13455,7 @@ exports[`history > singleplayer undo/redo > should not collapse when applying co "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13065,6 +13624,7 @@ exports[`history > singleplayer undo/redo > should not end up with history entry "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13349,6 +13909,7 @@ exports[`history > singleplayer undo/redo > should not end up with history entry "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13612,6 +14173,7 @@ exports[`history > singleplayer undo/redo > should not override appstate changes "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#a5d8ff", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13883,6 +14445,7 @@ exports[`history > singleplayer undo/redo > should support appstate name or view "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -14040,6 +14603,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -14258,9 +14822,11 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id52", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -14292,6 +14858,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "startArrowhead": null, "startBinding": { "elementId": "id50", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -14300,7 +14867,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 12, + "version": 10, "width": 98, "x": 1, "y": 0, @@ -14626,9 +15193,11 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id52", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -14659,6 +15228,7 @@ History { "startArrowhead": null, "startBinding": { "elementId": "id50", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -14726,6 +15296,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -14944,9 +15515,11 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id46", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -14978,6 +15551,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "startArrowhead": null, "startBinding": { "elementId": "id44", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -14986,7 +15560,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 12, + "version": 10, "width": 98, "x": 1, "y": 0, @@ -15236,9 +15810,11 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id46", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -15269,6 +15845,7 @@ History { "startArrowhead": null, "startBinding": { "elementId": "id44", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -15336,6 +15913,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -15554,9 +16132,11 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id58", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -15588,6 +16168,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "startArrowhead": null, "startBinding": { "elementId": "id56", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -15596,7 +16177,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 12, + "version": 10, "width": 98, "x": 1, "y": 0, @@ -15846,9 +16427,11 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id58", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -15879,6 +16462,7 @@ History { "startArrowhead": null, "startBinding": { "elementId": "id56", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -15946,6 +16530,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -16162,9 +16747,11 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id64", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16196,6 +16783,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "startArrowhead": null, "startBinding": { "elementId": "id62", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16204,7 +16792,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 12, + "version": 10, "width": 98, "x": 1, "y": 0, @@ -16268,6 +16856,7 @@ History { ], "startBinding": { "elementId": "id62", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16524,9 +17113,11 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id64", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16557,6 +17148,7 @@ History { "startArrowhead": null, "startBinding": { "elementId": "id62", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16647,6 +17239,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -16866,9 +17459,11 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id71", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16900,6 +17495,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "startArrowhead": null, "startBinding": { "elementId": "id69", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16908,7 +17504,7 @@ exports[`history > singleplayer undo/redo > should support bidirectional binding "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 13, + "version": 11, "width": 98, "x": 1, "y": 0, @@ -16971,6 +17567,7 @@ History { "deleted": { "endBinding": { "elementId": "id71", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -16986,6 +17583,7 @@ History { ], "startBinding": { "elementId": "id69", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -17243,9 +17841,11 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id71", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -17276,6 +17876,7 @@ History { "startArrowhead": null, "startBinding": { "elementId": "id69", + "fixedPoint": null, "focus": 0, "gap": 1, }, @@ -17385,6 +17986,7 @@ exports[`history > singleplayer undo/redo > should support changes in elements' "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -17855,6 +18457,7 @@ exports[`history > singleplayer undo/redo > should support duplication of groups "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -18373,6 +18976,7 @@ exports[`history > singleplayer undo/redo > should support element creation, del "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -18825,6 +19429,7 @@ exports[`history > singleplayer undo/redo > should support linear element creati "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -18924,6 +19529,7 @@ exports[`history > singleplayer undo/redo > should support linear element creati "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -19004,6 +19610,7 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", diff --git a/packages/excalidraw/tests/__snapshots__/move.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/move.test.tsx.snap index 958a8c88c..c6ea4b647 100644 --- a/packages/excalidraw/tests/__snapshots__/move.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/move.test.tsx.snap @@ -173,7 +173,7 @@ exports[`move element > rectangles with binding arrow 6`] = ` "type": "rectangle", "updated": 1, "version": 7, - "versionNonce": 1984422985, + "versionNonce": 745419401, "width": 300, "x": 201, "y": 2, @@ -186,16 +186,18 @@ exports[`move element > rectangles with binding arrow 7`] = ` "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": { "elementId": "id1", + "fixedPoint": null, "focus": "-0.46667", "gap": 10, }, "fillStyle": "solid", "frameId": null, "groupIds": [], - "height": "81.48231", + "height": "81.47368", "id": "id2", "index": "a2", "isDeleted": false, @@ -210,7 +212,7 @@ exports[`move element > rectangles with binding arrow 7`] = ` ], [ 81, - "81.48231", + "81.47368", ], ], "roughness": 1, @@ -221,6 +223,7 @@ exports[`move element > rectangles with binding arrow 7`] = ` "startArrowhead": null, "startBinding": { "elementId": "id0", + "fixedPoint": null, "focus": "-0.60000", "gap": 10, }, @@ -229,10 +232,10 @@ exports[`move element > rectangles with binding arrow 7`] = ` "strokeWidth": 2, "type": "arrow", "updated": 1, - "version": 14, - "versionNonce": 2066753033, + "version": 11, + "versionNonce": 1996028265, "width": 81, "x": 110, - "y": "49.98179", + "y": 50, } `; diff --git a/packages/excalidraw/tests/__snapshots__/multiPointCreate.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/multiPointCreate.test.tsx.snap index d7602f15f..05d6b9cdd 100644 --- a/packages/excalidraw/tests/__snapshots__/multiPointCreate.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/multiPointCreate.test.tsx.snap @@ -6,6 +6,7 @@ exports[`multi point mode in linear elements > arrow 3`] = ` "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", diff --git a/packages/excalidraw/tests/__snapshots__/regressionTests.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/regressionTests.test.tsx.snap index f2d6e2c47..e1321771c 100644 --- a/packages/excalidraw/tests/__snapshots__/regressionTests.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/regressionTests.test.tsx.snap @@ -13,6 +13,7 @@ exports[`given element A and group of elements B and given both are selected whe "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -421,6 +422,7 @@ exports[`given element A and group of elements B and given both are selected whe "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -820,6 +822,7 @@ exports[`regression tests > Cmd/Ctrl-click exclusively select element under poin "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1358,6 +1361,7 @@ exports[`regression tests > Drags selected element when hitting only bounding bo "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1555,6 +1559,7 @@ exports[`regression tests > adjusts z order when grouping > [end of test] appSta "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -1923,6 +1928,7 @@ exports[`regression tests > alt-drag duplicates an element > [end of test] appSt "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2156,6 +2162,7 @@ exports[`regression tests > arrow keys > [end of test] appState 1`] = ` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2329,6 +2336,7 @@ exports[`regression tests > can drag element that covers another element, while "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2642,6 +2650,7 @@ exports[`regression tests > change the properties of a shape > [end of test] app "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#ffc9c9", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -2881,6 +2890,7 @@ exports[`regression tests > click on an element and drag it > [dragged] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3117,6 +3127,7 @@ exports[`regression tests > click on an element and drag it > [end of test] appS "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3340,6 +3351,7 @@ exports[`regression tests > click to select a shape > [end of test] appState 1`] "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3589,6 +3601,7 @@ exports[`regression tests > click-drag to select a group > [end of test] appStat "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -3893,6 +3906,7 @@ exports[`regression tests > deleting last but one element in editing group shoul "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4300,6 +4314,7 @@ exports[`regression tests > deselects group of selected elements on pointer down "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4606,6 +4621,7 @@ exports[`regression tests > deselects group of selected elements on pointer up w "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -4882,6 +4898,7 @@ exports[`regression tests > deselects selected element on pointer down when poin "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5115,6 +5132,7 @@ exports[`regression tests > deselects selected element, on pointer up, when clic "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5307,6 +5325,7 @@ exports[`regression tests > double click to edit a group > [end of test] appStat "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5682,6 +5701,7 @@ exports[`regression tests > drags selected elements from point inside common bou "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -5965,6 +5985,7 @@ exports[`regression tests > draw every type of shape > [end of test] appState 1` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -6247,6 +6268,7 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -6387,6 +6409,7 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -6764,6 +6787,7 @@ exports[`regression tests > given a group of selected elements with an element t "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7087,6 +7111,7 @@ exports[`regression tests > given a selected element A and a not selected elemen "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "#ffc9c9", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7356,6 +7381,7 @@ exports[`regression tests > given selected element A with lower z-index than uns "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7583,6 +7609,7 @@ exports[`regression tests > given selected element A with lower z-index than uns "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7813,6 +7840,7 @@ exports[`regression tests > key 2 selects rectangle tool > [end of test] appStat "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -7986,6 +8014,7 @@ exports[`regression tests > key 3 selects diamond tool > [end of test] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8159,6 +8188,7 @@ exports[`regression tests > key 4 selects ellipse tool > [end of test] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8332,6 +8362,7 @@ exports[`regression tests > key 5 selects arrow tool > [end of test] appState 1` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8408,6 +8439,7 @@ exports[`regression tests > key 5 selects arrow tool > [end of test] appState 1` "isDragging": false, "lastUncommittedPoint": null, "pointerDownState": { + "lastClickedIsEndPoint": false, "lastClickedPoint": -1, "origin": null, "prevSelectedPointsIndices": null, @@ -8480,6 +8512,7 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -8545,6 +8578,7 @@ exports[`regression tests > key 6 selects line tool > [end of test] appState 1`] "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8621,6 +8655,7 @@ exports[`regression tests > key 6 selects line tool > [end of test] appState 1`] "isDragging": false, "lastUncommittedPoint": null, "pointerDownState": { + "lastClickedIsEndPoint": false, "lastClickedPoint": -1, "origin": null, "prevSelectedPointsIndices": null, @@ -8758,6 +8793,7 @@ exports[`regression tests > key 7 selects freedraw tool > [end of test] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -8945,6 +8981,7 @@ exports[`regression tests > key a selects arrow tool > [end of test] appState 1` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9021,6 +9058,7 @@ exports[`regression tests > key a selects arrow tool > [end of test] appState 1` "isDragging": false, "lastUncommittedPoint": null, "pointerDownState": { + "lastClickedIsEndPoint": false, "lastClickedPoint": -1, "origin": null, "prevSelectedPointsIndices": null, @@ -9093,6 +9131,7 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -9158,6 +9197,7 @@ exports[`regression tests > key d selects diamond tool > [end of test] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9331,6 +9371,7 @@ exports[`regression tests > key l selects line tool > [end of test] appState 1`] "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9407,6 +9448,7 @@ exports[`regression tests > key l selects line tool > [end of test] appState 1`] "isDragging": false, "lastUncommittedPoint": null, "pointerDownState": { + "lastClickedIsEndPoint": false, "lastClickedPoint": -1, "origin": null, "prevSelectedPointsIndices": null, @@ -9544,6 +9586,7 @@ exports[`regression tests > key o selects ellipse tool > [end of test] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9717,6 +9760,7 @@ exports[`regression tests > key p selects freedraw tool > [end of test] appState "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -9904,6 +9948,7 @@ exports[`regression tests > key r selects rectangle tool > [end of test] appStat "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10077,6 +10122,7 @@ exports[`regression tests > make a group and duplicate it > [end of test] appSta "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10584,6 +10630,7 @@ exports[`regression tests > noop interaction after undo shouldn't create history "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10854,6 +10901,7 @@ exports[`regression tests > pinch-to-zoom works > [end of test] appState 1`] = ` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -10973,6 +11021,7 @@ exports[`regression tests > shift click on selected element should deselect it o "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -11165,6 +11214,7 @@ exports[`regression tests > shift-click to multiselect, then drag > [end of test "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -11469,6 +11519,7 @@ exports[`regression tests > should group elements and ungroup them > [end of tes "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -11874,6 +11925,7 @@ exports[`regression tests > single-clicking on a subgroup of a selected group sh "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -12480,6 +12532,7 @@ exports[`regression tests > spacebar + drag scrolls the canvas > [end of test] a "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -12602,6 +12655,7 @@ exports[`regression tests > supports nested groups > [end of test] appState 1`] "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13179,6 +13233,7 @@ exports[`regression tests > switches from group of selected elements to another "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13540,6 +13595,7 @@ exports[`regression tests > switches selected element on pointer down > [end of "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13828,6 +13884,7 @@ exports[`regression tests > two-finger scroll works > [end of test] appState 1`] "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -13947,6 +14004,7 @@ exports[`regression tests > undo/redo drawing an element > [end of test] appStat "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -14146,6 +14204,7 @@ History { "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", @@ -14318,6 +14377,7 @@ exports[`regression tests > updates fontSize & fontFamily appState > [end of tes "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", @@ -14437,6 +14497,7 @@ exports[`regression tests > zoom hotkeys > [end of test] appState 1`] = ` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", diff --git a/packages/excalidraw/tests/__snapshots__/selection.test.tsx.snap b/packages/excalidraw/tests/__snapshots__/selection.test.tsx.snap index 42a3aa84e..2eea90842 100644 --- a/packages/excalidraw/tests/__snapshots__/selection.test.tsx.snap +++ b/packages/excalidraw/tests/__snapshots__/selection.test.tsx.snap @@ -6,6 +6,7 @@ exports[`select single element on the scene > arrow 1`] = ` "backgroundColor": "transparent", "boundElements": null, "customData": undefined, + "elbowed": false, "endArrowhead": "arrow", "endBinding": null, "fillStyle": "solid", diff --git a/packages/excalidraw/tests/binding.test.tsx b/packages/excalidraw/tests/binding.test.tsx index 9bc9947c7..3209043b0 100644 --- a/packages/excalidraw/tests/binding.test.tsx +++ b/packages/excalidraw/tests/binding.test.tsx @@ -62,6 +62,7 @@ describe("element binding", () => { expect(arrow.startBinding).toEqual({ elementId: rect.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -74,11 +75,13 @@ describe("element binding", () => { // Both the start and the end points should be bound expect(arrow.startBinding).toEqual({ elementId: rect.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); expect(arrow.endBinding).toEqual({ elementId: rect.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -318,11 +321,13 @@ describe("element binding", () => { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, endBinding: { elementId: "text1", focus: 0.2, gap: 7, + fixedPoint: [1, 0.5], }, }); @@ -337,11 +342,13 @@ describe("element binding", () => { elementId: "text1", focus: 0.2, gap: 7, + fixedPoint: [0.5, 1], }, endBinding: { elementId: "rectangle1", focus: 0.2, gap: 7, + fixedPoint: [1, 0.5], }, }); diff --git a/packages/excalidraw/tests/data/__snapshots__/restore.test.ts.snap b/packages/excalidraw/tests/data/__snapshots__/restore.test.ts.snap index 5c72dd53d..d0c81fb90 100644 --- a/packages/excalidraw/tests/data/__snapshots__/restore.test.ts.snap +++ b/packages/excalidraw/tests/data/__snapshots__/restore.test.ts.snap @@ -6,6 +6,7 @@ exports[`restoreElements > should restore arrow element correctly 1`] = ` "backgroundColor": "transparent", "boundElements": [], "customData": undefined, + "elbowed": false, "endArrowhead": null, "endBinding": null, "fillStyle": "solid", diff --git a/packages/excalidraw/tests/flip.test.tsx b/packages/excalidraw/tests/flip.test.tsx index 621c31bdf..164615f77 100644 --- a/packages/excalidraw/tests/flip.test.tsx +++ b/packages/excalidraw/tests/flip.test.tsx @@ -149,8 +149,6 @@ const createLinearElementWithCurveInsideMinMaxPoints = ( [-922.4761962890625, 300.3277587890625], [828.0126953125, 410.51605224609375], ], - startArrowhead: null, - endArrowhead: null, }); }; @@ -183,8 +181,6 @@ const createLinearElementsWithCurveOutsideMinMaxPoints = ( [-591.2804897585779, 36.09360810181511], [-148.56510566829502, 53.96308359105342], ], - startArrowhead: null, - endArrowhead: null, ...extraProps, }); }; diff --git a/packages/excalidraw/tests/helpers/api.ts b/packages/excalidraw/tests/helpers/api.ts index f44d78040..3b83df846 100644 --- a/packages/excalidraw/tests/helpers/api.ts +++ b/packages/excalidraw/tests/helpers/api.ts @@ -19,6 +19,7 @@ import util from "util"; import path from "path"; import { getMimeType } from "../../data/blob"; import { + newArrowElement, newEmbeddableElement, newFrameElement, newFreeDrawElement, @@ -146,6 +147,7 @@ export class API { endBinding?: T extends "arrow" ? ExcalidrawLinearElement["endBinding"] : never; + elbowed?: boolean; }): T extends "arrow" | "line" ? ExcalidrawLinearElement : T extends "freedraw" @@ -250,14 +252,24 @@ export class API { }); break; case "arrow": + element = newArrowElement({ + ...base, + width, + height, + type, + points: rest.points ?? [ + [0, 0], + [100, 100], + ], + elbowed: rest.elbowed ?? false, + }); + break; case "line": element = newLinearElement({ ...base, width, height, type, - startArrowhead: null, - endArrowhead: null, points: rest.points ?? [ [0, 0], [100, 100], diff --git a/packages/excalidraw/tests/history.test.tsx b/packages/excalidraw/tests/history.test.tsx index 4c48d5f6d..1abfb4d10 100644 --- a/packages/excalidraw/tests/history.test.tsx +++ b/packages/excalidraw/tests/history.test.tsx @@ -1,3 +1,5 @@ +import "../global.d.ts"; +import React from "react"; import * as StaticScene from "../renderer/staticScene"; import { GlobalTestState, @@ -24,6 +26,7 @@ import { import { KEYS } from "../keys"; import { newElementWith } from "../element/mutateElement"; import type { + ExcalidrawElbowArrowElement, ExcalidrawFrameElement, ExcalidrawGenericElement, ExcalidrawLinearElement, @@ -41,6 +44,7 @@ import { queryByText } from "@testing-library/react"; import { HistoryEntry } from "../history"; import { AppStateChange, ElementsChange } from "../change"; import { Snapshot, StoreAction } from "../store"; +import type Scene from "../scene/Scene"; const { h } = window; @@ -114,6 +118,7 @@ describe("history", () => { arrayToMap(h.elements) as SceneElementsMap, appState, Snapshot.empty(), + {} as Scene, ) as any, ); } catch (e) { @@ -135,6 +140,7 @@ describe("history", () => { arrayToMap(h.elements) as SceneElementsMap, appState, Snapshot.empty(), + {} as Scene, ) as any, ); } catch (e) { @@ -1332,11 +1338,13 @@ describe("history", () => { expect(API.getUndoStack().length).toBe(5); expect(arrow.startBinding).toEqual({ elementId: rect1.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); expect(arrow.endBinding).toEqual({ elementId: rect2.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -1355,11 +1363,13 @@ describe("history", () => { expect(API.getRedoStack().length).toBe(1); expect(arrow.startBinding).toEqual({ elementId: rect1.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); expect(arrow.endBinding).toEqual({ elementId: rect2.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -1378,11 +1388,13 @@ describe("history", () => { expect(API.getRedoStack().length).toBe(0); expect(arrow.startBinding).toEqual({ elementId: rect1.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); expect(arrow.endBinding).toEqual({ elementId: rect2.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -1409,11 +1421,13 @@ describe("history", () => { expect(API.getRedoStack().length).toBe(0); expect(arrow.startBinding).toEqual({ elementId: rect1.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); expect(arrow.endBinding).toEqual({ elementId: rect2.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -1432,11 +1446,13 @@ describe("history", () => { expect(API.getRedoStack().length).toBe(1); expect(arrow.startBinding).toEqual({ elementId: rect1.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); expect(arrow.endBinding).toEqual({ elementId: rect2.id, + fixedPoint: null, focus: expect.toBeNonNaNNumber(), gap: expect.toBeNonNaNNumber(), }); @@ -1466,37 +1482,41 @@ describe("history", () => { expect(API.getUndoStack().length).toBe(0); expect(API.getRedoStack().length).toBe(5); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [], - isDeleted: true, - }), - expect.objectContaining({ - id: text.id, - containerId: null, - isDeleted: true, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [], - isDeleted: true, - }), - expect.objectContaining({ - id: arrow.id, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: true, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [], + isDeleted: true, + }), + expect.objectContaining({ + id: text.id, + containerId: null, + isDeleted: true, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [], + isDeleted: true, + }), + expect.objectContaining({ + id: arrow.id, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: true, + }), + ]), + ); Keyboard.redo(); Keyboard.redo(); @@ -1506,40 +1526,44 @@ describe("history", () => { expect(API.getUndoStack().length).toBe(5); expect(API.getRedoStack().length).toBe(0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [ - { id: text.id, type: "text" }, - { id: arrow.id, type: "arrow" }, - ], - isDeleted: false, - }), - expect.objectContaining({ - id: text.id, - containerId: rect1.id, - isDeleted: false, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - expect.objectContaining({ - id: arrow.id, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: expect.arrayContaining([ + { id: text.id, type: "text" }, + { id: arrow.id, type: "arrow" }, + ]), + isDeleted: false, + }), + expect.objectContaining({ + id: text.id, + containerId: rect1.id, + isDeleted: false, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + expect.objectContaining({ + id: arrow.id, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: false, + }), + ]), + ); }); it("should unbind rectangle from arrow on deletion and rebind on undo", async () => { @@ -1547,74 +1571,80 @@ describe("history", () => { Keyboard.keyPress(KEYS.DELETE); expect(API.getUndoStack().length).toBe(7); expect(API.getRedoStack().length).toBe(0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [ - { id: text.id, type: "text" }, - { id: arrow.id, type: "arrow" }, - ], - isDeleted: true, - }), - expect.objectContaining({ - id: text.id, - containerId: rect1.id, - isDeleted: true, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - expect.objectContaining({ - id: arrow.id, - startBinding: null, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [ + { id: text.id, type: "text" }, + { id: arrow.id, type: "arrow" }, + ], + isDeleted: true, + }), + expect.objectContaining({ + id: text.id, + containerId: rect1.id, + isDeleted: true, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + expect.objectContaining({ + id: arrow.id, + startBinding: null, + endBinding: expect.objectContaining({ + elementId: rect2.id, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: false, + }), + ]), + ); Keyboard.undo(); expect(API.getUndoStack().length).toBe(6); expect(API.getRedoStack().length).toBe(1); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [ - { id: arrow.id, type: "arrow" }, - { id: text.id, type: "text" }, // order has now changed! - ], - isDeleted: false, - }), - expect.objectContaining({ - id: text.id, - containerId: rect1.id, - isDeleted: false, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - expect.objectContaining({ - id: arrow.id, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: expect.arrayContaining([ + { id: arrow.id, type: "arrow" }, + { id: text.id, type: "text" }, // order has now changed! + ]), + isDeleted: false, + }), + expect.objectContaining({ + id: text.id, + containerId: rect1.id, + isDeleted: false, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + expect.objectContaining({ + id: arrow.id, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: false, + }), + ]), + ); }); it("should unbind rectangles from arrow on deletion and rebind on undo", async () => { @@ -1652,40 +1682,44 @@ describe("history", () => { Keyboard.undo(); expect(API.getUndoStack().length).toBe(7); expect(API.getRedoStack().length).toBe(1); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [ - { id: arrow.id, type: "arrow" }, - { id: text.id, type: "text" }, // order has now changed! - ], - isDeleted: false, - }), - expect.objectContaining({ - id: text.id, - containerId: rect1.id, - isDeleted: false, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - expect.objectContaining({ - id: arrow.id, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: expect.arrayContaining([ + { id: arrow.id, type: "arrow" }, + { id: text.id, type: "text" }, // order has now changed! + ]), + isDeleted: false, + }), + expect.objectContaining({ + id: text.id, + containerId: rect1.id, + isDeleted: false, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + expect.objectContaining({ + id: arrow.id, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: false, + }), + ]), + ); }); }); @@ -1977,6 +2011,110 @@ describe("history", () => { ]); }); + it("should redraw arrows on undo", () => { + const rect = API.createElement({ + type: "rectangle", + id: "KPrBI4g_v9qUB1XxYLgSz", + x: 873, + y: 212, + width: 157, + height: 126, + }); + const diamond = API.createElement({ + id: "u2JGnnmoJ0VATV4vCNJE5", + type: "diamond", + x: 1152, + y: 516, + width: 124, + height: 129, + }); + const arrow = API.createElement({ + type: "arrow", + id: "6Rm4g567UQM4WjLwej2Vc", + elbowed: true, + }); + + excalidrawAPI.updateScene({ + elements: [rect, diamond], + storeAction: StoreAction.CAPTURE, + }); + + // Connect the arrow + excalidrawAPI.updateScene({ + elements: [ + { + ...rect, + boundElements: [ + { + id: "6Rm4g567UQM4WjLwej2Vc", + type: "arrow", + }, + ], + }, + { + ...diamond, + boundElements: [ + { + id: "6Rm4g567UQM4WjLwej2Vc", + type: "arrow", + }, + ], + }, + { + ...arrow, + x: 1035, + y: 274.9, + width: 178.9000000000001, + height: 236.10000000000002, + points: [ + [0, 0], + [178.9000000000001, 0], + [178.9000000000001, 236.10000000000002], + ], + startBinding: { + elementId: "KPrBI4g_v9qUB1XxYLgSz", + focus: -0.001587301587301948, + gap: 5, + fixedPoint: [1.0318471337579618, 0.49920634920634904], + }, + endBinding: { + elementId: "u2JGnnmoJ0VATV4vCNJE5", + focus: -0.0016129032258049847, + gap: 3.537079145500037, + fixedPoint: [0.4991935483870975, -0.03875193720914723], + }, + }, + ], + storeAction: StoreAction.CAPTURE, + }); + + Keyboard.undo(); + + excalidrawAPI.updateScene({ + elements: h.elements.map((el) => + el.id === "KPrBI4g_v9qUB1XxYLgSz" + ? { + ...el, + x: 600, + y: 0, + } + : el, + ), + storeAction: StoreAction.UPDATE, + }); + + Keyboard.redo(); + + const modifiedArrow = h.elements.filter( + (el) => el.type === "arrow", + )[0] as ExcalidrawElbowArrowElement; + expect(modifiedArrow.points).toEqual([ + [0, 0], + [451.9000000000001, 0], + [451.9000000000001, 448.10100010002003], + ]); + }); + // TODO: #7348 ideally we should not override, but since the order of groupIds matters, right now we cannot ensure that with postprocssed groupIds the order will be consistent after series or undos/redos, we don't postprocess them at all // in other words, if we would postprocess groupIds, the groupIds order on "redo" below would be ["B", "A"] instead of ["A", "B"] it("should override remotely added groups on undo, but restore them on redo", async () => { @@ -4149,29 +4287,33 @@ describe("history", () => { mouse.moveTo(100, 0); mouse.up(); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: arrowId, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: arrowId, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + }), + ]), + ); Keyboard.undo(); // undo start binding Keyboard.undo(); // undo end binding @@ -4214,29 +4356,35 @@ describe("history", () => { Keyboard.redo(); expect(API.getUndoStack().length).toBe(4); expect(API.getRedoStack().length).toBe(0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: arrowId, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: expect.arrayContaining([ + { id: arrowId, type: "arrow" }, + ]), + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: arrowId, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + }), + ]), + ); Keyboard.undo(); Keyboard.undo(); @@ -4277,29 +4425,33 @@ describe("history", () => { mouse.moveTo(100, 1); mouse.upAt(100, 0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: arrowId, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: arrowId, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + }), + ]), + ); Keyboard.undo(); Keyboard.undo(); @@ -4331,7 +4483,12 @@ describe("history", () => { h.elements[0], newElementWith(h.elements[1], { boundElements: [] }), newElementWith(h.elements[2] as ExcalidrawLinearElement, { - endBinding: { elementId: remoteContainer.id, gap: 1, focus: 0 }, + endBinding: { + elementId: remoteContainer.id, + gap: 1, + focus: 0, + fixedPoint: [0.5, 1], + }, }), remoteContainer, ], @@ -4343,72 +4500,92 @@ describe("history", () => { Keyboard.redo(); expect(API.getUndoStack().length).toBe(4); expect(API.getRedoStack().length).toBe(0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: arrowId, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - // rebound with previous rectangle - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - }), - expect.objectContaining({ - id: remoteContainer.id, - boundElements: [], - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: arrowId, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + // rebound with previous rectangle + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + }), + expect.objectContaining({ + id: remoteContainer.id, + boundElements: [], + }), + ]), + ); Keyboard.undo(); Keyboard.undo(); expect(API.getUndoStack().length).toBe(2); expect(API.getRedoStack().length).toBe(2); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [], - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [], - }), - expect.objectContaining({ - id: arrowId, - startBinding: null, - endBinding: { - // now we are back in the previous state! - elementId: remoteContainer.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - }), - expect.objectContaining({ - id: remoteContainer.id, - // leaving as bound until we can rebind arrows! - boundElements: [{ id: arrowId, type: "arrow" }], - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [], + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [], + }), + expect.objectContaining({ + id: arrowId, + startBinding: null, + endBinding: expect.objectContaining({ + // now we are back in the previous state! + elementId: remoteContainer.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + }), + expect.objectContaining({ + id: remoteContainer.id, + // leaving as bound until we can rebind arrows! + boundElements: [{ id: arrowId, type: "arrow" }], + }), + ]), + ); }); }); it("should rebind remotely added arrow when it's bindable elements are added through the history", async () => { const arrow = API.createElement({ type: "arrow", - startBinding: { elementId: rect1.id, gap: 1, focus: 0 }, - endBinding: { elementId: rect2.id, gap: 1, focus: 0 }, + startBinding: { + elementId: rect1.id, + gap: 1, + focus: 0, + fixedPoint: [1, 0.5], + }, + endBinding: { + elementId: rect2.id, + gap: 1, + focus: 0, + fixedPoint: [0.5, 1], + }, }); // Simulate remote update @@ -4450,33 +4627,43 @@ describe("history", () => { Keyboard.redo(); expect(API.getUndoStack().length).toBe(1); expect(API.getRedoStack().length).toBe(0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: arrow.id, - startBinding: { - // now we are back in the previous state! - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - // now we are back in the previous state! - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - }), - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: arrow.id, + startBinding: expect.objectContaining({ + // now we are back in the previous state! + elementId: rect1.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + // now we are back in the previous state! + elementId: rect2.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + }), + expect.objectContaining({ + id: rect1.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + ]), + ); }); }); @@ -4496,8 +4683,18 @@ describe("history", () => { excalidrawAPI.updateScene({ elements: [ newElementWith(h.elements[0] as ExcalidrawLinearElement, { - startBinding: { elementId: rect1.id, gap: 1, focus: 0 }, - endBinding: { elementId: rect2.id, gap: 1, focus: 0 }, + startBinding: { + elementId: rect1.id, + gap: 1, + focus: 0, + fixedPoint: [0.5, 1], + }, + endBinding: { + elementId: rect2.id, + gap: 1, + focus: 0, + fixedPoint: [1, 0.5], + }, }), newElementWith(rect1, { boundElements: [{ id: arrow.id, type: "arrow" }], @@ -4513,62 +4710,82 @@ describe("history", () => { Keyboard.undo(); expect(API.getUndoStack().length).toBe(0); expect(API.getRedoStack().length).toBe(1); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: arrow.id, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: true, - }), - expect.objectContaining({ - id: rect1.id, - boundElements: [], - isDeleted: false, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [], - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: arrow.id, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: true, + }), + expect.objectContaining({ + id: rect1.id, + boundElements: [], + isDeleted: false, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [], + isDeleted: false, + }), + ]), + ); Keyboard.redo(); expect(API.getUndoStack().length).toBe(1); expect(API.getRedoStack().length).toBe(0); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: arrow.id, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: false, - }), - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrow.id, type: "arrow" }], - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: arrow.id, + startBinding: { + elementId: rect1.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }, + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: [ + expect.toBeNonNaNNumber(), + expect.toBeNonNaNNumber(), + ], + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: false, + }), + expect.objectContaining({ + id: rect1.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrow.id, type: "arrow" }], + isDeleted: false, + }), + ]), + ); }); }); @@ -4585,31 +4802,35 @@ describe("history", () => { Keyboard.undo(); expect(API.getUndoStack().length).toBe(1); expect(API.getRedoStack().length).toBe(1); - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [], - }), - expect.objectContaining({ id: rect2.id, boundElements: [] }), - expect.objectContaining({ - id: arrowId, - points: [ - [0, 0], - [100, 0], - ], - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: true, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [], + }), + expect.objectContaining({ id: rect2.id, boundElements: [] }), + expect.objectContaining({ + id: arrowId, + points: [ + [0, 0], + [100, 0], + ], + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: true, + }), + ]), + ); // Simulate remote update excalidrawAPI.updateScene({ @@ -4632,30 +4853,34 @@ describe("history", () => { roundToNearestHundred(points[1]), ]).toEqual([500, -400]); } - expect(h.elements).toEqual([ - expect.objectContaining({ - id: rect1.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: rect2.id, - boundElements: [{ id: arrowId, type: "arrow" }], - }), - expect.objectContaining({ - id: arrowId, - startBinding: { - elementId: rect1.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - endBinding: { - elementId: rect2.id, - focus: expect.toBeNonNaNNumber(), - gap: expect.toBeNonNaNNumber(), - }, - isDeleted: false, - }), - ]); + expect(h.elements).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: rect1.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: rect2.id, + boundElements: [{ id: arrowId, type: "arrow" }], + }), + expect.objectContaining({ + id: arrowId, + startBinding: expect.objectContaining({ + elementId: rect1.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + endBinding: expect.objectContaining({ + elementId: rect2.id, + fixedPoint: null, + focus: expect.toBeNonNaNNumber(), + gap: expect.toBeNonNaNNumber(), + }), + isDeleted: false, + }), + ]), + ); }); }); diff --git a/packages/excalidraw/tests/library.test.tsx b/packages/excalidraw/tests/library.test.tsx index 9d8fd9dc9..449eca1ba 100644 --- a/packages/excalidraw/tests/library.test.tsx +++ b/packages/excalidraw/tests/library.test.tsx @@ -95,7 +95,12 @@ describe("library", () => { const arrow = API.createElement({ id: "arrow1", type: "arrow", - endBinding: { elementId: "rectangle1", focus: -1, gap: 0 }, + endBinding: { + elementId: "rectangle1", + focus: -1, + gap: 0, + fixedPoint: [0.5, 1], + }, }); await API.drop( diff --git a/packages/excalidraw/tests/linearElementEditor.test.tsx b/packages/excalidraw/tests/linearElementEditor.test.tsx index 00273f51d..02e58d209 100644 --- a/packages/excalidraw/tests/linearElementEditor.test.tsx +++ b/packages/excalidraw/tests/linearElementEditor.test.tsx @@ -5,7 +5,7 @@ import type { ExcalidrawTextElementWithContainer, FontString, } from "../element/types"; -import { Excalidraw } from "../index"; +import { Excalidraw, mutateElement } from "../index"; import { centerPoint } from "../math"; import { reseed } from "../random"; import * as StaticScene from "../renderer/staticScene"; @@ -107,6 +107,7 @@ describe("Test Linear Elements", () => { ], roundness, }); + mutateElement(line, { points: line.points }); h.elements = [line]; mouse.clickAt(p1[0], p1[1]); return line; @@ -307,7 +308,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `9`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`6`); const midPointsWithRoundEdge = LinearElementEditor.getEditorMidPoints( h.elements[0] as ExcalidrawLinearElement, @@ -365,7 +366,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `12`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`8`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); expect([line.x, line.y]).toEqual([ points[0][0] + deltaX, @@ -427,7 +428,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `16`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`8`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); expect(line.points.length).toEqual(5); @@ -478,7 +479,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `12`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`6`); const newPoints = LinearElementEditor.getPointsGlobalCoordinates( line, @@ -519,7 +520,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `12`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`6`); const newPoints = LinearElementEditor.getPointsGlobalCoordinates( line, @@ -567,7 +568,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `18`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`8`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); const newMidPoints = LinearElementEditor.getEditorMidPoints( line, @@ -617,7 +618,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `16`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`8`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); expect(line.points.length).toEqual(5); expect((h.elements[0] as ExcalidrawLinearElement).points) @@ -715,7 +716,7 @@ describe("Test Linear Elements", () => { expect(renderInteractiveScene.mock.calls.length).toMatchInlineSnapshot( `12`, ); - expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`7`); + expect(renderStaticScene.mock.calls.length).toMatchInlineSnapshot(`6`); const newPoints = LinearElementEditor.getPointsGlobalCoordinates( line, @@ -843,6 +844,7 @@ describe("Test Linear Elements", () => { id: textElement.id, }), }; + const elements: ExcalidrawElement[] = []; h.elements.forEach((element) => { if (element.id === container.id) { @@ -1235,7 +1237,7 @@ describe("Test Linear Elements", () => { mouse.moveTo(200, 0); mouse.upAt(200, 0); - expect(arrow.width).toBe(200); + expect(arrow.width).toBe(205); expect(rect.x).toBe(200); expect(rect.y).toBe(0); expect(handleBindTextResizeSpy).toHaveBeenCalledWith( @@ -1356,16 +1358,20 @@ describe("Test Linear Elements", () => { const line = createThreePointerLinearElement("arrow"); const [origStartX, origStartY] = [line.x, line.y]; - LinearElementEditor.movePoints(line, [ - { index: 0, point: [line.points[0][0] + 10, line.points[0][1] + 10] }, - { - index: line.points.length - 1, - point: [ - line.points[line.points.length - 1][0] - 10, - line.points[line.points.length - 1][1] - 10, - ], - }, - ]); + LinearElementEditor.movePoints( + line, + [ + { index: 0, point: [line.points[0][0] + 10, line.points[0][1] + 10] }, + { + index: line.points.length - 1, + point: [ + line.points[line.points.length - 1][0] - 10, + line.points[line.points.length - 1][1] - 10, + ], + }, + ], + h.scene, + ); expect(line.x).toBe(origStartX + 10); expect(line.y).toBe(origStartY + 10); diff --git a/packages/excalidraw/tests/move.test.tsx b/packages/excalidraw/tests/move.test.tsx index 6e0ef9027..4951a7090 100644 --- a/packages/excalidraw/tests/move.test.tsx +++ b/packages/excalidraw/tests/move.test.tsx @@ -13,6 +13,7 @@ import type { import { UI, Pointer, Keyboard } from "./helpers/ui"; import { KEYS } from "../keys"; import { vi } from "vitest"; +import type Scene from "../scene/Scene"; // Unmount ReactDOM from root ReactDOM.unmountComponentAtNode(document.getElementById("root")!); @@ -85,6 +86,7 @@ describe("move element", () => { rectA.get() as ExcalidrawRectangleElement, rectB.get() as ExcalidrawRectangleElement, elementsMap, + {} as Scene, ); // select the second rectangle diff --git a/packages/excalidraw/tests/resize.test.tsx b/packages/excalidraw/tests/resize.test.tsx index 95659b094..67e19621d 100644 --- a/packages/excalidraw/tests/resize.test.tsx +++ b/packages/excalidraw/tests/resize.test.tsx @@ -798,6 +798,7 @@ describe("multiple selection", () => { width: 100, height: 0, }); + const rightBoundArrow = UI.createElement("arrow", { x: 210, y: 50, @@ -822,11 +823,16 @@ describe("multiple selection", () => { expect(leftBoundArrow.x).toBeCloseTo(-110); expect(leftBoundArrow.y).toBeCloseTo(50); - expect(leftBoundArrow.width).toBeCloseTo(140, 0); + expect(leftBoundArrow.width).toBeCloseTo(137.5, 0); expect(leftBoundArrow.height).toBeCloseTo(7, 0); expect(leftBoundArrow.angle).toEqual(0); expect(leftBoundArrow.startBinding).toBeNull(); - expect(leftBoundArrow.endBinding).toMatchObject(leftArrowBinding); + expect(leftBoundArrow.endBinding?.gap).toBeCloseTo(12.352); + expect(leftBoundArrow.endBinding?.elementId).toBe( + leftArrowBinding.elementId, + ); + expect(leftBoundArrow.endBinding?.fixedPoint).toBeNull(); + expect(leftBoundArrow.endBinding?.focus).toBe(leftArrowBinding.focus); expect(rightBoundArrow.x).toBeCloseTo(210); expect(rightBoundArrow.y).toBeCloseTo( @@ -836,7 +842,12 @@ describe("multiple selection", () => { expect(rightBoundArrow.height).toBeCloseTo(0); expect(rightBoundArrow.angle).toEqual(0); expect(rightBoundArrow.startBinding).toBeNull(); - expect(rightBoundArrow.endBinding).toMatchObject(rightArrowBinding); + expect(rightBoundArrow.endBinding?.gap).toBeCloseTo(8.0952); + expect(rightBoundArrow.endBinding?.elementId).toBe( + rightArrowBinding.elementId, + ); + expect(rightBoundArrow.endBinding?.fixedPoint).toBeNull(); + expect(rightBoundArrow.endBinding?.focus).toBe(rightArrowBinding.focus); }); it("resizes with labeled arrows", async () => { diff --git a/packages/excalidraw/types.ts b/packages/excalidraw/types.ts index e45d5a692..e39bb4c96 100644 --- a/packages/excalidraw/types.ts +++ b/packages/excalidraw/types.ts @@ -281,6 +281,7 @@ export interface AppState { currentItemEndArrowhead: Arrowhead | null; currentHoveredFontFamily: FontFamilyValues | null; currentItemRoundness: StrokeRoundness; + currentItemArrowType: "sharp" | "round" | "elbow"; viewBackgroundColor: string; scrollX: number; scrollY: number; @@ -624,6 +625,7 @@ export type AppClassProperties = { insertEmbeddableElement: App["insertEmbeddableElement"]; onMagicframeToolSelect: App["onMagicframeToolSelect"]; getName: App["getName"]; + dismissLinearEditor: App["dismissLinearEditor"]; }; export type PointerDownState = Readonly<{ diff --git a/packages/excalidraw/utils.ts b/packages/excalidraw/utils.ts index 82d86dabe..c8e8c743d 100644 --- a/packages/excalidraw/utils.ts +++ b/packages/excalidraw/utils.ts @@ -1157,3 +1157,6 @@ export const promiseTry = async ( resolve(fn(...args)); }); }; + +export const isAnyTrue = (...args: boolean[]): boolean => + Math.max(...args.map((arg) => (arg ? 1 : 0))) > 0; diff --git a/packages/utils/__snapshots__/export.test.ts.snap b/packages/utils/__snapshots__/export.test.ts.snap index 4c2ac7b37..613b64590 100644 --- a/packages/utils/__snapshots__/export.test.ts.snap +++ b/packages/utils/__snapshots__/export.test.ts.snap @@ -13,6 +13,7 @@ exports[`exportToSvg > with default arguments 1`] = ` "contextMenu": null, "currentChartType": "bar", "currentHoveredFontFamily": null, + "currentItemArrowType": "round", "currentItemBackgroundColor": "transparent", "currentItemEndArrowhead": "arrow", "currentItemFillStyle": "solid", diff --git a/packages/utils/geometry/geometry.ts b/packages/utils/geometry/geometry.ts index 4216fe0eb..d9bf2aecd 100644 --- a/packages/utils/geometry/geometry.ts +++ b/packages/utils/geometry/geometry.ts @@ -16,10 +16,22 @@ const DEFAULT_THRESHOLD = 10e-5; */ // the two vectors are ao and bo -export const cross = (a: Point, b: Point, o: Point) => { +export const cross = ( + a: Readonly, + b: Readonly, + o: Readonly, +) => { return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]); }; +export const dot = ( + a: Readonly, + b: Readonly, + o: Readonly, +) => { + return (a[0] - o[0]) * (b[0] - o[0]) + (a[1] - o[1]) * (b[1] - o[1]); +}; + export const isClosed = (polygon: Polygon) => { const first = polygon[0]; const last = polygon[polygon.length - 1]; @@ -36,7 +48,9 @@ export const close = (polygon: Polygon) => { // convert radians to degress export const angleToDegrees = (angle: number) => { - return (angle * 180) / Math.PI; + const theta = (angle * 180) / Math.PI; + + return theta < 0 ? 360 + theta : theta; }; // convert degrees to radians From e63dd025c97f72101acdfa4f9c9acf3522a9d853 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Thu, 1 Aug 2024 19:40:54 +0200 Subject: [PATCH 11/86] fix: allow binding elbow arrows to frame children (#8309) --- packages/excalidraw/element/binding.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/excalidraw/element/binding.ts b/packages/excalidraw/element/binding.ts index f3b60c89c..3d6a0c57f 100644 --- a/packages/excalidraw/element/binding.ts +++ b/packages/excalidraw/element/binding.ts @@ -38,6 +38,7 @@ import { isBindingElement, isBoundToContainer, isElbowArrow, + isFrameLikeElement, isLinearElement, isTextElement, } from "./typeChecks"; @@ -517,7 +518,14 @@ export const getHoveredElementForBinding = ( elements, (element) => isBindableElement(element, false) && - bindingBorderTest(element, pointerCoords, elementsMap, fullShape), + bindingBorderTest( + element, + pointerCoords, + elementsMap, + // disable fullshape snapping for frame elements so we + // can bind to frame children + fullShape && !isFrameLikeElement(element), + ), ); return hoveredElement as NonDeleted | null; }; From 84d89b9a8a59155f6d31880488bc4d25c5ebacd1 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Fri, 2 Aug 2024 11:55:15 +0200 Subject: [PATCH 12/86] fix: throttle fractional indices validation (#8306) --- packages/excalidraw/data/reconcile.ts | 53 ++++++++++++------- packages/excalidraw/fractionalIndex.ts | 24 ++++++--- packages/excalidraw/scene/Scene.ts | 32 ++++++----- .../excalidraw/tests/fractionalIndex.test.ts | 2 + 4 files changed, 71 insertions(+), 40 deletions(-) diff --git a/packages/excalidraw/data/reconcile.ts b/packages/excalidraw/data/reconcile.ts index 1df28e37e..aa663ebfa 100644 --- a/packages/excalidraw/data/reconcile.ts +++ b/packages/excalidraw/data/reconcile.ts @@ -1,3 +1,4 @@ +import throttle from "lodash.throttle"; import { ENV } from "../constants"; import type { OrderedExcalidrawElement } from "../element/types"; import { @@ -38,6 +39,37 @@ const shouldDiscardRemoteElement = ( return false; }; +const validateIndicesThrottled = throttle( + ( + orderedElements: readonly OrderedExcalidrawElement[], + localElements: readonly OrderedExcalidrawElement[], + remoteElements: readonly RemoteExcalidrawElement[], + ) => { + if ( + import.meta.env.DEV || + import.meta.env.MODE === ENV.TEST || + window?.DEBUG_FRACTIONAL_INDICES + ) { + // create new instances due to the mutation + const elements = syncInvalidIndices( + orderedElements.map((x) => ({ ...x })), + ); + + validateFractionalIndices(elements, { + // throw in dev & test only, to remain functional on `DEBUG_FRACTIONAL_INDICES` + shouldThrow: import.meta.env.DEV || import.meta.env.MODE === ENV.TEST, + includeBoundTextValidation: true, + reconciliationContext: { + localElements, + remoteElements, + }, + }); + } + }, + 1000 * 60, + { leading: true, trailing: false }, +); + export const reconcileElements = ( localElements: readonly OrderedExcalidrawElement[], remoteElements: readonly RemoteExcalidrawElement[], @@ -77,26 +109,7 @@ export const reconcileElements = ( const orderedElements = orderByFractionalIndex(reconciledElements); - if ( - import.meta.env.DEV || - import.meta.env.MODE === ENV.TEST || - window?.DEBUG_FRACTIONAL_INDICES - ) { - const elements = syncInvalidIndices( - // create new instances due to the mutation - orderedElements.map((x) => ({ ...x })), - ); - - validateFractionalIndices(elements, { - // throw in dev & test only, to remain functional on `DEBUG_FRACTIONAL_INDICES` - shouldThrow: import.meta.env.DEV || import.meta.env.MODE === ENV.TEST, - includeBoundTextValidation: true, - reconciliationContext: { - localElements, - remoteElements, - }, - }); - } + validateIndicesThrottled(orderedElements, localElements, remoteElements); // de-duplicate indices syncInvalidIndices(orderedElements); diff --git a/packages/excalidraw/fractionalIndex.ts b/packages/excalidraw/fractionalIndex.ts index 7d54cff07..e594a1358 100644 --- a/packages/excalidraw/fractionalIndex.ts +++ b/packages/excalidraw/fractionalIndex.ts @@ -37,10 +37,12 @@ export const validateFractionalIndices = ( { shouldThrow = false, includeBoundTextValidation = false, + ignoreLogs, reconciliationContext, }: { shouldThrow: boolean; includeBoundTextValidation: boolean; + ignoreLogs?: true; reconciliationContext?: { localElements: ReadonlyArray; remoteElements: ReadonlyArray; @@ -95,13 +97,15 @@ export const validateFractionalIndices = ( ); } - // report just once and with the stacktrace - console.error( - errorMessages.join("\n\n"), - error.stack, - elements.map((x) => stringifyElement(x)), - ...additionalContext, - ); + if (!ignoreLogs) { + // report just once and with the stacktrace + console.error( + errorMessages.join("\n\n"), + error.stack, + elements.map((x) => stringifyElement(x)), + ...additionalContext, + ); + } if (shouldThrow) { // if enabled, gather all the errors first, throw once @@ -157,7 +161,11 @@ export const syncMovedIndices = ( validateFractionalIndices( elementsCandidates, // we don't autofix invalid bound text indices, hence don't include it in the validation - { includeBoundTextValidation: false, shouldThrow: true }, + { + includeBoundTextValidation: false, + shouldThrow: true, + ignoreLogs: true, + }, ); // split mutation so we don't end up in an incosistent state diff --git a/packages/excalidraw/scene/Scene.ts b/packages/excalidraw/scene/Scene.ts index c237059c4..813b3cbf5 100644 --- a/packages/excalidraw/scene/Scene.ts +++ b/packages/excalidraw/scene/Scene.ts @@ -1,3 +1,4 @@ +import throttle from "lodash.throttle"; import type { ExcalidrawElement, NonDeletedExcalidrawElement, @@ -50,6 +51,24 @@ const getNonDeletedElements = ( return { elementsMap, elements }; }; +const validateIndicesThrottled = throttle( + (elements: readonly ExcalidrawElement[]) => { + if ( + import.meta.env.DEV || + import.meta.env.MODE === ENV.TEST || + window?.DEBUG_FRACTIONAL_INDICES + ) { + validateFractionalIndices(elements, { + // throw only in dev & test, to remain functional on `DEBUG_FRACTIONAL_INDICES` + shouldThrow: import.meta.env.DEV || import.meta.env.MODE === ENV.TEST, + includeBoundTextValidation: true, + }); + } + }, + 1000 * 60, + { leading: true, trailing: false }, +); + const hashSelectionOpts = ( opts: Parameters["getSelectedElements"]>[0], ) => { @@ -274,18 +293,7 @@ class Scene { : Array.from(nextElements.values()); const nextFrameLikes: ExcalidrawFrameLikeElement[] = []; - if ( - import.meta.env.DEV || - import.meta.env.MODE === ENV.TEST || - window?.DEBUG_FRACTIONAL_INDICES - ) { - validateFractionalIndices(_nextElements, { - // validate everything - includeBoundTextValidation: true, - // throw only in dev & test, to remain functional on `DEBUG_FRACTIONAL_INDICES` - shouldThrow: import.meta.env.DEV || import.meta.env.MODE === ENV.TEST, - }); - } + validateIndicesThrottled(_nextElements); this.elements = syncInvalidIndices(_nextElements); this.elementsMap.clear(); diff --git a/packages/excalidraw/tests/fractionalIndex.test.ts b/packages/excalidraw/tests/fractionalIndex.test.ts index 10dbc004b..b57af016b 100644 --- a/packages/excalidraw/tests/fractionalIndex.test.ts +++ b/packages/excalidraw/tests/fractionalIndex.test.ts @@ -766,6 +766,7 @@ function test( validateFractionalIndices(elements, { shouldThrow: true, includeBoundTextValidation: true, + ignoreLogs: true, }), ).toThrowError(InvalidFractionalIndexError); } @@ -783,6 +784,7 @@ function test( validateFractionalIndices(syncedElements, { shouldThrow: true, includeBoundTextValidation: true, + ignoreLogs: true, }), ).not.toThrowError(InvalidFractionalIndexError); From c641860cb15b20e895da60347a05dfdd42f90e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rk=20Tolm=C3=A1cs?= Date: Fri, 2 Aug 2024 14:44:38 +0200 Subject: [PATCH 13/86] fix: CVE-2023-45133 (#7988) * Upgrade @babel/* versions to 7.24 to ensure non-vulnerable Babel versions * Pinning React version to 18.2.0 exactly, avoiding test-utils type version clashes * Fix warning message on yarn start * Moving react to peer dependencies * Moving app dependencies from workspace into app * Bump vitest to 1.6.0 to fix history.test.tsx breaking --------- Signed-off-by: Mark Tolmacs --- dev-docs/package.json | 4 +- examples/excalidraw/with-nextjs/package.json | 8 +- excalidraw-app/package.json | 12 +- package.json | 18 +- packages/excalidraw/package.json | 18 +- packages/utils/package.json | 14 +- yarn.lock | 5157 +++++++++--------- 7 files changed, 2496 insertions(+), 2735 deletions(-) diff --git a/dev-docs/package.json b/dev-docs/package.json index 77bd5cfcb..a091c5fc3 100644 --- a/dev-docs/package.json +++ b/dev-docs/package.json @@ -23,8 +23,8 @@ "clsx": "^1.2.1", "docusaurus-plugin-sass": "0.2.3", "prism-react-renderer": "^1.3.5", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "18.2.0", + "react-dom": "18.2.0", "sass": "1.57.1" }, "devDependencies": { diff --git a/examples/excalidraw/with-nextjs/package.json b/examples/excalidraw/with-nextjs/package.json index 5b4590ac5..086146cce 100644 --- a/examples/excalidraw/with-nextjs/package.json +++ b/examples/excalidraw/with-nextjs/package.json @@ -13,13 +13,13 @@ "dependencies": { "@excalidraw/excalidraw": "*", "next": "14.1", - "react": "^18", - "react-dom": "^18" + "react": "18.2.0", + "react-dom": "18.2.0" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", + "@types/react": "18.2.0", + "@types/react-dom": "18.2.0", "path2d-polyfill": "2.0.1", "typescript": "^5" } diff --git a/excalidraw-app/package.json b/excalidraw-app/package.json index d0a30b6d9..e404df19c 100644 --- a/excalidraw-app/package.json +++ b/excalidraw-app/package.json @@ -26,7 +26,17 @@ "node": ">=18.0.0" }, "dependencies": { - "vite-plugin-html": "3.2.2" + "firebase": "8.3.3", + "idb-keyval": "6.0.3", + "jotai": "1.13.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "vite-plugin-html": "3.2.2", + "@excalidraw/random-username": "1.0.0", + "@sentry/browser": "6.2.5", + "@sentry/integrations": "6.2.5", + "i18next-browser-languagedetector": "6.1.4", + "socket.io-client": "4.7.2" }, "prettier": "@excalidraw/prettier-config", "scripts": { diff --git a/package.json b/package.json index 7f8b73de2..a8b0b03fa 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,8 @@ "examples/excalidraw", "examples/excalidraw/*" ], - "dependencies": { - "@excalidraw/random-username": "1.0.0", - "@sentry/browser": "6.2.5", - "@sentry/integrations": "6.2.5", - "firebase": "8.3.3", - "i18next-browser-languagedetector": "6.1.4", - "idb-keyval": "6.0.3", - "jotai": "1.13.1", - "react": "18.2.0", - "react-dom": "18.2.0", - "socket.io-client": "4.7.2" - }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "7.21.11", "@excalidraw/eslint-config": "1.0.3", "@excalidraw/prettier-config": "1.0.2", "@types/chai": "4.3.0", @@ -51,7 +40,7 @@ "vite-plugin-ejs": "1.7.0", "vite-plugin-pwa": "0.17.4", "vite-plugin-svgr": "2.4.0", - "vitest": "1.5.3", + "vitest": "1.6.0", "vitest-canvas-mock": "0.3.2" }, "engines": { @@ -88,5 +77,8 @@ "prerelease:excalidraw": "node scripts/prerelease.js", "build:preview": "yarn build && vite preview --port 5000", "release:excalidraw": "node scripts/release.js" + }, + "resolutions": { + "@types/react": "18.2.0" } } diff --git a/packages/excalidraw/package.json b/packages/excalidraw/package.json index 7279346c8..7742fd191 100644 --- a/packages/excalidraw/package.json +++ b/packages/excalidraw/package.json @@ -87,14 +87,14 @@ "tunnel-rat": "0.1.2" }, "devDependencies": { - "@babel/core": "7.18.9", - "@babel/plugin-transform-arrow-functions": "7.18.6", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.9", - "@babel/plugin-transform-typescript": "7.18.8", - "@babel/preset-env": "7.18.6", - "@babel/preset-react": "7.18.6", - "@babel/preset-typescript": "7.18.6", + "@babel/core": "7.24.5", + "@babel/plugin-transform-arrow-functions": "7.24.1", + "@babel/plugin-transform-async-to-generator": "7.24.1", + "@babel/plugin-transform-runtime": "7.24.3", + "@babel/plugin-transform-typescript": "7.24.5", + "@babel/preset-env": "7.24.5", + "@babel/preset-react": "7.24.1", + "@babel/preset-typescript": "7.24.1", "@size-limit/preset-big-lib": "9.0.0", "@testing-library/jest-dom": "5.16.2", "@testing-library/react": "12.1.5", @@ -115,8 +115,6 @@ "import-meta-loader": "1.1.0", "mini-css-extract-plugin": "2.6.1", "postcss-loader": "7.0.1", - "react": "18.2.0", - "react-dom": "18.2.0", "sass-loader": "13.0.2", "size-limit": "9.0.0", "style-loader": "3.3.3", diff --git a/packages/utils/package.json b/packages/utils/package.json index 9b0fdb904..0e8650152 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -55,13 +55,13 @@ "roughjs": "4.6.4" }, "devDependencies": { - "@babel/core": "7.18.9", - "@babel/plugin-transform-arrow-functions": "7.18.6", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/plugin-transform-typescript": "7.18.8", - "@babel/preset-env": "7.18.9", - "@babel/preset-typescript": "7.18.6", + "@babel/core": "7.24.5", + "@babel/plugin-transform-arrow-functions": "7.24.1", + "@babel/plugin-transform-async-to-generator": "7.24.1", + "@babel/plugin-transform-runtime": "7.24.3", + "@babel/plugin-transform-typescript": "7.24.5", + "@babel/preset-env": "7.24.5", + "@babel/preset-typescript": "7.24.1", "babel-loader": "8.2.5", "babel-plugin-transform-class-properties": "6.24.1", "cross-env": "7.0.3", diff --git a/yarn.lock b/yarn.lock index b2c5c4517..9eea53db2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,14 +2,9 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1": +"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1": version "2.3.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: "@jridgewell/gen-mapping" "^0.3.5" @@ -17,7 +12,7 @@ "@apideck/better-ajv-errors@^0.3.1": version "0.3.6" - resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== dependencies: json-schema "^0.4.0" @@ -26,60 +21,60 @@ "@babel/code-frame@7.12.11": version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" + integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== dependencies: - "@babel/highlight" "^7.24.2" + "@babel/highlight" "^7.24.6" picocolors "^1.0.0" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.6", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.4", "@babel/compat-data@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" + integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== -"@babel/core@7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" - integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.9" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.11.1", "@babel/core@^7.16.0", "@babel/core@^7.19.6", "@babel/core@^7.20.12": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" - integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== +"@babel/core@7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.4" + "@babel/generator" "^7.24.5" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.4" - "@babel/parser" "^7.24.4" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.16.0", "@babel/core@^7.19.6", "@babel/core@^7.20.12", "@babel/core@^7.24.4": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" + integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helpers" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/template" "^7.24.6" + "@babel/traverse" "^7.24.6" + "@babel/types" "^7.24.6" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -87,89 +82,77 @@ semver "^6.3.1" "@babel/eslint-parser@^7.16.3": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz#e27eee93ed1d271637165ef3a86e2b9332395c32" - integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.6.tgz#7f0ecc0f29307b8696e83ff6a9d8b4f3e0421ad2" + integrity sha512-Q1BfQX42zXHx732PLW0w4+Y3wJjoZKEMaatFUEAmQ7Z+jCXxinzeqX9bvv2Q8xNPes/H6F0I23oGkcgjaItmLw== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.18.9", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== +"@babel/generator@^7.24.5", "@babel/generator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" + integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.6" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz#517af93abc77924f9b2514c407bbef527fb8938d" + integrity sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz#19e9089ee87b0d0928012c83961a8deef4b0223f" + integrity sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw== dependencies: - "@babel/types" "^7.22.15" + "@babel/types" "^7.24.6" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6", "@babel/helper-compilation-targets@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" + integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" + "@babel/compat-data" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" - integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.5", "@babel/helper-create-class-features-plugin@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz#c50b86fa1c4ca9b7a890dc21884f097b6c4b5286" + integrity sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-member-expression-to-functions" "^7.24.6" + "@babel/helper-optimise-call-expression" "^7.24.6" + "@babel/helper-replace-supers" "^7.24.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz#47d382dec0d49e74ca1b6f7f3b81f5968022a3c8" + integrity sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.6" regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@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-define-polyfill-provider@^0.6.1": - version "0.6.1" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" - integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -177,297 +160,226 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== +"@babel/helper-environment-visitor@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" + integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== +"@babel/helper-function-name@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" + integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +"@babel/helper-hoist-variables@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" + integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== +"@babel/helper-member-expression-to-functions@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz#86084f3e0e4e2169a134754df3870bc7784db71e" + integrity sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.24.6" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3", "@babel/helper-module-imports@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" + integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.6" -"@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== +"@babel/helper-module-transforms@^7.24.5", "@babel/helper-module-transforms@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" + integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-simple-access" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== +"@babel/helper-optimise-call-expression@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz#f7836e3ccca3dfa02f15d2bc8b794efe75a5256e" + integrity sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.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.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@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.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.24.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" + integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz#c96ceb9846e877d806ce82a1521230ea7e0fc354" + integrity sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-wrap-function" "^7.24.6" -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== +"@babel/helper-replace-supers@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz#3ea87405a2986a49ab052d10e540fe036d747c71" + integrity sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-member-expression-to-functions" "^7.24.6" + "@babel/helper-optimise-call-expression" "^7.24.6" -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== +"@babel/helper-simple-access@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" + integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz#c47e9b33b7ea50d1073e125ebc26661717cb7040" + integrity sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== +"@babel/helper-split-export-declaration@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" + integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-string-parser@^7.23.4": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== +"@babel/helper-string-parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" + integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" + integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.23.5", "@babel/helper-validator-option@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" + integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== +"@babel/helper-wrap-function@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz#c27af1006e310683fdc76b668a0a1f6003e36217" + integrity sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ== dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" + "@babel/helper-function-name" "^7.24.6" + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/helpers@^7.18.9", "@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== +"@babel/helpers@^7.24.5", "@babel/helpers@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" + integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== +"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" + integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== dependencies: - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-validator-identifier" "^7.24.6" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.18.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== +"@babel/parser@^7.24.5", "@babel/parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" + integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" - integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5", "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz#283a74ef365b1e954cda6b2724c678a978215e88" + integrity sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.6": + version "7.24.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.24.6.tgz#f9f5ae4d6fb72f5950262cb6f0b2482c3bc684ef" + integrity sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz#ab9be6edfffa127bd5ec4317c76c5af0f8fc7e6c" + integrity sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" + "@babel/plugin-transform-optional-chaining" "^7.24.6" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz#0faf879249ec622d7f1c42eaebf7d11197401b2c" + integrity sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-proposal-async-generator-functions@^7.18.6": - version "7.20.7" - resolved "https://registry.npmjs.org/@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.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + 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.18.6": - version "7.21.0" - resolved "https://registry.npmjs.org/@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-decorators@^7.16.4": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.6.tgz#20e7ed41c24d3f6a2d94af7b44ddd06d1f8a71a3" + integrity sha512-8DjR0/DzlBhz2SVi9a19/N2U5+C3y3rseXuyoKL9SP8vnbewscj1eHZtL6kpEn4UCuUmqEo0mvqyDYRFoN2gpA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-decorators" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/plugin-syntax-decorators" "^7.24.6" -"@babel/plugin-proposal-dynamic-import@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@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.6", "@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@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.npmjs.org/@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.18.6", "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.20.7" - resolved "https://registry.npmjs.org/@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.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + 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.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": +"@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + 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.18.6", "@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.20.7" - resolved "https://registry.npmjs.org/@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.npmjs.org/@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.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.6", "@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.16.0": version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + 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.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.16.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + 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" @@ -475,12 +387,12 @@ "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@7.21.11": version "7.21.11" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -488,587 +400,555 @@ "@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.npmjs.org/@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.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + 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-class-properties@^7.12.13": version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + 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.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + 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-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== +"@babel/plugin-syntax-decorators@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.6.tgz#904d53fc158e8fb9f0754c76071e0ce38fe318eb" + integrity sha512-gInH8LEqBp+wkwTVihCd/qf+4s28g81FZyvlIbAurHk9eSiItEKG7E0uNK2UdpgsD79aJVAW3R3c85h0YJ0jsw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + 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.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + 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-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" - integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== +"@babel/plugin-syntax-flow@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.6.tgz#1102a710771326b8e2f0c85ac2aecb6f52eb601e" + integrity sha512-gNkksSdV8RbsCoHF9sjVYrHfYACMl/8U32UfUhJ9+84/ASXw8dlx+eHyyF0m6ncQJ9IBSxfuCkB36GJqYdXTOA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-syntax-import-assertions@^7.18.6", "@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-import-assertions@^7.24.1", "@babel/plugin-syntax-import-assertions@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz#52521c1c1698fc2dd9cf88f7a4dd86d4d041b9e1" + integrity sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-attributes@^7.24.1", "@babel/plugin-syntax-import-attributes@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz#12aba325534129584672920274fefa4dc2d5f68e" + integrity sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + 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.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + 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.23.3", "@babel/plugin-syntax-jsx@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== +"@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz#bcca2964150437f88f65e3679e3d68762287b9c8" + integrity sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + 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.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + 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": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + 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.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + 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.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + 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.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + 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.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + 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": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + 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.18.6", "@babel/plugin-syntax-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== +"@babel/plugin-syntax-typescript@^7.24.1", "@babel/plugin-syntax-typescript@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz#769daf2982d60308bc83d8936eaecb7582463c87" + integrity sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.24.1": +"@babel/plugin-transform-arrow-functions@7.24.1": version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-arrow-functions@^7.24.1", "@babel/plugin-transform-arrow-functions@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz#93607d1ef5b81c70af174aff3532d57216367492" + integrity sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.6" + +"@babel/plugin-transform-async-generator-functions@^7.24.3", "@babel/plugin-transform-async-generator-functions@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz#fa4a9e5c3a7f60f697ba36587b6c41b04f507d84" + integrity sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA== + dependencies: + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-remap-async-to-generator" "^7.24.6" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.24.1": +"@babel/plugin-transform-async-to-generator@7.24.1": version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== dependencies: "@babel/helper-module-imports" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.18.6", "@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-async-to-generator@^7.24.1", "@babel/plugin-transform-async-to-generator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz#eb11434b11d73d8c0cf9f71a6f4f1e6ba441df35" + integrity sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-remap-async-to-generator" "^7.24.6" -"@babel/plugin-transform-block-scoping@^7.18.6", "@babel/plugin-transform-block-scoping@^7.18.9", "@babel/plugin-transform-block-scoping@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" - integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== +"@babel/plugin-transform-block-scoped-functions@^7.24.1", "@babel/plugin-transform-block-scoped-functions@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz#975555b5bfa9870b1218da536d1528735f1f8c56" + integrity sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== +"@babel/plugin-transform-block-scoping@^7.24.5", "@babel/plugin-transform-block-scoping@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz#a03ec8a4591c2b43cf7798bc633e698293fda179" + integrity sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== +"@babel/plugin-transform-class-properties@^7.24.1", "@babel/plugin-transform-class-properties@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz#d9f394e97e88ef905d5a1e5e7a16238621b7982e" + integrity sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + +"@babel/plugin-transform-class-static-block@^7.24.4", "@babel/plugin-transform-class-static-block@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz#f43f29286f6f0dca33d18fd5033b817d6c3fa816" + integrity sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.18.6", "@babel/plugin-transform-classes@^7.18.9", "@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== +"@babel/plugin-transform-classes@^7.24.5", "@babel/plugin-transform-classes@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz#0cc198c02720d4eeb091004843477659c6b37977" + integrity sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-replace-supers" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.6", "@babel/plugin-transform-computed-properties@^7.18.9", "@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-computed-properties@^7.24.1", "@babel/plugin-transform-computed-properties@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz#7a1765c01cdfe59c320d2d0f37a4dc4aecd14df1" + integrity sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/template" "^7.24.6" -"@babel/plugin-transform-destructuring@^7.18.6", "@babel/plugin-transform-destructuring@^7.18.9", "@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== +"@babel/plugin-transform-destructuring@^7.24.5", "@babel/plugin-transform-destructuring@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz#bdd1a6c90ffb2bfd13b6007b13316eeafc97cb53" + integrity sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.24.1", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-dotall-regex@^7.24.1", "@babel/plugin-transform-dotall-regex@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz#5a6b3148ec5f4f274ff48cebea90565087cad126" + integrity sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-duplicate-keys@^7.18.6", "@babel/plugin-transform-duplicate-keys@^7.18.9", "@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-duplicate-keys@^7.24.1", "@babel/plugin-transform-duplicate-keys@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz#2716301227cf7cd4fdadcbe4353ce191f8b3dc8a" + integrity sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-dynamic-import@^7.24.1", "@babel/plugin-transform-dynamic-import@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz#b477177761d56b15a4ba42a83be31cf72d757acf" + integrity sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.18.6", "@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-exponentiation-operator@^7.24.1", "@babel/plugin-transform-exponentiation-operator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz#011e9e1a429f91b024af572530873ca571f9ef06" + integrity sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-export-namespace-from@^7.24.1", "@babel/plugin-transform-export-namespace-from@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz#b64ded74d9afb3db5d47d93996c4df69f15ac97c" + integrity sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" - integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.6.tgz#dfd9d1c90e74335bc68d82f41ad9224960a4de84" + integrity sha512-1l8b24NoCpaQ13Vi6FtLG1nv6kNoi8PWvQb1AYO7GHZDpFfBYc3lbXArx1lP2KRt8b4pej1eWc/zrRmsQTfOdQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-flow" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/plugin-syntax-flow" "^7.24.6" -"@babel/plugin-transform-for-of@^7.18.6", "@babel/plugin-transform-for-of@^7.18.8", "@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.1", "@babel/plugin-transform-for-of@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz#7f31780bd0c582b546372c0c0da9d9d56731e0a2" + integrity sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" -"@babel/plugin-transform-function-name@^7.18.6", "@babel/plugin-transform-function-name@^7.18.9", "@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.24.1", "@babel/plugin-transform-function-name@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz#60d1de3f6fd816a3e3bf9538578a64527e1b9c97" + integrity sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.24.1", "@babel/plugin-transform-json-strings@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz#a84639180ea1f9001bb5e6dc01921235ab05ad8b" + integrity sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.18.6", "@babel/plugin-transform-literals@^7.18.9", "@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.24.1", "@babel/plugin-transform-literals@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz#7f44f2871d7a4456030b0540858046f0b7bc6b18" + integrity sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.1", "@babel/plugin-transform-logical-assignment-operators@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz#9cc7baa5629866566562c159dc1eae7569810f33" + integrity sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.18.6", "@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.24.1", "@babel/plugin-transform-member-expression-literals@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz#5d3681ca201ac6909419cc51ac082a6ba4c5c756" + integrity sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-modules-amd@^7.18.6", "@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.24.1", "@babel/plugin-transform-modules-amd@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz#09aeac7acb7913496aaaafdc64f40683e0db7e41" + integrity sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== +"@babel/plugin-transform-modules-commonjs@^7.24.1", "@babel/plugin-transform-modules-commonjs@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz#1b8269902f25bd91ca6427230d4735ddd1e1283e" + integrity sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-simple-access" "^7.24.6" -"@babel/plugin-transform-modules-systemjs@^7.18.6", "@babel/plugin-transform-modules-systemjs@^7.18.9", "@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-systemjs@^7.24.1", "@babel/plugin-transform-modules-systemjs@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz#c54eb53fe16f9b82d320abd76762d0320e3f9393" + integrity sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-hoist-variables" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" -"@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-umd@^7.24.1", "@babel/plugin-transform-modules-umd@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz#c4ef8b6d4da230b8dc87e81cd66986728952f89b" + integrity sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5", "@babel/plugin-transform-named-capturing-groups-regex@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz#352ee2861ab8705320029f80238cf26a92ba65d5" + integrity sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-new-target@^7.18.6", "@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-new-target@^7.24.1", "@babel/plugin-transform-new-target@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz#fc024294714705113720d5e3dc0f9ad7abdbc289" + integrity sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz#12b83b3cdfd1cd2066350e36e4fb912ab194545e" + integrity sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.1", "@babel/plugin-transform-numeric-separator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz#d9115669cc85aa91fbfb15f88f2226332cf4946a" + integrity sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== +"@babel/plugin-transform-object-rest-spread@^7.24.5", "@babel/plugin-transform-object-rest-spread@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz#68d763f69955f9e599c405c6c876f5be46b47d8a" + integrity sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.6" -"@babel/plugin-transform-object-super@^7.18.6", "@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-object-super@^7.24.1", "@babel/plugin-transform-object-super@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz#9cbe6f995bed343a7ab8daf0416dac057a9c3e27" + integrity sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-replace-supers" "^7.24.6" -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== +"@babel/plugin-transform-optional-catch-binding@^7.24.1", "@babel/plugin-transform-optional-catch-binding@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz#c81e90a971aad898e56f2b75a358e6c4855aeba3" + integrity sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== +"@babel/plugin-transform-optional-chaining@^7.24.5", "@babel/plugin-transform-optional-chaining@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz#3d636b3ed8b5a506f93e4d4675fc95754d7594f5" + integrity sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.18.6", "@babel/plugin-transform-parameters@^7.18.8", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== +"@babel/plugin-transform-parameters@^7.24.5", "@babel/plugin-transform-parameters@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz#7aee86dfedd2fc0136fecbe6f7649fc02d86ab22" + integrity sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-private-methods@^7.24.1", "@babel/plugin-transform-private-methods@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz#258e1f859a52ff7b30ad556598224c192defcda7" + integrity sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== +"@babel/plugin-transform-private-property-in-object@^7.24.5", "@babel/plugin-transform-private-property-in-object@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz#59ff09a099f62213112cf348e96b6b11957d1f28" + integrity sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-create-class-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.18.6", "@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-property-literals@^7.24.1", "@babel/plugin-transform-property-literals@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz#243c4faabe811c405e9443059a58e834bf95dfd1" + integrity sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6", "@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1", "@babel/plugin-transform-react-display-name@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.6.tgz#2a10c732c2c87a8f06e4413fb4a14e76e6c67a99" + integrity sha512-/3iiEEHDsJuj9QU09gbyWGSUxDboFcD7Nj6dnHIlboWSodxXAoaY/zlNMHeYAC0WsERMqgO9a7UaM77CsYgWcg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-react-jsx-development@^7.18.6", "@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-react-jsx-development@^7.22.5", "@babel/plugin-transform-react-jsx-development@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.6.tgz#e662058e8795b5fccd24c5bdd2b328728aef3305" + integrity sha512-F7EsNp5StNDouSSdYyDSxh4J+xvj/JqG+Cb6s2fA+jCyHOzigG5vTwgH8tU2U8Voyiu5zCG9bAK49wTr/wPH0w== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.24.6" "@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" - integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz#4fa4870d594d6840d724d2006d0f98b19be6f502" + integrity sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-transform-react-jsx-source@^7.19.6": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz#a2dedb12b09532846721b5df99e52ef8dc3351d0" - integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.6.tgz#4e1503f24ca5fccb1fc7f20c57426899d5ce5c1f" + integrity sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.23.4", "@babel/plugin-transform-react-jsx@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.6.tgz#4ca3660ca663d20095455571615d6263986cdfe4" + integrity sha512-pCtPHhpRZHfwdA5G1Gpk5mIzMA99hv0R8S/Ket50Rw+S+8hkt3wBWqdqHaPw0CuUYxdshUgsPiLQ5fAs4ASMhw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/plugin-syntax-jsx" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/plugin-transform-react-pure-annotations@^7.18.6", "@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== +"@babel/plugin-transform-react-pure-annotations@^7.24.1", "@babel/plugin-transform-react-pure-annotations@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.6.tgz#d2bad8d70c3635cb63a69ee66c9c891f9392435c" + integrity sha512-0HoDQlFJJkXRyV2N+xOpUETbKHcouSwijRQbKWVtxsPoq5bbB30qZag9/pSc5xcWVYjTHlLsBsY+hZDnzQTPNw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-regenerator@^7.18.6", "@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.1", "@babel/plugin-transform-regenerator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz#ed10cf0c13619365e15459f88d1b915ac57ffc24" + integrity sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.18.6", "@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== +"@babel/plugin-transform-reserved-words@^7.24.1", "@babel/plugin-transform-reserved-words@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz#9eb16cbf339fcea0a46677716c775afb5ef14245" + integrity sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-runtime@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz#77b14416015ea93367ca06979710f5000ff34ccb" - integrity sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" - semver "^6.3.0" - -"@babel/plugin-transform-runtime@7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.9.tgz#d9e4b1b25719307bfafbf43065ed7fb3a83adb8f" - integrity sha512-wS8uJwBt7/b/mzE13ktsJdmS4JP/j7PQSaADtnb4I2wL0zK51MQ0pmF8/Jy0wUIS96fr+fXT6S/ifiPXnvrlSg== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" - semver "^6.3.0" - -"@babel/plugin-transform-runtime@^7.16.4": +"@babel/plugin-transform-runtime@7.24.3": version "7.24.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== dependencies: "@babel/helper-module-imports" "^7.24.3" @@ -1078,264 +958,115 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== +"@babel/plugin-transform-runtime@^7.16.4": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.6.tgz#1e3256246004c3724b8e07c7cb25e35913c4e373" + integrity sha512-W3gQydMb0SY99y/2lV0Okx2xg/8KzmZLQsLaiCmwNRl1kKomz14VurEm+2TossUb+sRvBCnGe+wx8KtIgDtBbQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" -"@babel/plugin-transform-spread@^7.18.6", "@babel/plugin-transform-spread@^7.18.9", "@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== +"@babel/plugin-transform-shorthand-properties@^7.24.1", "@babel/plugin-transform-shorthand-properties@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz#ef734ebccc428d2174c7bb36015d0800faf5381e" + integrity sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-sticky-regex@^7.18.6", "@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== +"@babel/plugin-transform-spread@^7.24.1", "@babel/plugin-transform-spread@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz#a56cecbd8617675531d1b79f5b755b7613aa0822" + integrity sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.6" -"@babel/plugin-transform-template-literals@^7.18.6", "@babel/plugin-transform-template-literals@^7.18.9", "@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== +"@babel/plugin-transform-sticky-regex@^7.24.1", "@babel/plugin-transform-sticky-regex@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz#1a78127731fea87d954bed193840986a38f04327" + integrity sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-typeof-symbol@^7.18.6", "@babel/plugin-transform-typeof-symbol@^7.18.9", "@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== +"@babel/plugin-transform-template-literals@^7.24.1", "@babel/plugin-transform-template-literals@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz#aaf2ae157acd0e5c9265dba8ac0a439f8d2a6303" + integrity sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-typescript@7.18.8": - version "7.18.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz#303feb7a920e650f2213ef37b36bbf327e6fa5a0" - integrity sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA== +"@babel/plugin-transform-typeof-symbol@^7.24.5", "@babel/plugin-transform-typeof-symbol@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz#3d02da23ebcc8f1982ddcd1f2581cf3ee4e58762" + integrity sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-typescript" "^7.18.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.24.1": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz#03e0492537a4b953e491f53f2bc88245574ebd15" - integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== +"@babel/plugin-transform-typescript@7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" + integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-typescript" "^7.24.1" -"@babel/plugin-transform-unicode-escapes@^7.18.6", "@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== +"@babel/plugin-transform-typescript@^7.24.1", "@babel/plugin-transform-typescript@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.6.tgz#339c6127a783c32e28a5b591e6c666f899b57db0" + integrity sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.6" + "@babel/helper-create-class-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/plugin-syntax-typescript" "^7.24.6" -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== +"@babel/plugin-transform-unicode-escapes@^7.24.1", "@babel/plugin-transform-unicode-escapes@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz#c8ddca8fd5bacece837a4e27bd3b7ed64580d1a8" + integrity sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-unicode-regex@^7.18.6", "@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== +"@babel/plugin-transform-unicode-property-regex@^7.24.1", "@babel/plugin-transform-unicode-property-regex@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz#e66297d5d452db0b0be56515e3d0e10b7d33fb32" + integrity sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== +"@babel/plugin-transform-unicode-regex@^7.24.1", "@babel/plugin-transform-unicode-regex@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz#2001e7d87ed709eea145e0b65fb5f93c3c0e225b" + integrity sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/preset-env@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" - integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== +"@babel/plugin-transform-unicode-sets-regex@^7.24.1", "@babel/plugin-transform-unicode-sets-regex@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz#f18b7292222aee85c155258ceb345a146a070a46" + integrity sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" - "@babel/plugin-proposal-async-generator-functions" "^7.18.6" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.6" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@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.18.6" - "@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.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.6" - "@babel/plugin-transform-classes" "^7.18.6" - "@babel/plugin-transform-computed-properties" "^7.18.6" - "@babel/plugin-transform-destructuring" "^7.18.6" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.6" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.6" - "@babel/plugin-transform-function-name" "^7.18.6" - "@babel/plugin-transform-literals" "^7.18.6" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.6" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.6" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.6" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.6" - "@babel/plugin-transform-typeof-symbol" "^7.18.6" - "@babel/plugin-transform-unicode-escapes" "^7.18.6" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.6" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" - core-js-compat "^3.22.1" - semver "^6.3.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/preset-env@7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" - integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.6" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@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.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@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.18.6" - "@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.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@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.18.8" - "@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.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@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.6" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.16.4": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" - integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== +"@babel/preset-env@7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== dependencies: "@babel/compat-data" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" @@ -1362,12 +1093,12 @@ "@babel/plugin-transform-async-generator-functions" "^7.24.3" "@babel/plugin-transform-async-to-generator" "^7.24.1" "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.4" + "@babel/plugin-transform-block-scoping" "^7.24.5" "@babel/plugin-transform-class-properties" "^7.24.1" "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.1" + "@babel/plugin-transform-classes" "^7.24.5" "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" "@babel/plugin-transform-dotall-regex" "^7.24.1" "@babel/plugin-transform-duplicate-keys" "^7.24.1" "@babel/plugin-transform-dynamic-import" "^7.24.1" @@ -1387,13 +1118,13 @@ "@babel/plugin-transform-new-target" "^7.24.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" "@babel/plugin-transform-object-super" "^7.24.1" "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" "@babel/plugin-transform-property-literals" "^7.24.1" "@babel/plugin-transform-regenerator" "^7.24.1" "@babel/plugin-transform-reserved-words" "^7.24.1" @@ -1401,7 +1132,7 @@ "@babel/plugin-transform-spread" "^7.24.1" "@babel/plugin-transform-sticky-regex" "^7.24.1" "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" "@babel/plugin-transform-unicode-escapes" "^7.24.1" "@babel/plugin-transform-unicode-property-regex" "^7.24.1" "@babel/plugin-transform-unicode-regex" "^7.24.1" @@ -1413,41 +1144,105 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.16.4": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.6.tgz#a5a55bc70e5ff1ed7f872067e2a9d65ff917ad6f" + integrity sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg== + dependencies: + "@babel/compat-data" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.6" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.6" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@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.24.6" + "@babel/plugin-syntax-import-attributes" "^7.24.6" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@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-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.6" + "@babel/plugin-transform-async-generator-functions" "^7.24.6" + "@babel/plugin-transform-async-to-generator" "^7.24.6" + "@babel/plugin-transform-block-scoped-functions" "^7.24.6" + "@babel/plugin-transform-block-scoping" "^7.24.6" + "@babel/plugin-transform-class-properties" "^7.24.6" + "@babel/plugin-transform-class-static-block" "^7.24.6" + "@babel/plugin-transform-classes" "^7.24.6" + "@babel/plugin-transform-computed-properties" "^7.24.6" + "@babel/plugin-transform-destructuring" "^7.24.6" + "@babel/plugin-transform-dotall-regex" "^7.24.6" + "@babel/plugin-transform-duplicate-keys" "^7.24.6" + "@babel/plugin-transform-dynamic-import" "^7.24.6" + "@babel/plugin-transform-exponentiation-operator" "^7.24.6" + "@babel/plugin-transform-export-namespace-from" "^7.24.6" + "@babel/plugin-transform-for-of" "^7.24.6" + "@babel/plugin-transform-function-name" "^7.24.6" + "@babel/plugin-transform-json-strings" "^7.24.6" + "@babel/plugin-transform-literals" "^7.24.6" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.6" + "@babel/plugin-transform-member-expression-literals" "^7.24.6" + "@babel/plugin-transform-modules-amd" "^7.24.6" + "@babel/plugin-transform-modules-commonjs" "^7.24.6" + "@babel/plugin-transform-modules-systemjs" "^7.24.6" + "@babel/plugin-transform-modules-umd" "^7.24.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.6" + "@babel/plugin-transform-new-target" "^7.24.6" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.6" + "@babel/plugin-transform-numeric-separator" "^7.24.6" + "@babel/plugin-transform-object-rest-spread" "^7.24.6" + "@babel/plugin-transform-object-super" "^7.24.6" + "@babel/plugin-transform-optional-catch-binding" "^7.24.6" + "@babel/plugin-transform-optional-chaining" "^7.24.6" + "@babel/plugin-transform-parameters" "^7.24.6" + "@babel/plugin-transform-private-methods" "^7.24.6" + "@babel/plugin-transform-private-property-in-object" "^7.24.6" + "@babel/plugin-transform-property-literals" "^7.24.6" + "@babel/plugin-transform-regenerator" "^7.24.6" + "@babel/plugin-transform-reserved-words" "^7.24.6" + "@babel/plugin-transform-shorthand-properties" "^7.24.6" + "@babel/plugin-transform-spread" "^7.24.6" + "@babel/plugin-transform-sticky-regex" "^7.24.6" + "@babel/plugin-transform-template-literals" "^7.24.6" + "@babel/plugin-transform-typeof-symbol" "^7.24.6" + "@babel/plugin-transform-unicode-escapes" "^7.24.6" + "@babel/plugin-transform-unicode-property-regex" "^7.24.6" + "@babel/plugin-transform-unicode-regex" "^7.24.6" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.6" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-modules@^0.1.5": - version "0.1.6" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" - integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== - 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/preset-react@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/preset-react@^7.16.0": +"@babel/preset-react@7.24.1": version "7.24.1" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== dependencies: "@babel/helper-plugin-utils" "^7.24.0" @@ -1457,18 +1252,21 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.24.1" -"@babel/preset-typescript@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== +"@babel/preset-react@^7.16.0": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.6.tgz#92eace66dce577e5263113eb82235a0d45096cae" + integrity sha512-8mpzh1bWvmINmwM3xpz6ahu57mNaWavMm+wBNjQ4AFu1nghKBiIRET7l/Wmj4drXany/BBGjJZngICcD98F1iw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" + "@babel/plugin-transform-react-display-name" "^7.24.6" + "@babel/plugin-transform-react-jsx" "^7.24.6" + "@babel/plugin-transform-react-jsx-development" "^7.24.6" + "@babel/plugin-transform-react-pure-annotations" "^7.24.6" -"@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@7.24.1": version "7.24.1" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== dependencies: "@babel/helper-plugin-utils" "^7.24.0" @@ -1477,432 +1275,443 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.1" "@babel/plugin-transform-typescript" "^7.24.1" +"@babel/preset-typescript@^7.16.0": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.6.tgz#27057470fb981c31338bdb897fc3d9aa0cb7dab2" + integrity sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" + "@babel/plugin-syntax-jsx" "^7.24.6" + "@babel/plugin-transform-modules-commonjs" "^7.24.6" + "@babel/plugin-transform-typescript" "^7.24.6" + "@babel/regjsgen@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.3", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" - integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" + integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.18.6", "@babel/template@^7.22.15", "@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== +"@babel/template@^7.24.0", "@babel/template@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" + integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" + "@babel/code-frame" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== +"@babel/traverse@^7.24.5", "@babel/traverse@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" + integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-hoist-variables" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== +"@babel/types@^7.20.0", "@babel/types@^7.24.5", "@babel/types@^7.24.6", "@babel/types@^7.4.4": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" + integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@braintree/sanitize-url@6.0.2": version "6.0.2" - resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== "@braintree/sanitize-url@^6.0.1": version "6.0.4" - resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== "@discoveryjs/json-ext@^0.5.0": version "0.5.7" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@esbuild/aix-ppc64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" integrity sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q== "@esbuild/aix-ppc64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== "@esbuild/aix-ppc64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== "@esbuild/android-arm64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz#ef31015416dd79398082409b77aaaa2ade4d531a" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz#ef31015416dd79398082409b77aaaa2ade4d531a" integrity sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q== "@esbuild/android-arm64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== "@esbuild/android-arm64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== "@esbuild/android-arm@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz#1c23c7e75473aae9fb323be5d9db225142f47f52" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.10.tgz#1c23c7e75473aae9fb323be5d9db225142f47f52" integrity sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w== "@esbuild/android-arm@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== "@esbuild/android-arm@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== "@esbuild/android-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz#df6a4e6d6eb8da5595cfce16d4e3f6bc24464707" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.10.tgz#df6a4e6d6eb8da5595cfce16d4e3f6bc24464707" integrity sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw== "@esbuild/android-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== "@esbuild/android-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== "@esbuild/darwin-arm64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz#8462a55db07c1b2fad61c8244ce04469ef1043be" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz#8462a55db07c1b2fad61c8244ce04469ef1043be" integrity sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA== "@esbuild/darwin-arm64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== "@esbuild/darwin-arm64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== "@esbuild/darwin-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz#d1de20bfd41bb75b955ba86a6b1004539e8218c1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz#d1de20bfd41bb75b955ba86a6b1004539e8218c1" integrity sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA== "@esbuild/darwin-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== "@esbuild/darwin-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== "@esbuild/freebsd-arm64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz#16904879e34c53a2e039d1284695d2db3e664d57" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz#16904879e34c53a2e039d1284695d2db3e664d57" integrity sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg== "@esbuild/freebsd-arm64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== "@esbuild/freebsd-arm64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== "@esbuild/freebsd-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz#8ad9e5ca9786ca3f1ef1411bfd10b08dcd9d4cef" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz#8ad9e5ca9786ca3f1ef1411bfd10b08dcd9d4cef" integrity sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag== "@esbuild/freebsd-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== "@esbuild/freebsd-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== "@esbuild/linux-arm64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz#d82cf2c590faece82d28bbf1cfbe36f22ae25bd2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz#d82cf2c590faece82d28bbf1cfbe36f22ae25bd2" integrity sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ== "@esbuild/linux-arm64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== "@esbuild/linux-arm64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== "@esbuild/linux-arm@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz#477b8e7c7bcd34369717b04dd9ee6972c84f4029" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz#477b8e7c7bcd34369717b04dd9ee6972c84f4029" integrity sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg== "@esbuild/linux-arm@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== "@esbuild/linux-arm@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== "@esbuild/linux-ia32@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz#d55ff822cf5b0252a57112f86857ff23be6cab0e" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz#d55ff822cf5b0252a57112f86857ff23be6cab0e" integrity sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg== "@esbuild/linux-ia32@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== "@esbuild/linux-ia32@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== "@esbuild/linux-loong64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz#a9ad057d7e48d6c9f62ff50f6f208e331c4543c7" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz#a9ad057d7e48d6c9f62ff50f6f208e331c4543c7" integrity sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA== "@esbuild/linux-loong64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== "@esbuild/linux-loong64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== "@esbuild/linux-mips64el@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz#b011a96924773d60ebab396fbd7a08de66668179" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz#b011a96924773d60ebab396fbd7a08de66668179" integrity sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A== "@esbuild/linux-mips64el@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== "@esbuild/linux-mips64el@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== "@esbuild/linux-ppc64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz#5d8b59929c029811e473f2544790ea11d588d4dd" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz#5d8b59929c029811e473f2544790ea11d588d4dd" integrity sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ== "@esbuild/linux-ppc64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== "@esbuild/linux-ppc64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== "@esbuild/linux-riscv64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz#292b06978375b271bd8bc0a554e0822957508d22" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz#292b06978375b271bd8bc0a554e0822957508d22" integrity sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA== "@esbuild/linux-riscv64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== "@esbuild/linux-riscv64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== "@esbuild/linux-s390x@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz#d30af63530f8d4fa96930374c9dd0d62bf59e069" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz#d30af63530f8d4fa96930374c9dd0d62bf59e069" integrity sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA== "@esbuild/linux-s390x@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== "@esbuild/linux-s390x@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== "@esbuild/linux-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz#898c72eeb74d9f2fb43acf316125b475548b75ce" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz#898c72eeb74d9f2fb43acf316125b475548b75ce" integrity sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA== "@esbuild/linux-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== "@esbuild/linux-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== "@esbuild/netbsd-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz#fd473a5ae261b43eab6dad4dbd5a3155906e6c91" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz#fd473a5ae261b43eab6dad4dbd5a3155906e6c91" integrity sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q== "@esbuild/netbsd-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== "@esbuild/netbsd-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== "@esbuild/openbsd-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz#96eb8992e526717b5272321eaad3e21f3a608e46" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz#96eb8992e526717b5272321eaad3e21f3a608e46" integrity sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg== "@esbuild/openbsd-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== "@esbuild/openbsd-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== "@esbuild/sunos-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz#c16ee1c167f903eaaa6acf7372bee42d5a89c9bc" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz#c16ee1c167f903eaaa6acf7372bee42d5a89c9bc" integrity sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA== "@esbuild/sunos-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== "@esbuild/sunos-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== "@esbuild/win32-arm64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz#7e417d1971dbc7e469b4eceb6a5d1d667b5e3dcc" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz#7e417d1971dbc7e469b4eceb6a5d1d667b5e3dcc" integrity sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw== "@esbuild/win32-arm64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== "@esbuild/win32-arm64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== "@esbuild/win32-ia32@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz#2b52dfec6cd061ecb36171c13bae554888b439e5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz#2b52dfec6cd061ecb36171c13bae554888b439e5" integrity sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ== "@esbuild/win32-ia32@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== "@esbuild/win32-ia32@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== "@esbuild/win32-x64@0.19.10": version "0.19.10" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz#bd123a74f243d2f3a1f046447bb9b363ee25d072" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz#bd123a74f243d2f3a1f046447bb9b363ee25d072" integrity sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA== "@esbuild/win32-x64@0.19.12": version "0.19.12" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== "@esbuild/win32-x64@0.20.2": version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": version "4.10.0" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^0.4.3": version "0.4.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" @@ -1917,17 +1726,17 @@ "@excalidraw/eslint-config@1.0.3": version "1.0.3" - resolved "https://registry.npmjs.org/@excalidraw/eslint-config/-/eslint-config-1.0.3.tgz#2122ef7413ae77874ae9848ce0f1c6b3f0d8bbbd" + resolved "https://registry.yarnpkg.com/@excalidraw/eslint-config/-/eslint-config-1.0.3.tgz#2122ef7413ae77874ae9848ce0f1c6b3f0d8bbbd" integrity sha512-GemHNF5Z6ga0BWBSX7GJaNBUchLu6RwTcAB84eX1MeckRNhNasAsPCdelDlFalz27iS4RuYEQh0bPE8SRxJgbQ== "@excalidraw/laser-pointer@1.3.1": version "1.3.1" - resolved "https://registry.npmjs.org/@excalidraw/laser-pointer/-/laser-pointer-1.3.1.tgz#7c40836598e8e6ad91f01057883ed8b88fb9266c" + resolved "https://registry.yarnpkg.com/@excalidraw/laser-pointer/-/laser-pointer-1.3.1.tgz#7c40836598e8e6ad91f01057883ed8b88fb9266c" integrity sha512-psA1z1N2qeAfsORdXc9JmD2y4CmDwmuMRxnNdJHZexIcPwaNEyIpNcelw+QkL9rz9tosaN9krXuKaRqYpRAR6g== "@excalidraw/markdown-to-text@0.1.2": version "0.1.2" - resolved "https://registry.npmjs.org/@excalidraw/markdown-to-text/-/markdown-to-text-0.1.2.tgz#1703705e7da608cf478f17bfe96fb295f55a23eb" + resolved "https://registry.yarnpkg.com/@excalidraw/markdown-to-text/-/markdown-to-text-0.1.2.tgz#1703705e7da608cf478f17bfe96fb295f55a23eb" integrity sha512-1nDXBNAojfi3oSFwJswKREkFm5wrSjqay81QlyRv2pkITG/XYB5v+oChENVBQLcxQwX4IUATWvXM5BcaNhPiIg== "@excalidraw/mermaid-to-excalidraw@1.1.0": @@ -1941,27 +1750,27 @@ "@excalidraw/prettier-config@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@excalidraw/prettier-config/-/prettier-config-1.0.2.tgz#b7c061c99cee2f78b9ca470ea1fbd602683bba65" + resolved "https://registry.yarnpkg.com/@excalidraw/prettier-config/-/prettier-config-1.0.2.tgz#b7c061c99cee2f78b9ca470ea1fbd602683bba65" integrity sha512-rFIq8+A8WvkEzBsF++Rw6gzxE+hU3ZNkdg8foI+Upz2y/rOC/gUpWJaggPbCkoH3nlREVU59axQjZ1+F6ePRGg== "@excalidraw/random-username@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@excalidraw/random-username/-/random-username-1.0.0.tgz#6d5293148aee6cd08dcdfcadc0c91276572f4499" + resolved "https://registry.yarnpkg.com/@excalidraw/random-username/-/random-username-1.0.0.tgz#6d5293148aee6cd08dcdfcadc0c91276572f4499" integrity sha512-pd4VapWahQ7PIyThGq32+C+JUS73mf3RSdC7BmQiXzhQsCTU4RHc8y9jBi+pb1CFV0iJXvjJRXnVdLCbTj3+HA== "@excalidraw/random-username@1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@excalidraw/random-username/-/random-username-1.1.0.tgz#6f388d6a9708cf655b8c9c6aa3fa569ee71ecf0f" + resolved "https://registry.yarnpkg.com/@excalidraw/random-username/-/random-username-1.1.0.tgz#6f388d6a9708cf655b8c9c6aa3fa569ee71ecf0f" integrity sha512-nULYsQxkWHnbmHvcs+efMkJ4/9TtvNyFeLyHdeGxW0zHs6P+jYVqcRff9A6Vq9w9JXeDRnRh2VKvTtS19GW2qA== "@firebase/analytics-types@0.4.0": version "0.4.0" - resolved "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA== "@firebase/analytics@0.6.8": version "0.6.8" - resolved "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.8.tgz#ec69a8673df2e0381bdebc892d28448e2d97ee8a" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.8.tgz#ec69a8673df2e0381bdebc892d28448e2d97ee8a" integrity sha512-cPbQIQo3uqpImtiGIB42F9s9fw8cPseCj1ZMR3VshL6u/6kzC9ptOpgg8PMCLOgZvBwC993LbT1UOTuufTd49Q== dependencies: "@firebase/analytics-types" "0.4.0" @@ -1973,12 +1782,12 @@ "@firebase/app-types@0.6.2": version "0.6.2" - resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.2.tgz#8578cb1061a83ced4570188be9e225d54e0f27fb" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.2.tgz#8578cb1061a83ced4570188be9e225d54e0f27fb" integrity sha512-2VXvq/K+n8XMdM4L2xy5bYp2ZXMawJXluUIDzUBvMthVR+lhxK4pfFiqr1mmDbv9ydXvEAuFsD+6DpcZuJcSSw== "@firebase/app@0.6.19": version "0.6.19" - resolved "https://registry.npmjs.org/@firebase/app/-/app-0.6.19.tgz#40fe266889436ab0fcf035ee5a415db7339c1936" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.19.tgz#40fe266889436ab0fcf035ee5a415db7339c1936" integrity sha512-qDimGNoukCuWvGYcsosGV2tOKbJ98RuRHLoK2j4t73TupY6rH+4QeR3tf5E3q1gZ5mtaFZloXc6aZWWOgtfwoQ== dependencies: "@firebase/app-types" "0.6.2" @@ -1991,24 +1800,24 @@ "@firebase/auth-interop-types@0.1.5": version "0.1.5" - resolved "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557" integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw== "@firebase/auth-types@0.10.2": version "0.10.2" - resolved "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.2.tgz#3fad953380c447b7545122430a4c7a9bc8355001" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.2.tgz#3fad953380c447b7545122430a4c7a9bc8355001" integrity sha512-0GMWVWh5TBCYIQfVerxzDsuvhoFpK0++O9LtP3FWkwYo7EAxp6w0cftAg/8ntU1E5Wg56Ry0b6ti/YGP6g0jlg== "@firebase/auth@0.16.4": version "0.16.4" - resolved "https://registry.npmjs.org/@firebase/auth/-/auth-0.16.4.tgz#6249d80f1e974b0db122930ae9fac885eccead5c" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.16.4.tgz#6249d80f1e974b0db122930ae9fac885eccead5c" integrity sha512-zgHPK6/uL6+nAyG9zqammHTF1MQpAN7z/jVRLYkDZS4l81H08b2SzApLbRfW/fmy665xqb5MK7sVH0V1wsiCNw== dependencies: "@firebase/auth-types" "0.10.2" "@firebase/component@0.4.0": version "0.4.0" - resolved "https://registry.npmjs.org/@firebase/component/-/component-0.4.0.tgz#90baa455d75160c8a5134b3e9d642df11f0ac818" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.4.0.tgz#90baa455d75160c8a5134b3e9d642df11f0ac818" integrity sha512-L7kLKpW1v5qxPfIhx/VqHuVi+vr5IcnDS4zCJFb+/eYe23i6czSOWR1urAoJ4r42Dk0XB5kDt6Idojdd9BGMEA== dependencies: "@firebase/util" "0.4.1" @@ -2016,14 +1825,14 @@ "@firebase/database-types@0.7.1": version "0.7.1" - resolved "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.1.tgz#3505e3e8d57e94a3ce6038649a95afe0af040757" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.7.1.tgz#3505e3e8d57e94a3ce6038649a95afe0af040757" integrity sha512-465ceJXSMqFFMnL2lxYx+YhYajcyk+VpGiXf9T6KNME0lKne5hYuqYr7XmS8/sTeyV0huhmTb8K1nxlA7hiPOg== dependencies: "@firebase/app-types" "0.6.2" "@firebase/database@0.9.8": version "0.9.8" - resolved "https://registry.npmjs.org/@firebase/database/-/database-0.9.8.tgz#244eb897033ecacfc4a1fa5f031cda9b5e4009e5" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.9.8.tgz#244eb897033ecacfc4a1fa5f031cda9b5e4009e5" integrity sha512-bqZUDR6jIQSQcY7oZVGmI/Bg7SfmUUW/toaZBCfaddWAnniBthaa8o0Hyv1ypPxjEZCu1CfPQwtpMhlSTjG0tA== dependencies: "@firebase/auth-interop-types" "0.1.5" @@ -2036,12 +1845,12 @@ "@firebase/firestore-types@2.2.0": version "2.2.0" - resolved "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.2.0.tgz#9a3f3f2906232c3b4a726d988a6ef077f35f9093" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.2.0.tgz#9a3f3f2906232c3b4a726d988a6ef077f35f9093" integrity sha512-5kZZtQ32FIRJP1029dw+ZVNRCclKOErHv1+Xn0pw/5Fq3dxroA/ZyFHqDu+uV52AyWHhNLjCqX43ibm4YqOzRw== "@firebase/firestore@2.2.3": version "2.2.3" - resolved "https://registry.npmjs.org/@firebase/firestore/-/firestore-2.2.3.tgz#e76d9191c48ef4c51ae73c2fcce7d547be2a8c17" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.2.3.tgz#e76d9191c48ef4c51ae73c2fcce7d547be2a8c17" integrity sha512-efJxJahP9936QlIHeATvatCO4c3UEk6nz7pc812xxkgTVezkg8K66IDUe0fncV70zbDrIyxUIl8yRcxhXytiGw== dependencies: "@firebase/component" "0.4.0" @@ -2056,12 +1865,12 @@ "@firebase/functions-types@0.4.0": version "0.4.0" - resolved "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9" integrity sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ== "@firebase/functions@0.6.6": version "0.6.6" - resolved "https://registry.npmjs.org/@firebase/functions/-/functions-0.6.6.tgz#06b786e68b269a615fc83598d99cda7b11ec740e" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.6.tgz#06b786e68b269a615fc83598d99cda7b11ec740e" integrity sha512-cvZiqcL3X7+6ObkwcRUV54iFHaVxVgio2t610p2qwjzMxyYfiHWDA+GwKPioObDWqyXmNtkU8cw2WLoGf46cnA== dependencies: "@firebase/component" "0.4.0" @@ -2072,12 +1881,12 @@ "@firebase/installations-types@0.3.4": version "0.3.4" - resolved "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2" integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q== "@firebase/installations@0.4.24": version "0.4.24" - resolved "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.24.tgz#acaf3d48c156f3a3a5ddb53e8e8c63a89fce2f55" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.24.tgz#acaf3d48c156f3a3a5ddb53e8e8c63a89fce2f55" integrity sha512-cMWI3IfnmdJ4SzPav56yaHwEhpPPl5b03AVtv7AeKnmDZ61eBqPzEnYSL8Iso73/FeKpr8BYcZelAx0EyxcJ3Q== dependencies: "@firebase/component" "0.4.0" @@ -2088,17 +1897,17 @@ "@firebase/logger@0.2.6": version "0.2.6" - resolved "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw== "@firebase/messaging-types@0.5.0": version "0.5.0" - resolved "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4" integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg== "@firebase/messaging@0.7.8": version "0.7.8" - resolved "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.8.tgz#90119a2f1cd5055fd61206732024e0281de80616" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.8.tgz#90119a2f1cd5055fd61206732024e0281de80616" integrity sha512-rXYvVQPZd+rCMV7+/FgpvsHad0HuEhoyH5OQgYxeBgSsgFn6mOyvAtYcoCFjPTvTV5eyGH1I4hQtNOyY8zVzzg== dependencies: "@firebase/component" "0.4.0" @@ -2110,12 +1919,12 @@ "@firebase/performance-types@0.0.13": version "0.0.13" - resolved "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6" integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA== "@firebase/performance@0.4.10": version "0.4.10" - resolved "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.10.tgz#c78ed1c15c26884eae23edf1498e930bb729b51f" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.10.tgz#c78ed1c15c26884eae23edf1498e930bb729b51f" integrity sha512-gyAOd9Z/GVlLE5V8U5pVQDZpjr4Msdx5yJr7oQE/xkh6dNZGuYp5qJh1pAmJs2ZI8eMTs+j2bXJEMYk6w7ehRg== dependencies: "@firebase/component" "0.4.0" @@ -2127,7 +1936,7 @@ "@firebase/polyfill@0.3.36": version "0.3.36" - resolved "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145" integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg== dependencies: core-js "3.6.5" @@ -2136,12 +1945,12 @@ "@firebase/remote-config-types@0.1.9": version "0.1.9" - resolved "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965" integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA== "@firebase/remote-config@0.1.35": version "0.1.35" - resolved "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.35.tgz#792b6d9e2d8e5db0a883ee53579629c2412ae1f5" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.35.tgz#792b6d9e2d8e5db0a883ee53579629c2412ae1f5" integrity sha512-szhu48LTyb46S33hUR3sC4kiykEoc+B5M7HWWHhjp7Ne+524G8pH/9+/r9ZA8eVj48c5cihXyQKQ/6yCQotnUA== dependencies: "@firebase/component" "0.4.0" @@ -2153,12 +1962,12 @@ "@firebase/storage-types@0.3.13": version "0.3.13" - resolved "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458" integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog== "@firebase/storage@0.4.7": version "0.4.7" - resolved "https://registry.npmjs.org/@firebase/storage/-/storage-0.4.7.tgz#541a2d96af6da9c345b190858345c1106650fce0" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.4.7.tgz#541a2d96af6da9c345b190858345c1106650fce0" integrity sha512-5DFb+VncNBomPzpzYqJzzJjfiZhOWg0FHTBkw90K9OdE2wUfKqzhhbIAjyaXcu+2YLB2hjft8BKbjQfV5BDFnw== dependencies: "@firebase/component" "0.4.0" @@ -2168,65 +1977,65 @@ "@firebase/util@0.4.1": version "0.4.1" - resolved "https://registry.npmjs.org/@firebase/util/-/util-0.4.1.tgz#fe76cf0238901dc5455b341cf02e298e7bf68df4" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.4.1.tgz#fe76cf0238901dc5455b341cf02e298e7bf68df4" integrity sha512-XhYCOwq4AH+YeQBEnDQvigz50WiiBU4LnJh2+//VMt4J2Ybsk0eTgUHNngUzXsmp80EJrwal3ItODg55q1ajWg== dependencies: tslib "^2.1.0" "@firebase/webchannel-wrapper@0.4.1": version "0.4.1" - resolved "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71" integrity sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw== "@floating-ui/core@^0.7.3": version "0.7.3" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86" integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg== "@floating-ui/dom@^0.5.3": version "0.5.4" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz#4eae73f78bcd4bd553ae2ade30e6f1f9c73fe3f1" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-0.5.4.tgz#4eae73f78bcd4bd553ae2ade30e6f1f9c73fe3f1" integrity sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg== dependencies: "@floating-ui/core" "^0.7.3" "@floating-ui/react-dom@0.7.2": version "0.7.2" - resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz#0bf4ceccb777a140fc535c87eb5d6241c8e89864" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-0.7.2.tgz#0bf4ceccb777a140fc535c87eb5d6241c8e89864" integrity sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg== dependencies: "@floating-ui/dom" "^0.5.3" use-isomorphic-layout-effect "^1.1.1" "@grpc/grpc-js@^1.0.0": - version "1.10.6" - resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.6.tgz#1e3eb1af911dc888fbef7452f56a7573b8284d54" - integrity sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA== + version "1.10.8" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.8.tgz#99787785cd8335be861afd1cd485ae9f058e4484" + integrity sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg== dependencies: - "@grpc/proto-loader" "^0.7.10" + "@grpc/proto-loader" "^0.7.13" "@js-sdsl/ordered-map" "^4.4.2" "@grpc/proto-loader@^0.5.0": version "0.5.6" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" integrity sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ== dependencies: lodash.camelcase "^4.3.0" protobufjs "^6.8.6" -"@grpc/proto-loader@^0.7.10": - version "0.7.12" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.12.tgz#787b58e3e3771df30b1567c057b6ab89e3a42911" - integrity sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q== +"@grpc/proto-loader@^0.7.13": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" + integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== dependencies: lodash.camelcase "^4.3.0" long "^5.0.0" - protobufjs "^7.2.4" + protobufjs "^7.2.5" yargs "^17.7.2" "@humanwhocodes/config-array@^0.5.0": version "0.5.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: "@humanwhocodes/object-schema" "^1.2.0" @@ -2235,31 +2044,31 @@ "@humanwhocodes/object-schema@^1.2.0": version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/expect-utils@^29.7.0": version "29.7.0" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: jest-get-type "^29.6.3" "@jest/schemas@^29.6.3": version "29.6.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" "@jest/types@^29.6.3": version "29.6.3" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: "@jest/schemas" "^29.6.3" @@ -2271,7 +2080,7 @@ "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: "@jridgewell/set-array" "^1.2.1" @@ -2280,17 +2089,17 @@ "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.2.1": version "1.2.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": version "0.3.6" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== dependencies: "@jridgewell/gen-mapping" "^0.3.5" @@ -2298,12 +2107,12 @@ "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + 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.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -2311,69 +2120,69 @@ "@js-sdsl/ordered-map@^4.4.2": version "4.4.2" - resolved "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== "@next/env@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/env/-/env-14.1.4.tgz#432e80651733fbd67230bf262aee28be65252674" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.4.tgz#432e80651733fbd67230bf262aee28be65252674" integrity sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ== "@next/swc-darwin-arm64@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz#a3bca0dc4393ac4cf3169bbf24df63441de66bb7" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz#a3bca0dc4393ac4cf3169bbf24df63441de66bb7" integrity sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg== "@next/swc-darwin-x64@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz#ba3683d4e2d30099f3f2864dd7349a4d9f440140" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz#ba3683d4e2d30099f3f2864dd7349a4d9f440140" integrity sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ== "@next/swc-linux-arm64-gnu@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz#3519969293f16379954b7e196deb0c1eecbb2f8b" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz#3519969293f16379954b7e196deb0c1eecbb2f8b" integrity sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA== "@next/swc-linux-arm64-musl@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz#4bb3196bd402b3f84cf5373ff1021f547264d62f" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz#4bb3196bd402b3f84cf5373ff1021f547264d62f" integrity sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g== "@next/swc-linux-x64-gnu@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz#1b3372c98c83dcdab946cdb4ee06e068b8139ba3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz#1b3372c98c83dcdab946cdb4ee06e068b8139ba3" integrity sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw== "@next/swc-linux-x64-musl@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz#8459088bdc872648ff78f121db596f2533df5808" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz#8459088bdc872648ff78f121db596f2533df5808" integrity sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg== "@next/swc-win32-arm64-msvc@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz#84280a08c00cc3be24ddd3a12f4617b108e6dea6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz#84280a08c00cc3be24ddd3a12f4617b108e6dea6" integrity sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag== "@next/swc-win32-ia32-msvc@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz#23ff7f4bd0a27177428669ef6fa5c3923c738031" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz#23ff7f4bd0a27177428669ef6fa5c3923c738031" integrity sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw== "@next/swc-win32-x64-msvc@14.1.4": version "14.1.4" - resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz#bccf5beccfde66d6c66fa4e2509118c796385eda" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz#bccf5beccfde66d6c66fa4e2509118c796385eda" integrity sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w== "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" - resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: eslint-scope "5.1.1" "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -2381,12 +2190,12 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -2394,32 +2203,32 @@ "@polka/url@^1.0.0-next.20", "@polka/url@^1.0.0-next.24": version "1.0.0-next.25" - resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== "@protobufjs/base64@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== "@protobufjs/codegen@^2.0.4": version "2.0.4" - resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== "@protobufjs/eventemitter@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== "@protobufjs/fetch@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== dependencies: "@protobufjs/aspromise" "^1.1.1" @@ -2427,39 +2236,39 @@ "@protobufjs/float@^1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== "@protobufjs/inquire@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== "@protobufjs/path@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== "@protobufjs/pool@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== "@protobufjs/utf8@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@radix-ui/primitive@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-arrow@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz#5246adf79e97f89e819af68da51ddcf349ecf1c4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz#5246adf79e97f89e819af68da51ddcf349ecf1c4" integrity sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA== dependencies: "@babel/runtime" "^7.13.10" @@ -2467,7 +2276,7 @@ "@radix-ui/react-collection@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.1.tgz#259506f97c6703b36291826768d3c1337edd1de5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.1.tgz#259506f97c6703b36291826768d3c1337edd1de5" integrity sha512-uuiFbs+YCKjn3X1DTSx9G7BHApu4GHbi3kgiwsnFUbOKCrwejAJv4eE4Vc8C0Oaxt9T0aV4ox0WCOdx+39Xo+g== dependencies: "@babel/runtime" "^7.13.10" @@ -2478,28 +2287,28 @@ "@radix-ui/react-compose-refs@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-context@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-direction@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-dismissable-layer@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz#f04d1061bddf00b1ca304148516b9ddc62e45fb2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz#f04d1061bddf00b1ca304148516b9ddc62e45fb2" integrity sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg== dependencies: "@babel/runtime" "^7.13.10" @@ -2511,14 +2320,14 @@ "@radix-ui/react-focus-guards@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz#339c1c69c41628c1a5e655f15f7020bf11aa01fa" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz#339c1c69c41628c1a5e655f15f7020bf11aa01fa" integrity sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-focus-scope@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz#faea8c25f537c5a5c38c50914b63722db0e7f951" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz#faea8c25f537c5a5c38c50914b63722db0e7f951" integrity sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ== dependencies: "@babel/runtime" "^7.13.10" @@ -2528,7 +2337,7 @@ "@radix-ui/react-id@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz#8d43224910741870a45a8c9d092f25887bb6d11e" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.0.tgz#8d43224910741870a45a8c9d092f25887bb6d11e" integrity sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw== dependencies: "@babel/runtime" "^7.13.10" @@ -2536,7 +2345,7 @@ "@radix-ui/react-popover@1.0.3": version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.3.tgz#65ae2ee1fca2d7fd750308549eb8e0857c6160fe" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.0.3.tgz#65ae2ee1fca2d7fd750308549eb8e0857c6160fe" integrity sha512-YwedSukfWsyJs3/yP3yXUq44k4/JBe3jqU63Z8v2i19qZZ3dsx32oma17ztgclWPNuqp3A+Xa9UiDlZHyVX8Vg== dependencies: "@babel/runtime" "^7.13.10" @@ -2558,7 +2367,7 @@ "@radix-ui/react-popper@1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.0.tgz#2be7e4c0cd4581f54277ca33a981c9037d2a8e60" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.0.tgz#2be7e4c0cd4581f54277ca33a981c9037d2a8e60" integrity sha512-07U7jpI0dZcLRAxT7L9qs6HecSoPhDSJybF7mEGHJDBDv+ZoGCvIlva0s+WxMXwJEav+ckX3hAlXBtnHmuvlCQ== dependencies: "@babel/runtime" "^7.13.10" @@ -2575,7 +2384,7 @@ "@radix-ui/react-portal@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz#169c5a50719c2bb0079cf4c91a27aa6d37e5dd33" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.1.tgz#169c5a50719c2bb0079cf4c91a27aa6d37e5dd33" integrity sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig== dependencies: "@babel/runtime" "^7.13.10" @@ -2583,7 +2392,7 @@ "@radix-ui/react-presence@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== dependencies: "@babel/runtime" "^7.13.10" @@ -2592,7 +2401,7 @@ "@radix-ui/react-primitive@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA== dependencies: "@babel/runtime" "^7.13.10" @@ -2600,7 +2409,7 @@ "@radix-ui/react-roving-focus@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.2.tgz#d8ac2e3b8006697bdfc2b0eb06bef7e15b6245de" + resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.2.tgz#d8ac2e3b8006697bdfc2b0eb06bef7e15b6245de" integrity sha512-HLK+CqD/8pN6GfJm3U+cqpqhSKYAWiOJDe+A+8MfxBnOue39QEeMa43csUn2CXCHQT0/mewh1LrrG4tfkM9DMA== dependencies: "@babel/runtime" "^7.13.10" @@ -2616,7 +2425,7 @@ "@radix-ui/react-slot@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== dependencies: "@babel/runtime" "^7.13.10" @@ -2624,7 +2433,7 @@ "@radix-ui/react-tabs@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz#8f5ec73ca41b151a413bdd6e00553408ff34ce07" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz#8f5ec73ca41b151a413bdd6e00553408ff34ce07" integrity sha512-gOUwh+HbjCuL0UCo8kZ+kdUEG8QtpdO4sMQduJ34ZEz0r4922g9REOBM+vIsfwtGxSug4Yb1msJMJYN2Bk8TpQ== dependencies: "@babel/runtime" "^7.13.10" @@ -2639,14 +2448,14 @@ "@radix-ui/react-use-callback-ref@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-use-controllable-state@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz#a64deaafbbc52d5d407afaa22d493d687c538b7f" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz#a64deaafbbc52d5d407afaa22d493d687c538b7f" integrity sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg== dependencies: "@babel/runtime" "^7.13.10" @@ -2654,7 +2463,7 @@ "@radix-ui/react-use-escape-keydown@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz#09ab6455ab240b4f0a61faf06d4e5132c4d639f6" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz#09ab6455ab240b4f0a61faf06d4e5132c4d639f6" integrity sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA== dependencies: "@babel/runtime" "^7.13.10" @@ -2662,14 +2471,14 @@ "@radix-ui/react-use-layout-effect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-use-rect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz#b040cc88a4906b78696cd3a32b075ed5b1423b3e" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz#b040cc88a4906b78696cd3a32b075ed5b1423b3e" integrity sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew== dependencies: "@babel/runtime" "^7.13.10" @@ -2677,7 +2486,7 @@ "@radix-ui/react-use-size@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz#a0b455ac826749419f6354dc733e2ca465054771" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz#a0b455ac826749419f6354dc733e2ca465054771" integrity sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg== dependencies: "@babel/runtime" "^7.13.10" @@ -2685,42 +2494,51 @@ "@radix-ui/rect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz#0dc8e6a829ea2828d53cbc94b81793ba6383bf3c" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.0.tgz#0dc8e6a829ea2828d53cbc94b81793ba6383bf3c" integrity sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg== dependencies: "@babel/runtime" "^7.13.10" "@rollup/plugin-babel@^5.2.0": version "5.3.1" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-node-resolve@^11.2.1": - version "11.2.1" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== +"@rollup/plugin-node-resolve@^15.2.3": + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" deepmerge "^4.2.2" + is-builtin-module "^3.2.1" is-module "^1.0.0" - resolve "^1.19.0" + resolve "^1.22.1" "@rollup/plugin-replace@^2.4.1": version "2.4.2" - resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== dependencies: "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" +"@rollup/plugin-terser@^0.4.3": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962" + integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== + dependencies: + serialize-javascript "^6.0.1" + smob "^1.0.0" + terser "^5.17.4" + "@rollup/pluginutils@^3.1.0": version "3.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" @@ -2729,104 +2547,109 @@ "@rollup/pluginutils@^4.2.0": version "4.2.1" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" -"@rollup/pluginutils@^5.0.2": +"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2": version "5.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-android-arm-eabi@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.0.tgz#57936f50d0335e2e7bfac496d209606fa516add4" - integrity sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w== +"@rollup/rollup-android-arm-eabi@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27" + integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ== -"@rollup/rollup-android-arm64@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.0.tgz#81bba83b37382a2d0e30ceced06c8d3d85138054" - integrity sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q== +"@rollup/rollup-android-arm64@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203" + integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA== -"@rollup/rollup-darwin-arm64@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.0.tgz#a371bd723a5c4c4a33376da72abfc3938066842b" - integrity sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA== +"@rollup/rollup-darwin-arm64@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096" + integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w== -"@rollup/rollup-darwin-x64@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.0.tgz#8baf2fda277c9729125017c65651296282412886" - integrity sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ== +"@rollup/rollup-darwin-x64@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c" + integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA== -"@rollup/rollup-linux-arm-gnueabihf@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.0.tgz#822830a8f7388d5b81d04c69415408d3bab1079b" - integrity sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA== +"@rollup/rollup-linux-arm-gnueabihf@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8" + integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA== -"@rollup/rollup-linux-arm64-gnu@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.0.tgz#e20fbe1bd4414c7119f9e0bba8ad17a6666c8365" - integrity sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A== +"@rollup/rollup-linux-arm-musleabihf@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549" + integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A== -"@rollup/rollup-linux-arm64-musl@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.0.tgz#13f475596a62e1924f13fe1c8cf2c40e09a99b47" - integrity sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA== +"@rollup/rollup-linux-arm64-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577" + integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw== -"@rollup/rollup-linux-powerpc64le-gnu@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.0.tgz#6a431c441420d1c510a205e08c6673355a0a2ea9" - integrity sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA== +"@rollup/rollup-linux-arm64-musl@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c" + integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ== -"@rollup/rollup-linux-riscv64-gnu@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.0.tgz#53d9448962c3f9ed7a1672269655476ea2d67567" - integrity sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw== +"@rollup/rollup-linux-powerpc64le-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf" + integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA== -"@rollup/rollup-linux-s390x-gnu@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.0.tgz#95f0c133b324da3e7e5c7d12855e0eb71d21a946" - integrity sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA== +"@rollup/rollup-linux-riscv64-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9" + integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg== -"@rollup/rollup-linux-x64-gnu@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.0.tgz#820ada75c68ead1acc486e41238ca0d8f8531478" - integrity sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg== +"@rollup/rollup-linux-s390x-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec" + integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg== -"@rollup/rollup-linux-x64-musl@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.0.tgz#ca74f22e125efbe94c1148d989ef93329b464443" - integrity sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg== +"@rollup/rollup-linux-x64-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942" + integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w== -"@rollup/rollup-win32-arm64-msvc@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.0.tgz#269023332297051d037a9593dcba92c10fef726b" - integrity sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ== +"@rollup/rollup-linux-x64-musl@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d" + integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg== -"@rollup/rollup-win32-ia32-msvc@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.0.tgz#d7701438daf964011fd7ca33e3f13f3ff5129e7b" - integrity sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw== +"@rollup/rollup-win32-arm64-msvc@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf" + integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA== -"@rollup/rollup-win32-x64-msvc@4.14.0": - version "4.14.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.0.tgz#0bb7ac3cd1c3292db1f39afdabfd03ccea3a3d34" - integrity sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag== +"@rollup/rollup-win32-ia32-msvc@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54" + integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg== + +"@rollup/rollup-win32-x64-msvc@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" + integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== "@rushstack/eslint-patch@^1.1.0": - version "1.10.1" - resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz#7ca168b6937818e9a74b47ac4e2112b2e1a024cf" - integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg== + version "1.10.3" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" + integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== "@sentry/browser@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/browser/-/browser-6.2.5.tgz#35e259e16521d26f348a06b31eb495e0033111d6" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.2.5.tgz#35e259e16521d26f348a06b31eb495e0033111d6" integrity sha512-nlvaE+D7oaj4MxoY9ikw+krQDOjftnDYJQnOwOraXPk7KYM6YwmkakLuE+x/AkaH3FQVTQF330VAa9d6SWETlA== dependencies: "@sentry/core" "6.2.5" @@ -2836,7 +2659,7 @@ "@sentry/core@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/core/-/core-6.2.5.tgz#e75093f8598becc0a4a0be927f32f7ac49e8588f" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.2.5.tgz#e75093f8598becc0a4a0be927f32f7ac49e8588f" integrity sha512-I+AkgIFO6sDUoHQticP6I27TT3L+i6TUS03in3IEtpBcSeP2jyhlxI8l/wdA7gsBqUPdQ4GHOOaNgtFIcr8qag== dependencies: "@sentry/hub" "6.2.5" @@ -2847,7 +2670,7 @@ "@sentry/hub@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/hub/-/hub-6.2.5.tgz#324cae0c90d736cd1032e94104bf3f18becec4d6" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.2.5.tgz#324cae0c90d736cd1032e94104bf3f18becec4d6" integrity sha512-YlEFdEhcfqpl2HC+/dWXBsBJEljyMzFS7LRRjCk8QANcOdp9PhwQjwebUB4/ulOBjHPP2WZk7fBBd/IKDasTUg== dependencies: "@sentry/types" "6.2.5" @@ -2856,7 +2679,7 @@ "@sentry/integrations@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.2.5.tgz#37cac11b486779707d62751da36aaaefbb44951a" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-6.2.5.tgz#37cac11b486779707d62751da36aaaefbb44951a" integrity sha512-4LOgO8lSeGaRV4w1Y03YWtTqrZdm56ciD7k0GLhv+PcFLpiu0exsS1XSs/9vET5LB5GtIgBTeJNNbxVFvvmv8g== dependencies: "@sentry/types" "6.2.5" @@ -2866,7 +2689,7 @@ "@sentry/minimal@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.2.5.tgz#3e963e868bfa68e97581403521fd4e09a8965b02" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.2.5.tgz#3e963e868bfa68e97581403521fd4e09a8965b02" integrity sha512-RKP4Qx3p7Cv0oX1cPKAkNVFYM7p2k1t32cNk1+rrVQS4hwlJ7Eg6m6fsqsO+85jd6Ne/FnyYsfo9cDD3ImTlWQ== dependencies: "@sentry/hub" "6.2.5" @@ -2875,12 +2698,12 @@ "@sentry/types@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/types/-/types-6.2.5.tgz#34b75285b149e0b9bc5fd54fcc2c445d978c7f2e" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.2.5.tgz#34b75285b149e0b9bc5fd54fcc2c445d978c7f2e" integrity sha512-1Sux6CLYrV9bETMsGP/HuLFLouwKoX93CWzG8BjMueW+Di0OGxZphYjXrGuDs8xO8bAKEVGCHgVQdcB2jevS0w== "@sentry/utils@6.2.5": version "6.2.5" - resolved "https://registry.npmjs.org/@sentry/utils/-/utils-6.2.5.tgz#be90d056b09ed1216097d7a29e3e81ba39238e1b" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.2.5.tgz#be90d056b09ed1216097d7a29e3e81ba39238e1b" integrity sha512-fJoLUZHrd5MPylV1dT4qL74yNFDl1Ur/dab+pKNSyvnHPnbZ/LRM7aJ8VaRY/A7ZdpRowU+E14e/Yeem2c6gtQ== dependencies: "@sentry/types" "6.2.5" @@ -2888,26 +2711,26 @@ "@sinclair/typebox@^0.27.8": version "0.27.8" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sitespeed.io/tracium@^0.3.3": version "0.3.3" - resolved "https://registry.npmjs.org/@sitespeed.io/tracium/-/tracium-0.3.3.tgz#b497a4a8d5837db1fd9e3053c99b78f6c0e1f53b" + resolved "https://registry.yarnpkg.com/@sitespeed.io/tracium/-/tracium-0.3.3.tgz#b497a4a8d5837db1fd9e3053c99b78f6c0e1f53b" integrity sha512-dNZafjM93Y+F+sfwTO5gTpsGXlnc/0Q+c2+62ViqP3gkMWvHEMSKkaEHgVJLcLg3i/g19GSIPziiKpgyne07Bw== dependencies: debug "^4.1.1" "@size-limit/file@9.0.0": version "9.0.0" - resolved "https://registry.npmjs.org/@size-limit/file/-/file-9.0.0.tgz#eed5415f5bcc8407979e47ffa49ffaf12d2d2378" + resolved "https://registry.yarnpkg.com/@size-limit/file/-/file-9.0.0.tgz#eed5415f5bcc8407979e47ffa49ffaf12d2d2378" integrity sha512-oM2UaH2FRq4q22k+R+P6xCpzET10T94LFdSjb9svVu/vOD7NaB9LGcG6se8TW1BExXiyXO4GEhLsBt3uMKM3qA== dependencies: semver "7.5.4" "@size-limit/preset-big-lib@9.0.0": version "9.0.0" - resolved "https://registry.npmjs.org/@size-limit/preset-big-lib/-/preset-big-lib-9.0.0.tgz#ddcf30e7646b66ecc0f8a1a6498a5eda6d82876d" + resolved "https://registry.yarnpkg.com/@size-limit/preset-big-lib/-/preset-big-lib-9.0.0.tgz#ddcf30e7646b66ecc0f8a1a6498a5eda6d82876d" integrity sha512-wc+VNLXjn0z11s1IWevo8+utP7uZGPVDNNe5cNyMFYHv7/pwJtgsd8w2onEkbK1h8x1oJfWlcqFNKAnvD1Bylw== dependencies: "@size-limit/file" "9.0.0" @@ -2917,27 +2740,27 @@ "@size-limit/time@9.0.0": version "9.0.0" - resolved "https://registry.npmjs.org/@size-limit/time/-/time-9.0.0.tgz#44ba75b3cba30736b133dbb3fd740f894a642c87" + resolved "https://registry.yarnpkg.com/@size-limit/time/-/time-9.0.0.tgz#44ba75b3cba30736b133dbb3fd740f894a642c87" integrity sha512-//Yba5fRkYqpBZ6MFtjDTSjCpQonDMqkwofpe0G1hMd/5l/3PZXVLDCAU2BW3nQFqTkpeyytFG6Y3jxUqSddiw== dependencies: estimo "^2.3.6" "@size-limit/webpack@9.0.0": version "9.0.0" - resolved "https://registry.npmjs.org/@size-limit/webpack/-/webpack-9.0.0.tgz#4514851d3607490e228bf22bc95286643f64a490" + resolved "https://registry.yarnpkg.com/@size-limit/webpack/-/webpack-9.0.0.tgz#4514851d3607490e228bf22bc95286643f64a490" integrity sha512-0YwdvmBj9rS4bXE/PY9vSdc5lCiQXmT0794EsG7yvlDMWyrWa/dsgcRok/w0MoZstfuLaS6lv03VI5UJRFU/lg== dependencies: nanoid "^3.3.6" webpack "^5.88.2" "@socket.io/component-emitter@~3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" - integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" - resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== dependencies: ejs "^3.1.6" @@ -2947,47 +2770,47 @@ "@svgr/babel-plugin-add-jsx-attribute@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== "@svgr/babel-plugin-remove-jsx-attribute@*": version "8.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== "@svgr/babel-plugin-remove-jsx-empty-expression@*": version "8.0.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== "@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== "@svgr/babel-plugin-svg-dynamic-title@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== "@svgr/babel-plugin-svg-em-dimensions@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== "@svgr/babel-plugin-transform-react-native-svg@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== "@svgr/babel-plugin-transform-svg-component@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== "@svgr/babel-preset@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" @@ -3001,7 +2824,7 @@ "@svgr/core@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== dependencies: "@babel/core" "^7.19.6" @@ -3012,7 +2835,7 @@ "@svgr/hast-util-to-babel-ast@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== dependencies: "@babel/types" "^7.20.0" @@ -3020,7 +2843,7 @@ "@svgr/plugin-jsx@^6.5.1": version "6.5.1" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== dependencies: "@babel/core" "^7.19.6" @@ -3030,14 +2853,14 @@ "@swc/helpers@0.5.2": version "0.5.2" - resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== dependencies: tslib "^2.4.0" "@testing-library/dom@^8.0.0": version "8.20.1" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== dependencies: "@babel/code-frame" "^7.10.4" @@ -3051,7 +2874,7 @@ "@testing-library/jest-dom@5.16.2": version "5.16.2" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== dependencies: "@babel/runtime" "^7.9.2" @@ -3066,7 +2889,7 @@ "@testing-library/react@12.1.5": version "12.1.5" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg== dependencies: "@babel/runtime" "^7.12.5" @@ -3075,101 +2898,101 @@ "@tldraw/vec@1.7.1": version "1.7.1" - resolved "https://registry.npmjs.org/@tldraw/vec/-/vec-1.7.1.tgz#5bfac9a56e11ad890cbd1c620293d7fcb23bf1ea" + resolved "https://registry.yarnpkg.com/@tldraw/vec/-/vec-1.7.1.tgz#5bfac9a56e11ad890cbd1c620293d7fcb23bf1ea" integrity sha512-qM6Z9RvkLFFEzr91mmsA4HI14msyDgDDOu36csIzG5BYu2bFmEz5siQ8WntHgDtUjzJHP+VSSOTbAXhklEZHLA== "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/aria-query@^5.0.1": version "5.0.4" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== "@types/chai@4.3.0": version "4.3.0" - resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== "@types/d3-scale-chromatic@^3.0.0": version "3.0.3" - resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz#fc0db9c10e789c351f4c42d96f31f2e4df8f5644" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz#fc0db9c10e789c351f4c42d96f31f2e4df8f5644" integrity sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw== "@types/d3-scale@^4.0.3": version "4.0.8" - resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== dependencies: "@types/d3-time" "*" "@types/d3-time@*": version "3.0.3" - resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz#3c186bbd9d12b9d84253b6be6487ca56b54f88be" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.3.tgz#3c186bbd9d12b9d84253b6be6487ca56b54f88be" integrity sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw== "@types/debug@^4.0.0": version "4.1.12" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: "@types/ms" "*" "@types/eslint-scope@^3.7.3": version "3.7.7" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.56.7" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz#c33b5b5a9cfb66881beb7b5be6c34aa3e81d3366" - integrity sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA== + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": version "1.0.5" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/estree@0.0.39": version "0.0.39" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/estree@^0.0.51": version "0.0.51" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.6" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": version "3.0.3" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@*": version "29.5.12" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== dependencies: expect "^29.0.0" @@ -3177,7 +3000,7 @@ "@types/jest@27.4.0": version "27.4.0" - resolved "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== dependencies: jest-diff "^27.0.0" @@ -3185,71 +3008,71 @@ "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash.throttle@4.1.7": version "4.1.7" - resolved "https://registry.npmjs.org/@types/lodash.throttle/-/lodash.throttle-4.1.7.tgz#4ef379eb4f778068022310ef166625f420b6ba58" + resolved "https://registry.yarnpkg.com/@types/lodash.throttle/-/lodash.throttle-4.1.7.tgz#4ef379eb4f778068022310ef166625f420b6ba58" integrity sha512-znwGDpjCHQ4FpLLx19w4OXDqq8+OvREa05H89obtSyXyOFKL3dDjCslsmfBz0T2FU8dmf5Wx1QvogbINiGIu9g== dependencies: "@types/lodash" "*" "@types/lodash@*": - version "4.17.0" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" - integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== + version "4.17.4" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.4.tgz#0303b64958ee070059e3a7184048a55159fe20b7" + integrity sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ== "@types/long@^4.0.1": version "4.0.2" - resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== "@types/mdast@^3.0.0": version "3.0.15" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== dependencies: "@types/unist" "^2" "@types/ms@*": version "0.7.34" - resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== "@types/node@*", "@types/node@>=13.7.0", "@types/node@^20": - version "20.12.4" - resolved "https://registry.npmjs.org/@types/node/-/node-20.12.4.tgz#af5921bd75ccdf3a3d8b3fa75bf3d3359268cd11" - integrity sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw== + version "20.12.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" + integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== dependencies: undici-types "~5.26.4" "@types/pako@1.0.3": version "1.0.3" - resolved "https://registry.npmjs.org/@types/pako/-/pako-1.0.3.tgz#2e61c2b02020b5f44e2e5e946dfac74f4ec33c58" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.3.tgz#2e61c2b02020b5f44e2e5e946dfac74f4ec33c58" integrity sha512-EDxOsHAD5dqjbjEUM1xwa7rpKPFb8ECBE5irONTQU7/OsO3thI5YrNEWSPNMvYmvFM0l/OLQJ6Mgw7PEdXSjhg== "@types/parse-json@^4.0.0": version "4.0.2" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/pica@5.1.3": version "5.1.3" - resolved "https://registry.npmjs.org/@types/pica/-/pica-5.1.3.tgz#5ef64529a1f83f7d6586a8bf75a8a00be32aca02" + resolved "https://registry.yarnpkg.com/@types/pica/-/pica-5.1.3.tgz#5ef64529a1f83f7d6586a8bf75a8a00be32aca02" integrity sha512-13SEyETRE5psd9bE0AmN+0M1tannde2fwHfLVaVIljkbL9V0OfFvKwCicyeDvVYLkmjQWEydbAlsDsmjrdyTOg== "@types/prop-types@*": version "15.7.12" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/react-dom@18.2.0", "@types/react-dom@^18": +"@types/react-dom@18.2.0": version "18.2.0" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.0.tgz#374f28074bb117f56f58c4f3f71753bebb545156" integrity sha512-8yQrvS6sMpSwIovhPOwfyNf2Wz6v/B62LFSVYQ85+Rq3tLsBIG7rP5geMxaijTUxSkrO6RzN/IRuIAADYQsleA== @@ -3263,7 +3086,7 @@ dependencies: "@types/react" "^17" -"@types/react@*", "@types/react@18.2.0", "@types/react@^18": +"@types/react@*", "@types/react@18.2.0", "@types/react@^17": version "18.2.0" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.0.tgz#15cda145354accfc09a18d2f2305f9fc099ada21" integrity sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA== @@ -3272,93 +3095,77 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^17": - version "17.0.80" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.80.tgz#a5dfc351d6a41257eb592d73d3a85d3b7dbcbb41" - integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "^0.16" - csstype "^3.0.2" - "@types/resize-observer-browser@0.1.7": version "0.1.7" - resolved "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" + resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" integrity sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg== -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== "@types/scheduler@*": version "0.23.0" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== -"@types/scheduler@^0.16": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - "@types/semver@^7.3.12": version "7.5.8" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/socket.io-client@3.0.0": version "3.0.0" - resolved "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-3.0.0.tgz#d0b8ea22121b7c1df68b6a923002f9c8e3cefb42" + resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-3.0.0.tgz#d0b8ea22121b7c1df68b6a923002f9c8e3cefb42" integrity sha512-s+IPvFoEIjKA3RdJz/Z2dGR4gLgysKi8owcnrVwNjgvc01Lk68LJDDsG2GRqegFITcxmvCMYM7bhMpwEMlHmDg== dependencies: socket.io-client "*" "@types/stack-utils@^2.0.0": version "2.0.3" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/testing-library__jest-dom@^5.9.1": version "5.14.9" - resolved "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== dependencies: "@types/jest" "*" "@types/trusted-types@^2.0.2": version "2.0.7" - resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== "@types/unist@^2", "@types/unist@^2.0.0": version "2.0.10" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== "@types/yargs-parser@*": version "21.0.3" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": version "17.0.32" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": version "2.10.3" - resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: "@eslint-community/regexpp" "^4.4.0" @@ -3374,14 +3181,14 @@ "@typescript-eslint/experimental-utils@^5.0.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== dependencies: "@typescript-eslint/utils" "5.62.0" "@typescript-eslint/parser@^5.5.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: "@typescript-eslint/scope-manager" "5.62.0" @@ -3391,7 +3198,7 @@ "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: "@typescript-eslint/types" "5.62.0" @@ -3399,7 +3206,7 @@ "@typescript-eslint/type-utils@5.62.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: "@typescript-eslint/typescript-estree" "5.62.0" @@ -3409,12 +3216,12 @@ "@typescript-eslint/types@5.62.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: "@typescript-eslint/types" "5.62.0" @@ -3427,7 +3234,7 @@ "@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -3441,7 +3248,7 @@ "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: "@typescript-eslint/types" "5.62.0" @@ -3449,7 +3256,7 @@ "@vitejs/plugin-react@3.1.0": version "3.1.0" - resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g== dependencies: "@babel/core" "^7.20.12" @@ -3460,7 +3267,7 @@ "@vitest/coverage-v8@0.33.0": version "0.33.0" - resolved "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.33.0.tgz#dfcb36cf51624a89d33ab0962a6eec8a41346ef2" + resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-0.33.0.tgz#dfcb36cf51624a89d33ab0962a6eec8a41346ef2" integrity sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg== dependencies: "@ampproject/remapping" "^2.2.1" @@ -3475,43 +3282,43 @@ test-exclude "^6.0.0" v8-to-istanbul "^9.1.0" -"@vitest/expect@1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.5.3.tgz#34198e2123fb5be68f606729114aadbd071d77dc" - integrity sha512-y+waPz31pOFr3rD7vWTbwiLe5+MgsMm40jTZbQE8p8/qXyBX3CQsIXRx9XK12IbY7q/t5a5aM/ckt33b4PxK2g== +"@vitest/expect@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.6.0.tgz#0b3ba0914f738508464983f4d811bc122b51fb30" + integrity sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ== dependencies: - "@vitest/spy" "1.5.3" - "@vitest/utils" "1.5.3" + "@vitest/spy" "1.6.0" + "@vitest/utils" "1.6.0" chai "^4.3.10" -"@vitest/runner@1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.5.3.tgz#226a726ca0bf11c1f287fa867547bdfca072b1e6" - integrity sha512-7PlfuReN8692IKQIdCxwir1AOaP5THfNkp0Uc4BKr2na+9lALNit7ub9l3/R7MP8aV61+mHKRGiqEKRIwu6iiQ== +"@vitest/runner@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.6.0.tgz#a6de49a96cb33b0e3ba0d9064a3e8d6ce2f08825" + integrity sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg== dependencies: - "@vitest/utils" "1.5.3" + "@vitest/utils" "1.6.0" p-limit "^5.0.0" pathe "^1.1.1" -"@vitest/snapshot@1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.5.3.tgz#ffdd917daebf4415c7abad6993bafd5f4ee14aaf" - integrity sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA== +"@vitest/snapshot@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.6.0.tgz#deb7e4498a5299c1198136f56e6e0f692e6af470" + integrity sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ== dependencies: magic-string "^0.30.5" pathe "^1.1.1" pretty-format "^29.7.0" -"@vitest/spy@1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.5.3.tgz#a81dfa87e4af3fe2c5d6f84cc81be31580b05e2c" - integrity sha512-Llj7Jgs6lbnL55WoshJUUacdJfjU2honvGcAJBxhra5TPEzTJH8ZuhI3p/JwqqfnTr4PmP7nDmOXP53MS7GJlg== +"@vitest/spy@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.6.0.tgz#362cbd42ccdb03f1613798fde99799649516906d" + integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== dependencies: tinyspy "^2.2.0" "@vitest/ui@0.32.2": version "0.32.2" - resolved "https://registry.npmjs.org/@vitest/ui/-/ui-0.32.2.tgz#3a39ef1e23e7a10c2c37d7f570e94b435d34de4c" + resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-0.32.2.tgz#3a39ef1e23e7a10c2c37d7f570e94b435d34de4c" integrity sha512-N5JKftnB8qzKFtpQC5OcUGxYTLo6wiB/95Lgyk6MF52t74Y7BJOWbf6EFYhXqt9J0MSbhOR2kapq+WKKUGDW0g== dependencies: "@vitest/utils" "0.32.2" @@ -3524,17 +3331,17 @@ "@vitest/utils@0.32.2": version "0.32.2" - resolved "https://registry.npmjs.org/@vitest/utils/-/utils-0.32.2.tgz#809c720cafbf4b35ce651deb8570d57785e77819" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.32.2.tgz#809c720cafbf4b35ce651deb8570d57785e77819" integrity sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ== dependencies: diff-sequences "^29.4.3" loupe "^2.3.6" pretty-format "^27.5.1" -"@vitest/utils@1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.5.3.tgz#216068c28db577480ca77e0b2094f0b1fa29bbcd" - integrity sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA== +"@vitest/utils@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.6.0.tgz#5c5675ca7d6f546a7b4337de9ae882e6c57896a1" + integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== dependencies: diff-sequences "^29.6.3" estree-walker "^3.0.3" @@ -3543,7 +3350,7 @@ "@webassemblyjs/ast@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: "@webassemblyjs/helper-numbers" "1.11.1" @@ -3551,7 +3358,7 @@ "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" @@ -3559,37 +3366,37 @@ "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== "@webassemblyjs/floating-point-hex-parser@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== "@webassemblyjs/helper-api-error@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== "@webassemblyjs/helper-api-error@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== "@webassemblyjs/helper-buffer@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== "@webassemblyjs/helper-buffer@1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== "@webassemblyjs/helper-numbers@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.1" @@ -3598,7 +3405,7 @@ "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.6" @@ -3607,17 +3414,17 @@ "@webassemblyjs/helper-wasm-bytecode@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== "@webassemblyjs/helper-wasm-bytecode@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== "@webassemblyjs/helper-wasm-section@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3627,7 +3434,7 @@ "@webassemblyjs/helper-wasm-section@1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: "@webassemblyjs/ast" "1.12.1" @@ -3637,45 +3444,45 @@ "@webassemblyjs/ieee754@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/ieee754@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/leb128@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== "@webassemblyjs/utf8@1.11.6": version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3689,7 +3496,7 @@ "@webassemblyjs/wasm-edit@^1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== dependencies: "@webassemblyjs/ast" "1.12.1" @@ -3703,7 +3510,7 @@ "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3714,7 +3521,7 @@ "@webassemblyjs/wasm-gen@1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== dependencies: "@webassemblyjs/ast" "1.12.1" @@ -3725,7 +3532,7 @@ "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3735,7 +3542,7 @@ "@webassemblyjs/wasm-opt@1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== dependencies: "@webassemblyjs/ast" "1.12.1" @@ -3745,7 +3552,7 @@ "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3757,7 +3564,7 @@ "@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== dependencies: "@webassemblyjs/ast" "1.12.1" @@ -3769,7 +3576,7 @@ "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -3777,7 +3584,7 @@ "@webassemblyjs/wast-printer@1.12.1": version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== dependencies: "@webassemblyjs/ast" "1.12.1" @@ -3785,19 +3592,19 @@ "@webpack-cli/configtest@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== "@webpack-cli/info@^1.5.0": version "1.5.0" - resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== dependencies: envinfo "^7.7.3" "@webpack-cli/serve@^1.7.0": version "1.7.0" - resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== "@xmldom/xmldom@^0.8.3": @@ -3807,27 +3614,27 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== acorn-import-assertions@^1.7.6, acorn-import-assertions@^1.9.0: version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.3.1: version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0, acorn-walk@^8.3.2: @@ -3837,24 +3644,24 @@ acorn-walk@^8.0.0, acorn-walk@^8.3.2: acorn@^7.4.0: version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.0.4, acorn@^8.11.3, acorn@^8.7.1, acorn@^8.8.2: version "8.11.3" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== agent-base@6: version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -3862,26 +3669,26 @@ aggregate-error@^3.0.0: ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv-keywords@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -3890,74 +3697,74 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + version "8.14.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.14.0.tgz#f514ddfd4756abb200e1704414963620a625ebbb" + integrity sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" + uri-js "^4.4.1" ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.3.0: version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + 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@^2.0.0: version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== ansi-styles@^6.0.0: version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + 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" @@ -3965,7 +3772,7 @@ anymatch@~3.1.2: argparse@^1.0.7: version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" @@ -3977,28 +3784,28 @@ argparse@^2.0.1: aria-hidden@^1.1.1: version "1.2.4" - resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== dependencies: tslib "^2.0.0" aria-query@5.1.3: version "5.1.3" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: deep-equal "^2.0.5" aria-query@^5.0.0, aria-query@^5.3.0: version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: call-bind "^1.0.5" @@ -4006,7 +3813,7 @@ array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.8" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== dependencies: call-bind "^1.0.7" @@ -4018,12 +3825,12 @@ array-includes@^3.1.6, array-includes@^3.1.7: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.findlast@^1.2.4: version "1.2.5" - resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== dependencies: call-bind "^1.0.7" @@ -4035,7 +3842,7 @@ array.prototype.findlast@^1.2.4: array.prototype.findlastindex@^1.2.3: version "1.2.5" - resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== dependencies: call-bind "^1.0.7" @@ -4047,7 +3854,7 @@ array.prototype.findlastindex@^1.2.3: array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" @@ -4057,7 +3864,7 @@ array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: version "1.3.2" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" @@ -4067,7 +3874,7 @@ array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: array.prototype.toreversed@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" + resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== dependencies: call-bind "^1.0.2" @@ -4077,7 +3884,7 @@ array.prototype.toreversed@^1.1.2: array.prototype.tosorted@^1.1.1, array.prototype.tosorted@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== dependencies: call-bind "^1.0.5" @@ -4088,7 +3895,7 @@ array.prototype.tosorted@^1.1.1, array.prototype.tosorted@^1.1.3: arraybuffer.prototype.slice@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== dependencies: array-buffer-byte-length "^1.0.1" @@ -4102,49 +3909,49 @@ arraybuffer.prototype.slice@^1.0.3: assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== ast-types-flow@^0.0.8: version "0.0.8" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async@^2.6.4: version "2.6.4" - resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" async@^3.2.3: version "3.2.5" - resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atob@^2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@10.4.7: version "10.4.7" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: browserslist "^4.20.3" @@ -4156,26 +3963,26 @@ autoprefixer@10.4.7: available-typed-arrays@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== dependencies: possible-typed-array-names "^1.0.0" axe-core@=4.7.0: version "4.7.0" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== axobject-query@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: dequal "^2.0.3" babel-code-frame@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: chalk "^1.1.3" @@ -4184,7 +3991,7 @@ babel-code-frame@^6.26.0: babel-helper-function-name@^6.24.1: version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: babel-helper-get-function-arity "^6.24.1" @@ -4195,7 +4002,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" - resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: babel-runtime "^6.22.0" @@ -4203,7 +4010,7 @@ babel-helper-get-function-arity@^6.24.1: babel-loader@8.2.5: version "8.2.5" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" @@ -4213,76 +4020,52 @@ babel-loader@8.2.5: babel-messages@^6.23.0: version "6.23.0" - resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: babel-runtime "^6.22.0" babel-plugin-macros@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: "@babel/runtime" "^7.12.5" cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.1: - version "0.3.3" - resolved "https://registry.npmjs.org/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-corejs2@^0.4.10: - version "0.4.10" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1" - integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: version "0.10.4" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== dependencies: "@babel/helper-define-polyfill-provider" "^0.6.1" core-js-compat "^3.36.1" -babel-plugin-polyfill-corejs3@^0.5.2: - version "0.5.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" - integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" integrity sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA== babel-plugin-transform-class-properties@6.24.1: version "6.24.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" integrity sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg== dependencies: babel-helper-function-name "^6.24.1" @@ -4292,12 +4075,12 @@ babel-plugin-transform-class-properties@6.24.1: babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" - resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== babel-preset-react-app@^10.0.1: version "10.0.1" - resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== dependencies: "@babel/core" "^7.16.0" @@ -4319,7 +4102,7 @@ babel-preset-react-app@^10.0.1: babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" @@ -4327,7 +4110,7 @@ babel-runtime@^6.22.0, babel-runtime@^6.26.0: babel-template@^6.24.1: version "6.26.0" - resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: babel-runtime "^6.26.0" @@ -4338,7 +4121,7 @@ babel-template@^6.24.1: babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: babel-code-frame "^6.26.0" @@ -4353,7 +4136,7 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" @@ -4363,44 +4146,44 @@ babel-types@^6.24.1, babel-types@^6.26.0: babylon@^6.18.0: version "6.18.0" - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-arraybuffer-es6@^0.7.0: version "0.7.0" - resolved "https://registry.npmjs.org/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz#dbe1e6c87b1bf1ca2875904461a7de40f21abc86" + resolved "https://registry.yarnpkg.com/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz#dbe1e6c87b1bf1ca2875904461a7de40f21abc86" integrity sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw== base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== basic-auth@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" big.js@^5.2.2: version "5.2.2" - resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^2.0.0: version "2.3.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bl@^4.0.3: version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -4409,12 +4192,12 @@ bl@^4.0.3: boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -4422,26 +4205,26 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browser-fs-access@0.29.1: version "0.29.1" - resolved "https://registry.npmjs.org/browser-fs-access/-/browser-fs-access-0.29.1.tgz#8a9794c73cf86b9aec74201829999c597128379c" + resolved "https://registry.yarnpkg.com/browser-fs-access/-/browser-fs-access-0.29.1.tgz#8a9794c73cf86b9aec74201829999c597128379c" integrity sha512-LSvVX5e21LRrXqVMhqtAwj5xPgDb+fXAIH80NsnCQ9xuZPs2xWsOREi24RKgZa1XOiQRbcmVrv87+ulOKsgjxw== browserslist@^4.14.5, browserslist@^4.20.3, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: caniuse-lite "^1.0.30001587" @@ -4451,47 +4234,47 @@ browserslist@^4.14.5, browserslist@^4.20.3, browserslist@^4.21.10, browserslist@ buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^3.1.0: +builtin-modules@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== busboy@1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: streamsearch "^1.1.0" bytes-iec@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/bytes-iec/-/bytes-iec-3.1.1.tgz#94cd36bf95c2c22a82002c247df8772d1d591083" + resolved "https://registry.yarnpkg.com/bytes-iec/-/bytes-iec-3.1.1.tgz#94cd36bf95c2c22a82002c247df8772d1d591083" integrity sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA== cac@^6.7.14: version "6.7.14" - resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: es-define-property "^1.0.0" @@ -4502,12 +4285,12 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -4515,22 +4298,22 @@ camel-case@^4.1.2: camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587: - version "1.0.30001606" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz#b4d5f67ab0746a3b8b5b6d1f06e39c51beb39a9e" - integrity sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg== + version "1.0.30001621" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" + integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== canvas-roundrect-polyfill@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/canvas-roundrect-polyfill/-/canvas-roundrect-polyfill-0.0.1.tgz#70bf107ebe2037f26d839d7f809a26f4a95f5696" + resolved "https://registry.yarnpkg.com/canvas-roundrect-polyfill/-/canvas-roundrect-polyfill-0.0.1.tgz#70bf107ebe2037f26d839d7f809a26f4a95f5696" integrity sha512-yWq+R3U3jE+coOeEb3a3GgE2j/0MMiDKM/QpLb6h9ihf5fGY9UXtvK9o4vNqjWXoZz7/3EaSVU3IX53TvFFUOw== chai@4.3.6: version "4.3.6" - resolved "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== dependencies: assertion-error "^1.1.0" @@ -4543,7 +4326,7 @@ chai@4.3.6: chai@^4.3.10: version "4.4.1" - resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== dependencies: assertion-error "^1.1.0" @@ -4556,7 +4339,7 @@ chai@^4.3.10: chalk@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" @@ -4567,7 +4350,7 @@ chalk@^1.1.3: chalk@^2.4.2: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -4576,7 +4359,7 @@ chalk@^2.4.2: chalk@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" @@ -4584,7 +4367,7 @@ chalk@^3.0.0: chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -4592,19 +4375,19 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: character-entities@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== check-error@^1.0.2, check-error@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: get-func-name "^2.0.2" "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.1, chokidar@^3.5.3: version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" @@ -4619,41 +4402,41 @@ check-error@^1.0.2, check-error@^1.0.3: chownr@^1.1.1: version "1.1.4" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + 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.9.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== clean-css@^5.2.2: version "5.3.3" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== dependencies: source-map "~0.6.0" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" @@ -4661,7 +4444,7 @@ cli-truncate@^2.1.0: cli-truncate@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== dependencies: slice-ansi "^5.0.0" @@ -4669,12 +4452,12 @@ cli-truncate@^3.1.0: client-only@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== cliui@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + 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" @@ -4683,7 +4466,7 @@ cliui@^8.0.1: clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -4692,142 +4475,142 @@ clone-deep@^4.0.1: clsx@1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.14, colorette@^2.0.16: version "2.0.20" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@7, commander@^7.0.0, commander@^7.2.0: version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^2.20.0: version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^8.0.0, commander@^8.3.0: version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@^9.1.0: version "9.5.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== common-tags@^1.8.0: version "1.8.2" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +confbox@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" + integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== + confusing-browser-globals@^1.0.11: version "1.0.11" - resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== connect-history-api-fallback@^1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== consola@^2.15.3: version "2.15.3" - resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/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.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + 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.21.0, core-js-compat@^3.22.1, core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.36.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" - integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== dependencies: browserslist "^4.23.0" core-js@3.6.5: version "3.6.5" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== core-js@^2.4.0: version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.4: - version "3.36.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578" - integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA== + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== corser@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== cose-base@^1.0.0: version "1.0.3" - resolved "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== dependencies: layout-base "^1.0.0" cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: version "7.1.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" @@ -4838,26 +4621,26 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: crc-32@^0.3.0: version "0.3.0" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-0.3.0.tgz#6a3d3687f5baec41f7e9b99fe1953a2e5d19775e" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-0.3.0.tgz#6a3d3687f5baec41f7e9b99fe1953a2e5d19775e" integrity sha512-kucVIjOmMc1f0tv53BJ/5WIX+MGLcKuoBhnGqQrgKJNqLByb/sVMWfW/Aw6hw0jgcqjJ2pi9E5y32zOIpaUlsA== cross-env@7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" cross-fetch@3.1.5: version "3.1.5" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: node-fetch "2.6.7" cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -4866,12 +4649,12 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: crypto-random-string@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== css-loader@6.7.1: version "6.7.1" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" @@ -4885,7 +4668,7 @@ css-loader@6.7.1: css-select@^4.2.1: version "4.3.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -4896,17 +4679,17 @@ css-select@^4.2.1: css-what@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== css.escape@^1.5.1: version "1.5.1" - resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== css@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== dependencies: inherits "^2.0.4" @@ -4915,63 +4698,60 @@ css@^3.0.0: cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssfontparser@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" + resolved "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" integrity sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg== cssstyle@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a" integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== dependencies: rrweb-cssom "^0.6.0" csstype@^3.0.2: version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== cytoscape-cose-bilkent@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" + resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== dependencies: cose-base "^1.0.0" cytoscape@^3.28.1: - version "3.28.1" - resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz#f32c3e009bdf32d47845a16a4cd2be2bbc01baf7" - integrity sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg== - dependencies: - heap "^0.2.6" - lodash "^4.17.21" + version "3.29.2" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.29.2.tgz#c99f42513c80a75e2e94858add32896c860202ac" + integrity sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ== "d3-array@1 - 2": version "2.12.1" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== dependencies: internmap "^1.0.0" "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: version "3.2.4" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== dependencies: internmap "1 - 2" d3-axis@3: version "3.0.0" - resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== d3-brush@3: version "3.0.0" - resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== dependencies: d3-dispatch "1 - 3" @@ -4982,38 +4762,38 @@ d3-brush@3: d3-chord@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== dependencies: d3-path "1 - 3" "d3-color@1 - 3", d3-color@3: version "3.1.0" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== d3-contour@4: version "4.0.2" - resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== dependencies: d3-array "^3.2.0" d3-delaunay@6: version "6.0.4" - resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== dependencies: delaunator "5" "d3-dispatch@1 - 3", d3-dispatch@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== "d3-drag@2 - 3", d3-drag@3: version "3.0.0" - resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== dependencies: d3-dispatch "1 - 3" @@ -5021,7 +4801,7 @@ d3-delaunay@6: "d3-dsv@1 - 3", d3-dsv@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== dependencies: commander "7" @@ -5030,19 +4810,19 @@ d3-delaunay@6: "d3-ease@1 - 3", d3-ease@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== d3-fetch@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== dependencies: d3-dsv "1 - 3" d3-force@3: version "3.0.0" - resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== dependencies: d3-dispatch "1 - 3" @@ -5051,56 +4831,56 @@ d3-force@3: "d3-format@1 - 3", d3-format@3: version "3.1.0" - resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== d3-geo@3: version "3.1.1" - resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== dependencies: d3-array "2.5.0 - 3" d3-hierarchy@3: version "3.1.2" - resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== dependencies: d3-color "1 - 3" d3-path@1: version "1.0.9" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== "d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== d3-polygon@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== "d3-quadtree@1 - 3", d3-quadtree@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== d3-random@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== d3-sankey@^0.12.3: version "0.12.3" - resolved "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" + resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== dependencies: d3-array "1 - 2" @@ -5108,7 +4888,7 @@ d3-sankey@^0.12.3: d3-scale-chromatic@3: version "3.1.0" - resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== dependencies: d3-color "1 - 3" @@ -5116,7 +4896,7 @@ d3-scale-chromatic@3: d3-scale@4: version "4.0.2" - resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== dependencies: d3-array "2.10.0 - 3" @@ -5127,45 +4907,45 @@ d3-scale@4: "d3-selection@2 - 3", d3-selection@3: version "3.0.0" - resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== d3-shape@3: version "3.2.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== dependencies: d3-path "^3.1.0" d3-shape@^1.2.0: version "1.3.7" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== dependencies: d3-path "1" "d3-time-format@2 - 4", d3-time-format@4: version "4.1.0" - resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== dependencies: d3-time "1 - 3" "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: version "3.1.0" - resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" "d3-timer@1 - 3", d3-timer@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== "d3-transition@2 - 3", d3-transition@3: version "3.0.1" - resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== dependencies: d3-color "1 - 3" @@ -5176,7 +4956,7 @@ d3-shape@^1.2.0: d3-zoom@3: version "3.0.0" - resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== dependencies: d3-dispatch "1 - 3" @@ -5187,7 +4967,7 @@ d3-zoom@3: d3@^7.4.0, d3@^7.8.2: version "7.9.0" - resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== dependencies: d3-array "3" @@ -5223,7 +5003,7 @@ d3@^7.4.0, d3@^7.8.2: dagre-d3-es@7.0.10: version "7.0.10" - resolved "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== dependencies: d3 "^7.8.2" @@ -5231,7 +5011,7 @@ dagre-d3-es@7.0.10: damerau-levenshtein@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== data-uri-to-buffer@^4.0.0: @@ -5241,7 +5021,7 @@ data-uri-to-buffer@^4.0.0: data-urls@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4" integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== dependencies: abab "^2.0.6" @@ -5250,7 +5030,7 @@ data-urls@^4.0.0: data-view-buffer@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== dependencies: call-bind "^1.0.6" @@ -5259,7 +5039,7 @@ data-view-buffer@^1.0.1: data-view-byte-length@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== dependencies: call-bind "^1.0.7" @@ -5268,7 +5048,7 @@ data-view-byte-length@^1.0.1: data-view-byte-offset@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== dependencies: call-bind "^1.0.6" @@ -5276,65 +5056,65 @@ data-view-byte-offset@^1.0.0: is-data-view "^1.0.1" dayjs@^1.11.7: - version "1.11.10" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + version "1.11.11" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" + integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" debug@^2.6.8: version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^3.2.7: version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" decimal.js@^10.4.3: version "10.4.3" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== decode-named-character-reference@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== dependencies: character-entities "^2.0.0" decode-uri-component@^0.2.0: version "0.2.2" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== deep-eql@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: type-detect "^4.0.0" deep-eql@^4.1.3: version "4.1.3" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== dependencies: type-detect "^4.0.0" deep-equal@^2.0.5: version "2.2.3" - resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== dependencies: array-buffer-byte-length "^1.0.0" @@ -5358,26 +5138,26 @@ deep-equal@^2.0.5: deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: define-data-property "^1.0.1" @@ -5386,75 +5166,75 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: delaunator@5: version "5.0.1" - resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== dependencies: robust-predicates "^3.0.2" delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== dequal@^2.0.0, dequal@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== detect-node-es@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== devtools-protocol@0.0.981744: version "0.0.981744" - resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg== diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== diff-sequences@^29.4.3, diff-sequences@^29.6.3: version "29.6.3" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== dom-serializer@^1.0.1: version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" @@ -5463,43 +5243,43 @@ dom-serializer@^1.0.1: dom-storage@2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" + resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q== domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" domexception@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: webidl-conversions "^7.0.0" domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" dompurify@^3.0.5: - version "3.0.11" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.0.11.tgz#c163f5816eaac6aeef35dae2b77fca0504564efe" - integrity sha512-Fan4uMuyB26gFV3ovPoEoQbxRRPfTu3CvImyZnhGq5fsIEO+gEFLp45ISFt+kQBWsK5ulDdT0oV28jS1UrwQLg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.4.tgz#42121304b2b3a6bae22f80131ff8a8f3f3c56be2" + integrity sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww== domutils@^2.8.0: version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" @@ -5508,7 +5288,7 @@ domutils@^2.8.0: dot-case@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: no-case "^3.0.4" @@ -5516,71 +5296,71 @@ dot-case@^3.0.4: dotenv-expand@^8.0.2: version "8.0.3" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz#29016757455bcc748469c83a19b36aaf2b83dd6e" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-8.0.3.tgz#29016757455bcc748469c83a19b36aaf2b83dd6e" integrity sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg== dotenv@16.0.1: version "16.0.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== dotenv@^16.0.0: version "16.4.5" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ejs@^3.1.6, ejs@^3.1.9: - version "3.1.9" - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: jake "^10.8.5" electron-to-chromium@^1.4.668: - version "1.4.728" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.728.tgz#ac54d9d1b38752b920ec737a48c83dec2bf45ea1" - integrity sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw== + version "1.4.783" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz#933887165b8b6025a81663d2d97cf4b85cde27b2" + integrity sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ== elkjs@^0.9.0: - version "0.9.2" - resolved "https://registry.npmjs.org/elkjs/-/elkjs-0.9.2.tgz#3d4ef6f17fde06a5d7eaa3063bb875e25e59e972" - integrity sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw== + version "0.9.3" + resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161" + integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== emojis-list@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" engine.io-client@~6.5.2: version "6.5.3" - resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" integrity sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -5591,20 +5371,20 @@ engine.io-client@~6.5.2: engine.io-parser@~5.2.1: version "5.2.2" - resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.16.0: - version "5.16.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + version "5.16.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" enquirer@^2.3.5: version "2.4.1" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" @@ -5612,29 +5392,29 @@ enquirer@^2.3.5: entities@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== entities@^4.4.0: version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== envinfo@^7.7.3: - version "7.11.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" - integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2: +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== dependencies: array-buffer-byte-length "^1.0.1" @@ -5686,19 +5466,19 @@ es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23 es-define-property@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: get-intrinsic "^1.2.4" es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-get-iterator@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" @@ -5712,13 +5492,13 @@ es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: - version "1.0.18" - resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz#4d3424f46b24df38d064af6fbbc89274e29ea69d" - integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA== + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.23.0" + es-abstract "^1.23.3" es-errors "^1.3.0" es-set-tostringtag "^2.0.3" function-bind "^1.1.2" @@ -5733,24 +5513,24 @@ es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: es-module-lexer@^0.9.0: version "0.9.3" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== es-module-lexer@^1.2.1: - version "1.5.0" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236" - integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== + version "1.5.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" + integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== es-object-atoms@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== dependencies: es-errors "^1.3.0" es-set-tostringtag@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== dependencies: get-intrinsic "^1.2.4" @@ -5759,14 +5539,14 @@ es-set-tostringtag@^2.0.3: es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -5775,12 +5555,12 @@ es-to-primitive@^1.2.1: esbuild-plugin-external-global@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/esbuild-plugin-external-global/-/esbuild-plugin-external-global-1.0.1.tgz#e3bba0e3a561f61b395bec0984a90ed0de06c4ce" + resolved "https://registry.yarnpkg.com/esbuild-plugin-external-global/-/esbuild-plugin-external-global-1.0.1.tgz#e3bba0e3a561f61b395bec0984a90ed0de06c4ce" integrity sha512-NDzYHRoShpvLqNcrgV8ZQh61sMIFAry5KLTQV83BPG5iTXCCu7h72SCfJ97bW0GqtuqDD/1aqLbKinI/rNgUsg== esbuild-sass-plugin@2.16.0: version "2.16.0" - resolved "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.16.0.tgz#2908ab5e104cfc980118c46d0b409cbab8aa32dd" + resolved "https://registry.yarnpkg.com/esbuild-sass-plugin/-/esbuild-sass-plugin-2.16.0.tgz#2908ab5e104cfc980118c46d0b409cbab8aa32dd" integrity sha512-mGCe9MxNYvZ+j77Q/QFO+rwUGA36mojDXkOhtVmoyz1zwYbMaNrtVrmXwwYDleS/UMKTNU3kXuiTtPiAD3K+Pw== dependencies: resolve "^1.22.6" @@ -5788,7 +5568,7 @@ esbuild-sass-plugin@2.16.0: esbuild@0.19.10: version "0.19.10" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz#55e83e4a6b702e3498b9f872d84bfb4ebcb6d16e" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.10.tgz#55e83e4a6b702e3498b9f872d84bfb4ebcb6d16e" integrity sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA== optionalDependencies: "@esbuild/aix-ppc64" "0.19.10" @@ -5817,7 +5597,7 @@ esbuild@0.19.10: esbuild@^0.19.3: version "0.19.12" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== optionalDependencies: "@esbuild/aix-ppc64" "0.19.12" @@ -5846,7 +5626,7 @@ esbuild@^0.19.3: esbuild@^0.20.1: version "0.20.2" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== optionalDependencies: "@esbuild/aix-ppc64" "0.20.2" @@ -5873,34 +5653,34 @@ esbuild@^0.20.1: "@esbuild/win32-ia32" "0.20.2" "@esbuild/win32-x64" "0.20.2" -escalade@^3.1.1: +escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-config-prettier@8.5.0: version "8.5.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== eslint-config-react-app@7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== dependencies: "@babel/core" "^7.16.0" @@ -5920,7 +5700,7 @@ eslint-config-react-app@7.0.1: eslint-import-resolver-node@^0.3.9: version "0.3.9" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" @@ -5929,14 +5709,14 @@ eslint-import-resolver-node@^0.3.9: eslint-module-utils@^2.8.0: version "2.8.1" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" eslint-plugin-flowtype@^8.0.3: version "8.0.3" - resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== dependencies: lodash "^4.17.21" @@ -5944,7 +5724,7 @@ eslint-plugin-flowtype@^8.0.3: eslint-plugin-import@^2.25.3: version "2.29.1" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: array-includes "^3.1.7" @@ -5967,14 +5747,14 @@ eslint-plugin-import@^2.25.3: eslint-plugin-jest@^25.3.0: version "25.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" eslint-plugin-jsx-a11y@^6.5.1: version "6.8.0" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== dependencies: "@babel/runtime" "^7.23.2" @@ -5996,19 +5776,19 @@ eslint-plugin-jsx-a11y@^6.5.1: eslint-plugin-prettier@3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-react-hooks@^4.3.0: - version "4.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@7.32.2: version "7.32.2" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: array-includes "^3.1.6" @@ -6029,7 +5809,7 @@ eslint-plugin-react@7.32.2: eslint-plugin-react@^7.27.1: version "7.34.1" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== dependencies: array-includes "^3.1.7" @@ -6053,14 +5833,14 @@ eslint-plugin-react@^7.27.1: eslint-plugin-testing-library@^5.0.1: version "5.11.1" - resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== dependencies: "@typescript-eslint/utils" "^5.58.0" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -6068,29 +5848,29 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-utils@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0: version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^7.32.0: version "7.32.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: "@babel/code-frame" "7.12.11" @@ -6136,7 +5916,7 @@ eslint@^7.32.0: espree@^7.3.0, espree@^7.3.1: version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" @@ -6145,26 +5925,26 @@ espree@^7.3.0, espree@^7.3.1: esprima@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.0: version "1.5.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estimo@^2.3.6: version "2.3.6" - resolved "https://registry.npmjs.org/estimo/-/estimo-2.3.6.tgz#af0ea229d82a642e89570616d4349b267642fd00" + resolved "https://registry.yarnpkg.com/estimo/-/estimo-2.3.6.tgz#af0ea229d82a642e89570616d4349b267642fd00" integrity sha512-aPd3VTQAL1TyDyhFfn6fqBTJ9WvbRZVN4Z29Buk6+P6xsI0DuF5Mh3dGv6kYCUxWnZkB4Jt3aYglUxOtuwtxoA== dependencies: "@sitespeed.io/tracium" "^0.3.3" @@ -6175,22 +5955,22 @@ estimo@^2.3.6: estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== estree-walker@^3.0.3: @@ -6202,22 +5982,22 @@ estree-walker@^3.0.3: esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.2.0: version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -6232,7 +6012,7 @@ execa@^5.1.1: execa@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== dependencies: cross-spawn "^7.0.3" @@ -6247,7 +6027,7 @@ execa@^8.0.1: expect@^29.0.0: version "29.7.0" - resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: "@jest/expect-utils" "^29.7.0" @@ -6258,7 +6038,7 @@ expect@^29.0.0: extract-zip@2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: debug "^4.1.1" @@ -6269,24 +6049,24 @@ extract-zip@2.0.1: fake-indexeddb@3.1.7: version "3.1.7" - resolved "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-3.1.7.tgz#d9efbeade113c15efbe862e4598a4b0a1797ed9f" + resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-3.1.7.tgz#d9efbeade113c15efbe862e4598a4b0a1797ed9f" integrity sha512-CUGeCzCOVjmeKi2C0pcvSh6NDU6uQIaS+7YyR++tO/atJJujkBYVhDvfePdz/U8bD33BMVWirsr1MKczfAqbjA== dependencies: realistic-structured-clone "^2.0.1" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.3.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -6297,36 +6077,36 @@ fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-g fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastest-levenshtein@^1.0.12: version "1.0.16" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: version "1.17.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" faye-websocket@0.11.3: version "0.11.3" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" @@ -6341,19 +6121,19 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: fflate@^0.7.4: version "0.7.4" - resolved "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" file-loader@6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" @@ -6361,21 +6141,21 @@ file-loader@6.2.0: filelist@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" find-cache-dir@^3.3.1: version "3.3.2" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" @@ -6384,12 +6164,12 @@ find-cache-dir@^3.3.1: find-chrome-bin@0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/find-chrome-bin/-/find-chrome-bin-0.1.0.tgz#9fa3e6f86c275762c6d8be9da9af71e6fef05373" + resolved "https://registry.yarnpkg.com/find-chrome-bin/-/find-chrome-bin-0.1.0.tgz#9fa3e6f86c275762c6d8be9da9af71e6fef05373" integrity sha512-XoFZwaEn1R3pE6zNG8kH64l2e093hgB9+78eEKPmJK0o1EXEou+25cEWdtu2qq4DBQPDSe90VJAWVI2Sz9pX6Q== find-up@^4.0.0: version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + 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" @@ -6397,7 +6177,7 @@ find-up@^4.0.0: firebase@8.3.3: version "8.3.3" - resolved "https://registry.npmjs.org/firebase/-/firebase-8.3.3.tgz#21d8fb8eec2c43b0d8f98ab6bda5535b7454fa54" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.3.3.tgz#21d8fb8eec2c43b0d8f98ab6bda5535b7454fa54" integrity sha512-eRkW7bD25aevlGwtCEsP53xBo5/Fi4wkxvfvmDW6R2/oSHjy+hVLkQILP4kQFFXgFL0LBjxIPOchXoQ5MUbTCA== dependencies: "@firebase/analytics" "0.6.8" @@ -6417,7 +6197,7 @@ firebase@8.3.3: flat-cache@^3.0.4: version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" @@ -6426,17 +6206,17 @@ flat-cache@^3.0.4: flat@^5.0.2: version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.7, flatted@^3.2.9: version "3.3.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== follow-redirects@^1.0.0: version "1.15.6" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== fonteditor-core@2.4.0: @@ -6448,14 +6228,14 @@ fonteditor-core@2.4.0: for-each@^0.3.3: version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" form-data@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -6471,22 +6251,22 @@ formdata-polyfill@^4.0.10: fraction.js@^4.2.0: version "4.3.7" - resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== fractional-indexing@3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/fractional-indexing/-/fractional-indexing-3.2.0.tgz#1193e63d54ff4e0cbe0c79a9ed6cfbab25d91628" + resolved "https://registry.yarnpkg.com/fractional-indexing/-/fractional-indexing-3.2.0.tgz#1193e63d54ff4e0cbe0c79a9ed6cfbab25d91628" integrity sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ== fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^10.0.1: version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -6495,7 +6275,7 @@ fs-extra@^10.0.1: fs-extra@^11.1.0: version "11.2.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" @@ -6504,7 +6284,7 @@ fs-extra@^11.1.0: fs-extra@^9.0.1: version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -6514,22 +6294,22 @@ fs-extra@^9.0.1: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" @@ -6539,37 +6319,37 @@ function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: functional-red-black-tree@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== functions-have-names@^1.2.3: version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== fuzzy@0.1.3: version "0.1.3" - resolved "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" + resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + 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.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0, get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: es-errors "^1.3.0" @@ -6580,34 +6360,34 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ get-nonce@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-stream@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== get-symbol-description@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: call-bind "^1.0.5" @@ -6616,19 +6396,19 @@ get-symbol-description@^1.0.2: glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -6640,31 +6420,32 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: globals@^11.1.0: version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" globals@^9.18.0: version "9.18.0" - resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -6676,116 +6457,111 @@ globby@^11.1.0: glur@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" integrity sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA== gopd@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + 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== graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" hachure-fill@^0.5.2: version "0.5.2" - resolved "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" + resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg== has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" has-proto@^1.0.1, has-proto@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: has-symbols "^1.0.3" hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" he@1.2.0, he@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -heap@^0.2.6: - version "0.2.7" - resolved "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" - integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== - html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.1.0: version "6.1.0" - resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: camel-case "^4.1.2" @@ -6798,12 +6574,12 @@ html-minifier-terser@^6.1.0: http-parser-js@>=0.5.1: version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -6812,7 +6588,7 @@ http-proxy-agent@^5.0.0: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -6821,7 +6597,7 @@ http-proxy@^1.18.1: http-server@14.1.1: version "14.1.1" - resolved "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== dependencies: basic-auth "^2.0.1" @@ -6840,7 +6616,7 @@ http-server@14.1.1: https-proxy-agent@5.0.1, https-proxy-agent@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -6848,90 +6624,90 @@ https-proxy-agent@5.0.1, https-proxy-agent@^5.0.1: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== human-signals@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== husky@7.0.4: version "7.0.4" - resolved "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== i18next-browser-languagedetector@6.1.4: version "6.1.4" - resolved "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.4.tgz#7b087c5edb6f6acd38ef54ede2160ab9cde0108f" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.4.tgz#7b087c5edb6f6acd38ef54ede2160ab9cde0108f" integrity sha512-wukWnFeU7rKIWT66VU5i8I+3Zc4wReGcuDK2+kuFhtoxBRGWGdvYI9UQmqNL/yQH1KogWwh+xGEaIPH8V/i2Zg== dependencies: "@babel/runtime" "^7.14.6" iconv-lite@0.6, iconv-lite@0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== idb-keyval@6.0.3: version "6.0.3" - resolved "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.0.3.tgz#e47246a15e55d0fff9fa204fd9ca06f90ff30c52" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.0.3.tgz#e47246a15e55d0fff9fa204fd9ca06f90ff30c52" integrity sha512-yh8V7CnE6EQMu9YDwQXhRxwZh4nv+8xm/HV4ZqK4IiYFJBWYGjJuykADJbSP+F/GDXUBwCSSNn/14IpGL81TuA== dependencies: safari-14-idb-fix "^3.0.0" idb@3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" + resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== idb@^7.0.1: version "7.1.1" - resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== ieee754@^1.1.13: version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.2.0: version "5.3.1" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== image-blob-reduce@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/image-blob-reduce/-/image-blob-reduce-3.0.1.tgz#812be7655a552031635799ae64e846b106f7a489" + resolved "https://registry.yarnpkg.com/image-blob-reduce/-/image-blob-reduce-3.0.1.tgz#812be7655a552031635799ae64e846b106f7a489" integrity sha512-/VmmWgIryG/wcn4TVrV7cC4mlfUC/oyiKIfSg5eVM3Ten/c1c34RJhMYKCWTnoSMHSqXLt3tsrBR4Q2HInvN+Q== dependencies: pica "^7.1.0" immediate@~3.0.5: version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immutable@^4.0.0: - version "4.3.5" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + version "4.3.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" + integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -6939,7 +6715,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: import-local@^3.0.2: version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -6947,22 +6723,22 @@ import-local@^3.0.2: import-meta-loader@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/import-meta-loader/-/import-meta-loader-1.1.0.tgz#927060305f2d0f88b495f2754aa33387ca6579d7" + resolved "https://registry.yarnpkg.com/import-meta-loader/-/import-meta-loader-1.1.0.tgz#927060305f2d0f88b495f2754aa33387ca6579d7" integrity sha512-f96r2o8xT+b2KVlOY4x+1KTJmJiapZlf77j1WebR8NQgMG1dpdqijjGl4i/2jMoXch2CVqcQoTMfh5BR7bR8wA== imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -6970,12 +6746,12 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internal-slot@^1.0.4, internal-slot@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: es-errors "^1.3.0" @@ -6984,29 +6760,29 @@ internal-slot@^1.0.4, internal-slot@^1.0.7: "internmap@1 - 2": version "2.0.3" - resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== internmap@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== interpret@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" is-arguments@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -7014,7 +6790,7 @@ is-arguments@^1.1.1: is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" @@ -7022,147 +6798,154 @@ is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-async-function@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== dependencies: has-tostringtag "^1.0.0" is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0, is-core-module@^2.13.1: version "2.13.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" is-data-view@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== dependencies: is-typed-array "^1.1.13" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finalizationregistry@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== dependencies: call-bind "^1.0.2" is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + 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-fullwidth-code-point@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== is-generator-function@^1.0.10: version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-negative-zero@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -7170,67 +6953,67 @@ is-regex@^1.1.4: is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== is-set@^2.0.2, is-set@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: call-bind "^1.0.7" is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-stream@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-typed-array@^1.1.13: version "1.1.13" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: which-typed-array "^1.1.14" is-weakmap@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-weakset@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== dependencies: call-bind "^1.0.7" @@ -7238,12 +7021,12 @@ is-weakset@^2.0.3: isarray@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isexe@^3.1.1: @@ -7253,17 +7036,17 @@ isexe@^3.1.1: isobject@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-report@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -7272,7 +7055,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + 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" @@ -7281,7 +7064,7 @@ istanbul-lib-source-maps@^4.0.1: istanbul-reports@^3.1.5: version "3.1.7" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" @@ -7289,7 +7072,7 @@ istanbul-reports@^3.1.5: iterator.prototype@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: define-properties "^1.2.1" @@ -7299,9 +7082,9 @@ iterator.prototype@^1.1.2: set-function-name "^2.0.1" jake@^10.8.5: - version "10.8.7" - resolved "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + version "10.9.1" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" + integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== dependencies: async "^3.2.3" chalk "^4.0.2" @@ -7310,7 +7093,7 @@ jake@^10.8.5: jest-canvas-mock@~2.4.0: version "2.4.0" - resolved "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz#947b71442d7719f8e055decaecdb334809465341" + resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz#947b71442d7719f8e055decaecdb334809465341" integrity sha512-mmMpZzpmLzn5vepIaHk5HoH3Ka4WykbSoLuG/EKoJd0x0ID/t+INo1l8ByfcUJuDM+RIsL4QDg/gDnBbrj2/IQ== dependencies: cssfontparser "^1.2.1" @@ -7318,7 +7101,7 @@ jest-canvas-mock@~2.4.0: jest-diff@^27.0.0: version "27.5.1" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -7328,7 +7111,7 @@ jest-diff@^27.0.0: jest-diff@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" @@ -7338,17 +7121,17 @@ jest-diff@^29.7.0: jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== jest-get-type@^29.6.3: version "29.6.3" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== jest-matcher-utils@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" @@ -7358,7 +7141,7 @@ jest-matcher-utils@^29.7.0: jest-message-util@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" @@ -7373,7 +7156,7 @@ jest-message-util@^29.7.0: jest-util@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: "@jest/types" "^29.6.3" @@ -7383,18 +7166,9 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - jest-worker@^27.4.5: version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" @@ -7403,17 +7177,17 @@ jest-worker@^27.4.5: jotai@1.13.1: version "1.13.1" - resolved "https://registry.npmjs.org/jotai/-/jotai-1.13.1.tgz#20cc46454cbb39096b12fddfa635b873b3668236" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.13.1.tgz#20cc46454cbb39096b12fddfa635b873b3668236" integrity sha512-RUmH1S4vLsG3V6fbGlKzGJnLrDcC/HNb5gH2AeA9DzuJknoVxSGvvg8OBB7lke+gDc4oXmdVsaKn/xDUhWZ0vw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-tokens@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== js-tokens@^9.0.0: @@ -7423,7 +7197,7 @@ js-tokens@^9.0.0: js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + 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" @@ -7431,7 +7205,7 @@ js-yaml@^3.13.1: jsdom@22.1.0: version "22.1.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8" integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== dependencies: abab "^2.0.6" @@ -7460,64 +7234,59 @@ jsdom@22.1.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + 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.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + 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== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json5@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.1, json5@^2.2.3: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" - integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== - jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -7526,12 +7295,12 @@ jsonfile@^6.0.1: jsonpointer@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: version "3.3.5" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: array-includes "^3.1.6" @@ -7541,63 +7310,63 @@ jsonpointer@^5.0.0: katex@^0.16.9: version "0.16.10" - resolved "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz#6f81b71ac37ff4ec7556861160f53bc5f058b185" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.10.tgz#6f81b71ac37ff4ec7556861160f53bc5f058b185" integrity sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA== dependencies: commander "^8.3.0" keyv@^4.5.3: version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" khroma@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^4.0.3: version "4.1.5" - resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== klona@^2.0.4, klona@^2.0.5: version "2.0.6" - resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== language-tags@^1.0.9: version "1.0.9" - resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== dependencies: language-subtag-registry "^0.3.20" layout-base@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== leven@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -7605,29 +7374,29 @@ levn@^0.4.1: lie@3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== dependencies: immediate "~3.0.5" lilconfig@2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lilconfig@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@12.3.7: version "12.3.7" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz#ad0e2014302f704f9cf2c0ebdb97ac63d0f17be0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.7.tgz#ad0e2014302f704f9cf2c0ebdb97ac63d0f17be0" integrity sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ== dependencies: cli-truncate "^3.1.0" @@ -7647,7 +7416,7 @@ lint-staged@12.3.7: listr2@^4.0.1: version "4.0.5" - resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== dependencies: cli-truncate "^2.1.0" @@ -7661,12 +7430,12 @@ listr2@^4.0.1: loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^2.0.0: version "2.0.4" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" @@ -7675,7 +7444,7 @@ loader-utils@^2.0.0: local-pkg@^0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== dependencies: mlly "^1.4.2" @@ -7683,66 +7452,66 @@ local-pkg@^0.5.0: localforage@^1.8.1: version "1.10.0" - resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== dependencies: lie "3.1.1" locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + 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-es@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.pick@^4.4.0: version "4.4.0" - resolved "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q== lodash.sortby@^4.7.0: version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.throttle@4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== lodash.truncate@^4.4.2: version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-update@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" @@ -7752,92 +7521,92 @@ log-update@^4.0.0: long@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== long@^5.0.0: version "5.2.3" - resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loupe@^2.3.1, loupe@^2.3.6, loupe@^2.3.7: version "2.3.7" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: get-func-name "^2.0.1" lower-case@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + 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.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + 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" lz-string@^1.5.0: version "1.5.0" - resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" magic-string@^0.27.0: version "0.27.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" magic-string@^0.30.1, magic-string@^0.30.5: - version "0.30.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d" - integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw== + version "0.30.10" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" + integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + 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" make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" mdast-util-from-markdown@^1.3.0: version "1.3.1" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== dependencies: "@types/mdast" "^3.0.0" @@ -7855,24 +7624,24 @@ mdast-util-from-markdown@^1.3.0: mdast-util-to-string@^3.1.0: version "3.2.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== dependencies: "@types/mdast" "^3.0.0" merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + 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, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== mermaid@10.9.0: version "10.9.0" - resolved "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz#4d1272fbe434bd8f3c2c150554dc8a23a9bf9361" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.9.0.tgz#4d1272fbe434bd8f3c2c150554dc8a23a9bf9361" integrity sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g== dependencies: "@braintree/sanitize-url" "^6.0.1" @@ -7898,7 +7667,7 @@ mermaid@10.9.0: micromark-core-commonmark@^1.0.1: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== dependencies: decode-named-character-reference "^1.0.0" @@ -7920,7 +7689,7 @@ micromark-core-commonmark@^1.0.1: micromark-factory-destination@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== dependencies: micromark-util-character "^1.0.0" @@ -7929,7 +7698,7 @@ micromark-factory-destination@^1.0.0: micromark-factory-label@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== dependencies: micromark-util-character "^1.0.0" @@ -7939,7 +7708,7 @@ micromark-factory-label@^1.0.0: micromark-factory-space@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== dependencies: micromark-util-character "^1.0.0" @@ -7947,7 +7716,7 @@ micromark-factory-space@^1.0.0: micromark-factory-title@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== dependencies: micromark-factory-space "^1.0.0" @@ -7957,7 +7726,7 @@ micromark-factory-title@^1.0.0: micromark-factory-whitespace@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== dependencies: micromark-factory-space "^1.0.0" @@ -7967,7 +7736,7 @@ micromark-factory-whitespace@^1.0.0: micromark-util-character@^1.0.0: version "1.2.0" - resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== dependencies: micromark-util-symbol "^1.0.0" @@ -7975,14 +7744,14 @@ micromark-util-character@^1.0.0: micromark-util-chunked@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== dependencies: micromark-util-symbol "^1.0.0" micromark-util-classify-character@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== dependencies: micromark-util-character "^1.0.0" @@ -7991,7 +7760,7 @@ micromark-util-classify-character@^1.0.0: micromark-util-combine-extensions@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== dependencies: micromark-util-chunked "^1.0.0" @@ -7999,14 +7768,14 @@ micromark-util-combine-extensions@^1.0.0: micromark-util-decode-numeric-character-reference@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== dependencies: micromark-util-symbol "^1.0.0" micromark-util-decode-string@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== dependencies: decode-named-character-reference "^1.0.0" @@ -8016,31 +7785,31 @@ micromark-util-decode-string@^1.0.0: micromark-util-encode@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== micromark-util-html-tag-name@^1.0.0: version "1.2.0" - resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== micromark-util-normalize-identifier@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== dependencies: micromark-util-symbol "^1.0.0" micromark-util-resolve-all@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== dependencies: micromark-util-types "^1.0.0" micromark-util-sanitize-uri@^1.0.0: version "1.2.0" - resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== dependencies: micromark-util-character "^1.0.0" @@ -8049,7 +7818,7 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-subtokenize@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== dependencies: micromark-util-chunked "^1.0.0" @@ -8059,17 +7828,17 @@ micromark-util-subtokenize@^1.0.0: micromark-util-symbol@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== micromark@^3.0.0: version "3.2.0" - resolved "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== dependencies: "@types/debug" "^4.0.0" @@ -8091,133 +7860,133 @@ micromark@^3.0.0: uvu "^0.5.0" micromatch@^4.0.0, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0: version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@^2.1.27: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@^1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-fn@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-css-extract-plugin@2.6.1: version "2.6.1" - resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== dependencies: schema-utils "^4.0.0" minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mkdirp-classic@^0.5.2: version "0.5.3" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp@^0.5.6: version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -mlly@^1.2.0, mlly@^1.4.2: - version "1.6.1" - resolved "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f" - integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA== +mlly@^1.4.2, mlly@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.0.tgz#587383ae40dda23cadb11c3c3cc972b277724271" + integrity sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ== dependencies: acorn "^8.11.3" pathe "^1.1.2" - pkg-types "^1.0.3" - ufo "^1.3.2" + pkg-types "^1.1.0" + ufo "^1.5.3" moo-color@^1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz#d56435f8359c8284d83ac58016df7427febece74" + resolved "https://registry.yarnpkg.com/moo-color/-/moo-color-1.0.3.tgz#d56435f8359c8284d83ac58016df7427febece74" integrity sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ== dependencies: color-name "^1.1.4" mri@^1.1.0: version "1.2.0" - resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== mrmime@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== mrmime@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== ms@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.1.1: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multimath@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/multimath/-/multimath-2.0.0.tgz#0d37acf67c328f30e3d8c6b0d3209e6082710302" + resolved "https://registry.yarnpkg.com/multimath/-/multimath-2.0.0.tgz#0d37acf67c328f30e3d8c6b0d3209e6082710302" integrity sha512-toRx66cAMJ+Ccz7pMIg38xSIrtnbozk0dchXezwQDMgQmbGpfxjtv68H+L00iFL8hxDaVjrmwAFSb3I6bg8Q2g== dependencies: glur "^1.1.2" @@ -8225,44 +7994,44 @@ multimath@^2.0.0: nanoid@3.3.3: version "3.3.3" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== nanoid@4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== nanoid@^3.3.2, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== nanospinner@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/nanospinner/-/nanospinner-1.1.0.tgz#d17ff621cb1784b0a206b400da88a0ef6db39b97" + resolved "https://registry.yarnpkg.com/nanospinner/-/nanospinner-1.1.0.tgz#d17ff621cb1784b0a206b400da88a0ef6db39b97" integrity sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA== dependencies: picocolors "^1.0.0" natural-compare-lite@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== next@14.1: version "14.1.4" - resolved "https://registry.npmjs.org/next/-/next-14.1.4.tgz#203310f7310578563fd5c961f0db4729ce7a502d" + resolved "https://registry.yarnpkg.com/next/-/next-14.1.4.tgz#203310f7310578563fd5c961f0db4729ce7a502d" integrity sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ== dependencies: "@next/env" "14.1.4" @@ -8285,7 +8054,7 @@ next@14.1: no-case@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" @@ -8298,12 +8067,12 @@ node-domexception@^1.0.0: node-fetch@2.6.1: version "2.6.1" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-fetch@2.6.7: version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -8319,7 +8088,7 @@ node-fetch@3.3.2: node-html-parser@^5.3.3: version "5.4.2" - resolved "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a" integrity sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw== dependencies: css-select "^4.2.1" @@ -8327,63 +8096,63 @@ node-html-parser@^5.3.3: node-releases@^2.0.14: version "2.0.14" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== non-layered-tidy-tree-layout@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" + resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + 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" npm-run-path@^5.1.0: version "5.3.0" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== dependencies: path-key "^4.0.0" nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" nwsapi@^2.2.4: - version "2.2.7" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + version "2.2.10" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" + integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.0, object-inspect@^1.13.1: version "1.13.1" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.1.5: version "1.1.6" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: call-bind "^1.0.7" @@ -8391,12 +8160,12 @@ object-is@^1.1.5: object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.4, object.assign@^4.1.5: version "4.1.5" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: call-bind "^1.0.5" @@ -8406,7 +8175,7 @@ object.assign@^4.1.4, object.assign@^4.1.5: object.entries@^1.1.6, object.entries@^1.1.7: version "1.1.8" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== dependencies: call-bind "^1.0.7" @@ -8415,7 +8184,7 @@ object.entries@^1.1.6, object.entries@^1.1.7: object.fromentries@^2.0.6, object.fromentries@^2.0.7: version "2.0.8" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== dependencies: call-bind "^1.0.7" @@ -8425,7 +8194,7 @@ object.fromentries@^2.0.6, object.fromentries@^2.0.7: object.groupby@^1.0.1: version "1.0.3" - resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== dependencies: call-bind "^1.0.7" @@ -8434,7 +8203,7 @@ object.groupby@^1.0.1: object.hasown@^1.1.2, object.hasown@^1.1.3: version "1.1.4" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== dependencies: define-properties "^1.2.1" @@ -8443,7 +8212,7 @@ object.hasown@^1.1.2, object.hasown@^1.1.3: object.values@^1.1.6, object.values@^1.1.7: version "1.2.0" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== dependencies: call-bind "^1.0.7" @@ -8452,88 +8221,88 @@ object.values@^1.1.6, object.values@^1.1.7: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + 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.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" onetime@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: mimic-fn "^4.0.0" open-color@1.9.1: version "1.9.1" - resolved "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz#a6e6328f60eff7aa60e3e8fcfa50f53ff3eece35" + resolved "https://registry.yarnpkg.com/open-color/-/open-color-1.9.1.tgz#a6e6328f60eff7aa60e3e8fcfa50f53ff3eece35" integrity sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw== opener@^1.5.1, opener@^1.5.2: version "1.5.2" - resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== optionator@^0.9.1: - version "0.9.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" + word-wrap "^1.2.5" p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + 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@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== dependencies: yocto-queue "^1.0.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + 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-map@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-try@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@1.0.11: version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== param-case@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -8541,14 +8310,14 @@ param-case@^3.0.4: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-json@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -8558,14 +8327,14 @@ parse-json@^5.0.0: parse5@^7.1.2: version "7.1.2" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" pascal-case@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -8573,77 +8342,77 @@ pascal-case@^3.1.2: path-data-parser@0.1.0, path-data-parser@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c" + resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c" integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + 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.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + 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.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-key@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + 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.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== path2d-polyfill@2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz#24c554a738f42700d6961992bf5f1049672f2391" + resolved "https://registry.yarnpkg.com/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz#24c554a738f42700d6961992bf5f1049672f2391" integrity sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA== pathe@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw== pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== pathval@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pend@~1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== pepjs@0.5.3: version "0.5.3" - resolved "https://registry.npmjs.org/pepjs/-/pepjs-0.5.3.tgz#dc755f03d965c20e4b1bb65e42a03a97c382cfc7" + resolved "https://registry.yarnpkg.com/pepjs/-/pepjs-0.5.3.tgz#dc755f03d965c20e4b1bb65e42a03a97c382cfc7" integrity sha512-5yHVB9OHqKd9fr/OIsn8ss0NgThQ9buaqrEuwr9Or5YjPp6h+WTDKWZI+xZLaBGZCtODTnFtlSHNmhFsq67THg== perfect-freehand@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.0.tgz#706a0f854544f6175772440c51d3b0563eb3988a" + resolved "https://registry.yarnpkg.com/perfect-freehand/-/perfect-freehand-1.2.0.tgz#706a0f854544f6175772440c51d3b0563eb3988a" integrity sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw== pica@7.1.1, pica@^7.1.0: version "7.1.1" - resolved "https://registry.npmjs.org/pica/-/pica-7.1.1.tgz#c68b42f5cfa6cc26eaec5cfa10cc0a5299ef3b7a" + resolved "https://registry.yarnpkg.com/pica/-/pica-7.1.1.tgz#c68b42f5cfa6cc26eaec5cfa10cc0a5299ef3b7a" integrity sha512-WY73tMvNzXWEld2LicT9Y260L43isrZ85tPuqRyvtkljSDLmnNFQmZICt4xUJMVulmcc6L9O7jbBrtx3DOz/YQ== dependencies: glur "^1.1.2" @@ -8652,45 +8421,45 @@ pica@7.1.1, pica@^7.1.0: object-assign "^4.1.1" webworkify "^1.5.0" -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== pkg-dir@4.2.0, pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + 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" -pkg-types@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" - integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== +pkg-types@^1.0.3, pkg-types@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.1.tgz#07b626880749beb607b0c817af63aac1845a73f2" + integrity sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ== dependencies: - jsonc-parser "^3.2.0" - mlly "^1.2.0" - pathe "^1.1.0" + confbox "^0.1.7" + mlly "^1.7.0" + pathe "^1.1.2" png-chunk-text@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/png-chunk-text/-/png-chunk-text-1.0.0.tgz#1c6006d8e34ba471d38e1c9c54b3f53e1085e18f" + resolved "https://registry.yarnpkg.com/png-chunk-text/-/png-chunk-text-1.0.0.tgz#1c6006d8e34ba471d38e1c9c54b3f53e1085e18f" integrity sha512-DEROKU3SkkLGWNMzru3xPVgxyd48UGuMSZvioErCure6yhOc/pRH2ZV+SEn7nmaf7WNf3NdIpH+UTrRdKyq9Lw== png-chunks-encode@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/png-chunks-encode/-/png-chunks-encode-1.0.0.tgz#d9ea5e35caeeed782658c1ab7bafa7a5edb1a878" + resolved "https://registry.yarnpkg.com/png-chunks-encode/-/png-chunks-encode-1.0.0.tgz#d9ea5e35caeeed782658c1ab7bafa7a5edb1a878" integrity sha512-J1jcHgbQRsIIgx5wxW9UmCymV3wwn4qCCJl6KYgEU/yHCh/L2Mwq/nMOkRPtmV79TLxRZj5w3tH69pvygFkDqA== dependencies: crc-32 "^0.3.0" @@ -8698,24 +8467,24 @@ png-chunks-encode@1.0.0: png-chunks-extract@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz#fad4a905e66652197351c65e35b92c64311e472d" + resolved "https://registry.yarnpkg.com/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz#fad4a905e66652197351c65e35b92c64311e472d" integrity sha512-ZiVwF5EJ0DNZyzAqld8BP1qyJBaGOFaq9zl579qfbkcmOwWLLO4I9L8i2O4j3HkI6/35i0nKG2n+dZplxiT89Q== dependencies: crc-32 "^0.3.0" points-on-curve@0.2.0, points-on-curve@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1" integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== points-on-curve@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/points-on-curve/-/points-on-curve-1.0.1.tgz#03fcdc08e48e3bfdc7e8bd1d7ccd4d5f11e132c6" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-1.0.1.tgz#03fcdc08e48e3bfdc7e8bd1d7ccd4d5f11e132c6" integrity sha512-3nmX4/LIiyuwGLwuUrfhTlDeQFlAhi7lyK/zcRNGhalwapDWgAGR82bUpmn2mA03vII3fvNCG8jAONzKXwpxAg== points-on-path@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52" + resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52" integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g== dependencies: path-data-parser "0.1.0" @@ -8723,7 +8492,7 @@ points-on-path@^0.2.1: portfinder@^1.0.28: version "1.0.32" - resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== dependencies: async "^2.6.4" @@ -8732,12 +8501,12 @@ portfinder@^1.0.28: possible-typed-array-names@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== postcss-loader@7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz#4c883cc0a1b2bfe2074377b7a74c1cd805684395" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.1.tgz#4c883cc0a1b2bfe2074377b7a74c1cd805684395" integrity sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ== dependencies: cosmiconfig "^7.0.0" @@ -8746,12 +8515,12 @@ postcss-loader@7.0.1: postcss-modules-extract-imports@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== postcss-modules-local-by-default@^4.0.0: version "4.0.5" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== dependencies: icss-utils "^5.0.0" @@ -8760,34 +8529,34 @@ postcss-modules-local-by-default@^4.0.0: postcss-modules-scope@^3.0.0: version "3.2.0" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== dependencies: postcss-selector-parser "^6.0.4" postcss-modules-values@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.16" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" + integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@8.4.31: version "8.4.31" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" @@ -8796,7 +8565,7 @@ postcss@8.4.31: postcss@^8.4.32, postcss@^8.4.38, postcss@^8.4.7: version "8.4.38" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== dependencies: nanoid "^3.3.7" @@ -8805,34 +8574,34 @@ postcss@^8.4.32, postcss@^8.4.38, postcss@^8.4.7: prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" prettier@2.6.2: version "2.6.2" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== pretty-bytes@^5.3.0: version "5.6.0" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== pretty-bytes@^6.1.1: version "6.1.1" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b" integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -8841,7 +8610,7 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: "@jest/schemas" "^29.6.3" @@ -8850,17 +8619,17 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: progress@2.0.3, progress@^2.0.0: version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-polyfill@8.1.3: version "8.1.3" - resolved "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -8869,7 +8638,7 @@ prop-types@^15.8.1: protobufjs@^6.8.6: version "6.11.4" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -8886,10 +8655,10 @@ protobufjs@^6.8.6: "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@^7.2.4: - version "7.2.6" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" - integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== +protobufjs@^7.2.5: + version "7.3.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c" + integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -8906,17 +8675,17 @@ protobufjs@^7.2.4: proxy-from-env@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== psl@^1.1.33: version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -8924,12 +8693,12 @@ pump@^3.0.0: punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== puppeteer-core@^13.5.1: version "13.7.0" - resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz#3344bee3994163f49120a55ddcd144a40575ba5b" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-13.7.0.tgz#3344bee3994163f49120a55ddcd144a40575ba5b" integrity sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q== dependencies: cross-fetch "3.1.5" @@ -8947,36 +8716,36 @@ puppeteer-core@^13.5.1: pwacompat@2.0.17: version "2.0.17" - resolved "https://registry.npmjs.org/pwacompat/-/pwacompat-2.0.17.tgz#707959ff97f239bf1fe7b260b63aeea416a15eab" + resolved "https://registry.yarnpkg.com/pwacompat/-/pwacompat-2.0.17.tgz#707959ff97f239bf1fe7b260b63aeea416a15eab" integrity sha512-6Du7IZdIy7cHiv7AhtDy4X2QRM8IAD5DII69mt5qWibC2d15ZU8DmBG1WdZKekG11cChSu4zkSUGPF9sweOl6w== qs@^6.4.0: - version "6.12.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz#edd40c3b823995946a8a0b1f208669c7a200db77" - integrity sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg== + version "6.12.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== dependencies: side-channel "^1.0.6" querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -react-dom@18.2.0, react-dom@^18: +react-dom@18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" @@ -8984,27 +8753,27 @@ react-dom@18.2.0, react-dom@^18: react-is@^16.13.1: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + version "0.14.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== react-remove-scroll-bar@^2.3.3: version "2.3.6" - resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== dependencies: react-style-singleton "^2.2.1" @@ -9012,7 +8781,7 @@ react-remove-scroll-bar@^2.3.3: react-remove-scroll@2.5.5: version "2.5.5" - resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== dependencies: react-remove-scroll-bar "^2.3.3" @@ -9023,23 +8792,23 @@ react-remove-scroll@2.5.5: react-style-singleton@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== dependencies: get-nonce "^1.0.0" invariant "^2.2.4" tslib "^2.0.0" -react@18.2.0, react@^18: +react@18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -9048,14 +8817,14 @@ readable-stream@^3.1.1, readable-stream@^3.4.0: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" realistic-structured-clone@^2.0.1: version "2.0.4" - resolved "https://registry.npmjs.org/realistic-structured-clone/-/realistic-structured-clone-2.0.4.tgz#7eb4c2319fc3cb72f4c8d3c9e888b11647894b50" + resolved "https://registry.yarnpkg.com/realistic-structured-clone/-/realistic-structured-clone-2.0.4.tgz#7eb4c2319fc3cb72f4c8d3c9e888b11647894b50" integrity sha512-lItAdBIFHUSe6fgztHPtmmWqKUgs+qhcYLi3wTRUl4OTB3Vb8aBVSjGfQZUvkmJCKoX3K9Wf7kyLp/F/208+7A== dependencies: core-js "^3.4" @@ -9065,14 +8834,14 @@ realistic-structured-clone@^2.0.1: rechoir@^0.7.0: version "0.7.1" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== dependencies: resolve "^1.9.0" redent@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" @@ -9080,7 +8849,7 @@ redent@^3.0.0: reflect.getprototypeof@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== dependencies: call-bind "^1.0.7" @@ -9093,36 +8862,36 @@ reflect.getprototypeof@^1.0.4: regenerate-unicode-properties@^10.1.0: version "10.1.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regenerator-transform@^0.15.2: version "0.15.2" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: version "1.5.2" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: call-bind "^1.0.6" @@ -9132,12 +8901,12 @@ regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: regexpp@^3.1.0: version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^5.3.1: version "5.3.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + 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" @@ -9149,51 +8918,51 @@ regexpu-core@^5.3.1: regjsparser@^0.9.1: version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" relateurl@^0.2.7: version "0.2.7" - resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + 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.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + 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.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.4, resolve@^1.22.6, resolve@^1.9.0: +resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.22.6, resolve@^1.9.0: version "1.22.8" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" @@ -9202,7 +8971,7 @@ resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.4, resolve@^1.22.6, resolve@^1.9 resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: version "2.0.0-next.5" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: is-core-module "^2.13.0" @@ -9211,7 +8980,7 @@ resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -9219,77 +8988,68 @@ restore-cursor@^3.1.0: reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rewire@6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/rewire/-/rewire-6.0.0.tgz#54f4fcda4df9928d28af1eb54a318bc51ca9aa99" + resolved "https://registry.yarnpkg.com/rewire/-/rewire-6.0.0.tgz#54f4fcda4df9928d28af1eb54a318bc51ca9aa99" integrity sha512-7sZdz5dptqBCapJYocw9EcppLU62KMEqDLIILJnNET2iqzXHaQfaVP5SOJ06XvjX+dNIDJbzjw0ZWzrgDhtjYg== dependencies: eslint "^7.32.0" rfdc@^1.3.0: version "1.3.1" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== rimraf@3.0.2, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" robust-predicates@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" + resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - rollup@^2.43.1: version "2.79.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" rollup@^4.13.0, rollup@^4.2.0: - version "4.14.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.14.0.tgz#c3e2cd479f1b2358b65c1f810fa05b51603d7be8" - integrity sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ== + version "4.18.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda" + integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.14.0" - "@rollup/rollup-android-arm64" "4.14.0" - "@rollup/rollup-darwin-arm64" "4.14.0" - "@rollup/rollup-darwin-x64" "4.14.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.14.0" - "@rollup/rollup-linux-arm64-gnu" "4.14.0" - "@rollup/rollup-linux-arm64-musl" "4.14.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.14.0" - "@rollup/rollup-linux-riscv64-gnu" "4.14.0" - "@rollup/rollup-linux-s390x-gnu" "4.14.0" - "@rollup/rollup-linux-x64-gnu" "4.14.0" - "@rollup/rollup-linux-x64-musl" "4.14.0" - "@rollup/rollup-win32-arm64-msvc" "4.14.0" - "@rollup/rollup-win32-ia32-msvc" "4.14.0" - "@rollup/rollup-win32-x64-msvc" "4.14.0" + "@rollup/rollup-android-arm-eabi" "4.18.0" + "@rollup/rollup-android-arm64" "4.18.0" + "@rollup/rollup-darwin-arm64" "4.18.0" + "@rollup/rollup-darwin-x64" "4.18.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.18.0" + "@rollup/rollup-linux-arm-musleabihf" "4.18.0" + "@rollup/rollup-linux-arm64-gnu" "4.18.0" + "@rollup/rollup-linux-arm64-musl" "4.18.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0" + "@rollup/rollup-linux-riscv64-gnu" "4.18.0" + "@rollup/rollup-linux-s390x-gnu" "4.18.0" + "@rollup/rollup-linux-x64-gnu" "4.18.0" + "@rollup/rollup-linux-x64-musl" "4.18.0" + "@rollup/rollup-win32-arm64-msvc" "4.18.0" + "@rollup/rollup-win32-ia32-msvc" "4.18.0" + "@rollup/rollup-win32-x64-msvc" "4.18.0" fsevents "~2.3.2" roughjs@4.6.4: version "4.6.4" - resolved "https://registry.npmjs.org/roughjs/-/roughjs-4.6.4.tgz#b6f39b44645854a6e0a4a28b078368701eb7f939" + resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.6.4.tgz#b6f39b44645854a6e0a4a28b078368701eb7f939" integrity sha512-s6EZ0BntezkFYMf/9mGn7M8XGIoaav9QQBCnJROWB3brUWQ683Q2LbRD/hq0Z3bAJ/9NVpU/5LpiTWvQMyLDhw== dependencies: hachure-fill "^0.5.2" @@ -9299,43 +9059,43 @@ roughjs@4.6.4: rrweb-cssom@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rw@1: version "1.3.3" - resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== rxjs@^7.5.5: version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" sade@^1.7.3: version "1.8.1" - resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== dependencies: mri "^1.1.0" safari-14-idb-fix@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz#450fc049b996ec7f3fd9ca2f89d32e0761583440" + resolved "https://registry.yarnpkg.com/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz#450fc049b996ec7f3fd9ca2f89d32e0761583440" integrity sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog== safe-array-concat@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== dependencies: call-bind "^1.0.7" @@ -9345,17 +9105,17 @@ safe-array-concat@^1.1.2: safe-buffer@5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: call-bind "^1.0.6" @@ -9364,12 +9124,12 @@ safe-regex-test@^1.0.3: "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass-loader@13.0.2: version "13.0.2" - resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz#e81a909048e06520e9f2ff25113a801065adb3fe" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.0.2.tgz#e81a909048e06520e9f2ff25113a801065adb3fe" integrity sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q== dependencies: klona "^2.0.4" @@ -9377,7 +9137,7 @@ sass-loader@13.0.2: sass@1.51.0: version "1.51.0" - resolved "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -9385,9 +9145,9 @@ sass@1.51.0: source-map-js ">=0.6.2 <2.0.0" sass@^1.7.3: - version "1.74.1" - resolved "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz#686fc227d3707dd25cb2925e1db8e4562be29319" - integrity sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA== + version "1.77.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" + integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9395,21 +9155,21 @@ sass@^1.7.3: saxes@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" schema-utils@^2.6.5: version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" @@ -9418,7 +9178,7 @@ schema-utils@^2.6.5: schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" @@ -9427,7 +9187,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1, schema-utils@^3.2 schema-utils@^4.0.0: version "4.2.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: "@types/json-schema" "^7.0.9" @@ -9437,45 +9197,36 @@ schema-utils@^4.0.0: secure-compare@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== semver@7.5.4: version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0, semver@^7.5.3: - version "7.6.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== serialize-javascript@^6.0.1: version "6.0.2" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -9487,7 +9238,7 @@ set-function-length@^1.2.1: set-function-name@^2.0.1, set-function-name@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== dependencies: define-data-property "^1.1.4" @@ -9497,26 +9248,26 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + 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.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: call-bind "^1.0.7" @@ -9526,22 +9277,22 @@ side-channel@^1.0.4, side-channel@^1.0.6: siginfo@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signal-exit@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== sirv@^1.0.7: version "1.0.19" - resolved "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== dependencies: "@polka/url" "^1.0.0-next.20" @@ -9550,7 +9301,7 @@ sirv@^1.0.7: sirv@^2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== dependencies: "@polka/url" "^1.0.0-next.24" @@ -9559,7 +9310,7 @@ sirv@^2.0.3: size-limit@9.0.0: version "9.0.0" - resolved "https://registry.npmjs.org/size-limit/-/size-limit-9.0.0.tgz#203c47303462a8351976eb26175acea5f4e80447" + resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-9.0.0.tgz#203c47303462a8351976eb26175acea5f4e80447" integrity sha512-DrA7o2DeRN3s+vwCA9nn7Ck9Y4pn9t0GNUwQRpKqBtBmNkl6LA2s/NlNCdtKHrEkRTeYA1ZQ65mnYveo9rUqgA== dependencies: bytes-iec "^3.1.1" @@ -9571,12 +9322,12 @@ size-limit@9.0.0: slash@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" @@ -9585,7 +9336,7 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -9594,7 +9345,7 @@ slice-ansi@^4.0.0: slice-ansi@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: ansi-styles "^6.0.0" @@ -9602,12 +9353,17 @@ slice-ansi@^5.0.0: sliced@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" integrity sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA== +smob@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.5.0.tgz#85d79a1403abf128d24d3ebc1cdc5e1a9548d3ab" + integrity sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig== + socket.io-client@*: version "4.7.5" - resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz#919be76916989758bdc20eec63f7ee0ae45c05b7" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.5.tgz#919be76916989758bdc20eec63f7ee0ae45c05b7" integrity sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -9617,7 +9373,7 @@ socket.io-client@*: socket.io-client@4.7.2: version "4.7.2" - resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz#f2f13f68058bd4e40f94f2a1541f275157ff2c08" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.2.tgz#f2f13f68058bd4e40f94f2a1541f275157ff2c08" integrity sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -9627,7 +9383,7 @@ socket.io-client@4.7.2: socket.io-parser@~4.2.4: version "4.2.4" - resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -9635,12 +9391,12 @@ socket.io-parser@~4.2.4: "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== source-map-resolve@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== dependencies: atob "^2.1.2" @@ -9648,7 +9404,7 @@ source-map-resolve@^0.6.0: source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -9656,68 +9412,68 @@ source-map-support@~0.5.20: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.8.0-beta.0: version "0.8.0-beta.0" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== dependencies: whatwg-url "^7.0.0" sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== stack-utils@^2.0.3: version "2.0.6" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + 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" stackback@0.0.2: version "0.0.2" - resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== std-env@^3.3.3, std-env@^3.5.0: version "3.7.0" - resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== stop-iteration-iterator@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: internal-slot "^1.0.4" streamsearch@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== string-argv@^0.3.1: version "0.3.2" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== string-natural-compare@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -9726,7 +9482,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: string-width@^5.0.0: version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" @@ -9735,7 +9491,7 @@ string-width@^5.0.0: string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: version "4.0.11" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== dependencies: call-bind "^1.0.7" @@ -9753,7 +9509,7 @@ string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6, string.prot string.prototype.trim@^1.2.9: version "1.2.9" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== dependencies: call-bind "^1.0.7" @@ -9763,7 +9519,7 @@ string.prototype.trim@^1.2.9: string.prototype.trimend@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== dependencies: call-bind "^1.0.7" @@ -9772,7 +9528,7 @@ string.prototype.trimend@^1.0.8: string.prototype.trimstart@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== dependencies: call-bind "^1.0.7" @@ -9781,14 +9537,14 @@ string.prototype.trimstart@^1.0.8: string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -9797,55 +9553,55 @@ stringify-object@^3.3.0: strip-ansi@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-comments@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-final-newline@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-literal@^2.0.0: @@ -9857,70 +9613,70 @@ strip-literal@^2.0.0: style-loader@3.3.3: version "3.3.3" - resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== styled-jsx@5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== dependencies: client-only "0.0.1" stylis@^4.1.3: - version "4.3.1" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" - integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== + version "4.3.2" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" + integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + 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-color@^9.2.1: version "9.4.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svg-parser@^2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.9: version "6.8.2" - resolved "https://registry.npmjs.org/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== dependencies: ajv "^8.0.1" @@ -9931,12 +9687,12 @@ table@^6.0.9: tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar-fs@2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" @@ -9946,7 +9702,7 @@ tar-fs@2.1.1: tar-stream@^2.1.4: version "2.2.0" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" @@ -9957,12 +9713,12 @@ tar-stream@^2.1.4: temp-dir@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== tempy@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: is-stream "^2.0.0" @@ -9972,7 +9728,7 @@ tempy@^0.6.0: terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.10: version "5.3.10" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: "@jridgewell/trace-mapping" "^0.3.20" @@ -9981,10 +9737,10 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: - version "5.30.3" - resolved "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz#f1bb68ded42408c316b548e3ec2526d7dd03f4d2" - integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA== +terser@^5.10.0, terser@^5.17.4, terser@^5.26.0: + version "5.31.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -9993,7 +9749,7 @@ terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + 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" @@ -10002,23 +9758,23 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== through@^2.3.8: version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tiny-invariant@^1.1.0: version "1.3.3" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== tinybench@^2.5.1: - version "2.6.0" - resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" - integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA== + version "2.8.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.8.0.tgz#30e19ae3a27508ee18273ffed9ac7018949acd7b" + integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== tinypool@^0.8.3: version "0.8.4" @@ -10027,40 +9783,40 @@ tinypool@^0.8.3: tinyspy@^2.2.0: version "2.2.1" - resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== to-fast-properties@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + 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.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" totalist@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== totalist@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== tough-cookie@^4.1.2: - version "4.1.3" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -10069,38 +9825,38 @@ tough-cookie@^4.1.2: tr46@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" tr46@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" tr46@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== dependencies: punycode "^2.3.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-dedent@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== ts-loader@9.3.1: version "9.3.1" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4" integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw== dependencies: chalk "^4.1.0" @@ -10110,7 +9866,7 @@ ts-loader@9.3.1: tsconfig-paths@^3.15.0: version "3.15.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" @@ -10120,58 +9876,58 @@ tsconfig-paths@^3.15.0: tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tunnel-rat@0.1.2: version "0.1.2" - resolved "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz#1717efbc474ea2d8aa05a91622457a6e201c0aeb" + resolved "https://registry.yarnpkg.com/tunnel-rat/-/tunnel-rat-0.1.2.tgz#1717efbc474ea2d8aa05a91622457a6e201c0aeb" integrity sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ== dependencies: zustand "^4.3.2" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + 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.16.0: version "0.16.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + 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.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== typed-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== dependencies: call-bind "^1.0.7" @@ -10180,7 +9936,7 @@ typed-array-buffer@^1.0.2: typed-array-byte-length@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== dependencies: call-bind "^1.0.7" @@ -10191,7 +9947,7 @@ typed-array-byte-length@^1.0.1: typed-array-byte-offset@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== dependencies: available-typed-arrays "^1.0.7" @@ -10203,7 +9959,7 @@ typed-array-byte-offset@^1.0.2: typed-array-length@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== dependencies: call-bind "^1.0.7" @@ -10215,17 +9971,17 @@ typed-array-length@^1.0.6: typescript@4.9.4: version "4.9.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== typescript@^5: - version "5.4.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz#eb2471e7b0a5f1377523700a21669dce30c2d952" - integrity sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw== + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== typeson-registry@^1.0.0-alpha.20: version "1.0.0-alpha.39" - resolved "https://registry.npmjs.org/typeson-registry/-/typeson-registry-1.0.0-alpha.39.tgz#9e0f5aabd5eebfcffd65a796487541196f4b1211" + resolved "https://registry.yarnpkg.com/typeson-registry/-/typeson-registry-1.0.0-alpha.39.tgz#9e0f5aabd5eebfcffd65a796487541196f4b1211" integrity sha512-NeGDEquhw+yfwNhguLPcZ9Oj0fzbADiX4R0WxvoY8nGhy98IbzQy1sezjoEFWOywOboj/DWehI+/aUlRVrJnnw== dependencies: base64-arraybuffer-es6 "^0.7.0" @@ -10234,17 +9990,17 @@ typeson-registry@^1.0.0-alpha.20: typeson@^6.0.0, typeson@^6.1.0: version "6.1.0" - resolved "https://registry.npmjs.org/typeson/-/typeson-6.1.0.tgz#5b2a53705a5f58ff4d6f82f965917cabd0d7448b" + resolved "https://registry.yarnpkg.com/typeson/-/typeson-6.1.0.tgz#5b2a53705a5f58ff4d6f82f965917cabd0d7448b" integrity sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA== -ufo@^1.3.2: +ufo@^1.5.3: version "1.5.3" - resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -10254,7 +10010,7 @@ unbox-primitive@^1.0.2: unbzip2-stream@1.4.3: version "1.4.3" - resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: buffer "^5.2.1" @@ -10262,17 +10018,17 @@ unbzip2-stream@1.4.3: undici-types@~5.26.4: version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + 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.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + 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" @@ -10280,73 +10036,73 @@ unicode-match-property-ecmascript@^2.0.0: unicode-match-property-value-ecmascript@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + 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.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + 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== union@~0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== dependencies: qs "^6.4.0" unique-string@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: crypto-random-string "^2.0.0" unist-util-stringify-position@^3.0.0: version "3.0.3" - resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== dependencies: "@types/unist" "^2.0.0" universalify@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== upath@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + version "1.0.16" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.1.2" + picocolors "^1.0.1" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-join@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -10354,19 +10110,19 @@ url-parse@^1.5.3: use-callback-ref@^1.3.0: version "1.3.2" - resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== dependencies: tslib "^2.0.0" use-isomorphic-layout-effect@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-sidecar@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== dependencies: detect-node-es "^1.1.0" @@ -10374,22 +10130,22 @@ use-sidecar@^1.1.2: use-sync-external-store@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^9.0.0: version "9.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== uvu@^0.5.0: version "0.5.6" - resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== dependencies: dequal "^2.0.0" @@ -10399,22 +10155,22 @@ uvu@^0.5.0: v8-compile-cache@^2.0.3: version "2.4.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== v8-to-istanbul@^9.1.0: version "9.2.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -vite-node@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.5.3.tgz#498f4eb6f4e37ff95f66ffb9c905708a75f84b2e" - integrity sha512-axFo00qiCpU/JLd8N1gu9iEYL3xTbMbMrbe5nDp9GL0nb6gurIdZLkkFogZXWnE8Oyy5kfSLwNVIcVsnhE7lgQ== +vite-node@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.6.0.tgz#2c7e61129bfecc759478fa592754fd9704aaba7f" + integrity sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw== dependencies: cac "^6.7.14" debug "^4.3.4" @@ -10424,7 +10180,7 @@ vite-node@1.5.3: vite-plugin-checker@0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.1.tgz#51a0e654e033b5b9ad6301ae4d0ed0f5886d437c" + resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.6.1.tgz#51a0e654e033b5b9ad6301ae4d0ed0f5886d437c" integrity sha512-4fAiu3W/IwRJuJkkUZlWbLunSzsvijDf0eDN6g/MGh6BUK4SMclOTGbLJCPvdAcMOQvVmm8JyJeYLYd4//8CkA== dependencies: "@babel/code-frame" "^7.12.13" @@ -10447,14 +10203,14 @@ vite-plugin-checker@0.6.1: vite-plugin-ejs@1.7.0: version "1.7.0" - resolved "https://registry.npmjs.org/vite-plugin-ejs/-/vite-plugin-ejs-1.7.0.tgz#c0229729d5a26e9eb57b8abadc75f7070d470d23" + resolved "https://registry.yarnpkg.com/vite-plugin-ejs/-/vite-plugin-ejs-1.7.0.tgz#c0229729d5a26e9eb57b8abadc75f7070d470d23" integrity sha512-JNP3zQDC4mSbfoJ3G73s5mmZITD8NGjUmLkq4swxyahy/W0xuokK9U9IJGXw7KCggq6UucT6hJ0p+tQrNtqTZw== dependencies: ejs "^3.1.9" vite-plugin-html@3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/vite-plugin-html/-/vite-plugin-html-3.2.2.tgz#661834fa09015d3fda48ba694dbaa809396f5f7a" + resolved "https://registry.yarnpkg.com/vite-plugin-html/-/vite-plugin-html-3.2.2.tgz#661834fa09015d3fda48ba694dbaa809396f5f7a" integrity sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q== dependencies: "@rollup/pluginutils" "^4.2.0" @@ -10472,7 +10228,7 @@ vite-plugin-html@3.2.2: vite-plugin-pwa@0.17.4: version "0.17.4" - resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.17.4.tgz#be3b3714d4148681bc73e8e0b1e6ce1a71fa79f2" + resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.17.4.tgz#be3b3714d4148681bc73e8e0b1e6ce1a71fa79f2" integrity sha512-j9iiyinFOYyof4Zk3Q+DtmYyDVBDAi6PuMGNGq6uGI0pw7E+LNm9e+nQ2ep9obMP/kjdWwzilqUrlfVRj9OobA== dependencies: debug "^4.3.4" @@ -10483,7 +10239,7 @@ vite-plugin-pwa@0.17.4: vite-plugin-svgr@2.4.0: version "2.4.0" - resolved "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz#9b14953955e79893ea7718089b9777a494e38fc6" + resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz#9b14953955e79893ea7718089b9777a494e38fc6" integrity sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA== dependencies: "@rollup/pluginutils" "^5.0.2" @@ -10491,7 +10247,7 @@ vite-plugin-svgr@2.4.0: vite@5.0.12: version "5.0.12" - resolved "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== dependencies: esbuild "^0.19.3" @@ -10501,9 +10257,9 @@ vite@5.0.12: fsevents "~2.3.3" vite@^5.0.0: - version "5.2.10" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7" - integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== + version "5.2.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.11.tgz#726ec05555431735853417c3c0bfb36003ca0cbd" + integrity sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ== dependencies: esbuild "^0.20.1" postcss "^8.4.38" @@ -10513,21 +10269,21 @@ vite@^5.0.0: vitest-canvas-mock@0.3.2: version "0.3.2" - resolved "https://registry.npmjs.org/vitest-canvas-mock/-/vitest-canvas-mock-0.3.2.tgz#d52031c423519e0c7bf2687ca6d7ad2e926ea182" + resolved "https://registry.yarnpkg.com/vitest-canvas-mock/-/vitest-canvas-mock-0.3.2.tgz#d52031c423519e0c7bf2687ca6d7ad2e926ea182" integrity sha512-lds7MKxvFFPDCGLXsQI2ym1fxvC93DaS0Bb6sdjvylFyL6NYrAAcPb6xZGF2sMOt5fSLHddqAQaujqpbc3p0Zg== dependencies: jest-canvas-mock "~2.4.0" -vitest@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.5.3.tgz#48880013373af16fa4c60a07dd3409fe19397a16" - integrity sha512-2oM7nLXylw3mQlW6GXnRriw+7YvZFk/YNV8AxIC3Z3MfFbuziLGWP9GPxxu/7nRlXhqyxBikpamr+lEEj1sUEw== +vitest@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.6.0.tgz#9d5ad4752a3c451be919e412c597126cffb9892f" + integrity sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA== dependencies: - "@vitest/expect" "1.5.3" - "@vitest/runner" "1.5.3" - "@vitest/snapshot" "1.5.3" - "@vitest/spy" "1.5.3" - "@vitest/utils" "1.5.3" + "@vitest/expect" "1.6.0" + "@vitest/runner" "1.6.0" + "@vitest/snapshot" "1.6.0" + "@vitest/spy" "1.6.0" + "@vitest/utils" "1.6.0" acorn-walk "^8.3.2" chai "^4.3.10" debug "^4.3.4" @@ -10541,17 +10297,17 @@ vitest@1.5.3: tinybench "^2.5.1" tinypool "^0.8.3" vite "^5.0.0" - vite-node "1.5.3" + vite-node "1.6.0" why-is-node-running "^2.2.2" vscode-jsonrpc@6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e" integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg== vscode-languageclient@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz#b505c22c21ffcf96e167799757fca07a6bad0fb2" + resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz#b505c22c21ffcf96e167799757fca07a6bad0fb2" integrity sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg== dependencies: minimatch "^3.0.4" @@ -10560,7 +10316,7 @@ vscode-languageclient@^7.0.0: vscode-languageserver-protocol@3.16.0: version "3.16.0" - resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821" integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A== dependencies: vscode-jsonrpc "6.0.0" @@ -10568,36 +10324,36 @@ vscode-languageserver-protocol@3.16.0: vscode-languageserver-textdocument@^1.0.1: version "1.0.11" - resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#0822a000e7d4dc083312580d7575fe9e3ba2e2bf" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#0822a000e7d4dc083312580d7575fe9e3ba2e2bf" integrity sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA== vscode-languageserver-types@3.16.0: version "3.16.0" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== vscode-languageserver@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz#49b068c87cfcca93a356969d20f5d9bdd501c6b0" + resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz#49b068c87cfcca93a356969d20f5d9bdd501c6b0" integrity sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw== dependencies: vscode-languageserver-protocol "3.16.0" vscode-uri@^3.0.2: version "3.0.8" - resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f" integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== w3c-xmlserializer@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== dependencies: xml-name-validator "^4.0.0" watchpack@^2.4.0, watchpack@^2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== dependencies: glob-to-regexp "^0.4.1" @@ -10617,32 +10373,32 @@ web-streams-polyfill@^3.0.3: web-worker@^1.2.0: version "1.3.0" - resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webidl-conversions@^6.1.0: version "6.1.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-bundle-analyzer@4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== dependencies: acorn "^8.0.4" @@ -10657,7 +10413,7 @@ webpack-bundle-analyzer@4.5.0: webpack-cli@4.10.0: version "4.10.0" - resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== dependencies: "@discoveryjs/json-ext" "^0.5.0" @@ -10675,7 +10431,7 @@ webpack-cli@4.10.0: webpack-merge@^5.7.3: version "5.10.0" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== dependencies: clone-deep "^4.0.1" @@ -10684,12 +10440,12 @@ webpack-merge@^5.7.3: webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@5.76.0: version "5.76.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== dependencies: "@types/eslint-scope" "^3.7.3" @@ -10719,7 +10475,7 @@ webpack@5.76.0: webpack@^5.88.2: version "5.91.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== dependencies: "@types/eslint-scope" "^3.7.3" @@ -10749,7 +10505,7 @@ webpack@^5.88.2: websocket-driver@>=0.5.1: version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -10758,34 +10514,34 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== webworkify@^1.5.0: version "1.5.0" - resolved "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" + resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" whatwg-fetch@2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== whatwg-url@^12.0.0, whatwg-url@^12.0.1: version "12.0.1" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c" integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== dependencies: tr46 "^4.1.1" @@ -10793,7 +10549,7 @@ whatwg-url@^12.0.0, whatwg-url@^12.0.1: whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -10801,7 +10557,7 @@ whatwg-url@^5.0.0: whatwg-url@^7.0.0: version "7.1.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" @@ -10810,7 +10566,7 @@ whatwg-url@^7.0.0: whatwg-url@^8.4.0: version "8.7.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: lodash "^4.7.0" @@ -10819,7 +10575,7 @@ whatwg-url@^8.4.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -10830,7 +10586,7 @@ which-boxed-primitive@^1.0.2: which-builtin-type@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== dependencies: function.prototype.name "^1.1.5" @@ -10848,7 +10604,7 @@ which-builtin-type@^1.1.3: which-collection@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== dependencies: is-map "^2.0.3" @@ -10858,7 +10614,7 @@ which-collection@^1.0.1: which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: available-typed-arrays "^1.0.7" @@ -10876,14 +10632,14 @@ which@4.0.0: which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" why-is-node-running@^2.2.2: version "2.2.2" - resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== dependencies: siginfo "^2.0.0" @@ -10891,36 +10647,42 @@ why-is-node-running@^2.2.2: wildcard@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -workbox-background-sync@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz#2b84b96ca35fec976e3bd2794b70e4acec46b3a5" - integrity sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA== +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +workbox-background-sync@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-7.1.0.tgz#dac65e30af603511f1c92c3e99f53d6c064fde90" + integrity sha512-rMbgrzueVWDFcEq1610YyDW71z0oAXLfdRHRQcKw4SGihkfOK0JUEvqWHFwA6rJ+6TClnMIn7KQI5PNN1XQXwQ== dependencies: idb "^7.0.1" - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-broadcast-update@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz#7f611ca1a94ba8ac0aa40fa171c9713e0f937d22" - integrity sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ== +workbox-broadcast-update@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-7.1.0.tgz#fe21c491cc70f1e037898bba63de0752ef59bd82" + integrity sha512-O36hIfhjej/c5ar95pO67k1GQw0/bw5tKP7CERNgK+JdxBANQhDmIuOXZTNvwb2IHBx9hj2kxvcDyRIh5nzOgQ== dependencies: - workbox-core "7.0.0" + workbox-core "7.1.0" workbox-build@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz#02ab5ef2991b3369b8b9395703f08912212769b4" - integrity sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg== + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-7.1.0.tgz#64d1532f1b9ad04d2b8b43ce0b9af06ba3fdd159" + integrity sha512-F6R94XAxjB2j4ETMkP1EXKfjECOtDmyvt0vz3BzgWJMI68TNSXIVNkgatwUKBlPGOfy9n2F/4voYRNAhEvPJNg== dependencies: "@apideck/better-ajv-errors" "^0.3.1" - "@babel/core" "^7.11.1" + "@babel/core" "^7.24.4" "@babel/preset-env" "^7.11.0" "@babel/runtime" "^7.11.2" "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-node-resolve" "^15.2.3" "@rollup/plugin-replace" "^2.4.1" + "@rollup/plugin-terser" "^0.4.3" "@surma/rollup-plugin-off-main-thread" "^2.2.3" ajv "^8.6.0" common-tags "^1.8.0" @@ -10930,131 +10692,130 @@ workbox-build@^7.0.0: lodash "^4.17.20" pretty-bytes "^5.3.0" rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" source-map "^0.8.0-beta.0" stringify-object "^3.3.0" strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "7.0.0" - workbox-broadcast-update "7.0.0" - workbox-cacheable-response "7.0.0" - workbox-core "7.0.0" - workbox-expiration "7.0.0" - workbox-google-analytics "7.0.0" - workbox-navigation-preload "7.0.0" - workbox-precaching "7.0.0" - workbox-range-requests "7.0.0" - workbox-recipes "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" - workbox-streams "7.0.0" - workbox-sw "7.0.0" - workbox-window "7.0.0" + workbox-background-sync "7.1.0" + workbox-broadcast-update "7.1.0" + workbox-cacheable-response "7.1.0" + workbox-core "7.1.0" + workbox-expiration "7.1.0" + workbox-google-analytics "7.1.0" + workbox-navigation-preload "7.1.0" + workbox-precaching "7.1.0" + workbox-range-requests "7.1.0" + workbox-recipes "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" + workbox-streams "7.1.0" + workbox-sw "7.1.0" + workbox-window "7.1.0" -workbox-cacheable-response@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz#ee27c036728189eed69d25a135013053277482d2" - integrity sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g== +workbox-cacheable-response@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-7.1.0.tgz#d138cc8ef2c32a9f28f29c5b2b0a8681da846c33" + integrity sha512-iwsLBll8Hvua3xCuBB9h92+/e0wdsmSVgR2ZlvcfjepZWwhd3osumQB3x9o7flj+FehtWM2VHbZn8UJeBXXo6Q== dependencies: - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-core@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz#dec114ec923cc2adc967dd9be1b8a0bed50a3545" - integrity sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ== +workbox-core@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-7.1.0.tgz#1867576f994f20d9991b71a7d0b2581af22db170" + integrity sha512-5KB4KOY8rtL31nEF7BfvU7FMzKT4B5TkbYa2tzkS+Peqj0gayMT9SytSFtNzlrvMaWgv6y/yvP9C0IbpFjV30Q== -workbox-expiration@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz#3d90bcf2a7577241de950f89784f6546b66c2baa" - integrity sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ== +workbox-expiration@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-7.1.0.tgz#c9d348ffc8c3d1ffdddaf6c37bf5be830a69073e" + integrity sha512-m5DcMY+A63rJlPTbbBNtpJ20i3enkyOtSgYfv/l8h+D6YbbNiA0zKEkCUaMsdDlxggla1oOfRkyqTvl5Ni5KQQ== dependencies: idb "^7.0.1" - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-google-analytics@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz#603b2c4244af1e85de0fb26287d4e17d3293452a" - integrity sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg== +workbox-google-analytics@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-7.1.0.tgz#25cca57a05554b6121521590543e59628eb15a65" + integrity sha512-FvE53kBQHfVTcZyczeBVRexhh7JTkyQ8HAvbVY6mXd2n2A7Oyz/9fIwnY406ZcDhvE4NFfKGjW56N4gBiqkrew== dependencies: - workbox-background-sync "7.0.0" - workbox-core "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" + workbox-background-sync "7.1.0" + workbox-core "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" -workbox-navigation-preload@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz#4913878dbbd97057181d57baa18d2bbdde085c6c" - integrity sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA== +workbox-navigation-preload@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-7.1.0.tgz#2610674d412a1774b5d9f03c9644c9964407b8b6" + integrity sha512-4wyAbo0vNI/X0uWNJhCMKxnPanNyhybsReMGN9QUpaePLTiDpKxPqFxl4oUmBNddPwIXug01eTSLVIFXimRG/A== dependencies: - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-precaching@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz#3979ba8033aadf3144b70e9fe631d870d5fbaa03" - integrity sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA== +workbox-precaching@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-7.1.0.tgz#71e27ec2e85661a41b48dec0c92dae707c429eaa" + integrity sha512-LyxzQts+UEpgtmfnolo0hHdNjoB7EoRWcF7EDslt+lQGd0lW4iTvvSe3v5JiIckQSB5KTW5xiCqjFviRKPj1zA== dependencies: - workbox-core "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" + workbox-core "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" -workbox-range-requests@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz#97511901e043df27c1aa422adcc999a7751f52ed" - integrity sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ== +workbox-range-requests@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-7.1.0.tgz#8d4344cd85b87d8077289a64dda59fb614628783" + integrity sha512-m7+O4EHolNs5yb/79CrnwPR/g/PRzMFYEdo01LqwixVnc/sbzNSvKz0d04OE3aMRel1CwAAZQheRsqGDwATgPQ== dependencies: - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-recipes@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz#1a6a01c8c2dfe5a41eef0fed3fe517e8a45c6514" - integrity sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww== +workbox-recipes@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-7.1.0.tgz#37625cd2fe7e5decd70c8934a673a7cc080a7675" + integrity sha512-NRrk4ycFN9BHXJB6WrKiRX3W3w75YNrNrzSX9cEZgFB5ubeGoO8s/SDmOYVrFYp9HMw6sh1Pm3eAY/1gVS8YLg== dependencies: - workbox-cacheable-response "7.0.0" - workbox-core "7.0.0" - workbox-expiration "7.0.0" - workbox-precaching "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" + workbox-cacheable-response "7.1.0" + workbox-core "7.1.0" + workbox-expiration "7.1.0" + workbox-precaching "7.1.0" + workbox-routing "7.1.0" + workbox-strategies "7.1.0" -workbox-routing@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz#6668438a06554f60645aedc77244a4fe3a91e302" - integrity sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA== +workbox-routing@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-7.1.0.tgz#c44bda350d1c5eb633ee97a660e64ce5473250c4" + integrity sha512-oOYk+kLriUY2QyHkIilxUlVcFqwduLJB7oRZIENbqPGeBP/3TWHYNNdmGNhz1dvKuw7aqvJ7CQxn27/jprlTdg== dependencies: - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-strategies@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz#dcba32b3f3074476019049cc490fe1a60ea73382" - integrity sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA== +workbox-strategies@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-7.1.0.tgz#a589f2adc0df8f33049c7f4d4cdf4c9556715918" + integrity sha512-/UracPiGhUNehGjRm/tLUQ+9PtWmCbRufWtV0tNrALuf+HZ4F7cmObSEK+E4/Bx1p8Syx2tM+pkIrvtyetdlew== dependencies: - workbox-core "7.0.0" + workbox-core "7.1.0" -workbox-streams@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz#36722aecd04785f88b6f709e541c094fc658c0f9" - integrity sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ== +workbox-streams@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-7.1.0.tgz#8e080e56b5dee7aa0f956fdd3a10506821d2e786" + integrity sha512-WyHAVxRXBMfysM8ORwiZnI98wvGWTVAq/lOyBjf00pXFvG0mNaVz4Ji+u+fKa/mf1i2SnTfikoYKto4ihHeS6w== dependencies: - workbox-core "7.0.0" - workbox-routing "7.0.0" + workbox-core "7.1.0" + workbox-routing "7.1.0" -workbox-sw@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz#7350126411e3de1409f7ec243df8d06bb5b08b86" - integrity sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA== +workbox-sw@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-7.1.0.tgz#3df97d7cccb647eb94d66be7dc733c9fda26b9fc" + integrity sha512-Hml/9+/njUXBglv3dtZ9WBKHI235AQJyLBV1G7EFmh4/mUdSQuXui80RtjDeVRrXnm/6QWgRUEHG3/YBVbxtsA== -workbox-window@7.0.0, workbox-window@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz#a683ab33c896e4f16786794eac7978fc98a25d08" - integrity sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA== +workbox-window@7.1.0, workbox-window@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-7.1.0.tgz#58a90ba89ca35d26f2b322223ee575c750bac7a1" + integrity sha512-ZHeROyqR+AS5UPzholQRDttLFqGMwP0Np8MKWAdyxsDETxq3qOAyXvqessc3GniohG6e0mAqSQyKOHmT8zPF7g== dependencies: "@types/trusted-types" "^2.0.2" - workbox-core "7.0.0" + workbox-core "7.1.0" wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -11063,7 +10824,7 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -11072,77 +10833,77 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@8.5.0: version "8.5.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== ws@^7.3.1: version "7.5.9" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0: - version "8.16.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== ws@~8.11.0: version "8.11.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xmlhttprequest-ssl@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== xmlhttprequest@1.8.0: version "1.8.0" - resolved "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + 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.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + 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.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.7.2: version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -11155,7 +10916,7 @@ yargs@^17.7.2: yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" @@ -11163,12 +10924,12 @@ yauzl@^2.10.0: yocto-queue@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== zustand@^4.3.2: version "4.5.2" - resolved "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== dependencies: use-sync-external-store "1.2.0" From c67815f7b032e7ea109a5debbae0ce7892c5e92b Mon Sep 17 00:00:00 2001 From: zsviczian Date: Sat, 3 Aug 2024 18:37:36 +0200 Subject: [PATCH 14/86] fix: Duplicating arrow without bound elements throws error (#8316) Co-authored-by: David Luzar <5153846+dwelle@users.noreply.github.com> --- packages/excalidraw/element/binding.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/excalidraw/element/binding.ts b/packages/excalidraw/element/binding.ts index 3d6a0c57f..177278b35 100644 --- a/packages/excalidraw/element/binding.ts +++ b/packages/excalidraw/element/binding.ts @@ -1246,11 +1246,11 @@ export const fixBindingsAfterDuplication = ( .filter(({ id }) => allBindableElementIds.has(id)) .forEach((bindableElement) => { const oldElementId = duplicateIdToOldId.get(bindableElement.id); - const { boundElements } = sceneElements.find( + const boundElements = sceneElements.find( ({ id }) => id === oldElementId, - )!; + )?.boundElements; - if (boundElements != null && boundElements.length > 0) { + if (boundElements && boundElements.length > 0) { mutateElement(bindableElement, { boundElements: boundElements.map((boundElement) => oldIdToDuplicatedId.has(boundElement.id) From 2907fbe34b3aaba571a40b2a3bd85814b3b090ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:49:57 +0200 Subject: [PATCH 15/86] build(deps): bump @excalidraw/excalidraw from 0.17.0 to 0.17.6 in /dev-docs (#7908) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-docs/package.json | 2 +- dev-docs/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dev-docs/package.json b/dev-docs/package.json index a091c5fc3..b3e8d7bb3 100644 --- a/dev-docs/package.json +++ b/dev-docs/package.json @@ -18,7 +18,7 @@ "@docusaurus/core": "2.2.0", "@docusaurus/preset-classic": "2.2.0", "@docusaurus/theme-live-codeblock": "2.2.0", - "@excalidraw/excalidraw": "0.17.0", + "@excalidraw/excalidraw": "0.17.6", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", "docusaurus-plugin-sass": "0.2.3", diff --git a/dev-docs/yarn.lock b/dev-docs/yarn.lock index f3fdde469..05367267c 100644 --- a/dev-docs/yarn.lock +++ b/dev-docs/yarn.lock @@ -1718,10 +1718,10 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@excalidraw/excalidraw@0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.17.0.tgz#3c64aa8e36406ac171b008cfecbdce5bb0755725" - integrity sha512-NzP22v5xMqxYW27ZtTHhiGFe7kE8NeBk45aoeM/mDSkXiOXPDH+PcvwzHRN/Ei+Vj/0sTPHxejn8bZyRWKGjXg== +"@excalidraw/excalidraw@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.17.6.tgz#5fd208ce69d33ca712d1804b50d7d06d5c46ac4d" + integrity sha512-fyCl+zG/Z5yhHDh5Fq2ZGmphcrALmuOdtITm8gN4d8w4ntnaopTXcTfnAAaU3VleDC6LhTkoLOTG6P5kgREiIg== "@hapi/hoek@^9.0.0": version "9.3.0" From b427617f66827cf1f0cc22842452b8e0b0ff2d80 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Mon, 5 Aug 2024 23:37:33 +0200 Subject: [PATCH 16/86] build: add `rm:build`, `rm:node_modules` & `clean-install` scripts (#8323) --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a8b0b03fa..f4a23235a 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,10 @@ "autorelease": "node scripts/autorelease.js", "prerelease:excalidraw": "node scripts/prerelease.js", "build:preview": "yarn build && vite preview --port 5000", - "release:excalidraw": "node scripts/release.js" + "release:excalidraw": "node scripts/release.js", + "rm:build": "rm -rf excalidraw-app/{build,dist,dev-dist} && rm -rf packages/*/{dist,build} && rm -rf examples/*/*/{build,dist}", + "rm:node_modules": "rm -rf node_modules && rm -rf excalidraw-app/node_modules && rm -rf packages/*/node_modules", + "clean-install": "yarn rm:node_modules && yarn install" }, "resolutions": { "@types/react": "18.2.0" From a6684b09f2967a21077d6993e19408105d874645 Mon Sep 17 00:00:00 2001 From: b1sar Date: Tue, 6 Aug 2024 00:41:19 +0300 Subject: [PATCH 17/86] docs: fix typos in props.mdx (#8325) --- dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx index 766c723e4..a3af78938 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx @@ -9,9 +9,9 @@ All `props` are _optional_. | [`isCollaborating`](#iscollaborating) | `boolean` | _ | This indicates if the app is in `collaboration` mode | | [`onChange`](#onchange) | `function` | _ | This callback is triggered whenever the component updates due to any change. This callback will receive the excalidraw `elements` and the current `app state`. | | [`onPointerUpdate`](#onpointerupdate) | `function` | _ | Callback triggered when mouse pointer is updated. | -| [`onPointerDown`](#onpointerdown) | `function` | _ | This prop if passed gets triggered on pointer down evenets | +| [`onPointerDown`](#onpointerdown) | `function` | _ | This prop if passed gets triggered on pointer down events | | [`onScrollChange`](#onscrollchange) | `function` | _ | This prop if passed gets triggered when scrolling the canvas. | -| [`onPaste`](#onpaste) | `function` | _ | Callback to be triggered if passed when the something is pasted in to the scene | +| [`onPaste`](#onpaste) | `function` | _ | Callback to be triggered if passed when something is pasted into the scene | | [`onLibraryChange`](#onlibrarychange) | `function` | _ | The callback if supplied is triggered when the library is updated and receives the library items. | | [`onLinkOpen`](#onlinkopen) | `function` | _ | The callback if supplied is triggered when any link is opened. | | [`langCode`](#langcode) | `string` | `en` | Language code string to be used in Excalidraw | @@ -26,7 +26,7 @@ All `props` are _optional_. | [`UIOptions`](/docs/@excalidraw/excalidraw/api/props/ui-options) | `object` | [DEFAULT UI OPTIONS](https://github.com/excalidraw/excalidraw/blob/master/packages/excalidraw/constants.ts#L151) | To customise UI options. Currently we support customising [`canvas actions`](/docs/@excalidraw/excalidraw/api/props/ui-options#canvasactions) | | [`detectScroll`](#detectscroll) | `boolean` | `true` | Indicates whether to update the offsets when nearest ancestor is scrolled. | | [`handleKeyboardGlobally`](#handlekeyboardglobally) | `boolean` | `false` | Indicates whether to bind the keyboard events to document. | -| [`autoFocus`](#autofocus) | `boolean` | `false` | indicates whether to focus the Excalidraw component on page load | +| [`autoFocus`](#autofocus) | `boolean` | `false` | Indicates whether to focus the Excalidraw component on page load | | [`generateIdForFile`](#generateidforfile) | `function` | _ | Allows you to override `id` generation for files added on canvas | | [`validateEmbeddable`](#validateEmbeddable) | string[] | `boolean | RegExp | RegExp[] | ((link: string) => boolean | undefined)` | \_ | use for custom src url validation | | [`renderEmbeddable`](/docs/@excalidraw/excalidraw/api/props/render-props#renderEmbeddable) | `function` | \_ | Render function that can override the built-in `