From 50399e9b9f9ccdd255277d4ce1d8f207518ebb18 Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Thu, 13 Apr 2023 17:03:30 -0700 Subject: [PATCH] Some long-needed renaming and consolidation (#90)Co-authored-by: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> This commit holistic renames, consolidates, and cleans up internal concepts. * Rename "internal" concepts to Tag and Tagged * Simplify and improve the notion of subscriptions - @starbeam/runtime - @starbeam/tags - @starbeam/reactive - @starbeam/resource - @starbeam/service Previously, the implementation of tags lived in `TIMELINE`, which has a whole bunch of other unrelated stuff. So the abstraction went directly from the interfaces defined in `@starbeam/interfaces` to the full-fledged timeline definition in `@starbeam/timeline`. This created an awkward situation where tags ought to have been real objects (so they can share utility code), but we had utility function instead that worked with the interfaces to avoid dragging all of TIMELINE into the definition of tags. This commit separates tags into their own package which clearly defines the semantics of tags and provides concrete implementations for them. This simplifies the code considerably, and also more clearly communicates what tags are for. The third attempt to reimplement resource on top of the new primitives worked beautifully. It supports `ResourceList`, but where the previous implementation worked by implicitly adopting resources across runs, the new implementation of `ResourceList` manages the lifetimes of its child resources explicitly. The code is nearly as compact, in part because the new resource implementation is more honest about separating entire-resource state from per-run state. The new resource primitive adds support for resource metadata (state that lives for the entire lifetime of the resource and can be used for cross-run state). --- Co-authored-by: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> --- .eslintrc.repo.json | 2 +- .vscode/settings.json | 2 + @types/ansicolor/package.json | 2 +- demos/react-jsnation/package.json | 2 +- .../src/components/DateFormatter.tsx | 2 +- demos/react-lite-query/src/App.tsx | 3 + .../src/components/DateFormatter.tsx | 2 +- .../components/formatter/DateFormatter-v2.tsx | 2 +- .../components/formatter/DateFormatter-v3.tsx | 2 +- .../formatter/DateFormatterFinal.tsx | 2 +- package.json | 46 +- packages/preact/preact-utils/src/plugin.ts | 2 + packages/preact/preact/src/options.ts | 2 + packages/preact/preact/tests/create.spec.ts | 77 + .../preact/preact/tests/support/testing.ts | 1 + packages/react/react/src/modifiers/element.ts | 63 +- packages/react/react/src/starbeam/handlers.ts | 43 + packages/react/react/src/starbeam/instance.ts | 133 + .../react/react/src/use-component-instance.ts | 24 + packages/react/react/src/use-reactive.ts | 164 ++ packages/react/react/src/use-resource.ts | 84 + packages/react/react/src/use-service.ts | 17 + packages/react/react/src/use-setup.ts | 105 + packages/react/react/src/use-starbeam.ts | 41 + packages/react/react/tests/data-demo.spec.ts | 7 + packages/react/react/tests/package.json | 4 +- .../use-strict-lifecycle/src/updating-ref.ts | 55 + packages/universal/collections/.eslintrc.json | 4 +- packages/universal/collections/package.json | 3 + .../universal/collections/src/collection.ts | 6 + .../universal/collections/src/iterable.ts | 114 +- packages/universal/collections/src/map.ts | 67 +- packages/universal/collections/src/mapper.ts | 1 + .../collections/tests/.eslintrc.json | 12 +- .../universal/collections/tests/package.json | 3 +- .../collections/tests/weak-map.spec.ts | 2 +- .../universal/debug/src/call-stack/prod.ts | 3 + packages/universal/interfaces/index.ts | 2 +- packages/universal/interfaces/src/protocol.ts | 170 ++ packages/universal/interfaces/src/runtime.ts | 6 +- packages/universal/interfaces/src/tag.ts | 4 +- .../universal/interfaces/src/timestamp.ts | 15 +- packages/universal/reactive/package.json | 2 + .../reactive/src/primitives/delegate.ts | 44 + .../reactive/src/primitives/static.ts | 19 + .../universal/runtime/src/timeline/tracker.ts | 81 + .../universal/runtime/src/tracking-stack.ts | 35 + .../runtime/tests/description.spec.ts | 20 + packages/universal/tags/src/timestamp.ts | 84 +- pnpm-lock.yaml | 2437 ++++++++++------- vitest.config.ts | 7 +- 51 files changed, 2852 insertions(+), 1178 deletions(-) create mode 100644 packages/preact/preact/tests/create.spec.ts create mode 100644 packages/react/react/src/starbeam/handlers.ts create mode 100644 packages/react/react/src/starbeam/instance.ts create mode 100644 packages/react/react/src/use-component-instance.ts create mode 100644 packages/react/react/src/use-reactive.ts create mode 100644 packages/react/react/src/use-resource.ts create mode 100644 packages/react/react/src/use-service.ts create mode 100644 packages/react/react/src/use-setup.ts create mode 100644 packages/react/react/src/use-starbeam.ts create mode 100644 packages/react/react/tests/data-demo.spec.ts create mode 100644 packages/react/use-strict-lifecycle/src/updating-ref.ts create mode 100644 packages/universal/collections/src/mapper.ts create mode 100644 packages/universal/debug/src/call-stack/prod.ts create mode 100644 packages/universal/interfaces/src/protocol.ts create mode 100644 packages/universal/reactive/src/primitives/delegate.ts create mode 100644 packages/universal/reactive/src/primitives/static.ts create mode 100644 packages/universal/runtime/src/timeline/tracker.ts create mode 100644 packages/universal/runtime/src/tracking-stack.ts create mode 100644 packages/universal/runtime/tests/description.spec.ts diff --git a/.eslintrc.repo.json b/.eslintrc.repo.json index c130f16e..0b8d8b8d 100644 --- a/.eslintrc.repo.json +++ b/.eslintrc.repo.json @@ -4,7 +4,7 @@ "extends": ["plugin:@starbeam/tight"], "files": ["vitest.config.ts", "rollup.config.mjs"], "parserOptions": { - "project": ["tsconfig.json"] + "project": ["tsconfig.root.json"] } } ], diff --git a/.vscode/settings.json b/.vscode/settings.json index 901dda88..fb2e07d6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -58,6 +58,8 @@ "vite.config.ts": "rollup.config.*, .env.*" }, + "prettier.prettierPath": "./node_modules/prettier", + // rewrap provides a quick keyboard shortcut (alt-q) to reformat comments to // a specific column width. It also automatically rewraps comments when you // type. diff --git a/@types/ansicolor/package.json b/@types/ansicolor/package.json index cc086845..672e943c 100644 --- a/@types/ansicolor/package.json +++ b/@types/ansicolor/package.json @@ -26,6 +26,6 @@ "test:types": "tsc -b" }, "devDependencies": { - "@types/node": "18.16.1" + "@types/node": "18.16.18" } } diff --git a/demos/react-jsnation/package.json b/demos/react-jsnation/package.json index a33dbf10..f2e5c32a 100644 --- a/demos/react-jsnation/package.json +++ b/demos/react-jsnation/package.json @@ -52,6 +52,6 @@ "@types/react": "^18.2.0", "@types/react-dom": "^18.2.1", "@vitest/ui": "*", - "vite": "4.3.3" + "vite": "4.3.9" } } diff --git a/demos/react-jsnation/src/components/DateFormatter.tsx b/demos/react-jsnation/src/components/DateFormatter.tsx index e5abfef1..24830afe 100644 --- a/demos/react-jsnation/src/components/DateFormatter.tsx +++ b/demos/react-jsnation/src/components/DateFormatter.tsx @@ -47,7 +47,7 @@ export default function (props: { locale: string }): JSX.Element { -

{date.current.formatted}

+

{date.current?.formatted}

); }); diff --git a/demos/react-lite-query/src/App.tsx b/demos/react-lite-query/src/App.tsx index f6277f7b..1c4099ce 100644 --- a/demos/react-lite-query/src/App.tsx +++ b/demos/react-lite-query/src/App.tsx @@ -4,6 +4,9 @@ import { Axios } from "axios"; import useQuery from "./lib/use-query.js"; +type FIXME = never; +type DevtoolsOptions = FIXME; + export default function App(): JSX.Element { return ; } diff --git a/demos/react-store/src/components/DateFormatter.tsx b/demos/react-store/src/components/DateFormatter.tsx index ca04c795..bdef315e 100644 --- a/demos/react-store/src/components/DateFormatter.tsx +++ b/demos/react-store/src/components/DateFormatter.tsx @@ -51,7 +51,7 @@ export default function (props: { locale: string }): JSX.Element { -

{date.current.formatted}

+

{date.current?.formatted}

); }; diff --git a/demos/react/src/components/formatter/DateFormatter-v2.tsx b/demos/react/src/components/formatter/DateFormatter-v2.tsx index 9ac8a703..81f67770 100644 --- a/demos/react/src/components/formatter/DateFormatter-v2.tsx +++ b/demos/react/src/components/formatter/DateFormatter-v2.tsx @@ -20,7 +20,7 @@ export default function DateFormatterStarbeam(): JSX.Element { -

{date.current.formatted}

+

{date.current?.formatted}

); }); diff --git a/demos/react/src/components/formatter/DateFormatter-v3.tsx b/demos/react/src/components/formatter/DateFormatter-v3.tsx index 99c6b95a..ca62faea 100644 --- a/demos/react/src/components/formatter/DateFormatter-v3.tsx +++ b/demos/react/src/components/formatter/DateFormatter-v3.tsx @@ -53,7 +53,7 @@ export default function DateFormatterStarbeam(): JSX.Element { {selectBox} -

{date.current.formatted}

+

{date.current?.formatted}

); }); diff --git a/demos/react/src/components/formatter/DateFormatterFinal.tsx b/demos/react/src/components/formatter/DateFormatterFinal.tsx index 52d145b5..6d8d30fb 100644 --- a/demos/react/src/components/formatter/DateFormatterFinal.tsx +++ b/demos/react/src/components/formatter/DateFormatterFinal.tsx @@ -50,7 +50,7 @@ export default function DateFormatterStarbeam(props: { -

{date.formatted}

+

{date?.formatted}

); } diff --git a/package.json b/package.json index 273ea9aa..f838e789 100644 --- a/package.json +++ b/package.json @@ -103,44 +103,44 @@ "@starbeam/core-utils": "workspace:^" }, "devDependencies": { - "@babel/eslint-parser": "^7.21.3", - "@babel/plugin-proposal-decorators": "^7.21.0", + "@babel/eslint-parser": "^7.22.5", + "@babel/plugin-proposal-decorators": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.21.4", - "@babel/preset-env": "^7.21.4", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.4", - "@babel/runtime": "^7.21.0", + "@babel/plugin-transform-runtime": "^7.22.5", + "@babel/preset-env": "^7.22.5", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.5", "@changesets/changelog-git": "^0.1.14", "@changesets/cli": "^2.26.1", "@changesets/config": "^2.3.0", "@starbeam/eslint-plugin": "workspace:^", "@starbeam-dev/build-support": "workspace:*", - "@types/eslint": "^8.37.0", - "@types/node": "18.15.11", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "@vitest/ui": "^0.30.1", - "eslint": "^8.38.0", + "@types/eslint": "^8.40.2", + "@types/node": "18.16.18", + "@typescript-eslint/eslint-plugin": "^5.59.11", + "@typescript-eslint/parser": "^5.59.11", + "@vitest/ui": "^0.32.0", + "eslint": "^8.42.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.8.0", "eslint-import-resolver-typescript": "^3.5.5", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsonc": "^2.7.0", + "eslint-plugin-jsonc": "^2.9.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unused-imports": "^2.0.0", "esno": "^0.16.3", "fast-glob": "^3.2.12", - "happy-dom": "^9.8.1", - "jsdom": "^21.1.1", - "prettier": "^2.8.7", - "rollup": "^3.20.6", - "tslib": "^2.5.0", - "turbo": "^1.9.3", - "typescript": "^5.0.4", - "vite": "4.2.2", - "vitest": "0.30.1" + "happy-dom": "^9.20.3", + "jsdom": "^21.1.2", + "prettier": "^2.8.8", + "rollup": "^3.25.1", + "tslib": "^2.5.3", + "turbo": "^1.10.3", + "typescript": "^5.1.3", + "vite": "4.3.9", + "vitest": "0.32.0" }, "license": "MIT", "nodemonConfig": { diff --git a/packages/preact/preact-utils/src/plugin.ts b/packages/preact/preact-utils/src/plugin.ts index 9b070bd3..f994a2dd 100644 --- a/packages/preact/preact-utils/src/plugin.ts +++ b/packages/preact/preact-utils/src/plugin.ts @@ -164,6 +164,8 @@ function createHook< const [originalFn, mangled] = getOriginal(originalOptions, hookName); originalOptions[mangled] = ((...args: HookParams) => { + console.log(hookName, mangled); + const handler = AugmentHandler.create( hookName, originalFn && (() => originalFn(...args)) diff --git a/packages/preact/preact/src/options.ts b/packages/preact/preact/src/options.ts index f8414664..09bec624 100644 --- a/packages/preact/preact/src/options.ts +++ b/packages/preact/preact/src/options.ts @@ -36,6 +36,8 @@ export const install = Plugin((on) => { component.context[STARBEAM] = component; } + console.log("willRender", componentName(component.fn)); + CONTEXT.app = getRoot(component); ComponentFrame.start( diff --git a/packages/preact/preact/tests/create.spec.ts b/packages/preact/preact/tests/create.spec.ts new file mode 100644 index 00000000..35ba7199 --- /dev/null +++ b/packages/preact/preact/tests/create.spec.ts @@ -0,0 +1,77 @@ +// @vitest-environment jsdom + +import { install, setup } from "@starbeam/preact"; +import { Cell } from "@starbeam/universal"; +import { html, rendering } from "@starbeam-workspace/preact-testing-utils"; +import { describe } from "@starbeam-workspace/test-utils"; +import { options } from "preact"; +import { beforeAll } from "vitest"; + +let nextId = 0; + +describe("create", () => { + beforeAll(() => { + install(options); + }); + + rendering.test( + "baseline", + function App({ name }: { name: string }) { + return html`
hello ${name}
`; + }, + (render) => + render + .expect(({ name }) => html`
hello ${name}
`) + .render({ name: "world" }) + ); + + rendering.test( + "reactive values render", + function App() { + const { cell } = setup(ReactiveObject); + + return html`

${cell.current}

`; + }, + (render) => + render + .expect(({ count }: { count: number }) => html`

${count}

`) + .render({ count: 0 }) + ); + + rendering.test( + "reactive values update", + function App() { + const { cell, increment } = setup(ReactiveObject); + + return html`

${cell}

+ `; + }, + (render) => + render + .expect( + ({ count }: { count: number }) => + html`

${count}

+ ` + ) + .render({ count: 0 }) + .update( + { count: 1 }, + { before: async (prev) => prev.find("button").fire.click() } + ) + ); +}); + +const INITIAL_COUNT = 0; +const INCREMENT = 1; + +function ReactiveObject(): { cell: Cell; increment: () => void } { + const cell = Cell(INITIAL_COUNT, { + description: `ReactiveObject #${++nextId}`, + }); + + function increment(): void { + cell.set(cell.current + INCREMENT); + } + + return { cell, increment }; +} diff --git a/packages/preact/preact/tests/support/testing.ts b/packages/preact/preact/tests/support/testing.ts index a39cbc26..4f5131d3 100644 --- a/packages/preact/preact/tests/support/testing.ts +++ b/packages/preact/preact/tests/support/testing.ts @@ -5,6 +5,7 @@ import { type ComponentChildren, createElement, Fragment, + type FunctionComponent, h, type VNode, } from "preact"; diff --git a/packages/react/react/src/modifiers/element.ts b/packages/react/react/src/modifiers/element.ts index a1849f82..70d6d6a6 100644 --- a/packages/react/react/src/modifiers/element.ts +++ b/packages/react/react/src/modifiers/element.ts @@ -1,5 +1,5 @@ import type { browser } from "@domtree/flavors"; -import type { Description, Reactive, Tagged } from "@starbeam/interfaces"; +import type { Description, HasTag, Reactive, Tagged } from "@starbeam/interfaces"; import { DEBUG, Formula } from "@starbeam/reactive"; import type { IntoResourceBlueprint, Resource } from "@starbeam/resource"; import * as resource from "@starbeam/resource"; @@ -7,8 +7,8 @@ import { CONTEXT, render, RUNTIME, type Unsubscribe } from "@starbeam/runtime"; import { service } from "@starbeam/service"; import { Cell } from "@starbeam/universal"; -import { missingApp, ReactApp } from "../app.js"; import { type ElementRef, type ReactElementRef, ref } from "./ref.js"; +import { missingApp, ReactApp } from "../app.js"; // eslint-disable-next-line @typescript-eslint/no-explicit-any type AnyRecord = Record; @@ -192,8 +192,9 @@ export class ReactiveElement { element.#lifecycle = Lifecycle.create(element.#description); } - static subscribe(element: ReactiveElement, reactive: Tagged): void { - element.#render(reactive); + static subscribe(element: ReactiveElement, reactive: HasTag): void { + const subscription = RUNTIME.subscribe(reactive, element.notify); + element.on.cleanup(subscription); } #lifecycle: Lifecycle; @@ -233,8 +234,8 @@ export class ReactiveElement { service = ( blueprint: IntoResourceBlueprint, description?: string | Description | undefined - ): Resource => { - const desc = DEBUG?.Desc("service", description, "UseSetup.service"); + ): Reactive => { + const desc = DEBUG?.Desc("service", description); const context = this.#context; if (context === null) { @@ -246,25 +247,28 @@ export class ReactiveElement { return service(blueprint, { description: desc }); }; - readonly use = ( - factory: IntoResourceBlueprint, - options?: { initial?: T } - ): Reactive => { - return internalUseResource( - this, - { - notify: this.notify, - render: (reactive) => this.on.cleanup(render(reactive, this.notify)), - on: { - layout: (callback) => { - if (!callback) return; - return this.on.layout(() => void callback(factory)); - }, - cleanup: this.on.cleanup, - }, - }, - options?.initial - ); + use = ( + factory: IntoResourceBlueprint, + options?: { initial?: T; description: string | Description | undefined } + ): Reactive => { + const desc = DEBUG?.Desc("resource", options?.description); + const resource = MountedResource.create(options?.initial, desc); + + RUNTIME.link(this, resource); + + const create = (): void => { + resource.create((owner) => Factory.resource(factory, owner)); + + this.notify(); + }; + + const unsubscribe = RUNTIME.subscribe(resource, this.notify); + + RUNTIME.onFinalize(resource, unsubscribe); + + this.on.layout(create); + + return resource as Reactive; }; refs(refs: R): RefsRecordFor { @@ -274,6 +278,15 @@ export class ReactiveElement { return record; } } +interface ResourceHost { + readonly notify: () => void; + readonly on: { + layout: (callback: (value: T) => void) => Unsubscribe | void; + cleanup: (callback: Unsubscribe) => Unsubscribe | void; + }; +} + + interface ResourceHost { readonly notify: () => void; diff --git a/packages/react/react/src/starbeam/handlers.ts b/packages/react/react/src/starbeam/handlers.ts new file mode 100644 index 00000000..ad209b7e --- /dev/null +++ b/packages/react/react/src/starbeam/handlers.ts @@ -0,0 +1,43 @@ +export interface Handlers { + readonly layout: Set; + readonly idle: Set; + readonly cleanup: Set; +} + +export function Handlers(): Handlers { + return { + layout: new Set(), + cleanup: new Set(), + idle: new Set(), + }; +} + +export function invoke(handlers: Handlers, ...types: (keyof Handlers)[]): void { + for (const type of types) { + for (const callback of handlers[type]) { + callback(); + } + } +} + +export function onHandlers(handlers: () => Handlers): RegisterHandlers { + return { + layout: (callback: () => void) => { + handlers().layout.add(callback); + }, + idle: (callback: () => void) => { + handlers().idle.add(callback); + }, + cleanup: (callback: () => void) => { + handlers().cleanup.add(callback); + }, + }; +} + +export type Callback = () => void; + +export interface RegisterHandlers { + readonly layout: (callback: Callback) => void; + readonly idle: (callback: Callback) => void; + readonly cleanup: (callback: Callback) => void; +} diff --git a/packages/react/react/src/starbeam/instance.ts b/packages/react/react/src/starbeam/instance.ts new file mode 100644 index 00000000..47dd57c2 --- /dev/null +++ b/packages/react/react/src/starbeam/instance.ts @@ -0,0 +1,133 @@ +import type { Reactive } from "@starbeam/interfaces"; +import { CachedFormula, Cell } from "@starbeam/reactive"; +import type { IntoResourceBlueprint, Resource } from "@starbeam/resource"; +import { use as starbeamUse } from "@starbeam/resource"; +import { LIFETIME, PUBLIC_TIMELINE } from "@starbeam/runtime"; +import { service as starbeamService } from "@starbeam/service"; +import type { RegisterLifecycleHandlers } from "@starbeam/use-strict-lifecycle"; +import { isPresent, verified } from "@starbeam/verify"; + +import { type ReactApp, verifiedApp } from "../context-provider.js"; +import { + type Callback, + Handlers, + invoke, + onHandlers, + type RegisterHandlers, +} from "./handlers.js"; + +export interface StarbeamInstance { + readonly on: RegisterHandlers; + readonly use: UseFn; + readonly service: (resource: IntoResourceBlueprint) => Resource; +} + +export interface InternalStarbeamInstance extends StarbeamInstance { + readonly deactivate: () => void; + readonly reactivate: (lifecycle: Handlers) => void; +} + +/** + * Activates this Starbeam instance: creates a new one if it doesn't exist, or + * reactivates an existing one if the component is being remounted. + */ +export function activate({ + starbeam, + on, + app, + notify, +}: { + starbeam: InternalStarbeamInstance | undefined; + on: RegisterLifecycleHandlers; + app: ReactApp | null; + notify: Callback; +}): InternalStarbeamInstance { + const handlers = Handlers(); + if (starbeam) starbeam.reactivate(handlers); + const instance = starbeam ?? StarbeamInstance(handlers, app, notify); + + setup({ on, handlers, instance }); + + return instance; +} + +/** + * Sets up the lifecycle handlers for this Starbeam instance. If the component is + * being remounted, the previous handlers were already cleaned up, so we need to + * set up new ones. + */ +function setup({ + on, + handlers, + instance, +}: { + on: RegisterLifecycleHandlers; + handlers: Handlers; + instance: InternalStarbeamInstance; +}): void { + on.idle(() => { + invoke(handlers, "idle"); + }); + + on.layout(() => { + invoke(handlers, "layout"); + }); + + on.cleanup(instance.deactivate); +} + +export function StarbeamInstance( + lifecycle: Handlers, + app: ReactApp | null, + notify: Callback +): InternalStarbeamInstance { + let handlers: Handlers | null = lifecycle; + + function use( + resource: IntoResourceBlueprint, + options?: O + ): Reactive> { + const resourceCell = Cell(undefined as Resource | undefined); + + verified(handlers, isPresent).layout.add(() => { + resourceCell.set( + starbeamUse(resource, { lifetime: verified(handlers, isPresent) }) + ); + notify(); + }); + + const formula = CachedFormula( + () => resourceCell.current?.current ?? options?.initial + ); + + verified(handlers, isPresent).cleanup.add(() => { + PUBLIC_TIMELINE.on.change(formula, notify); + }); + + return formula as Reactive; + } + + function deactivate() { + if (handlers) { + for (const callback of handlers.cleanup) callback(); + LIFETIME.finalize(handlers); + } + handlers = null; + } + + return { + on: onHandlers(() => verified(handlers, isPresent)), + use, + service: (resource: IntoResourceBlueprint): Resource => + starbeamService(resource, { app: verifiedApp(app, "service") }), + deactivate, + reactivate: (newHandlers) => (handlers = newHandlers), + }; +} + +type PropagateUndefined = O extends undefined ? undefined : never; + +type UseFn = ( + resource: IntoResourceBlueprint, + options?: O +) => Reactive>; diff --git a/packages/react/react/src/use-component-instance.ts b/packages/react/react/src/use-component-instance.ts new file mode 100644 index 00000000..7eb59e30 --- /dev/null +++ b/packages/react/react/src/use-component-instance.ts @@ -0,0 +1,24 @@ +import { useState } from "react"; + +/** + * This hook produces a unique instance representing the current React + * component. If it's called multiple times inside a single React component, + * it will return the same instance. + * + * It returns the same instance even in strict mode when the component + * is rendered multiple times. + * + * It doesn't use other Starbeam hooks, since it is used to build those hooks. + */ +export function useComponentInstance(): object { + // we can't use useRef here, since it will produce a different instance + // each time `useComponentInstance` is called, and we want multiple calls + // to return the same instance. The same problem exists with `useState` taking + // a callback or useMemo. + + // We use `useState` to get a unique instance for each component, and then + // we use `useState` to store the instance in a ref. + const [instance] = useState(() => ({})); + const [, _setInstance] = useState(instance); + return instance; +} diff --git a/packages/react/react/src/use-reactive.ts b/packages/react/react/src/use-reactive.ts new file mode 100644 index 00000000..5e6daa4c --- /dev/null +++ b/packages/react/react/src/use-reactive.ts @@ -0,0 +1,164 @@ +import type { Description, Reactive } from "@starbeam/interfaces"; +import { + CachedFormula, + Formula as Formula, + isReactive, + RUNTIME, +} from "@starbeam/reactive"; +import { PUBLIC_TIMELINE } from "@starbeam/runtime"; +import { Cell, LIFETIME, Wrap } from "@starbeam/universal"; +import { useLifecycle } from "@starbeam/use-strict-lifecycle"; +import { useState } from "react"; + +import { useSetup } from "./use-setup.js"; + +/** + * {@linkcode useReactive} is a Starbeam renderer that computes a value from reactive values and + * automatically notifies React when the inputs change. + * + * It doesn't memoize the value, so if the component re-renders, the value will be recomputed. This + * means that you can use normal React values in the formula without declaring any dependencies, but + * still get notified if Starbeam dependencies change. + * + * If you also want to memoize the value, you can use {@linkcode useReactiveMemo}. + */ + +export function useReactive( + computeFn: Reactive | (() => T), + description?: string | Description | undefined +): T { + const desc = RUNTIME.Desc?.("formula", description); + + const notify = useNotify(); + + return useLifecycle({ props: computeFn }).render( + ({ on }, originalCompute) => { + if ( + !isReactive(originalCompute) && + typeof originalCompute !== "function" + ) { + console.trace(); + } + + let compute = originalCompute; + + // compute can change, so the `PolledFormula` doesn't close over the original value, but + // rather invokes the **current** value (which can change in `on.update`). + const formula = Formula(() => read(compute), desc); + + on.update((newCompute) => { + compute = newCompute; + }); + + // We wait until the first layout to subscribe to the formula, because React will + // only guarantee that the cleanup function is called after the first layout. + on.layout(() => { + const unsubscribe = PUBLIC_TIMELINE.on.change(formula, notify); + on.cleanup(unsubscribe); + }); + + return formula; + } + ).current; +} + +function read(value: Reactive | (() => T)): T { + return isReactive(value) ? value.read() : value(); +} + +/** + * Returns a function that can be called to notify React that the current component should be + * re-rendered. + */ +export function useNotify(): () => void { + const [, setNotify] = useState({}); + return () => { + setNotify({}); + }; +} + +export function useCell( + value: T, + description?: Description | string +): Cell { + const desc = RUNTIME.Desc?.("cell", description); + + return useSetup(() => ({ cell: Cell(value, { description: desc }) })).cell; +} + +export class MountedReactive { + static create( + initial: T, + description: Description + ): MountedReactive & Reactive { + const resource = new MountedReactive(initial, description); + return Wrap(resource.formula, resource); + } + + readonly formula: Formula; + readonly #initial: T; + readonly #cell: Cell | undefined>; + #value: Reactive | undefined; + #owner: object | undefined = undefined; + + private constructor(initial: T, description: Description | undefined) { + this.#initial = initial; + this.#cell = Cell(undefined as Reactive | undefined, { + description: description?.implementation( + "cell", + "target", + "the storage a mounted reactive" + ), + }); + this.#value = undefined; + this.formula = CachedFormula( + () => this.#cell.current?.current ?? this.#initial, + description?.implementation( + "formula", + "current", + "the current value of the reactive" + ) + ); + + LIFETIME.on.cleanup(this, () => { + this.#finalize(); + }); + } + + #finalize(): void { + if (this.#owner) { + LIFETIME.finalize(this.#owner); + this.#owner = undefined; + } + } + + #reset(): object { + this.#finalize(); + + this.#owner = {}; + LIFETIME.link(this, this.#owner); + return this.#owner; + } + + isInactive(): boolean { + return this.#value === undefined; + } + + create(factory: (owner: object) => Reactive): { + reactive: Reactive; + owner: object; + } { + const owner = this.#reset(); + + const reactive = factory(owner); + + this.#cell.set(reactive); + this.#value = reactive; + + // If the `use`d resource is finalized, and the return value of the factory is a resource, we + // want to finalize that resource as well. + LIFETIME.link(this, reactive); + + return { reactive, owner }; + } +} diff --git a/packages/react/react/src/use-resource.ts b/packages/react/react/src/use-resource.ts new file mode 100644 index 00000000..8d123ad5 --- /dev/null +++ b/packages/react/react/src/use-resource.ts @@ -0,0 +1,84 @@ +import type { Description, Reactive } from "@starbeam/interfaces"; +import type { IntoResourceBlueprint } from "@starbeam/resource"; +import { LIFETIME } from "@starbeam/runtime"; +import { + unsafeTrackedElsewhere, + useLifecycle, +} from "@starbeam/use-strict-lifecycle"; + +import { internalUseResource } from "./element.js"; +import { useNotify } from "./use-reactive.js"; + +export function use( + factory: IntoResourceBlueprint, + options?: + | { initial?: T; description?: string | Description | undefined } + | unknown[], + dependencies?: unknown[] +): T | undefined { + const value = createResource( + factory as IntoResourceBlueprint, + options, + dependencies + ); + + return unsafeTrackedElsewhere(() => value.current); +} + +function createResource( + factory: IntoResourceBlueprint, + options?: { initial?: T } | unknown[], + dependencies?: unknown[] +): Reactive { + const notify = useNotify(); + + function normalize(): { + deps: unknown[]; + initialValue: T | undefined; + } { + if (Array.isArray(options)) { + return { deps: options, initialValue: undefined }; + } else { + return { + deps: dependencies ?? [], + initialValue: options?.initial, + }; + } + } + + const { deps, initialValue } = normalize(); + + return useLifecycle({ + props: factory, + validate: deps, + with: sameDeps, + }).render>(({ on }, _) => { + const lifetime = {}; + const resource = internalUseResource( + lifetime, + { on, notify }, + initialValue + ); + + on.cleanup(() => { + LIFETIME.finalize(lifetime); + }); + + return resource; + }); +} + +export function sameDeps( + next: unknown[] | undefined, + prev: unknown[] | undefined +): boolean { + if (prev === undefined || next === undefined) { + return prev === next; + } + + if (prev.length !== next.length) { + return false; + } + + return prev.every((value, index) => Object.is(value, next[index])); +} diff --git a/packages/react/react/src/use-service.ts b/packages/react/react/src/use-service.ts new file mode 100644 index 00000000..a30bd8f8 --- /dev/null +++ b/packages/react/react/src/use-service.ts @@ -0,0 +1,17 @@ +import type { IntoResourceBlueprint } from "@starbeam/resource"; +import { CONTEXT } from "@starbeam/runtime"; +import { service } from "@starbeam/service"; + +import { ReactApp, useStarbeamApp } from "./context-provider.js"; +import { useReactive } from "./use-reactive.js"; + +export function useService(blueprint: IntoResourceBlueprint): T { + CONTEXT.app = ReactApp.instance(useStarbeamApp({ feature: "useService()" })); + + const instance = service(blueprint); + + // We don't want to instantiate the service as a resource, because that would + // cause it to be cleaned up when the component unmounts. Instead, we want to + // keep it alive for the lifetime of the app. + return useReactive(() => instance.current); +} diff --git a/packages/react/react/src/use-setup.ts b/packages/react/react/src/use-setup.ts new file mode 100644 index 00000000..d9684e5f --- /dev/null +++ b/packages/react/react/src/use-setup.ts @@ -0,0 +1,105 @@ +import type { Description, Reactive } from "@starbeam/interfaces"; +import { Formula, isReactive, RUNTIME } from "@starbeam/reactive"; +import { + setupFunction, + unsafeTrackedElsewhere, + useLifecycle, +} from "@starbeam/use-strict-lifecycle"; + +import { useStarbeamApp } from "./context-provider.js"; +import { ReactiveElement } from "./element.js"; +import { useNotify } from "./use-reactive.js"; + +export type UseSetupConstructor = ( + setup: ReactiveElement +) => (props: Props) => T; + +export type RenderFn = (props: unknown) => unknown; + +interface UseSetupState { + element: ReactiveElement; + instance: + | { type: "compute"; value: (props: unknown) => unknown } + | { type: "reactive"; value: Reactive } + | { type: "static"; value: unknown }; +} + +export function useSetup< + C extends (setup: ReactiveElement) => Reactive +>(callback: C, description?: string | Description): ReturnType["current"]; +export function useSetup< + C extends (setup: ReactiveElement) => RenderFn, + RenderFn extends (props: never) => unknown +>(callback: C, description?: string | Description): { compute: ReturnType }; +export function useSetup unknown>( + callback: C, + description?: string | Description +): ReturnType; +export function useSetup< + C extends (setup: ReactiveElement) => RenderFn, + RenderFn +>(callback: C, description?: string | Description): unknown { + const starbeam = useStarbeamApp({ + feature: "useSetup()", + allowMissing: true, + }); + + const desc = RUNTIME.Desc?.("resource", description); + + const notify = useNotify(); + + const { instance } = useLifecycle({ + validate: starbeam, + }).render(({ on }, _, prev) => { + const element = ReactiveElement.activate( + notify, + starbeam, + desc, + prev?.element + ); + + const instance = setupFunction(() => callback(element)); + + on.layout(() => { + ReactiveElement.layout(element); + }); + + on.idle(() => { + ReactiveElement.idle(element); + }); + + let currentProps: unknown = undefined; + + if (isReactive(instance)) { + ReactiveElement.subscribe(element, instance); + return { element, instance: { type: "reactive", value: instance } }; + } else if (typeof instance === "function") { + const reactive = Formula(() => { + return (instance as (props: unknown) => unknown)(currentProps); + }, desc); + + ReactiveElement.subscribe(element, reactive); + + function compute( + props: unknown, + caller = RUNTIME.callerStack?.() + ): unknown { + currentProps = props; + return reactive.read(caller); + } + + return { element, instance: { type: "compute", value: compute } }; + } else { + return { element, instance: { type: "static", value: instance } }; + } + }); + + switch (instance.type) { + case "compute": + return { compute: instance.value }; + case "reactive": + return unsafeTrackedElsewhere(() => instance.value.read()); + case "static": + return instance.value; + } +} diff --git a/packages/react/react/src/use-starbeam.ts b/packages/react/react/src/use-starbeam.ts new file mode 100644 index 00000000..402f1492 --- /dev/null +++ b/packages/react/react/src/use-starbeam.ts @@ -0,0 +1,41 @@ +import { isReactive, type ReadValue } from "@starbeam/reactive"; +import { useLifecycle } from "@starbeam/use-strict-lifecycle"; + +import { useStarbeamApp } from "./context-provider.js"; +import type { + InternalStarbeamInstance, + StarbeamInstance, +} from "./starbeam/instance.js"; +import { activate } from "./starbeam/instance.js"; +import { useReactive } from "./use-reactive.js"; +import { sameDeps } from "./use-resource.js"; + +export function useStarbeam( + callback: (instance: StarbeamInstance) => T, + deps?: unknown[] | undefined +): ReadValue { + const app = useStarbeamApp({ feature: "useStarbeam", allowMissing: true }); + + const instance = useLifecycle({ + props: deps, + validate: deps, + with: sameDeps, + }).render<{ + instance: T; + starbeam: InternalStarbeamInstance; + }>(({ on, notify }, deps, prev) => { + const starbeam = activate({ + starbeam: prev?.starbeam, + on, + app, + notify, + }); + + const instance = callback(starbeam); + return { instance, starbeam }; + }).instance; + + return isReactive(instance) + ? (useReactive(instance) as ReadValue) + : (instance as ReadValue); +} diff --git a/packages/react/react/tests/data-demo.spec.ts b/packages/react/react/tests/data-demo.spec.ts new file mode 100644 index 00000000..67a61aa7 --- /dev/null +++ b/packages/react/react/tests/data-demo.spec.ts @@ -0,0 +1,7 @@ +import { describe, expect, test } from "@starbeam-workspace/test-utils"; + +describe("the data demo", () => { + test("it works", () => { + expect(true).toBe(true); + }); +}); diff --git a/packages/react/react/tests/package.json b/packages/react/react/tests/package.json index 923ffa86..d3cc2779 100644 --- a/packages/react/react/tests/package.json +++ b/packages/react/react/tests/package.json @@ -9,13 +9,13 @@ "test:types": "tsc -b" }, "dependencies": { - "@starbeam-workspace/react-test-utils": "workspace:^", - "@starbeam-workspace/test-utils": "workspace:^", "@starbeam/debug": "workspace:^", "@starbeam/react": "workspace:^", "@starbeam/reactive": "workspace:^", "@starbeam/runtime": "workspace:^", "@starbeam/universal": "workspace:^", + "@starbeam-workspace/react-test-utils": "workspace:^", + "@starbeam-workspace/test-utils": "workspace:^", "jsdom": "^21.1.1", "react": "^18.2.0", "vitest": "^0.30.1" diff --git a/packages/react/use-strict-lifecycle/src/updating-ref.ts b/packages/react/use-strict-lifecycle/src/updating-ref.ts new file mode 100644 index 00000000..bdaeb0d8 --- /dev/null +++ b/packages/react/use-strict-lifecycle/src/updating-ref.ts @@ -0,0 +1,55 @@ +import { type MutableRefObject, useRef } from "react"; + +import { UNINITIALIZED } from "./utils.js"; + +/** + * This is basically the React `Ref` type, but the React version forces `current` to be `| null`, + * which is impossible here, because it's not a DOM ref. + */ +export interface Ref { + readonly current: T; +} + +/** + * This function takes a callback that is used to initialize a ref, and returns + * a tuple of `[ref, isUpdate]`. + * + * The first time `useInitializedRef` is called, it will call the callback and + * store the result in the ref, and return `[ref, false]`. On subsequent calls, + * it will return `[ref, true]` (the same ref). + */ +export function useInitializedRef( + initial: () => T +): [ref: MutableRefObject, isUpdate: boolean] { + const ref = useRef(UNINITIALIZED as T | UNINITIALIZED); + + if (ref.current === UNINITIALIZED) { + ref.current = initial(); + return [ref as MutableRefObject, false]; + } else { + return [ref as MutableRefObject, true]; + } +} + +/** + * This function takes a piece of state that is available as a per-render value + * (e.g. props or the first element of the array returned by useState) and + * converts it into a ref. + * + * From the perspective of top-level render functions, this ref is totally + * pointless, and is equivalent to just accessing the state in the render + * function. + * + * Instead, its primary purpose to make such state available to useEffect and + * useLayoutEffect callbacks without needing to worry about the possibility of + * stale closures. + */ +export function useLastRenderRef( + state: S +): [ref: Ref, prev: S | UNINITIALIZED] { + const ref = useRef(UNINITIALIZED); + const prev = ref.current; + + ref.current = state; + return [ref as Ref, prev]; +} diff --git a/packages/universal/collections/.eslintrc.json b/packages/universal/collections/.eslintrc.json index 1ea96989..dfd27d1d 100644 --- a/packages/universal/collections/.eslintrc.json +++ b/packages/universal/collections/.eslintrc.json @@ -2,8 +2,8 @@ "root": false, "overrides": [ { - "extends": ["plugin:@starbeam/tight"], - "files": ["index.ts", "src/**/*.ts"], + "extends": ["plugin:@starbeam/loose"], + "files": ["**/*.ts"], "parserOptions": { "project": "tsconfig.json" } diff --git a/packages/universal/collections/package.json b/packages/universal/collections/package.json index 4e467f57..18c9c8d6 100644 --- a/packages/universal/collections/package.json +++ b/packages/universal/collections/package.json @@ -26,7 +26,10 @@ "test:types": "tsc -b" }, "dependencies": { + "@starbeam/debug": "workspace:^", "@starbeam/interfaces": "workspace:^", + "@starbeam/reactive": "workspace:^", + "@starbeam/runtime": "workspace:^", "@starbeam/shared": "workspace:^", "@starbeam/tags": "workspace:^", "@starbeam/universal": "workspace:^", diff --git a/packages/universal/collections/src/collection.ts b/packages/universal/collections/src/collection.ts index 5d827b03..4478fb54 100644 --- a/packages/universal/collections/src/collection.ts +++ b/packages/universal/collections/src/collection.ts @@ -22,6 +22,7 @@ class ItemState { ); } + static initialized( description: Description | undefined, member: string @@ -29,6 +30,7 @@ class ItemState { return ItemState.create(true, description, member); } + static uninitialized( description: Description | undefined, member: string @@ -67,6 +69,7 @@ class ItemState { class Item { #value: ItemState; + static initialized( description: Description | undefined, member: string @@ -118,6 +121,7 @@ export class Collection { static #objects = new WeakMap>(); + static create( description: Description | undefined, object: object @@ -200,6 +204,7 @@ export class Collection { #initialize(key: K, disposition: "hit" | "miss", member: string): Item { if (this.#iteration === undefined) { this.#iteration = Marker({ description: this.#description }); + this.#iteration = Marker({ description: this.#description }); } let item: Item; @@ -218,6 +223,7 @@ export class Collection { iterateKeys(): void { if (this.#iteration === undefined) { this.#iteration = Marker({ description: this.#description }); + this.#iteration = Marker({ description: this.#description }); } // remember that we iterated this collection so that consumers of the diff --git a/packages/universal/collections/src/iterable.ts b/packages/universal/collections/src/iterable.ts index ff933916..efc7e09d 100644 --- a/packages/universal/collections/src/iterable.ts +++ b/packages/universal/collections/src/iterable.ts @@ -1,11 +1,8 @@ -import type { Description, EntryPoint } from "@starbeam/interfaces"; +import type { CallStack, Description } from "@starbeam/interfaces"; +import { Cell, type Equality, Marker } from "@starbeam/reactive"; import { UNINITIALIZED } from "@starbeam/shared"; -import { Cell, DEBUG, type Equality, Marker } from "@starbeam/universal"; class Entry { - readonly #initialized: Cell; - readonly #value: Cell; - static initialized( value: V, desc: Description | undefined, @@ -45,6 +42,9 @@ class Entry { ); } + readonly #initialized: Cell; + readonly #value: Cell; + constructor(value: Cell, initialized: Cell) { this.#value = value; this.#initialized = initialized; @@ -76,7 +76,9 @@ class Entry { return this.#initialized.read(); } - set(value: V): "initialized" | "updated" | "unchanged" { + set( + value: V, + ): "initialized" | "updated" | "unchanged" { if (this.#value.read() === UNINITIALIZED) { this.#value.set(value); this.#initialized.set(true); @@ -98,6 +100,7 @@ function equals(equality: Equality): Equality { } const EMPTY_MAP_SIZE = 0; +const EXTRA_CALLER_FRAME = 1; export class ReactiveMap implements Map { readonly [Symbol.toStringTag] = "Map"; @@ -125,17 +128,14 @@ export class ReactiveMap implements Map { } get size(): number { - const entryPoint = DEBUG?.markEntryPoint([ - "object:get", - "ReactiveMap", - "size", - ]); this.#keys.read(); let size = 0; - for (const [, entry] of this.#iterate(entryPoint)) { - if (entry.isPresent()) size++; + for (const [, entry] of this.#iterate()) { + if (entry.isPresent()) { + size++; + } } return size; @@ -147,8 +147,6 @@ export class ReactiveMap implements Map { clear(): void { if (this.#entries.size > EMPTY_MAP_SIZE) { - DEBUG?.markEntryPoint(["object:call", "ReactiveMap", "clear"]); - this.#entries.clear(); this.#keys.mark(); this.#values.mark(); @@ -159,8 +157,6 @@ export class ReactiveMap implements Map { const entry = this.#entries.get(key); if (entry) { - DEBUG?.markEntryPoint(["collection:delete", "ReactiveMap", key]); - const disposition = entry.delete(); if (disposition === "deleted") { @@ -175,15 +171,10 @@ export class ReactiveMap implements Map { } *entries(): IterableIterator<[K, V]> { - const entryPoint = DEBUG?.markEntryPoint([ - "object:call", - "ReactiveMap", - "entries", - ]); this.#keys.read(); this.#values.read(); - for (const [key, value] of this.#iterate(entryPoint)) { + for (const [key, value] of this.#iterate()) { yield [key, value.get() as V]; } } @@ -210,7 +201,6 @@ export class ReactiveMap implements Map { callbackfn: (value: V, key: K, map: Map) => void, thisArg?: unknown ): void { - DEBUG?.markEntryPoint(["object:call", "ReactiveMap", "forEach"]); this.#keys.read(); this.#values.read(); @@ -220,47 +210,31 @@ export class ReactiveMap implements Map { } get(key: K): V | undefined { - DEBUG?.markEntryPoint(["collection:get", "ReactiveMap", key]); const entry = this.#entry(key); return entry.get(); } has(key: K): boolean { - DEBUG?.markEntryPoint(["collection:has", "ReactiveMap", key]); return this.#entry(key).isPresent(); } - *#iterate( - entryPoint: EntryPoint | undefined - ): IterableIterator<[K, Entry]> { + *#iterate(): IterableIterator<[K, Entry]> { for (const [key, entry] of this.#entries) { if (entry.isPresent()) { - // restore the entry point since the iteration isn't necessarily - // synchronous. - DEBUG?.markEntryPoint(entryPoint); - yield [key, entry]; } } } *keys(): IterableIterator { - const entryPoint = DEBUG?.markEntryPoint([ - "object:call", - "ReactiveMap", - "keys", - ]); this.#keys.read(); - for (const [key] of this.#iterate(entryPoint)) { - DEBUG?.markEntryPoint(["object:call", "ReactiveMap", "keys"]); - + for (const [key] of this.#iterate()) { yield key; } } set(key: K, value: V): this { - DEBUG?.markEntryPoint(["collection:insert", "ReactiveMap", key]); const entry = this.#entry(key); const disposition = entry.set(value); @@ -277,17 +251,11 @@ export class ReactiveMap implements Map { } *values(): IterableIterator { - // TODO: previously we thought that we needed an extra frame for the - // internal JS call to .next(). Is this true? - const entryPoint = DEBUG?.markEntryPoint([ - "object:call", - "ReactiveMap", - "values", - ]); + // add an extra frame for the internal JS call to .next() this.#values.read(); - for (const [, value] of this.#iterate(entryPoint)) { + for (const [, value] of this.#iterate()) { yield value.get() as V; } } @@ -318,42 +286,36 @@ export class ReactiveSet implements Set { } get size(): number { - const entryPoint = DEBUG?.markEntryPoint([ - "object:get", - "ReactiveSet", - "size", - ]); - + console.log(this.#values); this.#values.read(); let size = 0; - for (const _ of this.#iterate(entryPoint)) size++; + for (const _ of this.#iterate()) { + size++; + } return size; } [Symbol.iterator](): IterableIterator { - DEBUG?.markEntryPoint(["object:call", "ReactiveSet", Symbol.iterator]); return this.keys(); } add(value: T): this { - DEBUG?.markEntryPoint(["collection:insert", "ReactiveSet", value]); const entry = this.#entry(value); if (!entry.isPresent()) { this.#entries.set(value, entry); this.#values.mark(); - entry.set(value); + entry.set(value, ); } return this; } clear(): void { - DEBUG?.markEntryPoint(["object:call", "ReactiveSet", "clear"]); if (this.#entries.size > EMPTY_MAP_SIZE) { this.#entries.clear(); @@ -362,7 +324,6 @@ export class ReactiveSet implements Set { } delete(value: T): boolean { - DEBUG?.markEntryPoint(["collection:delete", "ReactiveSet", value]); const entry = this.#entries.get(value); @@ -380,15 +341,10 @@ export class ReactiveSet implements Set { } *entries(): IterableIterator<[T, T]> { - const entryPoint = DEBUG?.markEntryPoint([ - "object:call", - "ReactiveSet", - "entries", - ]); this.#values.read(); - for (const [value, entry] of this.#iterate(entryPoint)) { + for (const [value, entry] of this.#iterate()) { yield [value, entry.get() as T]; } } @@ -397,48 +353,32 @@ export class ReactiveSet implements Set { callbackfn: (value: T, value2: T, set: Set) => void, thisArg?: unknown ): void { - const entryPoint = DEBUG?.markEntryPoint([ - "object:call", - "ReactiveSet", - "forEach", - ]); this.#values.read(); - for (const [value] of this.#iterate(entryPoint)) { + for (const [value] of this.#iterate()) { callbackfn.call(thisArg, value, value, this); } } has(value: T): boolean { - DEBUG?.markEntryPoint(["collection:has", "ReactiveSet", value]); return this.#entry(value).isPresent(); } - *#iterate( - entryPoint: EntryPoint | undefined - ): IterableIterator<[T, Entry]> { + *#iterate(): IterableIterator<[T, Entry]> { for (const [value, entry] of this.#entries) { if (entry.isPresent()) { - // restore the entry point since the iteration isn't necessarily - // synchronous. - DEBUG?.markEntryPoint(entryPoint); yield [value, entry]; } } } *keys(): IterableIterator { - const entryPoint = DEBUG?.markEntryPoint([ - "object:call", - "ReactiveSet", - "keys", - ]); this.#values.read(); - for (const [value] of this.#iterate(entryPoint)) { + for (const [value] of this.#iterate()) { yield value; } } diff --git a/packages/universal/collections/src/map.ts b/packages/universal/collections/src/map.ts index 68ead059..7a7babd4 100644 --- a/packages/universal/collections/src/map.ts +++ b/packages/universal/collections/src/map.ts @@ -6,6 +6,22 @@ interface Entry { get: Marker; } +interface MapState { + readonly description: Description | undefined; + readonly iteration: Marker; + readonly storage: WeakMap | Map; + readonly vals: WeakMap | Map; + readonly equals: Equality; +} + +interface MapState { + readonly description: Description | undefined; + readonly iteration: Marker; + readonly storage: WeakMap | Map; + readonly vals: WeakMap | Map; + readonly equals: Equality; +} + export class TrackedWeakMap implements WeakMap { @@ -15,19 +31,16 @@ export class TrackedWeakMap return new TrackedWeakMap(description) as WeakMap; } - readonly #description: Description | undefined; - readonly #iteration: Marker; - readonly #storage: WeakMap; - readonly #vals: WeakMap; - readonly #equals: Equality = Object.is; + readonly #state: MapState; private constructor(description: Description | undefined) { - this.#vals = new WeakMap(); - - this.#iteration = Marker(description?.detail("collection", "iterate")); - this.#storage = new WeakMap(); - - this.#description = description; + this.#state = { + description, + vals: new WeakMap(), + iteration: Marker(description?.detail("collection", "iterate")), + storage: new WeakMap(), + equals: Object.is, + }; } #entry(key: K): Entry { @@ -36,25 +49,25 @@ export class TrackedWeakMap if (markers === undefined) { markers = { get: Marker( - this.#description?.key(describeKey(key)).detail("cell", "get") + this.#state.description?.key(describeKey(key)).detail("cell", "get") ), has: Marker( - this.#description?.key(describeKey(key)).detail("cell", "has") + this.#state.description?.key(describeKey(key)).detail("cell", "has") ), }; - this.#storage.set(key, markers); + this.#state.storage.set(key, markers); } return markers; } #tryEntry(key: K): Entry | undefined { - return this.#storage.get(key); + return this.#state.storage.get(key); } #get(key: K, entry: Entry = this.#entry(key)): V | undefined { entry.get.read(); - return this.#vals.get(key); + return this.#state.vals.get(key); } get(key: K): V | undefined { @@ -65,7 +78,7 @@ export class TrackedWeakMap #has(key: K, entry: Entry = this.#entry(key)): boolean { entry.has.read(); - return this.#vals.has(key); + return this.#state.vals.has(key); } has(key: K): boolean { @@ -77,30 +90,30 @@ export class TrackedWeakMap const entry = this.#tryEntry(key); if (entry) entry.has.mark(); - this.#iteration.mark(); + this.#state.iteration.mark(); } #update(key: K): void { const entry = this.#tryEntry(key); if (entry) entry.get.mark(); - this.#iteration.mark(); + this.#state.iteration.mark(); } set(key: K, value: V): this { DEBUG?.markEntryPoint(["collection:insert", "TrackedWeakMap", key]); // intentionally avoid consuming the `has` or `get` markers while setting. - const shouldInsert = !this.#vals.has(key); + const shouldInsert = !this.#state.vals.has(key); if (shouldInsert) { this.#insert(key); } else { - const current = this.#vals.get(key) as V; - if (!this.#equals(current, value)) this.#update(key); + const current = this.#state.vals.get(key) as V; + if (!this.#state.equals(current, value)) this.#update(key); } - this.#vals.set(key, value); + this.#state.vals.set(key, value); return this; } @@ -112,20 +125,20 @@ export class TrackedWeakMap if (entry) entry.has.mark(); // either way, invalidate iteration of the map. - this.#iteration.mark(); + this.#state.iteration.mark(); } delete(key: K): boolean { DEBUG?.markEntryPoint(["collection:delete", "TrackedWeakMap", key]); // if the key is not in the map, then deleting it has no reactive effect. - if (this.#vals.has(key)) this.#delete(key); + if (this.#state.vals.has(key)) this.#delete(key); - return this.#vals.delete(key); + return this.#state.vals.delete(key); } get [Symbol.toStringTag](): string { - return this.#vals[Symbol.toStringTag]; + return this.#state.vals[Symbol.toStringTag]; } } diff --git a/packages/universal/collections/src/mapper.ts b/packages/universal/collections/src/mapper.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/packages/universal/collections/src/mapper.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/universal/collections/tests/.eslintrc.json b/packages/universal/collections/tests/.eslintrc.json index dfd27d1d..bbc0c7f6 100644 --- a/packages/universal/collections/tests/.eslintrc.json +++ b/packages/universal/collections/tests/.eslintrc.json @@ -1,12 +1,16 @@ { - "root": false, "overrides": [ { - "extends": ["plugin:@starbeam/loose"], - "files": ["**/*.ts"], + "extends": [ + "plugin:@starbeam/loose" + ], + "files": [ + "**/*.ts" + ], "parserOptions": { "project": "tsconfig.json" } } - ] + ], + "root": false } diff --git a/packages/universal/collections/tests/package.json b/packages/universal/collections/tests/package.json index 0b325dcb..93982846 100644 --- a/packages/universal/collections/tests/package.json +++ b/packages/universal/collections/tests/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@starbeam/collections": "workspace:^", - "@starbeam/universal": "workspace:^" + "@starbeam/universal": "workspace:^", + "@starbeam-workspace/test-utils": "workspace:^" } } diff --git a/packages/universal/collections/tests/weak-map.spec.ts b/packages/universal/collections/tests/weak-map.spec.ts index 836c02dc..fc3445de 100644 --- a/packages/universal/collections/tests/weak-map.spec.ts +++ b/packages/universal/collections/tests/weak-map.spec.ts @@ -1,6 +1,6 @@ import { reactive } from "@starbeam/collections"; import { CachedFormula } from "@starbeam/universal"; -import { describe, expect, test } from "vitest"; +import { describe, expect, test } from "@starbeam-workspace/test-utils"; import { Invalidation } from "./support.js"; diff --git a/packages/universal/debug/src/call-stack/prod.ts b/packages/universal/debug/src/call-stack/prod.ts new file mode 100644 index 00000000..f4dd1545 --- /dev/null +++ b/packages/universal/debug/src/call-stack/prod.ts @@ -0,0 +1,3 @@ +import type { DebugRuntime } from "@starbeam/interfaces"; + +export default (() => undefined) satisfies DebugRuntime["callerStack"]; diff --git a/packages/universal/interfaces/index.ts b/packages/universal/interfaces/index.ts index 70bde864..6b551291 100644 --- a/packages/universal/interfaces/index.ts +++ b/packages/universal/interfaces/index.ts @@ -9,5 +9,5 @@ export type { } from "./src/runtime.js"; export type { CellTag, FormulaTag, Tag, TagSnapshot } from "./src/tag.js"; export type { HasTag, Reactive, Tagged, TaggedReactive } from "./src/tagged.js"; -export type { CoreTimestamp } from "./src/timestamp.js"; +export type { Timestamp, Timestamp as CoreTimestamp } from "./src/timestamp.js"; export type { Diff, Expand, Unsubscribe } from "./src/utils.js"; diff --git a/packages/universal/interfaces/src/protocol.ts b/packages/universal/interfaces/src/protocol.ts new file mode 100644 index 00000000..38812d8a --- /dev/null +++ b/packages/universal/interfaces/src/protocol.ts @@ -0,0 +1,170 @@ +import type { TAG } from "@starbeam/shared"; + +import type { CallStack } from "./debug/call-stack.js"; +import type { Description } from "./debug/description.js"; +import type { UpdateOptions } from "./runtime.js"; +import type { Timestamp } from "./timestamp.js"; + +export type ReactiveId = number | string | ReactiveId[]; + +export type TagSet = ReadonlySet; + +export declare class TagMethods { + readonly lastUpdated: Timestamp; + readonly dependencies: () => readonly CellTag[]; +} + +/** + * Cell is the fundamental mutable reactive value. All subscriptions in Starbeam are ultimately + * subscriptions to cells, and all mutations in Starbeam are ultimately mutations to cells. + */ +export interface CellTag extends TagMethods { + readonly type: "cell"; + readonly description: Description | undefined; + readonly lastUpdated: Timestamp; + isFrozen: () => boolean; + freeze: () => void; + update: (options: UpdateOptions) => void; +} + +/** + * Formula is a reactive that has *dynamic* children. This means that you can't cache the children + * (or subscribe directly to them), because they may change. This is different from delegates, which + * are guaranteed to have the same set of children forever. + * + * Composite reactives must notify the timeline when their children have changed. + * + * A subscription to a composite reactive is a subscription to its current children, as of the last + * time the timeline was notified of changes to the composite's children. Whenever the timeline is + * notified of a change to the composite's children, it removes subscriptions from any stale + * dependencies and adds subscriptions to any new dependencies. + */ +export interface FormulaTag extends TagMethods { + readonly type: "formula"; + readonly description: Description | undefined; + + /** + * This flag starts out as false, when the formula hasn't been computed yet. + * Any subscriptions to an uninitialized formula will be deferred until the + * formula is initialized. + */ + readonly initialized: boolean; + + /** + * This method should be called by the formula's implementation after it is + * first computed, but before the timeline's `update` method is called. + */ + markInitialized: () => void; + + /** + * The current children of this formula. Note that "no children" does not + * necessarily mean that the formula is static, because a formula has no + * children before it was first initialized. + * + * Data structures built on `FormulaTag` should always read the formula before + * attempting to read the children if they plan to rely on the absence of + * children as a strong indicator of staticness. + */ + children: () => ReadonlySet; +} + +/** + * Delegate is a reactive that represents one or more reactives, but that set of reactives cannot + * change. This allows you to cache the value of the `delegate` property, and it also allows you to + * subscribe directly to the delegate's targets. + * + * In practice, when you subscribe to a delegate, the timeline subscribes directly to the delegate's + * targets. This means that delegates don't need to know when their value changes, and don't need to + * notify the timeline when their targets change. + */ +export interface DelegateTag extends TagMethods { + readonly type: "delegate"; + readonly description: Description | undefined; + readonly targets: readonly Tag[]; +} + +/** + * Static is a reactive that is guaranteed not to change. This means that you can cache the value of + * the static reactive and don't need to include it in composite children. All validation semantics + * act as if static reactives were not present. + * + * If a formula or delegate has only static children, it is also static. Even though a formula's + * children can change, if the formula's *only* children are static, then the formula can never + * invalidate, and therefore it, itself, is treated as static. + * + * TODO: Do we need a separate fundamental type for pollable formulas, which can get new + * dependencies even if they never invalidate? + */ +export interface StaticTag extends TagMethods { + readonly type: "static"; + readonly description: Description | undefined; +} + +/** + * A tag validates a reactive value. The behavior of a tags is defined in relation to reads and + * writes of the reactive value they represent. Tags model **value composition** (and functional + * composition), not a more general algebra. + * + * In other words, it doesn't make sense to think about the composition of tags abstracted from the + * values they represent. Attempting to think about tags this way makes them seem more general than + * they are, and that generality breaks system invariants derived from value composition. + */ +export type Tag = CellTag | FormulaTag | DelegateTag | StaticTag; + +/** + * Cells and formulas can be subscribed to directly. + * + * A subscription to a formula is a dynamic subscription to its current dependencies. + * A subscription to a delegate is equivalent to subscribing to its (stable) targets. + * A subscription to a static is equivalent to subscribing to nothing. + */ +export type SubscriptionTarget = CellTag | FormulaTag; + +/** + * A `Tagged` object is a reactive object that has a `Tag` (which is used to + * validate it). + * + * NOTE: In previous versions of Starbeam, it was legal to change the tag after + * the tagged object was initially created. However, this made it impossible to + * use an tagged object's tag as a key in a WeakMap, which meant that the tagged + * object itself had to be passed around even when it was semantically + * unimportant. + * + * These days, the `[TAG]` property must not change once it has been read. For + * this reason, the `FormulaTag`'s `children` property is a function, which + * allows you to keep the tag stable while varying the children (which *are* + * allowed to change, since that's the point of `FormulaTag`). + */ +export interface Tagged { + readonly [TAG]: I; +} + +export interface ReactiveValue + extends Tagged { + read: (stack?: CallStack) => T; +} + +export interface Reactive extends ReactiveValue { + readonly current: T; +} + +export interface TaggedReactive + extends ReactiveValue { + readonly current: T; +} + +export interface ReactiveCell extends ReactiveValue { + current: T; + /** + * Set the value of the cell. Returns true if the value was changed, false if + * the current value was equivalent to the new value. + */ + set: (value: T, caller?: CallStack) => boolean; + update: (fn: (value: T) => T, caller?: CallStack) => void; + freeze: () => void; +} + +export interface ReactiveFormula extends ReactiveValue { + (): T; + readonly current: T; +} diff --git a/packages/universal/interfaces/src/runtime.ts b/packages/universal/interfaces/src/runtime.ts index dc520799..f3b87695 100644 --- a/packages/universal/interfaces/src/runtime.ts +++ b/packages/universal/interfaces/src/runtime.ts @@ -1,7 +1,7 @@ import type { CallStack } from "./debug/call-stack.js"; import type { CellTag, FormulaTag, Tag, TagSnapshot } from "./tag.js"; import type { HasTag } from "./tagged.js"; -import type { CoreTimestamp } from "./timestamp.js"; +import type { Timestamp } from "./timestamp.js"; import type { Unsubscribe } from "./utils.js"; /** @@ -38,7 +38,7 @@ export interface Runtime { */ readonly mark: ( cell: CellTag, - mark: (revision: CoreTimestamp) => void + mark: (revision: Timestamp) => void ) => void; /** * Indicate that the value associated with the given tag has been consumed. @@ -87,7 +87,7 @@ export interface Runtime { * finalization handler is removed before the object is finalized, it will * not be called. */ - readonly onFinalize: (object: object, callback: () => void) => Unsubscribe; + readonly onFinalize: (object: object, callback: Unsubscribe) => Unsubscribe; /** * Link two objects together. When the parent object is finalized, the child diff --git a/packages/universal/interfaces/src/tag.ts b/packages/universal/interfaces/src/tag.ts index 13b47cc4..bd8095d0 100644 --- a/packages/universal/interfaces/src/tag.ts +++ b/packages/universal/interfaces/src/tag.ts @@ -1,7 +1,7 @@ import type { UNINITIALIZED } from "@starbeam/shared"; import type { Description } from "./debug/description.js"; -import type { CoreTimestamp } from "./timestamp.js"; +import type { Timestamp } from "./timestamp.js"; /** * A snapshot of a set of tags. This represents the current dependencies of a @@ -21,7 +21,7 @@ export type TagSnapshot = ReadonlySet; export interface CellTag { readonly type: "cell"; readonly description?: Description | undefined; - readonly lastUpdated: CoreTimestamp; + readonly lastUpdated: Timestamp; readonly dependencies: () => readonly CellTag[]; } diff --git a/packages/universal/interfaces/src/timestamp.ts b/packages/universal/interfaces/src/timestamp.ts index 440d39a2..c92bede9 100644 --- a/packages/universal/interfaces/src/timestamp.ts +++ b/packages/universal/interfaces/src/timestamp.ts @@ -1,3 +1,16 @@ -export interface CoreTimestamp { +export interface Timestamp { readonly at: number; + + gt: (other: Timestamp) => boolean; + eq: (other: Timestamp) => boolean; + + next: () => Timestamp; + + toString: (options?: { format?: "timestamp" }) => string; +} + +export interface TimestampStatics { + now: () => Timestamp; + max: (...timestamps: Timestamp[]) => Timestamp; + debug: (timestamp: Timestamp) => { at: number }; } diff --git a/packages/universal/reactive/package.json b/packages/universal/reactive/package.json index df4477c8..a78f5fd5 100644 --- a/packages/universal/reactive/package.json +++ b/packages/universal/reactive/package.json @@ -1,5 +1,6 @@ { "name": "@starbeam/reactive", + "version": "0.8.9", "type": "module", "main": "index.ts", "types": "index.ts", @@ -26,6 +27,7 @@ "dependencies": { "@starbeam/core-utils": "workspace:^", "@starbeam/interfaces": "workspace:^", + "@starbeam/reactive": "workspace:^", "@starbeam/shared": "workspace:^", "@starbeam/tags": "workspace:^", "@starbeam/verify": "workspace:^" diff --git a/packages/universal/reactive/src/primitives/delegate.ts b/packages/universal/reactive/src/primitives/delegate.ts new file mode 100644 index 00000000..edc4b15c --- /dev/null +++ b/packages/universal/reactive/src/primitives/delegate.ts @@ -0,0 +1,44 @@ +import { defMethod, getter, readonly } from "@starbeam/core-utils"; +import type { CallStack, Description } from "@starbeam/interfaces"; +import type * as interfaces from "@starbeam/interfaces"; +import { TAG } from "@starbeam/shared"; +import { createDelegateTag, getDescription, getTag } from "@starbeam/tags"; + +import { RUNTIME } from "../runtime.js"; + +export function Wrap( + reactive: U, + value: T, + desc?: Description | string | undefined +): T & U { + readonly( + value, + TAG, + createDelegateTag(delegateDesc(reactive, desc), [getTag(reactive)]) + ); + + defMethod( + value, + "read", + (caller: CallStack | undefined = RUNTIME.callerStack?.()) => + reactive.read(caller) + ); + getter(value, "current", () => reactive.read(RUNTIME.callerStack?.())); + + return value as T & U; +} + +function delegateDesc( + to: interfaces.Tagged | interfaces.Tagged[], + desc?: string | Description +): Description | undefined { + if (Array.isArray(to)) { + return desc as Description; + } else if (typeof desc === "string") { + return getDescription(to)?.detail("delegate", desc); + } else if (desc === undefined) { + return getDescription(to)?.detail("delegate", "anonymous"); + } else { + return desc; + } +} diff --git a/packages/universal/reactive/src/primitives/static.ts b/packages/universal/reactive/src/primitives/static.ts new file mode 100644 index 00000000..9f0fef81 --- /dev/null +++ b/packages/universal/reactive/src/primitives/static.ts @@ -0,0 +1,19 @@ +import type { StaticTag, TaggedReactive } from "@starbeam/interfaces"; +import { TAG } from "@starbeam/shared"; +import { createStaticTag } from "@starbeam/tags"; + +import { RUNTIME } from "../runtime.js"; +import type { PrimitiveOptions } from "./utils.js"; + +export type Static = TaggedReactive; + +export function Static( + value: T, + { description }: PrimitiveOptions = {} +): Static { + return { + [TAG]: createStaticTag(RUNTIME.Desc?.("static", description)), + read: () => value, + current: value, + }; +} diff --git a/packages/universal/runtime/src/timeline/tracker.ts b/packages/universal/runtime/src/timeline/tracker.ts new file mode 100644 index 00000000..9e64a973 --- /dev/null +++ b/packages/universal/runtime/src/timeline/tracker.ts @@ -0,0 +1,81 @@ +import type { + CoreCellTag, + CoreFormulaTag, + NotifyReady, + SubscriptionRuntime, + Tag, + Tagged, + Unsubscribe, +} from "@starbeam/interfaces"; +import { isTagged } from "@starbeam/reactive"; +import { getTag, getTargets, type Timestamp } from "@starbeam/tags"; +import { NOW } from "@starbeam/tags"; + +import { Subscriptions } from "./subscriptions.js"; + +enum Phase { + read = "read", + write = "write", +} + +export class ReactiveError extends Error {} + +/** + * The Timeline is the core of the runtime. + * + * Subscribers use the Timeline to subscribe to notifications for specific + * `Tagged` values. Reactive implementations that use `FormulaTag` are + * responsible for notifying the timeline when their dependencies change. + */ +class Mutations implements SubscriptionRuntime { + readonly #subscriptions = Subscriptions.create(); + readonly #lastPhase: Phase = Phase.read; + + subscribe(target: CoreCellTag, ready: NotifyReady): Unsubscribe { + return this.#subscriptions.register(target, ready); + } + + bump(cell: CoreCellTag, update: (revision: Timestamp) => void): void { + const revision = this.#updatePhase(Phase.write); + update(revision); + this.#subscriptions.notify(cell); + } + + update(formula: CoreFormulaTag): void { + this.#subscriptions.update(formula); + } + + #updatePhase(phase: Phase): Timestamp { + if (this.#lastPhase === phase) { + return NOW.now; + } else { + return NOW.bump(); + } + } +} + +export const SUBSCRIPTION_RUNTIME = new Mutations(); + +export class PublicTimeline { + readonly on = { + change: (tagged: Tagged | Tag, ready: NotifyReady): Unsubscribe => { + const tag = isTagged(tagged) ? getTag(tagged) : tagged; + const unsubscribes = new Set(); + for (const target of getTargets(tag)) { + unsubscribes.add(SUBSCRIPTION_RUNTIME.subscribe(target, ready)); + } + + return () => { + for (const unsubscribe of unsubscribes) { + unsubscribe(); + } + }; + }, + }; + + get now(): Timestamp { + return NOW.now; + } +} + +export const PUBLIC_TIMELINE = new PublicTimeline(); diff --git a/packages/universal/runtime/src/tracking-stack.ts b/packages/universal/runtime/src/tracking-stack.ts new file mode 100644 index 00000000..37a8be57 --- /dev/null +++ b/packages/universal/runtime/src/tracking-stack.ts @@ -0,0 +1,35 @@ +import type { AutotrackingRuntime, Tag } from "@starbeam/interfaces"; + +export class TrackingStack implements AutotrackingRuntime { + static create(): TrackingStack { + return new TrackingStack(); + } + + #current: TrackingFrameData | undefined; + + start(): () => Set { + const frame: TrackingFrameData = { consumed: new Set() }; + const parent = this.#current; + this.#current = frame; + + return () => { + const consumed = frame.consumed; + this.#current = parent; + return consumed; + }; + } + + consume(tag: Tag): void { + const current = this.#current; + + if (current) { + current.consumed.add(tag); + } + } +} + +export interface TrackingFrameData { + readonly consumed: Set; +} + +export const AUTOTRACKING_RUNTIME = TrackingStack.create(); diff --git a/packages/universal/runtime/tests/description.spec.ts b/packages/universal/runtime/tests/description.spec.ts new file mode 100644 index 00000000..f2dda282 --- /dev/null +++ b/packages/universal/runtime/tests/description.spec.ts @@ -0,0 +1,20 @@ +import { expect, test } from "@starbeam-workspace/test-utils"; +import { DEBUG } from "@starbeam/debug"; + +test("inferred api", () => { + expect(SomeAPI()?.api).toMatchObject({ + type: "simple", + name: "SomeAPI", + }); + + expect(ArrowFn()?.api).toMatchObject({ + type: "simple", + name: "ArrowFn", + }); +}); + +function SomeAPI() { + return DEBUG.Desc?.("cell"); +} + +const ArrowFn = () => DEBUG.Desc?.("cell"); diff --git a/packages/universal/tags/src/timestamp.ts b/packages/universal/tags/src/timestamp.ts index f76754e0..b9bce86b 100644 --- a/packages/universal/tags/src/timestamp.ts +++ b/packages/universal/tags/src/timestamp.ts @@ -1,12 +1,40 @@ import { DisplayStruct } from "@starbeam/core-utils"; -import type { CoreTimestamp } from "@starbeam/interfaces"; +import type * as interfaces from "@starbeam/interfaces"; import { bump as peerBump, now as peerNow } from "@starbeam/shared"; export const INSPECT = Symbol.for("nodejs.util.inspect.custom"); -const initial = peerNow(); +export class TimestampImpl implements interfaces.Timestamp { + static #initial = peerNow(); + + /** + * Returns the current `Timestamp` according to @starbeam/shared + */ + static now(): interfaces.Timestamp { + return new TimestampImpl(peerNow()); + } + + /** + * The earliest timestamp from @starbeam/shared that was visible to this @starbeam/timeline. + */ + static zero(): interfaces.Timestamp { + return new TimestampImpl(TimestampImpl.#initial); + } + + static assert( + timestamp: interfaces.Timestamp, + what: string + ): asserts timestamp is TimestampImpl { + if (!(#timestamp in timestamp)) { + throw Error(`Value passed to ${what} was unexpectedly not a timestamp`); + } + } + + static debug(this: void, timestamp: interfaces.Timestamp): { at: number } { + TimestampImpl.assert(timestamp, "Timestamp.debug"); + return { at: timestamp.#timestamp }; + } -export class Timestamp implements CoreTimestamp { readonly #timestamp: number; declare [INSPECT]: () => object; @@ -19,15 +47,19 @@ export class Timestamp implements CoreTimestamp { } } - get at(): number { + get at() { return this.#timestamp; } gt(other: Timestamp): boolean { + TimestampImpl.assert(other, "Timestamp#gt"); + return this.#timestamp > other.#timestamp; } eq(other: Timestamp): boolean { + TimestampImpl.assert(other, "Timestamp#eq"); + return this.#timestamp === other.#timestamp; } @@ -39,7 +71,7 @@ export class Timestamp implements CoreTimestamp { } toString = (options: { format?: "timestamp" } = {}): string => { - if (options.format === "timestamp") { + if (options?.format === "timestamp") { return String(this.#timestamp); } else { return `#`; @@ -47,20 +79,34 @@ export class Timestamp implements CoreTimestamp { }; } -/** - * The earliest timestamp from @starbeam/shared that was visible to this @starbeam/timeline. - */ -export function zero(): Timestamp { - return new Timestamp(initial); +export function zero(): interfaces.Timestamp { + return Timestamp.zero(); +} + +export function getNow(): interfaces.Timestamp { + return Timestamp.now(); +} + +export type Timestamp = interfaces.Timestamp; +export const Timestamp = TimestampImpl; + +export function max( + ...timestamps: interfaces.Timestamp[] +): interfaces.Timestamp { + return timestamps.reduce((a, b) => (a.gt(b) ? a : b), zero()); } -let now = zero(); +export class Now { + #now = Timestamp.now(); + + get now(): interfaces.Timestamp { + return this.#now; + } + + bump(): interfaces.Timestamp { + return (this.#now = this.#now.next()); + } +} -export const NOW = { - get now(): Timestamp { - return now; - }, - bump(): Timestamp { - return (now = now.next()); - }, -}; +export const NOW = new Now(); +export const debug = Timestamp.debug; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f66d650..e1866040 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,15 +1,15 @@ lockfileVersion: '6.0' overrides: - '@types/eslint': ^8.37.0 - '@types/node': 18.15.11 - '@typescript-eslint/eslint-plugin': ^5.59.0 - '@typescript-eslint/parser': ^5.59.0 - eslint: ^8.38.0 + '@types/eslint': ^8.40.2 + '@types/node': 18.16.18 + '@typescript-eslint/eslint-plugin': ^5.59.11 + '@typescript-eslint/parser': ^5.59.11 + eslint: ^8.42.0 preact: 10.13.2 - rollup: ^3.20.6 - typescript: ^5.0.4 - vite: 4.2.2 + rollup: ^3.25.1 + typescript: ^5.1.3 + vite: 4.3.9 importers: @@ -20,29 +20,29 @@ importers: version: link:packages/universal/core-utils devDependencies: '@babel/eslint-parser': - specifier: ^7.21.3 - version: 7.21.3(@babel/core@7.21.4)(eslint@8.38.0) + specifier: ^7.22.5 + version: 7.22.5(@babel/core@7.21.4)(eslint@8.42.0) '@babel/plugin-proposal-decorators': - specifier: ^7.21.0 - version: 7.21.0(@babel/core@7.21.4) + specifier: ^7.22.5 + version: 7.22.5(@babel/core@7.21.4) '@babel/plugin-syntax-dynamic-import': specifier: ^7.8.3 version: 7.8.3(@babel/core@7.21.4) '@babel/plugin-transform-runtime': - specifier: ^7.21.4 - version: 7.21.4(@babel/core@7.21.4) + specifier: ^7.22.5 + version: 7.22.5(@babel/core@7.21.4) '@babel/preset-env': - specifier: ^7.21.4 - version: 7.21.4(@babel/core@7.21.4) + specifier: ^7.22.5 + version: 7.22.5(@babel/core@7.21.4) '@babel/preset-react': - specifier: ^7.18.6 - version: 7.18.6(@babel/core@7.21.4) + specifier: ^7.22.5 + version: 7.22.5(@babel/core@7.21.4) '@babel/preset-typescript': - specifier: ^7.21.4 - version: 7.21.4(@babel/core@7.21.4) + specifier: ^7.22.5 + version: 7.22.5(@babel/core@7.21.4) '@babel/runtime': - specifier: ^7.21.0 - version: 7.21.0 + specifier: ^7.22.5 + version: 7.22.5 '@changesets/changelog-git': specifier: ^0.1.14 version: 0.1.14 @@ -59,47 +59,47 @@ importers: specifier: workspace:^ version: link:workspace/eslint '@types/eslint': - specifier: ^8.37.0 - version: 8.37.0 + specifier: ^8.40.2 + version: 8.40.2 '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 '@typescript-eslint/eslint-plugin': - specifier: ^5.59.0 - version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) + specifier: ^5.59.11 + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.3) '@typescript-eslint/parser': - specifier: ^5.59.0 - version: 5.59.0(eslint@8.38.0)(typescript@5.0.4) + specifier: ^5.59.11 + version: 5.59.11(eslint@8.42.0)(typescript@5.1.3) '@vitest/ui': - specifier: ^0.30.1 - version: 0.30.1 + specifier: ^0.32.0 + version: 0.32.0(vitest@0.32.0) eslint: - specifier: ^8.38.0 - version: 8.38.0 + specifier: ^8.42.0 + version: 8.42.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.38.0) + version: 19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.42.0) eslint-config-prettier: specifier: ^8.8.0 - version: 8.8.0(eslint@8.38.0) + version: 8.8.0(eslint@8.42.0) eslint-import-resolver-typescript: specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + version: 3.5.5(@typescript-eslint/parser@5.59.11)(eslint-plugin-import@2.27.5)(eslint@8.42.0) eslint-plugin-import: specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + version: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0) eslint-plugin-jsonc: - specifier: ^2.7.0 - version: 2.7.0(eslint@8.38.0) + specifier: ^2.9.0 + version: 2.9.0(eslint@8.42.0) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.42.0)(prettier@2.8.8) eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.38.0) + version: 10.0.0(eslint@8.42.0) eslint-plugin-unused-imports: specifier: ^2.0.0 - version: 2.0.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.38.0) + version: 2.0.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0) esno: specifier: ^0.16.3 version: 0.16.3 @@ -107,68 +107,68 @@ importers: specifier: ^3.2.12 version: 3.2.12 happy-dom: - specifier: ^9.8.1 - version: 9.8.1 + specifier: ^9.20.3 + version: 9.20.3 jsdom: - specifier: ^21.1.1 - version: 21.1.1 + specifier: ^21.1.2 + version: 21.1.2 prettier: - specifier: ^2.8.7 - version: 2.8.7 + specifier: ^2.8.8 + version: 2.8.8 rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 tslib: - specifier: ^2.5.0 - version: 2.5.0 + specifier: ^2.5.3 + version: 2.5.3 turbo: - specifier: ^1.9.3 - version: 1.9.3 + specifier: ^1.10.3 + version: 1.10.3 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.1.3 + version: 5.1.3 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: - specifier: 0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + specifier: 0.32.0 + version: 0.32.0(@vitest/ui@0.32.0)(happy-dom@9.20.3)(jsdom@21.1.2) '@types/@rollup/plugin-commonjs': dependencies: '@rollup/plugin-commonjs': specifier: ^24.1.0 - version: 24.1.0(rollup@3.20.6) + version: 24.1.0(rollup@3.25.1) '@types/@rollup/plugin-node-resolve': dependencies: '@rollup/plugin-node-resolve': specifier: ^15.0.2 - version: 15.0.2(rollup@3.20.6) + version: 15.0.2(rollup@3.25.1) '@types/ansicolor': devDependencies: '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 '@types/rollup-plugin-polyfill-node': dependencies: rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 '@types/shell-escape-tag': devDependencies: '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 '@types/shell-split': devDependencies: '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 demos/preact: dependencies: @@ -204,11 +204,11 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) demos/preact-hello-world: dependencies: @@ -238,11 +238,11 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) demos/react: dependencies: @@ -275,11 +275,11 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) demos/react-jsnation: dependencies: @@ -324,8 +324,8 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) demos/react-jsnation/tests: dependencies: @@ -401,11 +401,11 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) demos/react-query: dependencies: @@ -450,11 +450,11 @@ importers: specifier: ^5.3.10 version: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) demos/react-stock-ticker: dependencies: @@ -490,11 +490,11 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) demos/react-store: dependencies: @@ -530,11 +530,11 @@ importers: specifier: '*' version: 0.30.1 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2) packages/preact/preact: dependencies: @@ -585,8 +585,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/preact/preact-testing-utils: dependencies: @@ -616,8 +616,8 @@ importers: specifier: ^6.0.2 version: 6.0.2(preact@10.13.2) rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/preact/preact-testing-utils/tests: dependencies: @@ -672,8 +672,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/preact/preact-utils/tests: dependencies: @@ -813,14 +813,14 @@ importers: specifier: workspace:* version: link:../../../workspace/build '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 '@types/react': specifier: ^18.2.0 version: 18.2.0 rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/react/react/tests: dependencies: @@ -853,7 +853,7 @@ importers: version: 18.2.0 vitest: specifier: ^0.30.1 - version: 0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1) + version: 0.30.1(@vitest/ui@0.32.0)(happy-dom@9.20.3)(jsdom@21.1.1) packages/react/test-utils: dependencies: @@ -895,8 +895,8 @@ importers: specifier: ^18.2.0 version: 18.2.0 rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/react/use-strict-lifecycle: dependencies: @@ -914,8 +914,8 @@ importers: specifier: ^18.2.0 version: 18.2.0 rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/react/use-strict-lifecycle/tests: dependencies: @@ -941,9 +941,18 @@ importers: packages/universal/collections: dependencies: + '@starbeam/debug': + specifier: workspace:^ + version: link:../debug '@starbeam/interfaces': specifier: workspace:^ version: link:../interfaces + '@starbeam/reactive': + specifier: workspace:^ + version: link:../reactive + '@starbeam/runtime': + specifier: workspace:^ + version: link:../runtime '@starbeam/shared': specifier: workspace:^ version: link:../shared @@ -961,11 +970,14 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/collections/tests: dependencies: + '@starbeam-workspace/test-utils': + specifier: workspace:^ + version: link:../../../../workspace/test-utils '@starbeam/collections': specifier: workspace:^ version: link:.. @@ -983,8 +995,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/core-utils: devDependencies: @@ -992,8 +1004,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/core-utils/tests: dependencies: @@ -1035,11 +1047,11 @@ importers: specifier: workspace:* version: link:../../../workspace/build '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/debug/tests: dependencies: @@ -1094,8 +1106,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/reactive: dependencies: @@ -1105,6 +1117,9 @@ importers: '@starbeam/interfaces': specifier: workspace:^ version: link:../interfaces + '@starbeam/reactive': + specifier: workspace:^ + version: 'link:' '@starbeam/shared': specifier: workspace:^ version: link:../shared @@ -1119,8 +1134,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/reactive/tests: dependencies: @@ -1165,8 +1180,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/renderer/tests: dependencies: @@ -1202,8 +1217,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/resource/tests: dependencies: @@ -1257,8 +1272,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/runtime/tests: dependencies: @@ -1309,8 +1324,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/service/tests: dependencies: @@ -1348,8 +1363,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/shared/tests: dependencies: @@ -1373,8 +1388,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/universal: dependencies: @@ -1410,8 +1425,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/universal/tests: dependencies: @@ -1445,8 +1460,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/universal/verify/tests: dependencies: @@ -1497,8 +1512,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/vue/vue-testing-utils: dependencies: @@ -1525,8 +1540,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/vue/vue-testing-utils/tests: dependencies: @@ -1644,8 +1659,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/x/devtools-extension: devDependencies: @@ -1662,8 +1677,8 @@ importers: specifier: 10.13.2 version: 10.13.2 vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) vite-plugin-mpa: specifier: ^1.1.4 version: 1.1.4 @@ -1687,8 +1702,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/x/store/tests: dependencies: @@ -1727,8 +1742,8 @@ importers: specifier: workspace:* version: link:../../../workspace/build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 packages/x/vanilla/tests: dependencies: @@ -1807,10 +1822,10 @@ importers: version: 2.0.2 '@rollup/plugin-commonjs': specifier: ^24.1.0 - version: 24.1.0(rollup@3.20.6) + version: 24.1.0(rollup@3.25.1) '@rollup/plugin-node-resolve': specifier: ^15.0.2 - version: 15.0.2(rollup@3.20.6) + version: 15.0.2(rollup@3.25.1) '@types/rollup-plugin-polyfill-node': specifier: workspace:* version: link:../../@types/rollup-plugin-polyfill-node @@ -1821,29 +1836,29 @@ importers: specifier: workspace:^ version: link:../../@types/@rollup/plugin-node-resolve '@typescript-eslint/parser': - specifier: ^5.59.0 - version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) + specifier: ^5.59.11 + version: 5.59.11(eslint@8.42.0)(typescript@5.1.3) eslint: - specifier: ^8.38.0 - version: 8.39.0 + specifier: ^8.42.0 + version: 8.42.0 eslint-config-prettier: specifier: ^8.8.0 - version: 8.8.0(eslint@8.39.0) + version: 8.8.0(eslint@8.42.0) eslint-plugin-import: specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + version: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0) eslint-plugin-json: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.42.0)(prettier@2.8.8) eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.39.0) + version: 10.0.0(eslint@8.42.0) eslint-plugin-unused-imports: specifier: ^2.0.0 - version: 2.0.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0) + version: 2.0.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0) magic-string: specifier: ^0.30.0 version: 0.30.0 @@ -1851,36 +1866,36 @@ importers: specifier: ^8.4.23 version: 8.4.23 rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 rollup-plugin-polyfill-node: specifier: ^0.12.0 - version: 0.12.0(rollup@3.20.6) + version: 0.12.0(rollup@3.25.1) rollup-plugin-postcss: specifier: ^4.0.2 version: 4.0.2(postcss@8.4.23) rollup-plugin-ts: specifier: ^3.2.0 - version: 3.2.0(@babel/core@7.21.4)(@babel/plugin-transform-runtime@7.21.4)(@babel/preset-env@7.21.4)(@babel/preset-typescript@7.21.4)(@babel/runtime@7.21.0)(rollup@3.20.6)(typescript@5.0.4) + version: 3.2.0(@babel/core@7.21.4)(@babel/plugin-transform-runtime@7.22.5)(@babel/preset-env@7.22.5)(@babel/preset-typescript@7.22.5)(@babel/runtime@7.22.5)(rollup@3.25.1)(typescript@5.1.3) unplugin-fonts: specifier: ^1.0.3 - version: 1.0.3(vite@4.2.2) + version: 1.0.3(vite@4.3.9) vite: - specifier: 4.2.2 - version: 4.2.2(@types/node@18.15.11) + specifier: 4.3.9 + version: 4.3.9(@types/node@18.16.18) devDependencies: '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.1.3 + version: 5.1.3 workspace/eslint: dependencies: '@types/eslint': - specifier: ^8.37.0 - version: 8.37.0 + specifier: ^8.40.2 + version: 8.40.2 '@typescript-eslint/eslint-plugin': specifier: ^5.56.0 version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) @@ -1925,8 +1940,8 @@ importers: version: 5.0.4 devDependencies: '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 workspace/json: dependencies: @@ -2028,8 +2043,8 @@ importers: specifier: workspace:^ version: link:../../@types/ansicolor '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 18.16.18 + version: 18.16.18 '@types/shell-escape-tag': specifier: workspace:^ version: link:../../@types/shell-escape-tag @@ -2082,8 +2097,8 @@ importers: specifier: ^10.2.1 version: 10.2.1 eslint: - specifier: ^8.38.0 - version: 8.39.0 + specifier: ^8.42.0 + version: 8.42.0 fast-glob: specifier: ^3.2.11 version: 3.2.12 @@ -2181,8 +2196,8 @@ importers: specifier: workspace:* version: link:../build rollup: - specifier: ^3.20.6 - version: 3.20.6 + specifier: ^3.25.1 + version: 3.25.1 workspace/workspace: dependencies: @@ -2219,10 +2234,16 @@ packages: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.22.5 + + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.5 - /@babel/compat-data@7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + /@babel/compat-data@7.22.5: + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} /@babel/core@7.21.4: @@ -2230,15 +2251,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-module-transforms': 7.21.2 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.4) + '@babel/helper-module-transforms': 7.22.5 '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.4 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 @@ -2247,8 +2268,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.21.3(@babel/core@7.21.4)(eslint@8.38.0): - resolution: {integrity: sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==} + /@babel/eslint-parser@7.22.5(@babel/core@7.21.4)(eslint@8.42.0): + resolution: {integrity: sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' @@ -2256,7 +2277,7 @@ packages: dependencies: '@babel/core': 7.21.4 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.38.0 + eslint: 8.42.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: true @@ -2265,73 +2286,83 @@ packages: resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + /@babel/generator@7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 - /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: - resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: + resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.4 + '@babel/compat-data': 7.22.5 '@babel/core': 7.21.4 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-validator-option': 7.22.5 browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==} + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/helper-create-regexp-features-plugin@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==} + /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 + semver: 6.3.0 - /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.4): - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.21.4): + resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.2 @@ -2339,131 +2370,136 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - /@babel/helper-explode-assignable-expression@7.18.6: - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-member-expression-to-functions@7.22.5: + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-member-expression-to-functions@7.21.0: - resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 + dev: true - /@babel/helper-module-imports@7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-transforms@7.22.5: + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression@7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/helper-replace-supers@7.20.7: - resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} + /@babel/helper-replace-supers@7.22.5: + resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-skip-transparent-expression-wrappers@7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration@7.22.5: + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.20.5: - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + /@babel/helper-wrap-function@7.22.5: + resolution: {integrity: sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.21.0 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color @@ -2471,17 +2507,17 @@ packages: resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 @@ -2490,7 +2526,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 dev: false /@babel/parser@7.21.4: @@ -2498,803 +2534,853 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + /@babel/parser@7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.21.4) - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + /@babel/plugin-proposal-decorators@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/plugin-syntax-decorators': 7.22.5(@babel/core@7.21.4) transitivePeerDependencies: - supports-color + dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.21.4): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) - transitivePeerDependencies: - - supports-color + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-decorators@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.21.0(@babel/core@7.21.4) - transitivePeerDependencies: - - supports-color - dev: true + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + /@babel/plugin-syntax-decorators@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + dev: true - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@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/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.4): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-decorators@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==} + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.4): - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + transitivePeerDependencies: + - supports-color - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.21.4) + transitivePeerDependencies: + - supports-color - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-classes@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.4) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.5 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.4): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} + /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) - /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.4) - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.4) + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) - /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.4): - resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) - /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.4): - resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) - /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.4): - resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/compat-data': 7.22.5 '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.21.4) - /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.4): - resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) - /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.4): - resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) - /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.4): - resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} + /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.21.4) dev: true - /@babel/plugin-transform-react-jsx@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/types': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.21.4) + '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.4): - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==} + /@babel/plugin-transform-runtime@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.21.4) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.21.4) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.21.4) semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.4): - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.21.4): - resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} + /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4) + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.21.4) transitivePeerDependencies: - supports-color - /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.4): - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 - /@babel/preset-env@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/preset-env@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.5 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.21.4) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.4) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) @@ -3304,44 +3390,61 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) - '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.4) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.4) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) - '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.4) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.4) - '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.21.4) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.4) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.21.4) '@babel/preset-modules': 0.1.5(@babel/core@7.21.4) - '@babel/types': 7.21.4 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) - core-js-compat: 3.30.1 + '@babel/types': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.21.4) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.21.4) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.21.4) + core-js-compat: 3.31.0 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -3352,58 +3455,58 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.4) - '@babel/types': 7.21.4 + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.21.4) + '@babel/types': 7.22.5 esutils: 2.0.3 - /@babel/preset-react@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + /@babel/preset-react@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.21.4) dev: true - /@babel/preset-typescript@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==} + /@babel/preset-typescript@7.22.5(@babel/core@7.21.4): + resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) - '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.21.4) + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.21.4) transitivePeerDependencies: - supports-color /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime@7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + /@babel/runtime@7.22.5: + resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 /@babel/traverse@7.21.4(supports-color@5.5.0): resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} @@ -3411,29 +3514,46 @@ packages: dependencies: '@babel/code-frame': 7.21.4 '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + /@babel/traverse@7.22.5: + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -3451,7 +3571,7 @@ packages: /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -3469,7 +3589,7 @@ packages: resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} hasBin: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -3535,7 +3655,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -3551,7 +3671,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3576,7 +3696,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3586,7 +3706,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -3607,7 +3727,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -3636,7 +3756,7 @@ packages: magic-string: 0.26.7 picocolors: 1.0.0 react-refresh: 0.13.0 - rollup: 3.20.6 + rollup: 3.25.1 rxjs: 7.5.7 transitivePeerDependencies: - supports-color @@ -3871,16 +3991,16 @@ packages: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: eslint: 8.38.0 - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.4.1 - /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.39.0 - eslint-visitor-keys: 3.4.0 + eslint: 8.42.0 + eslint-visitor-keys: 3.4.1 /@eslint-community/regexpp@4.5.0: resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} @@ -3901,13 +4021,30 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: false + + /@eslint/eslintrc@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@5.5.0) + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color /@eslint/js@8.38.0: resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@eslint/js@8.39.0: - resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} + /@eslint/js@8.42.0: + resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} /@faker-js/faker@7.6.0: @@ -3915,8 +4052,8 @@ packages: engines: {node: '>=14.0.0', npm: '>=6.0.0'} dev: false - /@humanwhocodes/config-array@0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -3963,8 +4100,8 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.21.0 - '@types/node': 18.15.11 + '@babel/runtime': 7.22.5 + '@types/node': 18.16.18 find-up: 4.1.0 fs-extra: 8.1.0 dev: true @@ -3972,7 +4109,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -4017,7 +4154,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.0 + tslib: 2.5.3 /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} @@ -4035,7 +4172,7 @@ packages: preact: 10.13.2 dev: false - /@rollup/plugin-commonjs@24.1.0(rollup@3.20.6): + /@rollup/plugin-commonjs@24.1.0(rollup@3.25.1): resolution: {integrity: sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4044,16 +4181,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.6) + '@rollup/pluginutils': 5.0.2(rollup@3.25.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.20.6 + rollup: 3.25.1 dev: false - /@rollup/plugin-inject@5.0.3(rollup@3.20.6): + /@rollup/plugin-inject@5.0.3(rollup@3.25.1): resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4062,13 +4199,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.6) + '@rollup/pluginutils': 5.0.2(rollup@3.25.1) estree-walker: 2.0.2 magic-string: 0.27.0 - rollup: 3.20.6 + rollup: 3.25.1 dev: false - /@rollup/plugin-node-resolve@15.0.2(rollup@3.20.6): + /@rollup/plugin-node-resolve@15.0.2(rollup@3.25.1): resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4077,13 +4214,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.6) + '@rollup/pluginutils': 5.0.2(rollup@3.25.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.20.6 + rollup: 3.25.1 dev: false /@rollup/pluginutils@4.2.1: @@ -4094,7 +4231,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.20.6): + /@rollup/pluginutils@5.0.2(rollup@3.25.1): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4106,7 +4243,7 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.20.6 + rollup: 3.25.1 dev: false /@shopify/polaris-icons@6.14.0: @@ -4138,8 +4275,8 @@ packages: resolution: {integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==} engines: {node: '>=12'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/runtime': 7.21.0 + '@babel/code-frame': 7.22.5 + '@babel/runtime': 7.22.5 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -4153,7 +4290,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.21.4 - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -4178,7 +4315,7 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@testing-library/dom': 9.2.0 '@types/react-dom': 18.2.1 react: 18.2.0 @@ -4192,7 +4329,7 @@ packages: '@vue/compiler-sfc': '>= 3' vue: '>= 3' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 '@testing-library/dom': 9.2.0 '@vue/compiler-sfc': 3.2.47 '@vue/test-utils': 2.3.2(vue@3.2.47) @@ -4214,13 +4351,13 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.4 + '@types/chai': 4.3.5 - /@types/chai@4.3.4: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + /@types/chai@4.3.5: + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} - /@types/eslint@8.37.0: - resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==} + /@types/eslint@8.40.2: + resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} dependencies: '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 @@ -4232,7 +4369,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.15.11 + '@types/node': 18.16.18 dev: true /@types/hoist-non-react-statics@3.3.1: @@ -4266,8 +4403,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + /@types/node@18.16.18: + resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -4334,13 +4471,13 @@ packages: resolution: {integrity: sha512-ZA8U81/gldY+rR5zl/7HSHrG2KDfEb3lzG6uCUDhW1DTQE9yC/VBQ45fXnXq8f3CgInfhZmjtdu/WOUlrXRQUg==} dependencies: '@types/glob': 7.2.0 - '@types/node': 18.15.11 + '@types/node': 18.16.18 dev: true /@types/split2@4.2.0: resolution: {integrity: sha512-rwV0tC3XGQvQ8zdeYDZ+dLn4CJLKnYPBrSU8dRXvzMVLUPMsYTsy3/ZbE4OlejsT2D7MTGP8ePk05C98xl2seQ==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.18 dev: true /@types/styled-components@5.1.26: @@ -4385,6 +4522,34 @@ packages: typescript: 5.0.4 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.3): + resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.3) + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.3) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.42.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color /@typescript-eslint/parser@5.59.0(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} @@ -4405,8 +4570,8 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/parser@5.59.1(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==} + /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@5.1.3): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4415,12 +4580,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.1 - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) debug: 4.3.4(supports-color@5.5.0) - eslint: 8.39.0 - typescript: 5.0.4 + eslint: 8.42.0 + typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -4431,12 +4596,12 @@ packages: '@typescript-eslint/types': 5.59.0 '@typescript-eslint/visitor-keys': 5.59.0 - /@typescript-eslint/scope-manager@5.59.1: - resolution: {integrity: sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==} + /@typescript-eslint/scope-manager@5.59.11: + resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/visitor-keys': 5.59.1 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 /@typescript-eslint/type-utils@5.59.0(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} @@ -4456,13 +4621,33 @@ packages: typescript: 5.0.4 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@5.1.3): + resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.3) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.42.0 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color /@typescript-eslint/types@5.59.0: resolution: {integrity: sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@typescript-eslint/types@5.59.1: - resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==} + /@typescript-eslint/types@5.59.11: + resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} /@typescript-eslint/typescript-estree@5.59.0(typescript@5.0.4): @@ -4485,8 +4670,8 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4): - resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==} + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.3): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4494,14 +4679,14 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/visitor-keys': 5.59.1 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 transitivePeerDependencies: - supports-color @@ -4523,20 +4708,40 @@ packages: transitivePeerDependencies: - supports-color - typescript + dev: false + + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.3): + resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.3) + eslint: 8.42.0 + eslint-scope: 5.1.1 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + - typescript /@typescript-eslint/visitor-keys@5.59.0: resolution: {integrity: sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.0 - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.4.1 - /@typescript-eslint/visitor-keys@5.59.1: - resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==} + /@typescript-eslint/visitor-keys@5.59.11: + resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.1 - eslint-visitor-keys: 3.4.0 + '@typescript-eslint/types': 5.59.11 + eslint-visitor-keys: 3.4.1 /@vitest/expect@0.30.1: resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} @@ -4545,6 +4750,13 @@ packages: '@vitest/utils': 0.30.1 chai: 4.3.7 + /@vitest/expect@0.32.0: + resolution: {integrity: sha512-VxVHhIxKw9Lux+O9bwLEEk2gzOUe93xuFHy9SzYWnnoYZFYg1NfBtnfnYWiJN7yooJ7KNElCK5YtA7DTZvtXtg==} + dependencies: + '@vitest/spy': 0.32.0 + '@vitest/utils': 0.32.0 + chai: 4.3.7 + /@vitest/runner@0.30.1: resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} dependencies: @@ -4553,6 +4765,14 @@ packages: p-limit: 4.0.0 pathe: 1.1.0 + /@vitest/runner@0.32.0: + resolution: {integrity: sha512-QpCmRxftHkr72xt5A08xTEs9I4iWEXIOCHWhQQguWOKE4QH7DXSKZSOFibuwEIMAD7G0ERvtUyQn7iPWIqSwmw==} + dependencies: + '@vitest/utils': 0.32.0 + concordance: 5.0.4 + p-limit: 4.0.0 + pathe: 1.1.0 + /@vitest/snapshot@0.30.1: resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} dependencies: @@ -4560,11 +4780,23 @@ packages: pathe: 1.1.0 pretty-format: 27.5.1 + /@vitest/snapshot@0.32.0: + resolution: {integrity: sha512-yCKorPWjEnzpUxQpGlxulujTcSPgkblwGzAUEL+z01FTUg/YuCDZ8dxr9sHA08oO2EwxzHXNLjQKWJ2zc2a19Q==} + dependencies: + magic-string: 0.30.0 + pathe: 1.1.0 + pretty-format: 27.5.1 + /@vitest/spy@0.30.1: resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} dependencies: tinyspy: 2.1.0 + /@vitest/spy@0.32.0: + resolution: {integrity: sha512-MruAPlM0uyiq3d53BkwTeShXY0rYEfhNGQzVO5GHBmmX3clsxcWp79mMnkOVcV244sNTeDcHbcPFWIjOI4tZvw==} + dependencies: + tinyspy: 2.1.0 + /@vitest/ui@0.30.1: resolution: {integrity: sha512-Izz4ElDmdvX02KImSC2nCJI6CsGo9aETbKqxli55M0rbbPPAMtF0zDcJIqgEP5V6Y+4Ysf6wvsjLbLCTnaBvKw==} dependencies: @@ -4574,7 +4806,22 @@ packages: flatted: 3.2.7 pathe: 1.1.0 picocolors: 1.0.0 - sirv: 2.0.2 + sirv: 2.0.3 + dev: true + + /@vitest/ui@0.32.0(vitest@0.32.0): + resolution: {integrity: sha512-55gugh6+owrOqW83RCgLm9q+o3SlzvFVgl1lyfnr0WB8ABxLoM+3pgusEjosscgEYGzTjTXaZY6xLd4qlfH/RQ==} + peerDependencies: + vitest: '>=0.30.1 <1' + dependencies: + '@vitest/utils': 0.32.0 + fast-glob: 3.2.12 + fflate: 0.7.4 + flatted: 3.2.7 + pathe: 1.1.0 + picocolors: 1.0.0 + sirv: 2.0.3 + vitest: 0.32.0(@vitest/ui@0.32.0)(happy-dom@9.20.3)(jsdom@21.1.2) /@vitest/utils@0.30.1: resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} @@ -4583,10 +4830,17 @@ packages: loupe: 2.3.6 pretty-format: 27.5.1 + /@vitest/utils@0.32.0: + resolution: {integrity: sha512-53yXunzx47MmbuvcOPpLaVljHaeSu1G2dHdmy7+9ngMnQIkBQcvwOcoclWFnxDMxFbnq8exAfh3aKSZaK71J5A==} + dependencies: + concordance: 5.0.4 + loupe: 2.3.6 + pretty-format: 27.5.1 + /@vue/compiler-core@3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: - '@babel/parser': 7.21.4 + '@babel/parser': 7.22.5 '@vue/shared': 3.2.47 estree-walker: 2.0.2 source-map: 0.6.1 @@ -4602,7 +4856,7 @@ packages: /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: - '@babel/parser': 7.21.4 + '@babel/parser': 7.22.5 '@vue/compiler-core': 3.2.47 '@vue/compiler-dom': 3.2.47 '@vue/compiler-ssr': 3.2.47 @@ -4624,7 +4878,7 @@ packages: /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: - '@babel/parser': 7.21.4 + '@babel/parser': 7.22.5 '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 estree-walker: 2.0.2 @@ -4896,36 +5150,36 @@ packages: deep-equal: 2.2.0 dev: true - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.4): - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.21.4): + resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 + '@babel/compat-data': 7.22.5 '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.21.4) semver: 6.3.0 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.4): - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.21.4): + resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) - core-js-compat: 3.30.1 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.21.4) + core-js-compat: 3.31.0 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.4): - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.21.4) transitivePeerDependencies: - supports-color @@ -4934,8 +5188,8 @@ packages: peerDependencies: styled-components: '>= 2' dependencies: - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 @@ -5259,14 +5513,14 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: false - /compatfactory@2.0.9(typescript@5.0.4): + /compatfactory@2.0.9(typescript@5.1.3): resolution: {integrity: sha512-fvO+AWcmbO7P1S+A3mwm3IGr74eHMeq5ZLhNhyNQc9mVDNHT4oe0Gg0ksdIFFNXLK7k7Z/TYcLAUSQdRgh1bsA==} engines: {node: '>=14.9.0'} peerDependencies: typescript: '*' dependencies: helpertypes: 0.0.19 - typescript: 5.0.4 + typescript: 5.1.3 dev: false /concat-map@0.0.1: @@ -5322,8 +5576,8 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /core-js-compat@3.30.1: - resolution: {integrity: sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==} + /core-js-compat@3.31.0: + resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==} dependencies: browserslist: 4.21.5 @@ -5358,7 +5612,7 @@ packages: resolution: {integrity: sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA==} engines: {node: '>=14.9.0'} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.18 dev: false /css-color-keywords@1.0.0: @@ -5722,7 +5976,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 csstype: 3.1.2 dev: true @@ -5964,7 +6218,7 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.27.5)(eslint@8.38.0): + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.27.5)(eslint@8.42.0): resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -5972,14 +6226,14 @@ packages: eslint-plugin-import: ^2.25.2 dependencies: confusing-browser-globals: 1.0.11 - eslint: 8.38.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint: 8.42.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0) object.assign: 4.1.4 object.entries: 1.1.6 semver: 6.3.0 dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.38.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.27.5)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.42.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5989,12 +6243,12 @@ packages: eslint-plugin-react: ^7.28.0 eslint-plugin-react-hooks: ^4.3.0 dependencies: - eslint: 8.38.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.38.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.38.0) - eslint-plugin-react: 7.32.2(eslint@8.38.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.38.0) + eslint: 8.42.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.42.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) + eslint-plugin-react: 7.32.2(eslint@8.42.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) object.assign: 4.1.4 object.entries: 1.1.6 dev: true @@ -6006,26 +6260,49 @@ packages: eslint: '>=7.0.0' dependencies: eslint: 8.38.0 + dev: false - /eslint-config-prettier@8.8.0(eslint@8.39.0): + /eslint-config-prettier@8.8.0(eslint@8.42.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.39.0 - dev: false + eslint: 8.42.0 /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 is-core-module: 2.12.0 - resolve: 1.22.2 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + enhanced-resolve: 5.12.0 + eslint: 8.38.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + get-tsconfig: 4.5.0 + globby: 13.1.4 + is-core-module: 2.12.0 + is-glob: 4.0.3 + synckit: 0.8.5 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.11)(eslint-plugin-import@2.27.5)(eslint@8.42.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -6034,9 +6311,9 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.12.0 - eslint: 8.38.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint: 8.42.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0) get-tsconfig: 4.5.0 globby: 13.1.4 is-core-module: 2.12.0 @@ -6077,7 +6354,7 @@ packages: transitivePeerDependencies: - supports-color - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6098,11 +6375,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.3) debug: 3.2.7 - eslint: 8.39.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.11)(eslint-plugin-import@2.27.5)(eslint@8.42.0) transitivePeerDependencies: - supports-color @@ -6138,7 +6415,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -6148,15 +6425,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.39.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -6169,7 +6446,6 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false /eslint-plugin-json@3.1.0: resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} @@ -6189,14 +6465,27 @@ packages: eslint: 8.38.0 jsonc-eslint-parser: 2.2.0 natural-compare: 1.4.0 + dev: false + + /eslint-plugin-jsonc@2.9.0(eslint@8.42.0): + resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + eslint: 8.42.0 + jsonc-eslint-parser: 2.2.0 + natural-compare: 1.4.0 + dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.38.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.42.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 aria-query: 5.1.3 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 @@ -6205,7 +6494,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.38.0 + eslint: 8.42.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -6215,23 +6504,6 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.38.0 - eslint-config-prettier: 8.8.0(eslint@8.38.0) - prettier: 2.8.7 - prettier-linter-helpers: 1.0.0 - dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} @@ -6249,7 +6521,7 @@ packages: prettier-linter-helpers: 1.0.0 dev: false - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.42.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -6260,22 +6532,21 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.39.0 - eslint-config-prettier: 8.8.0(eslint@8.39.0) + eslint: 8.42.0 + eslint-config-prettier: 8.8.0(eslint@8.42.0) prettier: 2.8.8 prettier-linter-helpers: 1.0.0 - dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.38.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.42.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.38.0 + eslint: 8.42.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.38.0): + /eslint-plugin-react@7.32.2(eslint@8.42.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -6285,7 +6556,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.38.0 + eslint: 8.42.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -6305,14 +6576,14 @@ packages: eslint: '>=5.0.0' dependencies: eslint: 8.38.0 + dev: false - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.39.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.42.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.39.0 - dev: false + eslint: 8.42.0 /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.38.0): resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} @@ -6327,8 +6598,9 @@ packages: '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) eslint: 8.38.0 eslint-rule-composer: 0.3.0 + dev: false - /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0): + /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0): resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6338,10 +6610,9 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) - eslint: 8.39.0 + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.3) + eslint: 8.42.0 eslint-rule-composer: 0.3.0 - dev: false /eslint-rule-composer@0.3.0: resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} @@ -6369,6 +6640,11 @@ packages: /eslint-visitor-keys@3.4.0: resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} /eslint@8.38.0: resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} @@ -6377,9 +6653,9 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) '@eslint-community/regexpp': 4.5.0 - '@eslint/eslintrc': 2.0.2 + '@eslint/eslintrc': 2.0.3 '@eslint/js': 8.38.0 - '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -6389,8 +6665,8 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -6418,16 +6694,16 @@ packages: transitivePeerDependencies: - supports-color - /eslint@8.39.0: - resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} + /eslint@8.42.0: + resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) '@eslint-community/regexpp': 4.5.0 - '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.39.0 - '@humanwhocodes/config-array': 0.11.8 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.42.0 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -6437,8 +6713,8 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -6446,13 +6722,12 @@ packages: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.20.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -6479,7 +6754,16 @@ packages: dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.4.1 + dev: false + + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.1 /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -6810,11 +7094,14 @@ packages: /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - /happy-dom@9.8.1: - resolution: {integrity: sha512-V98qplc8eS01+vEX5OU0/SQ+GghxxlTt/StPoFQ7fCO5Kbv9BUV1C2lBD2bs4hG8FjHicT91jsu+9idr8goL2Q==} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + /happy-dom@9.20.3: + resolution: {integrity: sha512-eBsgauT435fXFvQDNcmm5QbGtYzxEzOaX35Ia+h6yP/wwa4xSWZh1CfP+mGby8Hk6Xu59mTkpyf72rUXHNxY7A==} dependencies: css.escape: 1.5.1 - he: 1.2.0 + entities: 4.5.0 iconv-lite: 0.6.3 webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 @@ -6861,10 +7148,6 @@ packages: dependencies: function-bind: 1.1.1 - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - /helpertypes@0.0.19: resolution: {integrity: sha512-J00e55zffgi3yVnUp0UdbMztNkr2PnizEkOe9URNohnrNhW5X0QpegkuLpOmFQInpi93Nb8MCjQRHAiCDF42NQ==} engines: {node: '>=10.0.0'} @@ -7302,6 +7585,46 @@ packages: - supports-color - utf-8-validate + /jsdom@21.1.2: + resolution: {integrity: sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.2 + acorn-globals: 7.0.1 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.4 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.13.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -7352,8 +7675,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 semver: 7.5.0 /jsonc-parser@3.2.0: @@ -7919,7 +8242,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -8409,12 +8732,6 @@ packages: dependencies: fast-diff: 1.2.0 - /prettier@2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -8506,7 +8823,7 @@ packages: peerDependencies: react: '*' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 react: 18.2.0 dev: false @@ -8546,7 +8863,7 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -8625,7 +8942,7 @@ packages: /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.5 /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} @@ -8702,13 +9019,13 @@ packages: dependencies: glob: 7.2.3 - /rollup-plugin-polyfill-node@0.12.0(rollup@3.20.6): + /rollup-plugin-polyfill-node@0.12.0(rollup@3.25.1): resolution: {integrity: sha512-PWEVfDxLEKt8JX1nZ0NkUAgXpkZMTb85rO/Ru9AQ69wYW8VUCfDgP4CGRXXWYni5wDF0vIeR1UoF3Jmw/Lt3Ug==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 dependencies: - '@rollup/plugin-inject': 5.0.3(rollup@3.20.6) - rollup: 3.20.6 + '@rollup/plugin-inject': 5.0.3(rollup@3.25.1) + rollup: 3.25.1 dev: false /rollup-plugin-postcss@4.0.2(postcss@8.4.23): @@ -8735,7 +9052,7 @@ packages: - ts-node dev: false - /rollup-plugin-ts@3.2.0(@babel/core@7.21.4)(@babel/plugin-transform-runtime@7.21.4)(@babel/preset-env@7.21.4)(@babel/preset-typescript@7.21.4)(@babel/runtime@7.21.0)(rollup@3.20.6)(typescript@5.0.4): + /rollup-plugin-ts@3.2.0(@babel/core@7.21.4)(@babel/plugin-transform-runtime@7.22.5)(@babel/preset-env@7.22.5)(@babel/preset-typescript@7.22.5)(@babel/runtime@7.22.5)(rollup@3.25.1)(typescript@5.1.3): resolution: {integrity: sha512-KkTLVifkUexEiAXS9VtSjDrjKr0TyusmNJpb2ZTAzI9VuPumSu4AktIaVNnwv70iUEitHwZtET7OAM+5n1u1tg==} engines: {node: '>=14.9.0', npm: '>=7.0.0', pnpm: '>=3.2.0', yarn: '>=1.13'} peerDependencies: @@ -8765,22 +9082,22 @@ packages: optional: true dependencies: '@babel/core': 7.21.4 - '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.21.4) - '@babel/preset-env': 7.21.4(@babel/core@7.21.4) - '@babel/preset-typescript': 7.21.4(@babel/core@7.21.4) - '@babel/runtime': 7.21.0 - '@rollup/pluginutils': 5.0.2(rollup@3.20.6) + '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.21.4) + '@babel/preset-env': 7.22.5(@babel/core@7.21.4) + '@babel/preset-typescript': 7.22.5(@babel/core@7.21.4) + '@babel/runtime': 7.22.5 + '@rollup/pluginutils': 5.0.2(rollup@3.25.1) '@wessberg/stringutil': 1.0.19 ansi-colors: 4.1.3 browserslist: 4.21.5 browserslist-generator: 2.0.3 - compatfactory: 2.0.9(typescript@5.0.4) + compatfactory: 2.0.9(typescript@5.1.3) crosspath: 2.0.0 magic-string: 0.27.0 - rollup: 3.20.6 - ts-clone-node: 2.0.4(typescript@5.0.4) - tslib: 2.5.0 - typescript: 5.0.4 + rollup: 3.25.1 + ts-clone-node: 2.0.4(typescript@5.1.3) + tslib: 2.5.3 + typescript: 5.1.3 dev: false /rollup-pluginutils@2.8.2: @@ -8789,8 +9106,8 @@ packages: estree-walker: 0.6.1 dev: false - /rollup@3.20.6: - resolution: {integrity: sha512-2yEB3nQXp/tBQDN0hJScJQheXdvU2wFhh6ld7K/aiZ1vYcak6N/BKjY1QrU6BvO2JWYS8bEs14FRaxXosxy2zw==} + /rollup@3.25.1: + resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -8807,7 +9124,7 @@ packages: /rxjs@7.5.7: resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} dependencies: - tslib: 2.5.0 + tslib: 2.5.3 dev: true /safe-identifier@0.4.2: @@ -8942,8 +9259,8 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sirv@2.0.2: - resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} dependencies: '@polka/url': 1.0.0-next.21 @@ -9225,7 +9542,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.3.1 - tslib: 2.5.0 + tslib: 2.5.3 /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -9253,13 +9570,17 @@ packages: globalyzer: 0.1.0 globrex: 0.1.2 - /tinybench@2.4.0: - resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} + /tinybench@2.5.0: + resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} /tinypool@0.4.0: resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} engines: {node: '>=14.0.0'} + /tinypool@0.5.0: + resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} + engines: {node: '>=14.0.0'} + /tinyspy@2.1.0: resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} engines: {node: '>=14.0.0'} @@ -9305,14 +9626,14 @@ packages: engines: {node: '>=8'} dev: true - /ts-clone-node@2.0.4(typescript@5.0.4): + /ts-clone-node@2.0.4(typescript@5.1.3): resolution: {integrity: sha512-eG6FAgmQsenhIJOIFhUcO6yyYejBKZIKcI3y21jiQmIOrth5pD6GElyPAyeihbPSyBs3u/9PVNXy+5I7jGy8jA==} engines: {node: '>=14.9.0'} peerDependencies: typescript: '*' dependencies: - compatfactory: 2.0.9(typescript@5.0.4) - typescript: 5.0.4 + compatfactory: 2.0.9(typescript@5.1.3) + typescript: 5.1.3 dev: false /tsconfig-paths@3.14.2: @@ -9326,8 +9647,8 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib@2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -9338,6 +9659,15 @@ packages: tslib: 1.14.1 typescript: 5.0.4 + /tsutils@3.21.0(typescript@5.1.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '*' + dependencies: + tslib: 1.14.1 + typescript: 5.1.3 + /tsx@3.12.6: resolution: {integrity: sha512-q93WgS3lBdHlPgS0h1i+87Pt6n9K/qULIMNYZo07nSeu2z5QE2CellcAZfofVXBo2tQg9av2ZcRMQ2S2i5oadQ==} hasBin: true @@ -9363,65 +9693,65 @@ packages: yargs: 17.7.1 dev: true - /turbo-darwin-64@1.9.3: - resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==} + /turbo-darwin-64@1.10.3: + resolution: {integrity: sha512-IIB9IomJGyD3EdpSscm7Ip1xVWtYb7D0x7oH3vad3gjFcjHJzDz9xZ/iw/qItFEW+wGFcLSRPd+1BNnuLM8AsA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.9.3: - resolution: {integrity: sha512-1cYbjqLBA2zYE1nbf/qVnEkrHa4PkJJbLo7hnuMuGM0bPzh4+AnTNe98gELhqI1mkTWBu/XAEeF5u6dgz0jLNA==} + /turbo-darwin-arm64@1.10.3: + resolution: {integrity: sha512-SBNmOZU9YEB0eyNIxeeQ+Wi0Ufd+nprEVp41rgUSRXEIpXjsDjyBnKnF+sQQj3+FLb4yyi/yZQckB+55qXWEsw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@1.9.3: - resolution: {integrity: sha512-UuBPFefawEwpuxh5pM9Jqq3q4C8M0vYxVYlB3qea/nHQ80pxYq7ZcaLGEpb10SGnr3oMUUs1zZvkXWDNKCJb8Q==} + /turbo-linux-64@1.10.3: + resolution: {integrity: sha512-kvAisGKE7xHJdyMxZLvg53zvHxjqPK1UVj4757PQqtx9dnjYHSc8epmivE6niPgDHon5YqImzArCjVZJYpIGHQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.9.3: - resolution: {integrity: sha512-vUrNGa3hyDtRh9W0MkO+l1dzP8Co2gKnOVmlJQW0hdpOlWlIh22nHNGGlICg+xFa2f9j4PbQlWTsc22c019s8Q==} + /turbo-linux-arm64@1.10.3: + resolution: {integrity: sha512-Qgaqln0IYRgyL0SowJOi+PNxejv1I2xhzXOI+D+z4YHbgSx87ox1IsALYBlK8VRVYY8VCXl+PN12r1ioV09j7A==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.9.3: - resolution: {integrity: sha512-0BZ7YaHs6r+K4ksqWus1GKK3W45DuDqlmfjm/yuUbTEVc8szmMCs12vugU2Zi5GdrdJSYfoKfEJ/PeegSLIQGQ==} + /turbo-windows-64@1.10.3: + resolution: {integrity: sha512-rbH9wManURNN8mBnN/ZdkpUuTvyVVEMiUwFUX4GVE5qmV15iHtZfDLUSGGCP2UFBazHcpNHG1OJzgc55GFFrUw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.9.3: - resolution: {integrity: sha512-QJUYLSsxdXOsR1TquiOmLdAgtYcQ/RuSRpScGvnZb1hY0oLc7JWU0llkYB81wVtWs469y8H9O0cxbKwCZGR4RQ==} + /turbo-windows-arm64@1.10.3: + resolution: {integrity: sha512-ThlkqxhcGZX39CaTjsHqJnqVe+WImjX13pmjnpChz6q5HHbeRxaJSFzgrHIOt0sUUVx90W/WrNRyoIt/aafniw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.9.3: - resolution: {integrity: sha512-ID7mxmaLUPKG/hVkp+h0VuucB1U99RPCJD9cEuSEOdIPoSIuomcIClEJtKamUsdPLhLCud+BvapBNnhgh58Nzw==} + /turbo@1.10.3: + resolution: {integrity: sha512-U4gKCWcKgLcCjQd4Pl8KJdfEKumpyWbzRu75A6FCj6Ctea1PIm58W6Ltw1QXKqHrl2pF9e1raAskf/h6dlrPCA==} hasBin: true requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.9.3 - turbo-darwin-arm64: 1.9.3 - turbo-linux-64: 1.9.3 - turbo-linux-arm64: 1.9.3 - turbo-windows-64: 1.9.3 - turbo-windows-arm64: 1.9.3 + turbo-darwin-64: 1.10.3 + turbo-darwin-arm64: 1.10.3 + turbo-linux-64: 1.10.3 + turbo-linux-arm64: 1.10.3 + turbo-windows-64: 1.10.3 + turbo-windows-arm64: 1.10.3 dev: true /type-check@0.3.2: @@ -9471,6 +9801,11 @@ packages: engines: {node: '>=12.20'} hasBin: true + /typescript@5.1.3: + resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@1.0.35: resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} dev: false @@ -9523,7 +9858,7 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unplugin-fonts@1.0.3(vite@4.2.2): + /unplugin-fonts@1.0.3(vite@4.3.9): resolution: {integrity: sha512-6Wq0SMhMznUx7DTkqr/ogCvWg2vFSCApHmhUcUISxqfnuME2B/KRLa6+bWyX3sbPNhYsW4zI7jvUkkmIumwenw==} peerDependencies: '@nuxt/kit': ^3.0.0 @@ -9534,7 +9869,7 @@ packages: dependencies: fast-glob: 3.2.12 unplugin: 1.3.1 - vite: 4.2.2(@types/node@18.15.11) + vite: 4.3.9(@types/node@18.16.18) dev: false /unplugin@1.3.1: @@ -9578,7 +9913,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-node@0.30.1(@types/node@18.15.11): + /vite-node@0.30.1(@types/node@18.16.18): resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true @@ -9588,7 +9923,27 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.2.2(@types/node@18.15.11) + vite: 4.3.9(@types/node@18.16.18) + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + + /vite-node@0.32.0(@types/node@18.16.18): + resolution: {integrity: sha512-220P/y8YacYAU+daOAqiGEFXx2A8AwjadDzQqos6wSukjvvTWNqleJSwoUn0ckyNdjHIKoxn93Nh1vWBqEKr3Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4(supports-color@5.5.0) + mlly: 1.2.0 + pathe: 1.1.0 + picocolors: 1.0.0 + vite: 4.3.9(@types/node@18.16.18) transitivePeerDependencies: - '@types/node' - less @@ -9606,8 +9961,8 @@ packages: yargs: 16.2.0 dev: true - /vite@4.2.2(@types/node@18.15.11): - resolution: {integrity: sha512-PcNtT5HeDxb3QaSqFYkEum8f5sCVe0R3WK20qxgIvNBZPXU/Obxs/+ubBMeE7nLWeCo2LDzv+8hRYSlcaSehig==} + /vite@4.3.9(@types/node@18.16.18): + resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -9631,15 +9986,14 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.18 esbuild: 0.17.17 postcss: 8.4.23 - resolve: 1.22.2 - rollup: 3.20.6 + rollup: 3.25.1 optionalDependencies: fsevents: 2.3.2 - /vitest@0.30.1(@vitest/ui@0.30.1)(happy-dom@9.8.1)(jsdom@21.1.1): + /vitest@0.30.1(@vitest/ui@0.30.1)(happy-dom@9.20.3)(jsdom@21.1.2): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -9670,9 +10024,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.4 + '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 18.15.11 + '@types/node': 18.16.18 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 @@ -9685,7 +10039,76 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4(supports-color@5.5.0) - happy-dom: 9.8.1 + happy-dom: 9.20.3 + jsdom: 21.1.2 + local-pkg: 0.4.3 + magic-string: 0.30.0 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + std-env: 3.3.2 + strip-literal: 1.0.1 + tinybench: 2.5.0 + tinypool: 0.4.0 + vite: 4.3.9(@types/node@18.16.18) + vite-node: 0.30.1(@types/node@18.16.18) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vitest@0.30.1(@vitest/ui@0.32.0)(happy-dom@9.20.3)(jsdom@21.1.1): + resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.5 + '@types/chai-subset': 1.3.3 + '@types/node': 18.16.18 + '@vitest/expect': 0.30.1 + '@vitest/runner': 0.30.1 + '@vitest/snapshot': 0.30.1 + '@vitest/spy': 0.30.1 + '@vitest/ui': 0.32.0(vitest@0.32.0) + '@vitest/utils': 0.30.1 + acorn: 8.8.2 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + concordance: 5.0.4 + debug: 4.3.4(supports-color@5.5.0) + happy-dom: 9.20.3 jsdom: 21.1.1 local-pkg: 0.4.3 magic-string: 0.30.0 @@ -9694,10 +10117,78 @@ packages: source-map: 0.6.1 std-env: 3.3.2 strip-literal: 1.0.1 - tinybench: 2.4.0 + tinybench: 2.5.0 tinypool: 0.4.0 - vite: 4.2.2(@types/node@18.15.11) - vite-node: 0.30.1(@types/node@18.15.11) + vite: 4.3.9(@types/node@18.16.18) + vite-node: 0.30.1(@types/node@18.16.18) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: false + + /vitest@0.32.0(@vitest/ui@0.32.0)(happy-dom@9.20.3)(jsdom@21.1.2): + resolution: {integrity: sha512-SW83o629gCqnV3BqBnTxhB10DAwzwEx3z+rqYZESehUB+eWsJxwcBQx7CKy0otuGMJTYh7qCVuUX23HkftGl/Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.5 + '@types/chai-subset': 1.3.3 + '@types/node': 18.16.18 + '@vitest/expect': 0.32.0 + '@vitest/runner': 0.32.0 + '@vitest/snapshot': 0.32.0 + '@vitest/spy': 0.32.0 + '@vitest/ui': 0.32.0(vitest@0.32.0) + '@vitest/utils': 0.32.0 + acorn: 8.8.2 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + concordance: 5.0.4 + debug: 4.3.4(supports-color@5.5.0) + happy-dom: 9.20.3 + jsdom: 21.1.2 + local-pkg: 0.4.3 + magic-string: 0.30.0 + pathe: 1.1.0 + picocolors: 1.0.0 + std-env: 3.3.2 + strip-literal: 1.0.1 + tinybench: 2.5.0 + tinypool: 0.5.0 + vite: 4.3.9(@types/node@18.16.18) + vite-node: 0.32.0(@types/node@18.16.18) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -9990,3 +10481,7 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false diff --git a/vitest.config.ts b/vitest.config.ts index 549acb2c..392d2c9f 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -6,7 +6,12 @@ const env = process.env["STARBEAM_TRACE"] ? { STARBEAM_TRACE: "true" } : {}; export default defineConfig({ test: { includeSource: ["packages/*/*/src/**/*.ts"], - exclude: ["**/node_modules/**", "demos/**", "**/dist/**"], + exclude: [ + "**/node_modules/**", + "demos/**", + "**/dist/**", + "workspace/scripts/src/**", + ], env, }, });